diff --git a/.github/patch/product.wxs.patch b/.github/patch/product.wxs.patch index 5910ab7c7..abb0e62ad 100644 --- a/.github/patch/product.wxs.patch +++ b/.github/patch/product.wxs.patch @@ -1,18 +1,31 @@ diff --git a/installer/windows/product.wxs b/installer/windows/product.wxs -index c040591a..23a9b40a 100644 +index c040591a..46d57881 100644 --- a/installer/windows/product.wxs +++ b/installer/windows/product.wxs -@@ -63,7 +63,8 @@ +@@ -63,7 +63,11 @@ - + + ++ ++ ++ -@@ -149,8 +150,11 @@ +@@ -84,6 +88,9 @@ + + + ++ ++ ++ + + + +@@ -149,8 +156,11 @@ @@ -25,3 +38,21 @@ index c040591a..23a9b40a 100644 +@@ -169,6 +179,7 @@ + + + ++ + + + +@@ -186,6 +197,9 @@ + + + ++ ++ ++ + + + diff --git a/.github/workflows/build-appimage.yml b/.github/workflows/build-appimage.yml index 091d572cb..1deb36a4d 100644 --- a/.github/workflows/build-appimage.yml +++ b/.github/workflows/build-appimage.yml @@ -1,17 +1,21 @@ +# KEEP THE RUNNER OS AS LOW AS POSSIBLE. +# If built on the latest OS, it may not run on previous OS versions. +# Related: https://docs.appimage.org/reference/best-practices.html#binaries-compiled-on-old-enough-base-system + name: Build - AppImage on: workflow_call: + workflow_dispatch: jobs: build: - name: ${{ matrix.os }} - SQLCipher ${{ matrix.sqlcipher }} + name: ${{ matrix.os }} runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: os: [ubuntu-20.04] - sqlcipher: ["0", "1"] steps: - name: Checkout uses: actions/checkout@v4 @@ -19,25 +23,19 @@ jobs: - name: Install dependencies run: | sudo apt update - sudo apt install libqcustomplot-dev libqscintilla2-qt5-dev libqt5svg5 libsqlcipher-dev libsqlite3-dev qttools5-dev + sudo apt install libqcustomplot-dev libqscintilla2-qt5-dev libqt5svg5 qttools5-dev - - if: matrix.sqlcipher == 0 - name: Build SQLite + - name: Build SQLCipher run: | - TARBALL=$(curl -s https://sqlite.org/download.html | awk '// {print}' | grep 'sqlite-autoconf' | cut -d ',' -f 3) - SHA3=$(curl -s https://sqlite.org/download.html | awk '// {print}' | grep 'sqlite-autoconf' | cut -d ',' -f 5) - curl -LsS -o sqlite.tar.gz https://sqlite.org/${TARBALL} - VERIFY=$(openssl dgst -sha3-256 sqlite.tar.gz | cut -d ' ' -f 2) - if [ "$SHA3" != "$VERIFY" ]; then exit 1 ; fi - tar -xzf sqlite.tar.gz && cd sqlite-autoconf-* - - CPPFLAGS="-DSQLITE_ENABLE_COLUMN_METADATA=1 -DSQLITE_MAX_VARIABLE_NUMBER=250000 -DSQLITE_ENABLE_RTREE=1 -DSQLITE_ENABLE_GEOPOLY=1 -DSQLITE_ENABLE_FTS3=1 -DSQLITE_ENABLE_FTS3_PARENTHESIS=1 -DSQLITE_ENABLE_FTS5=1 -DSQLITE_ENABLE_STAT4=1 -DSQLITE_ENABLE_JSON1=1 -DSQLITE_SOUNDEX=1 -DSQLITE_ENABLE_MATH_FUNCTIONS=1 -DSQLITE_MAX_ATTACHED=125 -DSQLITE_ENABLE_MEMORY_MANAGEMENT=1 -DSQLITE_ENABLE_SNAPSHOT=1" ./configure --enable-shared=no + sudo apt install libssl-dev tcl + git clone https://github.com/sqlcipher/sqlcipher && cd sqlcipher && git checkout v4.6.1 + ./configure --enable-tempstore=yes --with-crypto-lib=openssl --enable-load-extension --disable-tcl CFLAGS="-DSQLCIPHER_CRYPTO_OPENSSL -DSQLITE_ENABLE_COLUMN_METADATA -DSQLITE_ENABLE_FTS3 -DSQLITE_ENABLE_FTS3_PARENTHESIS -DSQLITE_ENABLE_FTS5 -DSQLITE_ENABLE_GEOPOLY -DSQLITE_ENABLE_JSON1 -DSQLITE_ENABLE_MEMORY_MANAGEMENT=1 -DSQLITE_ENABLE_RTREE -DSQLITE_ENABLE_SNAPSHOT=1 -DSQLITE_ENABLE_STAT4 -DSQLITE_HAS_CODEC -DSQLITE_SOUNDEX" make -j2 && sudo make install -j2 - name: Configure build run: | mkdir appbuild && mkdir appdir && cd appbuild - cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX:PATH=../appdir/usr -Wno-dev -DFORCE_INTERNAL_QSCINTILLA=ON -Dsqlcipher=${{ matrix.sqlcipher }} .. + cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX:PATH=../appdir/usr -Wno-dev -DFORCE_INTERNAL_QSCINTILLA=ON -Dsqlcipher=1 .. - name: Build working-directory: ./appbuild @@ -45,23 +43,20 @@ jobs: - name: Build AppImage run: | - wget -c -nv "https://github.com/probonopd/linuxdeployqt/releases/download/continuous/linuxdeployqt-continuous-x86_64.AppImage" - chmod a+x linuxdeployqt-continuous-x86_64.AppImage - export VERSION=$(printf "dev-`git -C . rev-parse --short HEAD`") - ./linuxdeployqt-continuous-x86_64.AppImage appdir/usr/share/applications/*.desktop -appimage + wget -c -nv "https://github.com/linuxdeploy/linuxdeploy/releases/download/1-alpha-20240109-1/linuxdeploy-x86_64.AppImage" + wget -c -nv "https://github.com/linuxdeploy/linuxdeploy-plugin-qt/releases/download/1-alpha-20240109-1/linuxdeploy-plugin-qt-x86_64.AppImage" + chmod a+x linuxdeploy-x86_64.AppImage linuxdeploy-plugin-qt-x86_64.AppImage + export VERSION=v3.13.1 + LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/lib" ./linuxdeploy-x86_64.AppImage --appdir=appdir --desktop-file=appdir/usr/share/applications/sqlitebrowser.desktop --plugin qt --output appimage - name: Rename a file run: | for i in DB_Browser_for_SQLite*; do mv "$i" "${i//_/.}"; done - if [ "${{ matrix.sqlcipher }}" = "1" ]; then - export FILE=$(ls DB.Browser.for.SQLite*.AppImage) - export FILE=${FILE/SQLite/SQLCipher} - mv DB.Browser.for.SQLite*.AppImage $FILE - fi + mv DB.Browser.for.SQLite-v3.13.1-x86.64.AppImage DB.Browser.for.SQLite-v3.13.1-x86.64-v2.AppImage - name: Upload artifacts uses: actions/upload-artifact@v4 with: - name: build-artifacts-${{ matrix.os }}-${{ matrix.sqlcipher }} + name: build-artifacts-${{ matrix.os }} path: DB.Browser.for.*.AppImage retention-days: 1 diff --git a/.github/workflows/build-macos.yml b/.github/workflows/build-macos.yml index 5a84db930..7fc0d552f 100644 --- a/.github/workflows/build-macos.yml +++ b/.github/workflows/build-macos.yml @@ -16,6 +16,8 @@ jobs: matrix: os: [macos-14] sqlcipher: ["0", "1"] + env: + MACOSX_DEPLOYMENT_TARGET: 10.13 steps: - name: Checkout uses: actions/checkout@v4 @@ -32,27 +34,29 @@ jobs: run: | brew update brew tap sqlitebrowser/tap - brew install db4subqt@5 db4subsqlcipher db4subsqlitefts@5 ninja + brew unlink openssl@3 + brew install sqlb-openssl@3 + brew install sqlb-qt@5 sqlb-sqlcipher sqlb-sqlite ninja npm install -g appdmg - name: Configure build run: | if [ "${{ inputs.NIGHTLY }}" = "true" ]; then if [ "${{ matrix.sqlcipher }}" = "1" ]; then - sed -i "" 's/"DB Browser for SQLite"/"DB Browser for SQLCipher Nightly"/' CMakeLists.txt + sed -i "" 's/"DB Browser for SQLite"/"DB Browser for SQLCipher Nightly"/' config/platform_apple.cmake else - sed -i "" 's/"DB Browser for SQLite"/"DB Browser for SQLite Nightly"/' CMakeLists.txt + sed -i "" 's/"DB Browser for SQLite"/"DB Browser for SQLite Nightly"/' config/platform_apple.cmake fi else if [ "${{ matrix.sqlcipher }}" = "1" ]; then - sed -i "" 's/"DB Browser for SQLite"/"DB Browser for SQLCipher-dev-'$(git rev-parse --short --verify HEAD)'"/' CMakeLists.txt + sed -i "" 's/"DB Browser for SQLite"/"DB Browser for SQLCipher-dev-'$(git rev-parse --short --verify HEAD)'"/' config/platform_apple.cmake else - sed -i "" 's/"DB Browser for SQLite"/"DB Browser for SQLite-dev-'$(git rev-parse --short --verify HEAD)'"/' CMakeLists.txt + sed -i "" 's/"DB Browser for SQLite"/"DB Browser for SQLite-dev-'$(git rev-parse --short --verify HEAD)'"/' config/platform_apple.cmake fi fi mkdir build && cd build - cmake -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_OSX_ARCHITECTURES="arm64;x86_64" -DcustomTap=1 -DENABLE_TESTING=ON -Dsqlcipher=${{ matrix.sqlcipher }} .. + cmake -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_STANDARD=14 -DCMAKE_OSX_ARCHITECTURES="arm64;x86_64" -DcustomTap=1 -DENABLE_TESTING=ON -Dsqlcipher=${{ matrix.sqlcipher }} .. - name: Build working-directory: ./build @@ -63,9 +67,10 @@ jobs: run: ninja test - name: Build Extension - run: clang -I /opt/homebrew/opt/db4subsqlitefts@5/include -L /opt/homebrew/opt/db4subsqlitefts@5/lib -fno-common -dynamiclib src/extensions/extension-formats.c + run: clang -I /opt/homebrew/opt/sqlb-sqlite/include -L /opt/homebrew/opt/sqlb-sqlite/lib -fno-common -dynamiclib src/extensions/extension-formats.c - - name: Notarization + - if: github.event_name != 'pull_request' + name: Notarization id: notarization run: chmod +x ./installer/macos/notarize.sh && ./installer/macos/notarize.sh env: diff --git a/.github/workflows/build-ubuntu.yml b/.github/workflows/build-ubuntu.yml deleted file mode 100644 index 5cdaec181..000000000 --- a/.github/workflows/build-ubuntu.yml +++ /dev/null @@ -1,60 +0,0 @@ -name: Build - Ubuntu - -on: - release: - types: [created] - workflow_call: - -jobs: - build: - name: ${{ matrix.os }} - SQLCipher ${{ matrix.sqlcipher }} - runs-on: ${{ matrix.os }} - strategy: - fail-fast: false - matrix: - os: [ubuntu-20.04] - sqlcipher: ["0", "1"] - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Install and cache dependencies - uses: awalsh128/cache-apt-pkgs-action@v1.4.2 - with: - packages: libqcustomplot-dev libqscintilla2-qt5-dev libqt5svg5 libsqlcipher-dev libsqlite3-dev qttools5-dev - - - name: Configure CMake - run: | - cmake -S . -B build -DCMAKE_BUILD_TYPE=Release \ - -DCMAKE_INSTALL_PREFIX=${PWD}/install \ - -DCPACK_PACKAGE_DIRECTORY=${PWD}/package \ - -DENABLE_TESTING=ON \ - -Dsqlcipher=${{ matrix.sqlcipher }} - - - name: Run make - run: cmake --build build --config Release -j --target install - - - name: Run tests - run: ctest -V -C Release --test-dir build - - - if: github.event_name == 'release' - name: Package - run: | - cmake --build build --config Release -j --target package - cmake -E remove_directory package/_CPack_Packages - - - if: github.event_name == 'release' - name: Upload package - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - TAG: ${{ github.event.release.tag_name }} - UPLOAD_URL: ${{ github.event.release.upload_url }} - run: | - set the env var TAG: - $GITHUB_API_URL/repos/$GITHUB_REPOSITORY/releases/tags/$TAG | jq -r .upload_url) - UPLOAD_URL=${UPLOAD_URL%\{*} # remove "{name,label}" suffix - for pkg in package/*.*; do - NAME=$(basename $pkg) - MIME=$(file --mime-type $pkg|cut -d ' ' -f2) - curl -X POST -H "Accept: application/vnd.github.v3+json" -H "Authorization: token $GITHUB_TOKEN" -H "Content-Type: $MIME" --data-binary @$pkg $UPLOAD_URL?name=$NAME - done diff --git a/.github/workflows/build-windows.yml b/.github/workflows/build-windows.yml index 7144c4b5e..b7994155d 100644 --- a/.github/workflows/build-windows.yml +++ b/.github/workflows/build-windows.yml @@ -2,10 +2,6 @@ name: Build - Windows on: workflow_call: - inputs: - NIGHTLY: - default: false - type: boolean jobs: build: @@ -32,6 +28,9 @@ jobs: choco install openssl --version=${{ env.OPENSSL_VERSION}} } + - name: Install Ninja (Windows) + run: choco install -y --no-progress ninja + # When building SQLCipher, if we specify a path to OpenSSL and # there are spaces in the path, an error will occur, so to # avoid this, create the symlink. @@ -89,12 +88,6 @@ jobs: cd C:\dev\SQLite-${{ matrix.arch}}\ cl /MD extension-formats.c -link -dll -def:extension-formats.def -out:formats.dll cl /MD extension-functions.c -link -dll -def:extension-functions.def -out:math.dll - # FIXME: Disable building the 'fileio' extension for now (#3488) - # If this issue is resolved, be sure to delete the related patch for WiX - # curl -L -o fileio.c "https://sqlite.org/src/raw?filename=ext/misc/fileio.c&ci=trunk" - # curl -L -o test_windirent.c "https://sqlite.org/src/raw?filename=src/test_windirent.c&ci=trunk" - # curl -L -o test_windirent.h "https://sqlite.org/src/raw?filename=src/test_windirent.h&ci=trunk" - # cl /MD fileio.c test_windirent.c -link sqlite3.lib -dll -out:fileio.dll - name: Install SQLCipher run: | @@ -107,9 +100,8 @@ jobs: mkdir sqlcipher copy sqlite3.h sqlcipher - - name: Patch CMakeLists.txt and WiX Toolset Variables + - name: Patch WiX Toolset Variables run: | - git apply .github\patch\CMakeLists.txt.patch git apply .github\patch\product.wxs.patch git apply .github\patch\translations.wxs.patch git apply .github\patch\variables.wxi.patch @@ -118,30 +110,32 @@ jobs: run: | mkdir release-sqlite && cd release-sqlite if ("${{ matrix.arch }}" -eq "Win32") { - cmake -G "Visual Studio 16 2019" -A "Win32" -DCMAKE_BUILD_TYPE=Release ..\ + cmake -G"Ninja Multi-Config" -DCMAKE_PREFIX_PATH="C:/dev/SQLite-Win32;C:/dev/OpenSSL-Win32" ..\ } else { - cmake -G "Visual Studio 16 2019" ..\ + cmake -G"Ninja Multi-Config" -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="C:/dev/SQLite-Win64;C:/dev/OpenSSL-Win64" ..\ } - name: Build (SQLite) - run: cd release-sqlite && devenv /Build Release sqlitebrowser.sln /Project ALL_BUILD + run: | + cd release-sqlite + cmake --build . --config Release - name: Configure build (SQLCipher) run: | mkdir release-sqlcipher && cd release-sqlcipher if ("${{ matrix.arch }}" -eq "Win32") { - cmake -G "Visual Studio 16 2019" -DCMAKE_BUILD_TYPE=Release -Dsqlcipher=1 -A "Win32" ..\ + cmake -G"Ninja Multi-Config" -Dsqlcipher=1 -DCMAKE_PREFIX_PATH="C:/dev/SQLCipher-Win32;C:/dev/OpenSSL-Win32" ..\ } else { - cmake -G "Visual Studio 16 2019" -DCMAKE_BUILD_TYPE=Release -Dsqlcipher=1 ..\ + cmake -G"Ninja Multi-Config" -Dsqlcipher=1 -DCMAKE_PREFIX_PATH="C:/dev/SQLCipher-Win64;C:/dev/OpenSSL-Win64" ..\ } - name: Build (SQLCipher) run: | cd release-sqlcipher - devenv /Build Release sqlitebrowser.sln /Project ALL_BUILD - mv "Release\DB Browser for SQLite.exe" "Release\DB Browser for SQLCipher.exe" + cmake --build . --config Release - - name: Create MSI + - if: github.event_name != 'pull_request' + name: Create MSI env: ExePath: ${{ github.workspace }} OpenSSLPath: C:\dev\OpenSSL-${{ matrix.arch }} @@ -152,14 +146,10 @@ jobs: cd installer/windows ./build.cmd "${{ matrix.arch }}".ToLower() $ARCH="${{ matrix.arch }}".ToLower() - $DATE=$(Get-Date -Format "yyyy-MM-dd") - if ("${{ inputs.NIGHTLY }}" -eq "true") { - mv DB.Browser.for.SQLite-*.msi "DB.Browser.for.SQLite-$DATE-$ARCH.msi" - } else { - mv DB.Browser.for.SQLite-*.msi "DB.Browser.for.SQLite-dev-$(git rev-parse --short HEAD)-$ARCH.msi" - } + mv DB.Browser.for.SQLite-*.msi "DB.Browser.for.SQLite-v3.13.1-$ARCH.msi" - - name: Upload artifacts for code signing with SignPath + - if: github.event_name != 'pull_request' + name: Upload artifacts for code signing with SignPath id: unsigned-artifacts uses: actions/upload-artifact@v4 with: @@ -167,26 +157,23 @@ jobs: path: installer\windows\DB.Browser.for.SQLite-*.msi # Change the signing-policy-slug when you release an RC, RTM or stable release. - - name: Code signing with SignPath - uses: signpath/github-action-submit-signing-request@v0.4 + - if: github.event_name != 'pull_request' + name: Code signing with SignPath + uses: signpath/github-action-submit-signing-request@v1 with: api-token: '${{ secrets.SIGNPATH_API_TOKEN }}' github-artifact-id: '${{ steps.unsigned-artifacts.outputs.artifact-id }}' organization-id: '${{ secrets.SIGNPATH_ORGANIZATION_ID }}' output-artifact-directory: .\installer\windows project-slug: 'sqlitebrowser' - signing-policy-slug: 'test-signing' + signing-policy-slug: 'release-signing' wait-for-completion: true - - name: Create ZIP + - if: github.event_name != 'pull_request' + name: Create ZIP run: | $ARCH="${{ matrix.arch }}".ToLower() - $DATE=$(Get-Date -Format "yyyy-MM-dd") - if ("${{ inputs.NIGHTLY }}" -eq "true") { - $FILENAME_FORMAT="DB.Browser.for.SQLite-$DATE-$ARCH.zip" - } else { - $FILENAME_FORMAT="DB.Browser.for.SQLite-dev-$(git rev-parse --short HEAD)-$ARCH.zip" - } + $FILENAME_FORMAT="DB.Browser.for.SQLite-v3.13.1-$ARCH.zip" Start-Process msiexec.exe -ArgumentList "/a $(dir installer\windows\DB.Browser.for.SQLite-*.msi) /q TARGETDIR=$PWD\target\" -Wait if ("${{ matrix.arch }}" -eq "Win32") { move target\System\* "target\DB Browser for SQLite\" @@ -195,14 +182,16 @@ jobs: } Compress-Archive -Path "target\DB Browser for SQLite\*" -DestinationPath $FILENAME_FORMAT - - name: Prepare artifacts + - if: github.event_name != 'pull_request' + name: Prepare artifacts run: | mkdir build-artifacts move installer\windows\DB.Browser.for.SQLite-*.msi build-artifacts\ move DB.Browser.for.SQLite-*.zip build-artifacts\ Compress-Archive -Path build-artifacts\* -DestinationPath build-artifacts-${{ matrix.arch }}.zip - - name: Upload artifacts + - if: github.event_name != 'pull_request' + name: Upload artifacts uses: actions/upload-artifact@v4 with: name: build-artifacts-${{ matrix.os }}-${{ matrix.arch }} diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml deleted file mode 100644 index d776b78cd..000000000 --- a/.github/workflows/codeql.yml +++ /dev/null @@ -1,80 +0,0 @@ -name: "CodeQL" - -on: - push: - branches: ["master"] - pull_request: - # The branches below must be a subset of the branches above - branches: ["master"] - schedule: - - cron: "14 22 * * 6" - -jobs: - analyze: - name: Analyze - runs-on: ${{ (matrix.language == 'swift' && 'macos-latest') || 'ubuntu-latest' }} - timeout-minutes: ${{ (matrix.language == 'swift' && 120) || 360 }} - permissions: - actions: read - contents: read - security-events: write - - strategy: - fail-fast: false - matrix: - language: ["cpp", "python"] - # CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby' ] - # Use only 'java' to analyze code written in Java, Kotlin or both - # Use only 'javascript' to analyze code written in JavaScript, TypeScript or both - # Learn more about CodeQL language support at https://aka.ms/codeql-docs/language-support - - steps: - - name: Checkout repository - uses: actions/checkout@v4 - - - if: matrix.language == 'cpp' - name: Install dependencies - run: | - sudo apt-get update - sudo apt install build-essential git cmake libsqlite3-dev qtchooser qt5-qmake qtbase5-dev-tools qttools5-dev-tools libsqlcipher-dev qtbase5-dev libqt5scintilla2-dev libqcustomplot-dev qttools5-dev - - # Initializes the CodeQL tools for scanning. - - name: Initialize CodeQL - uses: github/codeql-action/init@v3 - with: - languages: ${{ matrix.language }} - # If you wish to specify custom queries, you can do so here or in a config file. - # By default, queries listed here will override any specified in a config file. - # Prefix the list here with "+" to use these queries and those in the config file. - - # For more details on CodeQL's query packs, refer to: https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning#using-queries-in-ql-packs - # queries: security-extended,security-and-quality - - - if: matrix.language == 'cpp' - name: Build C++ - run: | - mkdir build && cd build - cmake -Dsqlcipher=1 -Wno-dev .. - make - sudo make install - - # Autobuild attempts to build any compiled languages (C/C++, C#, Go, Java, or Swift). - # If this step fails, then you should remove it and run the build manually (see below) - - if: matrix.language != 'cpp' - name: Autobuild - uses: github/codeql-action/autobuild@v3 - - # ℹ️ Command-line programs to run using the OS shell. - # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun - - # If the Autobuild fails above, remove it and uncomment the following three lines. - # modify them (or add more) to build your code if your project, please refer to the EXAMPLE below for guidance. - - # - run: | - # echo "Run, Build Application using script" - # ./location_of_script_within_repo/buildscript.sh - - - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@v3 - with: - category: "/language:${{matrix.language}}" diff --git a/.github/workflows/coverity.yml b/.github/workflows/coverity.yml deleted file mode 100644 index 00fdb93ee..000000000 --- a/.github/workflows/coverity.yml +++ /dev/null @@ -1,34 +0,0 @@ -name: Coverity - -on: - push: - branches: [coverity_scan] - -defaults: - run: - shell: bash - -jobs: - build: - name: Coverity Scan - runs-on: ubuntu-20.04 - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Install dependencies - run: | - sudo apt-get update - sudo apt-get install qttools5-dev libqt5scintilla2-dev libqcustomplot-dev libsqlite3-dev libqt5svg5 libsqlcipher-dev qt5-default - - - name: Configure cmake - run: | - cmake -DCMAKE_INSTALL_PREFIX:PATH=/usr -DENABLE_TESTING=ON -Dsqlcipher=1 . - - - name: Build and scan - uses: vapier/coverity-scan-action@v1 - with: - project: sqlitebrowser%2Fsqlitebrowser - token: ${{ secrets.COVERITY_TOKEN }} - email: "github@mkleusberg.de" - command: make diff --git a/.github/workflows/cppcmake-nightly.yml b/.github/workflows/cppcmake-nightly.yml deleted file mode 100644 index f824c7406..000000000 --- a/.github/workflows/cppcmake-nightly.yml +++ /dev/null @@ -1,26 +0,0 @@ -name: Build and Deploy Nightly Builds - -on: - schedule: - - cron: '0 0 * * *' # Every day at midnight UTC - workflow_dispatch: - -jobs: - build-macos: - uses: ./.github/workflows/build-macos.yml - secrets: inherit - with: - NIGHTLY: true - - build-windows: - uses: ./.github/workflows/build-windows.yml - secrets: inherit - with: - NIGHTLY: true - - release: - needs: [build-macos, build-windows] - uses: ./.github/workflows/release.yml - secrets: inherit - with: - NIGHTLY: true diff --git a/.github/workflows/cppcmake-windows_on_arm.yml b/.github/workflows/cppcmake-windows_on_arm.yml new file mode 100644 index 000000000..42cd1e7c2 --- /dev/null +++ b/.github/workflows/cppcmake-windows_on_arm.yml @@ -0,0 +1,206 @@ +# NOTES: This CI workflow is scheduled to be integrated with the existing Windows CI workflow in the future. + +name: Build v3.13.1 for Windows on ARM + +on: + workflow_call: + inputs: + NIGHTLY: + default: false + type: boolean + workflow_dispatch: + +jobs: + build: + name: ${{ matrix.os }}-arm64 + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: [windows-11-arm] + env: + GH_TOKEN: ${{ github.token }} + QT_VERSION: 6.8.3 + steps: + - name: Checkout + uses: actions/checkout@v6 + + - name: Install dependencies + run: | + choco install --no-progress ninja wixtoolset + + Invoke-WebRequest -Uri "https://slproweb.com/download/WinUniversalOpenSSL-3_6_1.exe" -OutFile WinUniversalOpenSSL-3_6_1.exe + Start-Process -FilePath .\WinUniversalOpenSSL-3_6_1.exe -ArgumentList '/ALLUSERS /verysilent /dir="C:\dev\OpenSSL"' -Wait + + - name: Install Qt + uses: jurplel/install-qt-action@v4 + with: + arch: 'win64_msvc2022_arm64' + cache: true + cache-key-prefix: 'cache' + modules: 'debug_info qt5compat qtactiveqt qtcharts qtconnectivity qtgraphs qtgrpc qthttpserver qtimageformats qtlanguageserver qtlocation qtlottie qtmultimedia qtnetworkauth qtpositioning qtquick3d qtquick3dphysics qtquicktimeline qtremoteobjects qtscxml qtsensors qtserialbus qtserialport qtshadertools qtspeech qtvirtualkeyboard qtwebchannel qtwebsockets' + version: ${{ env.QT_VERSION }} + + - name: Setup MSVC + uses: ilammy/msvc-dev-cmd@v1 + with: + arch: arm64 + vsversion: 2022 + + - name: Setup MSYS2 + uses: msys2/setup-msys2@v2 + with: + msystem: CLANGARM64 + update: true + install: >- + curl + git + make + mingw-w64-clang-aarch64-clang + unzip + + - name: Build SQLite + run: | + $htmlContent = Invoke-WebRequest -Uri "https://sqlite.org/download.html" | Select-Object -ExpandProperty Content + $regex = [regex]::new('PRODUCT,(\d+\.\d+\.\d+),(\d+/sqlite-amalgamation-\d+\.zip),\d+,(.+)') + $match = $regex.Match($htmlContent) + $relativeUrl = $match.Groups[2].Value + $downloadLink = "https://sqlite.org/$relativeUrl" + Invoke-WebRequest -Uri $downloadLink -OutFile 'sqlite.zip' + Expand-Archive -Path sqlite.zip -DestinationPath C:\dev\ + Move-Item -Path C:\dev\sqlite-amalgamation-* C:\dev\SQLite\ + cd C:\dev\SQLite + cl sqlite3.c -DSQLITE_ENABLE_FTS5 -DSQLITE_ENABLE_FTS3 -DSQLITE_ENABLE_FTS3_PARENTHESIS -DSQLITE_ENABLE_STAT4 -DSQLITE_SOUNDEX -DSQLITE_ENABLE_JSON1 -DSQLITE_ENABLE_GEOPOLY -DSQLITE_ENABLE_RTREE -DSQLITE_ENABLE_MATH_FUNCTIONS -DSQLITE_MAX_ATTACHED=125 -DSQLITE_API="__declspec(dllexport)" -link -dll -out:sqlite3.dll + + - name: Build SQLean extension + shell: msys2 {0} + run: | + git clone https://www.github.com/nalgeon/sqlean /c/dev/sqlean + cd /c/dev/sqlean + cp /c/a/sqlitebrowser/sqlitebrowser/installer/windows_on_arm/add_sqlean_arm64_target.patch . + git apply --ignore-space-change --ignore-whitespace add_sqlean_arm64_target.patch + make prepare-dist + make download-sqlite + make download-external + make compile-windows-arm64 + + - name: Build 'formats' Extensions + run: | + cp .\src\extensions\extension-formats.c C:\dev\SQLite\ + cp .\src\extensions\extension-formats.def C:\dev\SQLite\ + cd C:\dev\SQLite + cl /MD extension-formats.c -link -dll -def:extension-formats.def -out:formats.dll + + - name: Setup MSVC + uses: ilammy/msvc-dev-cmd@v1 + with: + arch: x64 + vsversion: 2022 + + - name: Build x64 binaries for build SQLCipher + run: | + git clone https://www.github.com/sqlcipher/sqlcipher C:\dev\SQLCipher --branch v4.6.1 + cd C:\dev\SQLCipher + nmake /f Makefile.msc lemon.exe mkkeywordhash.exe mksourceid.exe src-verify.exe USE_AMALGAMATION=1 NO_TCL=1 SQLITE3DLL=sqlcipher.dll SQLITE3LIB=sqlcipher.lib SQLITE3EXE=sqlcipher.exe LTLINKOPTS="C:\dev\OpenSSL\lib\VC\x64\MD\libcrypto.lib" OPT_FEATURE_FLAGS="-DSQLITE_TEMP_STORE=2 -DSQLITE_HAS_CODEC=1 -DSQLITE_ENABLE_FTS3=1 -DSQLITE_ENABLE_FTS5=1 -DSQLITE_ENABLE_FTS3_PARENTHESIS=1 -DSQLITE_ENABLE_STAT4=1 -DSQLITE_SOUNDEX=1 -DSQLITE_ENABLE_JSON1=1 -DSQLITE_ENABLE_GEOPOLY=1 -DSQLITE_ENABLE_RTREE=1 -DSQLCIPHER_CRYPTO_OPENSSL=1 -DSQLITE_MAX_ATTACHED=125 -IC:\dev\OpenSSL\include\x64" + + - name: Setup MSVC + uses: ilammy/msvc-dev-cmd@v1 + with: + arch: arm64 + vsversion: 2022 + + - name: Build SQLCipher + run: | + cd C:\dev\SQLCipher + nmake /f Makefile.msc sqlcipher.dll USE_AMALGAMATION=1 NO_TCL=1 SQLITE3DLL=sqlcipher.dll SQLITE3LIB=sqlcipher.lib SQLITE3EXE=sqlcipher.exe LTLINKOPTS="C:\dev\OpenSSL\lib\VC\arm64\MD\libcrypto.lib" OPT_FEATURE_FLAGS="-DSQLITE_TEMP_STORE=2 -DSQLITE_HAS_CODEC=1 -DSQLITE_ENABLE_FTS3=1 -DSQLITE_ENABLE_FTS5=1 -DSQLITE_ENABLE_FTS3_PARENTHESIS=1 -DSQLITE_ENABLE_STAT4=1 -DSQLITE_SOUNDEX=1 -DSQLITE_ENABLE_JSON1=1 -DSQLITE_ENABLE_GEOPOLY=1 -DSQLITE_ENABLE_RTREE=1 -DSQLCIPHER_CRYPTO_OPENSSL=1 -DSQLITE_MAX_ATTACHED=125 -IC:\dev\OpenSSL\include\arm64" + mkdir sqlcipher + copy sqlite3.h sqlcipher + mv VERSION VERSION.txt + + - name: Configure build (SQLite) + run: | + mkdir release-sqlite && cd release-sqlite + cmake -G "Ninja Multi-Config" -DCMAKE_PREFIX_PATH="C:\dev\SQLite" -DQT_MAJOR=Qt6 ..\ + + - name: Build (SQLite) + run: | + cd release-sqlite + cmake --build . --config Release + + - name: Configure build (SQLCipher) + run: | + mkdir release-sqlcipher && cd release-sqlcipher + cmake -G "Ninja Multi-Config" -Dsqlcipher=1 -DCMAKE_PREFIX_PATH="C:\dev\OpenSSL;C:\dev\SQLCipher" -DQT_MAJOR=Qt6 ..\ + + - name: Build (SQLCipher) + run: | + cd release-sqlcipher + cmake --build . --config Release + + + - if: github.event_name != 'pull_request' + name: Create MSI + env: + ExePath: ${{ github.workspace }} + OpenSSLPath: C:\dev\OpenSSL + SQLCipherPath: C:\dev\SQLCipher + SqleanPath: C:\dev\sqlean + SQLitePath: C:\dev\SQLite + run: | + cd installer\windows_on_arm + ./build.cmd + mv DB.Browser.for.SQLite-*.msi "DB.Browser.for.SQLite-v3.13.1-arm64.msi" + + - if: github.event_name != 'pull_request' + name: Upload artifacts for code signing with SignPath + id: unsigned-artifacts + uses: actions/upload-artifact@v7 + with: + name: build-artifacts-${{ matrix.os }}-arm64-unsigned + path: installer\windows_on_arm\DB.Browser.for.SQLite-v3.13.1-arm64.msi + + # Change the signing-policy-slug when you release an RC, RTM or stable release. + - if: github.event_name != 'pull_request' + name: Code signing with SignPath + uses: signpath/github-action-submit-signing-request@v2 + with: + api-token: '${{ secrets.SIGNPATH_API_TOKEN }}' + github-artifact-id: '${{ steps.unsigned-artifacts.outputs.artifact-id }}' + organization-id: '${{ secrets.SIGNPATH_ORGANIZATION_ID }}' + output-artifact-directory: .\installer\windows + project-slug: 'sqlitebrowser' + signing-policy-slug: 'release-signing' + wait-for-completion: true + + - if: github.event_name != 'pull_request' + name: Create ZIP + run: | + Start-Process msiexec.exe -ArgumentList "/a installer\windows_on_arm\DB.Browser.for.SQLite-v3.13.1-arm64.msi /q TARGETDIR=$PWD\target\" -Wait + Compress-Archive -Path "target\DB Browser for SQLite\*" -DestinationPath DB.Browser.for.SQLite-v3.13.1-arm64.zip + + - if: github.event_name != 'pull_request' && github.workflow != 'Build (Windows)' + name: Prepare artifacts + run: | + mkdir build-artifacts + move installer\windows_on_arm\DB.Browser.for.SQLite-v3.13.1-arm64.msi build-artifacts\ + move DB.Browser.for.SQLite-v3.13.1-arm64.zip build-artifacts\ + Compress-Archive -Path build-artifacts\* -DestinationPath build-artifacts-arm64.zip + + - name: Upload artifacts + uses: actions/upload-artifact@v7 + with: + name: build-artifacts-${{ matrix.os }}-arm64 + path: build-artifacts-arm64.zip + + - name: Summary + run: | + $OPENSSL_VERSION=(C:\dev\OpenSSL\bin\arm64\openssl version) -replace "OpenSSL ([\d\.]+[a-z]+) .*", '$1' + $QT_VERSION = & "$env:QT_ROOT_DIR\bin\qmake.exe" --version | Select-String "Using Qt version" | ForEach-Object { $_.ToString().Split()[3] } + $SQLCIPHER_VERSION=(Get-Item "C:\dev\SQLCipher\sqlcipher.dll").VersionInfo.FileVersion + Select-String -Path "C:\dev\SQLite\sqlite3.h" -Pattern '#define SQLITE_VERSION\s+"([\d\.]+)"' | ForEach-Object { + ($_ -match '"([\d\.]+)"') | Out-Null + $SQLITE_VERSION=$matches[1] + } + + echo "## Libaries used" >> $env:GITHUB_STEP_SUMMARY + echo "OpenSSL: $OPENSSL_VERSION, Qt: $QT_VERSION, SQLCipher: $SQLCIPHER_VERSION, SQLite: $SQLITE_VERSION" >> $env:GITHUB_STEP_SUMMARY diff --git a/.github/workflows/cppcmake.yml b/.github/workflows/cppcmake.yml index 9c66c0e72..95155bc37 100644 --- a/.github/workflows/cppcmake.yml +++ b/.github/workflows/cppcmake.yml @@ -1,9 +1,6 @@ -name: CI +name: Build v3.13.1 on: - push: - branches: [master] - pull_request: workflow_dispatch: permissions: @@ -11,23 +8,17 @@ permissions: jobs: build-appimage: - if: github.event_name != 'pull_request' uses: ./.github/workflows/build-appimage.yml build-macos: uses: ./.github/workflows/build-macos.yml secrets: inherit - build-ubuntu: - uses: ./.github/workflows/build-ubuntu.yml - secrets: inherit - build-windows: uses: ./.github/workflows/build-windows.yml secrets: inherit release: - if: github.event_name != 'pull_request' needs: [build-appimage, build-macos, build-windows] uses: ./.github/workflows/release.yml secrets: inherit diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 80e773889..ee8ba46e8 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -2,13 +2,9 @@ name: Release on: workflow_call: - inputs: - NIGHTLY: - default: false - type: boolean env: - tag_name: ${{ inputs.NIGHTLY == true && 'nightly' || 'continuous' }} + tag_name: "v3.13.1" jobs: release: @@ -28,6 +24,11 @@ jobs: with: path: target + - name: Clear artifacts + uses: geekyeggo/delete-artifact@v5 + with: + name: build-artifacts-* + - name: Remove unsigned Windows build run: rm -rfv target/*unsigned* @@ -43,7 +44,6 @@ jobs: uses: softprops/action-gh-release@v2 with: files: target/* + draft: true prerelease: true tag_name: ${{ env.tag_name }} - - # For reference: Uploading nightly builds to the nightly server is processed on the nightly server side. diff --git a/.github/workflows/winget.yml b/.github/workflows/winget.yml deleted file mode 100644 index 0bfa84771..000000000 --- a/.github/workflows/winget.yml +++ /dev/null @@ -1,16 +0,0 @@ -name: Publish to WinGet - -on: - release: - types: [released] - -jobs: - publish: - # Action can only be run on windows - runs-on: windows-latest - steps: - - uses: vedantmgoyal2009/winget-releaser@v2 - with: - identifier: DBBrowserForSQLite.DBBrowserForSQLite - installers-regex: '\.msi$' # Only .msi files - token: ${{ secrets.WINGET_TOKEN }} diff --git a/BUILDING.md b/BUILDING.md index 6e14a3ef4..5d6761ae5 100644 --- a/BUILDING.md +++ b/BUILDING.md @@ -27,7 +27,6 @@ The wiki has information that is a bit more detailed or less common, but may be - [OpenSUSE](#opensuse) - [macOS](#macos) - [Build an `.app` bundle](#build-an-app-bundle) - - [Add the extension to the app bundle (Optional)](#add-the-extension-to-the-app-bundle-optional) - [Windows](#windows) - [Compiling on Windows with MSVC](#compiling-on-windows-with-msvc) - [Cross compiling for Windows](#cross-compiling-for-windows) @@ -138,11 +137,9 @@ It requires SQLite and at least Qt 5.15.9 to be installed first. These are the ```bash brew tap sqlitebrowser/tap # If you are using Apple Silicon Mac -brew install db4subqt@5 db4subsqlcipher db4subsqlitefts@5 -# If you are using Intel Mac -brew install db4sqt@5 db4ssqlcipher db4ssqlitefts@5 +brew install sqlb-qt@5 sqlb-sqlcipher sqlb-sqlite ``` -> You can don't need SQLCipher support, you can skip `db4ssqlcipher` and `db4ssqlitefts@5`. +> You can don't need SQLCipher support, you can skip `sqlb-sqlcipher`. Then it's just a matter of getting the source: @@ -163,39 +160,10 @@ mv DB\ Browser\ for\ SQLite.app /Applications > If you want to build universal binary, change the `cmake` command to
> `cmake -DcustomTap=1 -DCMAKE_OSX_ARCHITECTURES="arm64;x86_64" ..`
-> Of course, this requires you to have an Apple Silicon Mac and an installation of formula starting with `db4sub`. +> Of course, this requires you to have an Apple Silicon Mac. An icon for "DB Browser for SQLite" should now be in your main macOS Applications list, ready to launch. -#### Add the extension to the app bundle (Optional) - -> **Note**: The following lines look a bit complicated, but are all commands that you need to run. - -```bash -/opt/homebrew/opt/db4sqtub@5/bin/macdeployqt DB\ Browser\ for\ SQLite.app -mkdir build/DB\ Browser\ for\ SQLite.app/Contents/Extensions -clang -I /opt/homebrew/opt/db4ssqliteftsub@5/include -L /opt/homebrew/opt/db4ssqliteftsub@5/lib -fno-common -dynamiclib src/extensions/extension-formats.c -o formats-arm64.dylib -arch -x86_64 clang -I /opt/homebrew/opt/db4ssqliteftsub@5/include -L /opt/homebrew/opt/db4ssqliteftsub@5/lib -fno-common -dynamiclib src/extensions/extension-formats.c -o formats-x86_64.dylib -lipo -create -output build/DB\ Browser\ for\ SQLite.app/Contents/Extensions/formats.dylib formats-arm64.dylib formats-x86_64.dylib -install_name_tool -id "@executable_path/../Extensions/formats.dylib" build/DB\ Browser\ for\ SQLite.app/Contents/Extensions/formats.dylib -ln -s formats.dylib build/DB\ Browser\ for\ SQLite.app/Contents/Extensions/formats.dylib.dylib - -clang -I /opt/homebrew/opt/db4ssqliteftsub@5/include -L /opt/homebrew/opt/db4ssqliteftsub@5/lib -fno-common -dynamiclib src/extensions/extension-functions.c -o math-arm64.dylib -arch -x86_64 clang -I /opt/homebrew/opt/db4ssqliteftsub@5/include -L /opt/homebrew/opt/db4ssqliteftsub@5/lib -fno-common -dynamiclib src/extensions/extension-functions.c -o math-x86_64.dylib -lipo -create -output build/DB\ Browser\ for\ SQLite.app/Contents/Extensions/math.dylib math-arm64.dylib math-x86_64.dylib -install_name_tool -id "@executable_path/../Extensions/math.dylib" build/DB\ Browser\ for\ SQLite.app/Contents/Extensions/math.dylib -ln -s math.dylib build/DB\ Browser\ for\ SQLite.app/Contents/Extensions/math.dylib.dylib - -curl -L -o src/extensions/fileio.c 'https://sqlite.org/src/raw?filename=ext/misc/fileio.c&ci=trunk' -curl -L -o src/extensions/test_windirent.c 'https://sqlite.org/src/raw?filename=src/test_windirent.c&ci=trunk' -curl -L -o src/extensions/test_windirent.h 'https://sqlite.org/src/raw?filename=src/test_windirent.h&ci=trunk' -clang -I /opt/homebrew/opt/db4ssqliteftsub@5/include -L /opt/homebrew/opt/db4ssqliteftsub@5/lib -fno-common -dynamiclib src/extensions/fileio.c src/extensions/test_windirent.c -o fileio-arm64.dylib -arch -x86_64 clang -I /opt/homebrew/opt/db4ssqliteftsub@5/include -L /opt/homebrew/opt/db4ssqliteftsub@5/lib -fno-common -dynamiclib src/extensions/fileio.c src/extensions/test_windirent.c -o fileio-x86_64.dylib -lipo -create -output build/DB\ Browser\ for\ SQLite.app/Contents/Extensions/fileio.dylib fileio-arm64.dylib fileio-x86_64.dylib -install_name_tool -id "@executable_path/../Extensions/fileio.dylib" build/DB\ Browser\ for\ SQLite.app/Contents/Extensions/fileio.dylib -ln -s fileio.dylib build/DB\ Browser\ for\ SQLite.app/Contents/Extensions/fileio.dylib.dylib -``` - > Also, we have a CI workflow for macOS, you can check it out [here](https://github.com/sqlitebrowser/sqlitebrowser/blob/master/.github/workflows/build-macos.yml) ### Windows diff --git a/CHANGELOG.md b/CHANGELOG.md index 4fd687545..6a62d5146 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -121,6 +121,7 @@ See "Highlights on user-visible changes" on https://github.com/sqlitebrowser/sql - Fix error messages in Execute SQL tab (c0adfe43) - Fix altering tables with generated as columns (39e9eb0e) +<<<<<<< HEAD ### Changed - Show a useful icon in SQL tabs (#2153) (81b9b5a1) @@ -269,6 +270,13 @@ See "Highlights on user-visible changes" on https://github.com/sqlitebrowser/sql - Plot: show x and y values on a tooltip when hovering over the plot (ce176be2) - Export: use QSaveFile to get better error check on full partition (496d39db) - appimage: Update to SQLite 3.41.1 (9426509ac8a8422d8b164c2acfb6a849ea37e306) +||||||| parent of 9832a52d (Replace `http` with `https` in the `AboutDialog` and `MainWindow`) +- _none_ +======= +- _none_ +#### etc. +- Replace `http` with `https` in the `AboutDialog` and `MainWindow`. +>>>>>>> 9832a52d (Replace `http` with `https` in the `AboutDialog` and `MainWindow`) ### Removed - diff --git a/CMakeLists.txt b/CMakeLists.txt index 1c2f1e8ef..78f4a31bb 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,53 +1,42 @@ -cmake_minimum_required(VERSION 3.15) +cmake_minimum_required(VERSION 3.16) + project(sqlitebrowser - VERSION 3.13.99 + VERSION 3.13.1 DESCRIPTION "GUI editor for SQLite databases" + LANGUAGES CXX ) -# Fix behavior of CMAKE_CXX_STANDARD when targeting macOS. -if(POLICY CMP0025) - # https://cmake.org/cmake/help/latest/policy/CMP0025.html - cmake_policy(SET CMP0025 NEW) -endif() +include(GNUInstallDirs) -# Fix warning of AUTOMOC behavior -if(POLICY CMP0071) - # https://cmake.org/cmake/help/latest/policy/CMP0071.html - cmake_policy(SET CMP0071 NEW) -endif() +include(config/options.cmake) -# Fix warning of Cached Variables -if(POLICY CMP0102) - # https://cmake.org/cmake/help/latest/policy/CMP0102.html - cmake_policy(SET CMP0102 NEW) -endif() +set(CMAKE_AUTOMOC ON) +set(CMAKE_AUTORCC ON) +set(CMAKE_AUTOUIC ON) +add_executable(${PROJECT_NAME}) -include(GNUInstallDirs) -OPTION(BUILD_STABLE_VERSION "Don't build the stable version by default" OFF) # Choose between building a stable version or nightly (the default), depending on whether '-DBUILD_STABLE_VERSION=1' is passed on the command line or not. -OPTION(ENABLE_TESTING "Enable the unit tests" OFF) -OPTION(FORCE_INTERNAL_QSCINTILLA "Don't use the distribution's QScintilla library even if there is one" OFF) -OPTION(FORCE_INTERNAL_QCUSTOMPLOT "Don't use distribution's QCustomPlot even if available" ON) -OPTION(FORCE_INTERNAL_QHEXEDIT "Don't use distribution's QHexEdit even if available" ON) -OPTION(ALL_WARNINGS "Enable some useful warning flags" OFF) -OPTION(sqlcipher "Build with SQLCipher library" OFF) -OPTION(customTap "Using SQLCipher, SQLite and Qt installed through our custom Homebrew tap" OFF) +if(QT_MAJOR STREQUAL "Qt5") + set(CMAKE_CXX_STANDARD 14) +elseif(QT_MAJOR STREQUAL "Qt6") + set(CMAKE_CXX_STANDARD 17) +else() + message(FATAL_ERROR "Uknown Qt Version: ${QT_MAJOR}") +endif() -set(CMAKE_CXX_STANDARD 14) set(CMAKE_CXX_STANDARD_REQUIRED True) -set(CMAKE_AUTOMOC ON) -set(CMAKE_INCLUDE_CURRENT_DIR ON) +set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake" "${CMAKE_MODULE_PATH}") -if(APPLE) - add_executable(${PROJECT_NAME} MACOSX_BUNDLE) -elseif(WIN32) - add_executable(${PROJECT_NAME} WIN32) -else() - add_executable(${PROJECT_NAME}) +if(NOT CMAKE_BUILD_TYPE) + set(CMAKE_BUILD_TYPE "Release") endif() -# Determine the git commit hash +set_target_properties(${PROJECT_NAME} PROPERTIES + WIN32_EXECUTABLE ON + MACOSX_BUNDLE ON +) + execute_process( COMMAND git -C ${CMAKE_CURRENT_SOURCE_DIR} rev-parse --short --verify HEAD OUTPUT_VARIABLE GIT_COMMIT_HASH @@ -61,7 +50,6 @@ if (GIT_COMMIT_HASH STREQUAL "") endif() add_definitions(-DGIT_COMMIT_HASH="${GIT_COMMIT_HASH}") - if(NOT BUILD_STABLE_VERSION) # BUILD_VERSION is the current date in YYYYMMDD format. It is only # used by the nightly version to add the date of the build. @@ -70,98 +58,42 @@ if(NOT BUILD_STABLE_VERSION) target_compile_definitions(${PROJECT_NAME} PRIVATE BUILD_VERSION=${BUILD_VERSION}) endif() -set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake" "${CMAKE_MODULE_PATH}") - -if(NOT CMAKE_BUILD_TYPE) - set(CMAKE_BUILD_TYPE "Release") -endif() - -if(MSVC) - if(CMAKE_CL_64) - # Paths for 64-bit windows builds - set(OPENSSL_PATH "C:/dev/OpenSSL-Win64" CACHE PATH "OpenSSL Path") - set(QT5_PATH "C:/dev/Qt/5.12.12/msvc2017_64" CACHE PATH "Qt5 Path") - - # Choose between SQLCipher or SQLite, depending whether - # -Dsqlcipher=on is passed on the command line - if(sqlcipher) - set(SQLITE3_PATH "C:/git_repos/SQLCipher-Win64" CACHE PATH "SQLCipher Path") - else() - set(SQLITE3_PATH "C:/dev/SQLite-Win64" CACHE PATH "SQLite Path") - endif() - else() - # Paths for 32-bit windows builds - set(OPENSSL_PATH "C:/dev/OpenSSL-Win32" CACHE PATH "OpenSSL Path") - set(QT5_PATH "C:/dev/Qt/5.12.12/msvc2017" CACHE PATH "Qt5 Path") - - # Choose between SQLCipher or SQLite, depending whether - # -Dsqlcipher=on is passed on the command line - if(sqlcipher) - set(SQLITE3_PATH "C:/git_repos/SQLCipher-Win32" CACHE PATH "SQLCipher Path") - else() - set(SQLITE3_PATH "C:/dev/SQLite-Win32" CACHE PATH "SQLite Path") - endif() - endif() - - list(PREPEND CMAKE_PREFIX_PATH ${QT5_PATH} ${SQLITE3_PATH}) -endif() - +include(config/platform.cmake) -if(APPLE) - # For Intel Mac's - if(EXISTS /usr/local/opt/qt5) - list(APPEND CMAKE_PREFIX_PATH "/usr/local/opt/qt5") - endif() - - # For Apple Silicon Mac's - if(EXISTS /opt/homebrew/opt/qt5) - list(APPEND CMAKE_PREFIX_PATH "/opt/homebrew/opt/qt5") - endif() - if(EXISTS /opt/homebrew/opt/sqlitefts5) - list(PREPEND CMAKE_PREFIX_PATH "/opt/homebrew/opt/sqlitefts5") - endif() - - # For Apple Silicon Mac's and install dependencies via our Homebrew tap(sqlitebrowser/homebrew-tap) - if(customTap AND EXISTS /opt/homebrew/opt/) - list(PREPEND CMAKE_PREFIX_PATH "/opt/homebrew/opt/db4subqt@5") - list(PREPEND CMAKE_PREFIX_PATH "/opt/homebrew/opt/db4subsqlitefts@5") - - if(sqlcipher) - list(APPEND SQLCIPHER_INCLUDE_DIR "/opt/homebrew/include") - list(APPEND SQLCIPHER_LIBRARY "/opt/homebrew/opt/db4subsqlcipher/lib/libsqlcipher.0.dylib") - endif() - endif() -endif() - -find_package(Qt5 REQUIRED COMPONENTS Concurrent Gui LinguistTools Network PrintSupport Test Widgets Xml) - -if(NOT FORCE_INTERNAL_QSCINTILLA) - find_package(QScintilla 2.8.10) -endif() -if(NOT FORCE_INTERNAL_QCUSTOMPLOT) - find_package(QCustomPlot) -endif() -if(NOT FORCE_INTERNAL_QHEXEDIT) - find_package(QHexEdit) +find_package(${QT_MAJOR} REQUIRED COMPONENTS Concurrent Gui LinguistTools Network PrintSupport Test Widgets Xml) +set(QT_LIBS + ${QT_MAJOR}::Gui + ${QT_MAJOR}::Test + ${QT_MAJOR}::PrintSupport + ${QT_MAJOR}::Widgets + ${QT_MAJOR}::Network + ${QT_MAJOR}::Concurrent + ${QT_MAJOR}::Xml +) +if(QT_MAJOR STREQUAL "Qt6") + find_package(Qt6 REQUIRED COMPONENTS Core5Compat) + list(APPEND QT_LIBS Qt6::Core5Compat) + set_target_properties(${PROJECT_NAME} PROPERTIES + AUTOUIC_OPTIONS "--connections=string" + ) endif() -target_include_directories(${PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_LIST_DIR}/libs/json) +target_include_directories(${PROJECT_NAME} SYSTEM PRIVATE ${CMAKE_CURRENT_LIST_DIR}/libs/json) +target_include_directories(${PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_BINARY_DIR} src) -if(NOT QSCINTILLA_FOUND) - add_subdirectory(libs/qscintilla/Qt4Qt5) -endif() -if(NOT QHexEdit_FOUND) - add_subdirectory(libs/qhexedit) -endif() -if(NOT QCustomPlot_FOUND) - add_subdirectory(libs/qcustomplot-source) -endif() +include(config/3dparty.cmake) -if(ENABLE_TESTING) - enable_testing() +# SQLCipher option +if(sqlcipher) + add_definitions(-DENABLE_SQLCIPHER) + find_package(SQLCipher REQUIRED) + include_directories(SYSTEM "${SQLCIPHER_INCLUDE_DIR}/sqlcipher") + set(LIBSQLITE_NAME SQLCipher::SQLCipher) +else() + find_package(SQLite3 REQUIRED) + set(LIBSQLITE_NAME SQLite::SQLite3) endif() -# generate file with version information configure_file(${CMAKE_CURRENT_SOURCE_DIR}/src/version.h.in ${CMAKE_CURRENT_BINARY_DIR}/version.h ) @@ -300,7 +232,9 @@ target_sources(${PROJECT_NAME} src/TableBrowserDock.cpp ) -set(SQLB_FORMS +source_group("Qt UI" "src/.*\.ui$") +target_sources(${PROJECT_NAME} + PRIVATE src/AboutDialog.ui src/EditIndexDialog.ui src/EditDialog.ui @@ -327,319 +261,44 @@ set(SQLB_FORMS src/ImageViewer.ui ) -set(SQLB_RESOURCES - src/icons/icons.qrc - src/translations/flags/flags.qrc - src/translations/translations.qrc - src/certs/CaCerts.qrc - src/qdarkstyle/dark/darkstyle.qrc - src/qdarkstyle/light/lightstyle.qrc -) +include(config/translations.cmake) -set(SQLB_MISC +source_group("Qt Resources" "src/.*\.qrc$") +target_sources(${PROJECT_NAME} + PRIVATE + + # General + src/certs/CaCerts.qrc src/sql/parser/sqlite3_parser.yy src/sql/parser/sqlite3_lexer.ll -) - -# Translation files -set(SQLB_TSS - "${CMAKE_SOURCE_DIR}/src/translations/sqlb_ar_SA.ts" - "${CMAKE_SOURCE_DIR}/src/translations/sqlb_cs.ts" - "${CMAKE_SOURCE_DIR}/src/translations/sqlb_zh.ts" - "${CMAKE_SOURCE_DIR}/src/translations/sqlb_zh_TW.ts" - "${CMAKE_SOURCE_DIR}/src/translations/sqlb_de.ts" - "${CMAKE_SOURCE_DIR}/src/translations/sqlb_es_ES.ts" - "${CMAKE_SOURCE_DIR}/src/translations/sqlb_fr.ts" - "${CMAKE_SOURCE_DIR}/src/translations/sqlb_ru.ts" - "${CMAKE_SOURCE_DIR}/src/translations/sqlb_pl.ts" - "${CMAKE_SOURCE_DIR}/src/translations/sqlb_pt_BR.ts" - "${CMAKE_SOURCE_DIR}/src/translations/sqlb_en_GB.ts" - "${CMAKE_SOURCE_DIR}/src/translations/sqlb_ko_KR.ts" - "${CMAKE_SOURCE_DIR}/src/translations/sqlb_tr.ts" - "${CMAKE_SOURCE_DIR}/src/translations/sqlb_uk_UA.ts" - "${CMAKE_SOURCE_DIR}/src/translations/sqlb_it.ts" - "${CMAKE_SOURCE_DIR}/src/translations/sqlb_ja.ts" - "${CMAKE_SOURCE_DIR}/src/translations/sqlb_nl.ts" - "${CMAKE_SOURCE_DIR}/src/translations/sqlb_sv.ts" - "${CMAKE_SOURCE_DIR}/src/translations/sqlb_id.ts" - "${CMAKE_SOURCE_DIR}/src/translations/sqlb_ro.ts" -) - -# Windows image format plugin files -set(WIN_IMG_PLUGINS - "${QT5_PATH}/plugins/imageformats/qgif.dll" - "${QT5_PATH}/plugins/imageformats/qicns.dll" - "${QT5_PATH}/plugins/imageformats/qico.dll" - "${QT5_PATH}/plugins/imageformats/qjpeg.dll" - "${QT5_PATH}/plugins/imageformats/qsvg.dll" - "${QT5_PATH}/plugins/imageformats/qtga.dll" - "${QT5_PATH}/plugins/imageformats/qtiff.dll" - "${QT5_PATH}/plugins/imageformats/qwbmp.dll" - "${QT5_PATH}/plugins/imageformats/qwebp.dll" -) -set(WIN_IMG_PLUGINS_DEBUG - "${QT5_PATH}/plugins/imageformats/qgifd.dll" - "${QT5_PATH}/plugins/imageformats/qicnsd.dll" - "${QT5_PATH}/plugins/imageformats/qicod.dll" - "${QT5_PATH}/plugins/imageformats/qjpegd.dll" - "${QT5_PATH}/plugins/imageformats/qsvgd.dll" - "${QT5_PATH}/plugins/imageformats/qtgad.dll" - "${QT5_PATH}/plugins/imageformats/qtiffd.dll" - "${QT5_PATH}/plugins/imageformats/qwbmpd.dll" - "${QT5_PATH}/plugins/imageformats/qwebpd.dll" -) - -# License files -set(LICENSE_FILES - LICENSE - LICENSE-PLUGINS -) -qt5_wrap_ui(SQLB_FORM_HDR ${SQLB_FORMS}) -if(SQLB_TSS) - # add translations - foreach(SQLB_TS ${SQLB_TSS}) - set_source_files_properties("${SQLB_TS}" PROPERTIES OUTPUT_LOCATION "${CMAKE_SOURCE_DIR}/src/translations") - endforeach() - qt5_add_translation(SQLB_QMS ${SQLB_TSS}) -endif() -qt5_add_resources(SQLB_RESOURCES_RCC ${SQLB_RESOURCES}) - -#icon and correct libs/subsystem for windows -if(WIN32) - #enable version check for windows - add_definitions(-DCHECKNEWVERSION) - - if(MINGW) - # resource compilation for MinGW - add_custom_command(OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/sqlbicon.o" - COMMAND windres "-I${CMAKE_CURRENT_BINARY_DIR}" "-i${CMAKE_CURRENT_SOURCE_DIR}/src/winapp.rc" -o "${CMAKE_CURRENT_BINARY_DIR}/sqlbicon.o" VERBATIM - ) - target_sources(${PROJECT_NAME} PRIVATE "${CMAKE_CURRENT_BINARY_DIR}/sqlbicon.o") - set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,-subsystem,windows") - set(WIN32_STATIC_LINK -Wl,-Bstatic -lssl -lcrypto -lws2_32) - set(ADDITIONAL_LIBS lzma) - else() - target_sources(${PROJECT_NAME} PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/src/winapp.rc") - endif() -else() - set(LPTHREAD pthread) -endif() - -#enable version check for macOS -if(APPLE) - add_definitions(-DCHECKNEWVERSION) -endif() - -# SQLCipher option -if(sqlcipher) - add_definitions(-DENABLE_SQLCIPHER) - set(LIBSQLITE_NAME SQLCipher) -else() - set(LIBSQLITE_NAME SQLite3) -endif() - -# add extra library path for MacOS and FreeBSD -set(EXTRAPATH APPLE OR ${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD") -if(EXTRAPATH) - list(PREPEND CMAKE_PREFIX_PATH /usr/local/opt/sqlite/lib) - list(PREPEND CMAKE_PREFIX_PATH /usr/local/opt/sqlitefts5/lib) -endif() - -find_package(${LIBSQLITE_NAME}) -if (sqlcipher) - target_link_libraries(${PROJECT_NAME} SQLCipher::SQLCipher) -else() - target_link_libraries(${PROJECT_NAME} SQLite::SQLite3) -endif() - -if(MSVC) - if(sqlcipher) - find_file(SQLITE3_DLL sqlcipher.dll) - else() - find_file(SQLITE3_DLL sqlite3.dll) - endif() -endif() + # Graphics + src/icons/icons.qrc -target_include_directories(${PROJECT_NAME} PRIVATE src) + # Translations + src/translations/flags/flags.qrc + src/translations/translations.qrc -target_sources(${PROJECT_NAME} - PRIVATE - ${SQLB_FORM_HDR} - ${SQLB_MOC} - ${SQLB_RESOURCES_RCC} - ${SQLB_MISC} + # Styles + src/qdarkstyle/dark/darkstyle.qrc + src/qdarkstyle/light/lightstyle.qrc ) -# Warnings -if(ALL_WARNINGS AND CMAKE_COMPILER_IS_GNUCC) - target_compile_options(${PROJECT_NAME} PRIVATE -Wall -Wextra -Wshadow -Wnon-virtual-dtor -Wold-style-cast -Wcast-align -Wunused -Woverloaded-virtual -Wpedantic -Wconversion -Wsign-conversion) - target_compile_options(${PROJECT_NAME} PRIVATE -Wdouble-promotion -Wformat=2 -Wlogical-op -Wuseless-cast) - if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 7.0) - target_compile_options(${PROJECT_NAME} PRIVATE -Wnull-dereference -Wduplicated-cond -Wduplicated-branches) - endif() -endif() - -set(QT_LIBS Qt5::Gui Qt5::Test Qt5::PrintSupport Qt5::Widgets Qt5::Network Qt5::Concurrent Qt5::Xml) - target_link_libraries(${PROJECT_NAME} - ${LPTHREAD} + PRIVATE ${QT_LIBS} - ${WIN32_STATIC_LINK} - ${ADDITIONAL_LIBS} -) - -target_link_libraries(${PROJECT_NAME} - QHexEdit::QHexEdit - QCustomPlot::QCustomPlot - QScintilla::QScintilla + QHexEdit::QHexEdit QCustomPlot::QCustomPlot QScintilla::QScintilla + ${LIBSQLITE_NAME} + ${PLATFORM_LIBS} ) -if(MSVC) - set_target_properties(${PROJECT_NAME} PROPERTIES OUTPUT_NAME "DB Browser for SQLite") - set_target_properties(${PROJECT_NAME} PROPERTIES LINK_FLAGS_DEBUG "/SUBSYSTEM:CONSOLE") - set_target_properties(${PROJECT_NAME} PROPERTIES COMPILE_DEFINITIONS_DEBUG "_CONSOLE") - set_target_properties(${PROJECT_NAME} PROPERTIES LINK_FLAGS_RELWITHDEBINFO "/SUBSYSTEM:CONSOLE") - set_target_properties(${PROJECT_NAME} PROPERTIES COMPILE_DEFINITIONS_RELWITHDEBINFO "_CONSOLE") - if(CMAKE_CL_64) - set_target_properties(${PROJECT_NAME} PROPERTIES LINK_FLAGS_RELEASE "/SUBSYSTEM:WINDOWS,5.02 /ENTRY:mainCRTStartup") - set_target_properties(${PROJECT_NAME} PROPERTIES LINK_FLAGS_MINSIZEREL "/SUBSYSTEM:WINDOWS,5.02") - else() - set_target_properties(${PROJECT_NAME} PROPERTIES LINK_FLAGS_RELEASE "/SUBSYSTEM:WINDOWS,5.01 /ENTRY:mainCRTStartup") - set_target_properties(${PROJECT_NAME} PROPERTIES LINK_FLAGS_MINSIZEREL "/SUBSYSTEM:WINDOWS,5.01") - endif() -endif() - -if((NOT WIN32 AND NOT APPLE) OR MINGW) - install(TARGETS ${PROJECT_NAME} - RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} - LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} - ) -endif() - -if(UNIX) - target_link_libraries(${PROJECT_NAME} dl) -endif() +include(config/install.cmake) if(ENABLE_TESTING) + enable_testing() add_subdirectory(src/tests) endif() -if(UNIX) - install(FILES src/icons/${PROJECT_NAME}.png - DESTINATION ${CMAKE_INSTALL_DATADIR}/icons/hicolor/256x256/apps/ - ) - - install(FILES images/logo.svg - DESTINATION ${CMAKE_INSTALL_DATADIR}/icons/hicolor/scalable/apps/ - RENAME ${PROJECT_NAME}.svg - ) - - install(FILES distri/${PROJECT_NAME}.desktop - DESTINATION ${CMAKE_INSTALL_DATADIR}/applications/ - ) - - install(FILES distri/${PROJECT_NAME}.desktop.appdata.xml - DESTINATION ${CMAKE_INSTALL_DATADIR}/metainfo/ - ) -endif() - -if(WIN32 AND MSVC) - install(TARGETS ${PROJECT_NAME} - RUNTIME DESTINATION "/" - LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} - ) - - set(QT5_BIN_PATH ${QT5_PATH}/bin) - - # The Qt5 Debug configuration library files have a 'd' postfix - install(FILES - ${QT5_BIN_PATH}/Qt5Cored.dll - ${QT5_BIN_PATH}/Qt5Guid.dll - ${QT5_BIN_PATH}/Qt5Networkd.dll - ${QT5_BIN_PATH}/Qt5PrintSupportd.dll - ${QT5_BIN_PATH}/Qt5Widgetsd.dll - ${QT5_BIN_PATH}/Qt5Concurrentd.dll - ${QT5_BIN_PATH}/Qt5Svgd.dll - DESTINATION "/" - CONFIGURATIONS Debug - ) - - # The Qt5 Release configuration files don't have a postfix - install(FILES - ${QT5_BIN_PATH}/Qt5Core.dll - ${QT5_BIN_PATH}/Qt5Gui.dll - ${QT5_BIN_PATH}/Qt5Network.dll - ${QT5_BIN_PATH}/Qt5PrintSupport.dll - ${QT5_BIN_PATH}/Qt5Widgets.dll - ${QT5_BIN_PATH}/Qt5Concurrent.dll - ${QT5_BIN_PATH}/Qt5Svg.dll - DESTINATION "/" - CONFIGURATIONS Release - ) - - # The files below are common to all configurations - install(FILES - ${SQLITE3_DLL} - ${OPENSSL_PATH}/libeay32.dll - ${OPENSSL_PATH}/ssleay32.dll - DESTINATION "/" - ) - - install(FILES - ${QT5_PATH}/plugins/platforms/qwindows.dll - DESTINATION platforms - ) - - # The XML dll - install(FILES - "${QT5_PATH}/bin/Qt5Xmld.dll" - DESTINATION "/" - CONFIGURATIONS Debug - ) - - install(FILES - "${QT5_PATH}/bin/Qt5Xml.dll" - DESTINATION "/" - CONFIGURATIONS Release - ) - - # The image format plugins - install(FILES - ${WIN_IMG_PLUGINS_DEBUG} - DESTINATION imageformats - CONFIGURATIONS Debug - ) - - install(FILES - ${WIN_IMG_PLUGINS} - DESTINATION imageformats - CONFIGURATIONS Release - ) - - # The license files - install(FILES - ${LICENSE_FILES} - DESTINATION licenses - ) - - # The batch file launcher - install(FILES - distri/winlaunch.bat - DESTINATION "/" - ) -endif() - -if(APPLE) - set(CMAKE_OSX_DEPLOYMENT_TARGET 10.15) - set(ENV{MACOSX_DEPLOYMENT_TARGET} 10.15) - set_target_properties(${PROJECT_NAME} PROPERTIES - BUNDLE True - OUTPUT_NAME "DB Browser for SQLite" - MACOSX_BUNDLE_INFO_PLIST ${CMAKE_SOURCE_DIR}/src/app.plist - ) -endif() - # CPack configuration set(CPACK_STRIP_FILES ON) set(CPACK_DEBIAN_PACKAGE_PRIORITY optional) diff --git a/cmake/FindQScintilla.cmake b/cmake/FindQScintilla.cmake index 63c62bc56..55dc8a13b 100644 --- a/cmake/FindQScintilla.cmake +++ b/cmake/FindQScintilla.cmake @@ -45,21 +45,39 @@ # When using pkg-config, paths may contain odd slash placement. Each # include directory is pre-processed here. Resultant list variable # then used for search hinting. Depends on successful find_package(Qt5). -set(Qt5QScintillaHintDirs) -if(UNIX) - foreach(item ${Qt5Widgets_INCLUDE_DIRS}) - # remove slash at end of line - STRING(REGEX REPLACE "\\/$" "" item ${item}) - # replace double slashes is single slashes - STRING(REGEX REPLACE "\\/\\/" "/" item ${item}) - list(APPEND Qt5QScintillaHintDirs "${item}/Qsci") - endforeach() +if(QT_MAJOR STREQUAL "Qt6") + set(Qt6QScintillaHintDirs) + if(UNIX) + foreach(item ${Qt6Widgets_INCLUDE_DIRS}) + # remove slash at end of line + STRING(REGEX REPLACE "\\/$" "" item ${item}) + # replace double slashes is single slashes + STRING(REGEX REPLACE "\\/\\/" "/" item ${item}) + list(APPEND Qt6QScintillaHintDirs "${item}/Qsci") + endforeach() + endif() + find_path ( QSCINTILLA_INCLUDE_DIR qsciscintilla.h + HINTS /usr/local/include/Qt6/Qsci + /usr/local/opt/qscintilla2/include/Qt6/Qsci + ${Qt6QScintillaHintDirs} + ) +else() + set(Qt5QScintillaHintDirs) + if(UNIX) + foreach(item ${Qt5Widgets_INCLUDE_DIRS}) + # remove slash at end of line + STRING(REGEX REPLACE "\\/$" "" item ${item}) + # replace double slashes is single slashes + STRING(REGEX REPLACE "\\/\\/" "/" item ${item}) + list(APPEND Qt5QScintillaHintDirs "${item}/Qsci") + endforeach() + endif() + find_path ( QSCINTILLA_INCLUDE_DIR qsciscintilla.h + HINTS /usr/local/include/Qsci + /usr/local/opt/qscintilla2/include/Qsci + ${Qt5QScintillaHintDirs} + ) endif() -find_path ( QSCINTILLA_INCLUDE_DIR qsciscintilla.h - HINTS /usr/local/include/Qsci - /usr/local/opt/qscintilla2/include/Qsci - ${Qt5QScintillaHintDirs} -) set ( QSCINTILLA_INCLUDE_DIRS ${QSCINTILLA_INCLUDE_DIR} ) @@ -91,10 +109,17 @@ if ( QScintilla_FIND_VERSION AND QSCINTILLA_VERSION_STRING ) endif () endif () -find_library ( QSCINTILLA_LIBRARY - NAMES qscintilla2 qscintilla2_qt5 - HINTS /usr/local/lib /usr/local/opt/qscintilla2/lib -) +if(QT_MAJOR STREQUAL "Qt6") + find_library ( QSCINTILLA_LIBRARY + NAMES qscintilla2_qt6 + HINTS /usr/local/lib /usr/local/opt/qscintilla2/lib + ) +else() + find_library ( QSCINTILLA_LIBRARY + NAMES qscintilla2 qscintilla2_qt5 + HINTS /usr/local/lib /usr/local/opt/qscintilla2/lib + ) +endif() set ( QSCINTILLA_LIBRARIES ${QSCINTILLA_LIBRARY} ) @@ -132,4 +157,4 @@ if (QScintilla_FOUND AND NOT TARGET QScintilla::QScintilla) INTERFACE_INCLUDE_DIRECTORIES ${QSCINTILLA_INCLUDE_DIRS} IMPORTED_LOCATION ${QSCINTILLA_LIBRARIES} ) -endif() \ No newline at end of file +endif() diff --git a/config/3dparty.cmake b/config/3dparty.cmake new file mode 100644 index 000000000..f92001f92 --- /dev/null +++ b/config/3dparty.cmake @@ -0,0 +1,23 @@ +if(NOT FORCE_INTERNAL_QSCINTILLA) + find_package(QScintilla 2.8.10) +endif() + +if(NOT FORCE_INTERNAL_QCUSTOMPLOT) + find_package(QCustomPlot) +endif() + +if(NOT FORCE_INTERNAL_QHEXEDIT) + find_package(QHexEdit) +endif() + +if(NOT QSCINTILLA_FOUND) + add_subdirectory(libs/qscintilla_2.14.1/Qt5Qt6) +endif() + +if(NOT QHexEdit_FOUND) + add_subdirectory(libs/qhexedit) +endif() + +if(NOT QCustomPlot_FOUND) + add_subdirectory(libs/qcustomplot-source) +endif() diff --git a/config/install.cmake b/config/install.cmake new file mode 100644 index 000000000..7585f4b9a --- /dev/null +++ b/config/install.cmake @@ -0,0 +1,89 @@ +if(NOT WIN32 AND NOT APPLE) + install(TARGETS ${PROJECT_NAME} + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + ) +endif() + +if(UNIX) + install(FILES src/icons/${PROJECT_NAME}.png + DESTINATION ${CMAKE_INSTALL_DATADIR}/icons/hicolor/256x256/apps/ + ) + + install(FILES images/logo.svg + DESTINATION ${CMAKE_INSTALL_DATADIR}/icons/hicolor/scalable/apps/ + RENAME ${PROJECT_NAME}.svg + ) + + install(FILES distri/${PROJECT_NAME}.desktop + DESTINATION ${CMAKE_INSTALL_DATADIR}/applications/ + ) + + install(FILES distri/${PROJECT_NAME}.desktop.appdata.xml + DESTINATION ${CMAKE_INSTALL_DATADIR}/metainfo/ + ) +endif() + +if(WIN32) + install(TARGETS ${PROJECT_NAME} + RUNTIME DESTINATION "." + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + ) + + if(sqlcipher) + find_file(DLL_NAME sqlcipher.dll PATH_SUFFIXES bin ../bin ../../bin) + else() + find_file(DLL_NAME sqlite3.dll PATH_SUFFIXES bin ../bin ../../bin) + endif() + + string(REGEX MATCH "^([0-9]+)\.([0-9]+)" SSL_OUT "${OPENSSL_VERSION}") + set(DLL_CRYPTO_NAMES + "libcrypto-${CMAKE_MATCH_1}_${CMAKE_MATCH_2}-x64.dll" + "libcrypto-${CMAKE_MATCH_1}-x64.dll" + "libcrypto-${CMAKE_MATCH_1}_${CMAKE_MATCH_2}.dll" + "libcrypto-${CMAKE_MATCH_1}.dll" + ) + + set(DLL_SSL_NAMES + "libssl-${CMAKE_MATCH_1}_${CMAKE_MATCH_2}-x64.dll" + "libssl-${CMAKE_MATCH_1}-x64.dll" + "libssl-${CMAKE_MATCH_1}_${CMAKE_MATCH_2}.dll" + "libssl-${CMAKE_MATCH_1}.dll" + ) + + find_file(DLL_CRYPTO NAMES ${DLL_CRYPTO_NAMES} PATH_SUFFIXES bin ../bin ../../bin) + find_file(DLL_SSL NAMES ${DLL_SSL_NAMES} PATH_SUFFIXES bin ../bin ../../bin) + + install(FILES + ${DLL_NAME} + ${DLL_CRYPTO} + ${DLL_SSL} + DESTINATION "." + ) + + # The license files + install(FILES + LICENSE + LICENSE-GPL-3.0 + LICENSE-MIT + LICENSE-MPL-2.0 + LICENSE-PLUGINS + DESTINATION licenses + ) + + if(QT_MAJOR STREQUAL "Qt5") + set(OPT_ANGLE "--no-angle") + endif() + + find_file(QT_DEPLOY windeployqt.exe HINTS ${${QT_MAJOR}_DIR}/../../../bin) + if(NOT ${QT_DEPLOY} STREQUAL "QT_DEPLOY-NOTFOUND") + install (CODE + "execute_process(COMMAND_ECHO STDOUT COMMAND ${QT_DEPLOY} + --no-system-d3d-compiler + ${OPT_ANGLE} + --no-opengl-sw + \"${CMAKE_INSTALL_PREFIX}/$\" + )" + ) + endif() +endif() diff --git a/config/options.cmake b/config/options.cmake new file mode 100644 index 000000000..179fe0c23 --- /dev/null +++ b/config/options.cmake @@ -0,0 +1,9 @@ +set(QT_MAJOR Qt5 CACHE STRING "Major QT version") +OPTION(BUILD_STABLE_VERSION "Don't build the stable version by default" OFF) # Choose between building a stable version or nightly (the default), depending on whether '-DBUILD_STABLE_VERSION=1' is passed on the command line or not. +OPTION(ENABLE_TESTING "Enable the unit tests" OFF) +OPTION(FORCE_INTERNAL_QSCINTILLA "Don't use the distribution's QScintilla library even if there is one" OFF) +OPTION(FORCE_INTERNAL_QCUSTOMPLOT "Don't use distribution's QCustomPlot even if available" ON) +OPTION(FORCE_INTERNAL_QHEXEDIT "Don't use distribution's QHexEdit even if available" ON) +OPTION(ALL_WARNINGS "Enable some useful warning flags" OFF) +OPTION(sqlcipher "Build with SQLCipher library" OFF) +OPTION(customTap "Using SQLCipher, SQLite and Qt installed through our custom Homebrew tap" OFF) diff --git a/config/platform.cmake b/config/platform.cmake new file mode 100644 index 000000000..bc0a4e1fa --- /dev/null +++ b/config/platform.cmake @@ -0,0 +1,22 @@ +if(WIN32) + include(${CMAKE_CURRENT_LIST_DIR}/platform_win.cmake) + add_definitions(-DCHECKNEWVERSION) +elseif(APPLE) + include(${CMAKE_CURRENT_LIST_DIR}/platform_apple.cmake) + add_definitions(-DCHECKNEWVERSION) +endif() + +if(NOT WIN32) + list(APPEND PLATFORM_LIBS pthread) +endif() + +if(UNIX) + list(APPEND PLATFORM_LIBS dl) +endif() + +# add extra library path for MacOS and FreeBSD +set(EXTRAPATH APPLE OR ${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD") +if(EXTRAPATH) + list(PREPEND CMAKE_PREFIX_PATH /usr/local/opt/sqlite/lib) + list(PREPEND CMAKE_PREFIX_PATH /usr/local/opt/sqlitefts5/lib) +endif() diff --git a/config/platform_apple.cmake b/config/platform_apple.cmake new file mode 100644 index 000000000..bd96ba1ef --- /dev/null +++ b/config/platform_apple.cmake @@ -0,0 +1,31 @@ +if(QT_MAJOR STREQUAL "Qt5") + # For Intel Mac's + if(EXISTS /usr/local/opt/qt5) + list(APPEND CMAKE_PREFIX_PATH "/usr/local/opt/qt5") + endif() + + # For Apple Silicon Mac's + if(EXISTS /opt/homebrew/opt/qt5) + list(APPEND CMAKE_PREFIX_PATH "/opt/homebrew/opt/qt5") + endif() + if(EXISTS /opt/homebrew/opt/sqlitefts5) + list(PREPEND CMAKE_PREFIX_PATH "/opt/homebrew/opt/sqlitefts5") + endif() + + # For Apple Silicon Mac's and install dependencies via our Homebrew tap(sqlitebrowser/homebrew-tap) + if(customTap AND EXISTS /opt/homebrew/opt/) + list(PREPEND CMAKE_PREFIX_PATH "/opt/homebrew/opt/sqlb-qt@5") + list(PREPEND CMAKE_PREFIX_PATH "/opt/homebrew/opt/sqlb-sqlite") + + if(sqlcipher) + list(APPEND SQLCIPHER_INCLUDE_DIR "/opt/homebrew/include") + list(APPEND SQLCIPHER_LIBRARY "/opt/homebrew/opt/sqlb-sqlcipher/lib/libsqlcipher.0.dylib") + endif() + endif() +endif() + +set_target_properties(${PROJECT_NAME} PROPERTIES + BUNDLE True + OUTPUT_NAME "DB Browser for SQLite" + MACOSX_BUNDLE_INFO_PLIST ${CMAKE_SOURCE_DIR}/src/app.plist +) diff --git a/config/platform_win.cmake b/config/platform_win.cmake new file mode 100644 index 000000000..ba49ee311 --- /dev/null +++ b/config/platform_win.cmake @@ -0,0 +1,35 @@ +if(sqlcipher) + set_target_properties(${PROJECT_NAME} PROPERTIES OUTPUT_NAME "DB Browser for SQLCipher") +else() + set_target_properties(${PROJECT_NAME} PROPERTIES OUTPUT_NAME "DB Browser for SQLite") +endif() + +if(QT_MAJOR STREQUAL "Qt5") + find_package(OpenSSL 1.1.1 REQUIRED) +else() + find_package(OpenSSL 3.0.0 REQUIRED) +endif() + +if(MSVC) + if(CMAKE_SIZEOF_VOID_P EQUAL 8) + set_target_properties(${PROJECT_NAME} PROPERTIES LINK_FLAGS_RELEASE "/SUBSYSTEM:WINDOWS,5.02 /ENTRY:mainCRTStartup") + set_target_properties(${PROJECT_NAME} PROPERTIES LINK_FLAGS_MINSIZEREL "/SUBSYSTEM:WINDOWS,5.02") + else() + set_target_properties(${PROJECT_NAME} PROPERTIES LINK_FLAGS_RELEASE "/SUBSYSTEM:WINDOWS,5.01 /ENTRY:mainCRTStartup") + set_target_properties(${PROJECT_NAME} PROPERTIES LINK_FLAGS_MINSIZEREL "/SUBSYSTEM:WINDOWS,5.01") + endif() + + set_target_properties(${PROJECT_NAME} PROPERTIES LINK_FLAGS_DEBUG "/SUBSYSTEM:CONSOLE") + set_target_properties(${PROJECT_NAME} PROPERTIES COMPILE_DEFINITIONS_DEBUG "_CONSOLE") + set_target_properties(${PROJECT_NAME} PROPERTIES LINK_FLAGS_RELWITHDEBINFO "/SUBSYSTEM:CONSOLE") + set_target_properties(${PROJECT_NAME} PROPERTIES COMPILE_DEFINITIONS_RELWITHDEBINFO "_CONSOLE") + + target_sources(${PROJECT_NAME} PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/src/winapp.rc") +elseif(MINGW) + # resource compilation for MinGW + add_custom_command(OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/sqlbicon.o" + COMMAND windres "-I${CMAKE_CURRENT_BINARY_DIR}" "-i${CMAKE_CURRENT_SOURCE_DIR}/src/winapp.rc" -o "${CMAKE_CURRENT_BINARY_DIR}/sqlbicon.o" VERBATIM + ) + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,-subsystem,windows") + target_sources(${PROJECT_NAME} PRIVATE "${CMAKE_CURRENT_BINARY_DIR}/sqlbicon.o") +endif() diff --git a/config/translations.cmake b/config/translations.cmake new file mode 100644 index 000000000..3222d14f7 --- /dev/null +++ b/config/translations.cmake @@ -0,0 +1,35 @@ +# Translation files +set(SQLB_TSS + "${CMAKE_SOURCE_DIR}/src/translations/sqlb_ar_SA.ts" + "${CMAKE_SOURCE_DIR}/src/translations/sqlb_cs.ts" + "${CMAKE_SOURCE_DIR}/src/translations/sqlb_de.ts" + "${CMAKE_SOURCE_DIR}/src/translations/sqlb_en_GB.ts" + "${CMAKE_SOURCE_DIR}/src/translations/sqlb_es_ES.ts" + "${CMAKE_SOURCE_DIR}/src/translations/sqlb_fr.ts" + "${CMAKE_SOURCE_DIR}/src/translations/sqlb_id.ts" + "${CMAKE_SOURCE_DIR}/src/translations/sqlb_it.ts" + "${CMAKE_SOURCE_DIR}/src/translations/sqlb_ja.ts" + "${CMAKE_SOURCE_DIR}/src/translations/sqlb_ko_KR.ts" + "${CMAKE_SOURCE_DIR}/src/translations/sqlb_nl.ts" + "${CMAKE_SOURCE_DIR}/src/translations/sqlb_pl.ts" + "${CMAKE_SOURCE_DIR}/src/translations/sqlb_pt_BR.ts" + "${CMAKE_SOURCE_DIR}/src/translations/sqlb_ro.ts" + "${CMAKE_SOURCE_DIR}/src/translations/sqlb_ru.ts" + "${CMAKE_SOURCE_DIR}/src/translations/sqlb_sv.ts" + "${CMAKE_SOURCE_DIR}/src/translations/sqlb_tr.ts" + "${CMAKE_SOURCE_DIR}/src/translations/sqlb_uk_UA.ts" + "${CMAKE_SOURCE_DIR}/src/translations/sqlb_zh.ts" + "${CMAKE_SOURCE_DIR}/src/translations/sqlb_zh_TW.ts" +) + +if(SQLB_TSS) + # add translations + foreach(SQLB_TS ${SQLB_TSS}) + set_source_files_properties("${SQLB_TS}" PROPERTIES OUTPUT_LOCATION "${CMAKE_SOURCE_DIR}/src/translations") + endforeach() + if(COMMAND qt_add_translation) + qt_add_translation(SQLB_QMS ${SQLB_TSS}) + else() + qt5_add_translation(SQLB_QMS ${SQLB_TSS}) + endif() +endif() diff --git a/installer/macos/nightly.json b/installer/macos/nightly.json index 61651ad19..3f5545841 100644 --- a/installer/macos/nightly.json +++ b/installer/macos/nightly.json @@ -1,6 +1,6 @@ { - "title": "Install DB4S Nightly build", - "icon": "macapp-nightly.icns", + "title": "Install DB4S", + "icon": "macapp.icns", "icon-size": 128, "background": "background.png", "format": "ULFO", @@ -11,7 +11,7 @@ } }, "contents": [ - { "x": 90, "y": 180, "type": "file", "path": "DB Browser for SQLite Nightly.app" }, + { "x": 90, "y": 180, "type": "file", "path": "DB Browser for SQLite.app" }, { "x": 395, "y": 180, "type": "link", "path": "/Applications" }, { "x": 90, "y": 380, "type": "position", "path": ".background" }, @@ -20,4 +20,3 @@ { "x": 90, "y": 530, "type": "position", "path": ".Trashes" } ] } - diff --git a/installer/macos/notarize.sh b/installer/macos/notarize.sh index 0b9928969..bd7024141 100644 --- a/installer/macos/notarize.sh +++ b/installer/macos/notarize.sh @@ -10,7 +10,7 @@ security import $CERTIFICATE_PATH -P "$P12_PW" -A -t cert -f pkcs12 -k $KEYCHAIN security list-keychain -d user -s $KEYCHAIN_PATH # Run macdeployqt -find build -name "DB Browser for SQL*.app" -exec $(brew --prefix db4subqt@5)/bin/macdeployqt {} -sign-for-notarization=$DEV_ID \; +find build -name "DB Browser for SQL*.app" -exec $(brew --prefix sqlb-qt@5)/bin/macdeployqt {} -sign-for-notarization=$DEV_ID \; # Add the 'formats' and 'nalgeon/sqlean' extensions to the app bundle gh auth login --with-token <<< "$GH_TOKEN" @@ -23,7 +23,7 @@ for TARGET in $(find build -name "DB Browser for SQL*.app" | sed -e 's/ /_/g'); TARGET=$(echo $TARGET | sed -e 's/_/ /g') mkdir "$TARGET/Contents/Extensions" - clang -I /opt/homebrew/opt/db4subsqlitefts@5/include -L /opt/homebrew/opt/db4subsqlitefts@5/lib -fno-common -dynamiclib src/extensions/extension-formats.c -o "$TARGET/Contents/Extensions/formats.dylib" + clang -I /opt/homebrew/opt/sqlb-sqlite/include -L /opt/homebrew/opt/sqlb-sqlite/lib -fno-common -dynamiclib src/extensions/extension-formats.c -o "$TARGET/Contents/Extensions/formats.dylib" if [ -f "$TARGET/Contents/Extensions/formats.dylib" ]; then install_name_tool -id "@executable_path/../Extensions/formats.dylib" "$TARGET/Contents/Extensions/formats.dylib" ln -s formats.dylib "$TARGET/Contents/Extensions/formats.dylib.dylib" @@ -47,24 +47,19 @@ for TARGET in $(find build -name "DB Browser for SQL*.app" | sed -e 's/ /_/g'); TARGET=$(echo $TARGET | sed -e 's/_/ /g') mkdir "$TARGET/Contents/translations" for i in ar cs de en es fr it ko pl pt pt_BR ru uk zh_CN zh_TW; do - find $(brew --prefix db4subqt@5)/translations -name "qt_${i}.qm" 2> /dev/null -exec cp {} "$TARGET/Contents/translations/" \; - find $(brew --prefix db4subqt@5)/translations -name "qtbase_${i}.qm" 2> /dev/null -exec cp {} "$TARGET/Contents/translations/" \; - find $(brew --prefix db4subqt@5)/translations -name "qtmultimedia_${i}.qm" 2> /dev/null -exec cp {} "$TARGET/Contents/translations/" \; - find $(brew --prefix db4subqt@5)/translations -name "qtscript_${i}.qm" 2> /dev/null -exec cp {} "$TARGET/Contents/translations/" \; - find $(brew --prefix db4subqt@5)/translations -name "qtxmlpatterns_${i}.qm" 2> /dev/null -exec cp {} "$TARGET/Contents/translations/" \; + find $(brew --prefix sqlb-qt@5)/translations -name "qt_${i}.qm" 2> /dev/null -exec cp {} "$TARGET/Contents/translations/" \; + find $(brew --prefix sqlb-qt@5)/translations -name "qtbase_${i}.qm" 2> /dev/null -exec cp {} "$TARGET/Contents/translations/" \; + find $(brew --prefix sqlb-qt@5)/translations -name "qtmultimedia_${i}.qm" 2> /dev/null -exec cp {} "$TARGET/Contents/translations/" \; + find $(brew --prefix sqlb-qt@5)/translations -name "qtscript_${i}.qm" 2> /dev/null -exec cp {} "$TARGET/Contents/translations/" \; + find $(brew --prefix sqlb-qt@5)/translations -name "qtxmlpatterns_${i}.qm" 2> /dev/null -exec cp {} "$TARGET/Contents/translations/" \; done done # Copy the icon file to the app bundle for TARGET in $(find build -name "DB Browser for SQL*.app" | sed -e 's/ /_/g'); do TARGET=$(echo $TARGET | sed -e 's/_/ /g') - if [ "$NIGHTLY" = "false" ]; then cp installer/macos/macapp.icns "$TARGET/Contents/Resources/" /usr/libexec/PlistBuddy -c "Set :CFBundleIconFile macapp.icns" "$TARGET/Contents/Info.plist" - else - cp installer/macos/macapp-nightly.icns "$TARGET/Contents/Resources/" - /usr/libexec/PlistBuddy -c "Set :CFBundleIconFile macapp-nightly.icns" "$TARGET/Contents/Info.plist" - fi done # Sign the manually added extensions @@ -79,29 +74,8 @@ done mv build/*.app installer/macos # Create the DMG -export DATE=$(date +%Y%m%d) - -if [ "$SQLCIPHER" = "1" ]; then - if [ "$NIGHTLY" = "false" ]; then - # Continuous with SQLCipher - sed -i "" 's/"DB Browser for SQLCipher Nightly.app"/"DB Browser for SQLCipher-dev-'$(git rev-parse --short --verify HEAD)'.app"/' installer/macos/sqlcipher-nightly.json - TARGET="DB.Browser.for.SQLCipher-dev-$(git rev-parse --short --verify HEAD).dmg" - else - # Nightly with SQLCipher - TARGET="DB.Browser.for.SQLCipher-universal_$DATE.dmg" - fi - appdmg --quiet installer/macos/sqlcipher-nightly.json "$TARGET" -else - if [ "$NIGHTLY" = "false" ]; then - # Continuous without SQLCipher - sed -i "" 's/"DB Browser for SQLite Nightly.app"/"DB Browser for SQLite-dev-'$(git rev-parse --short --verify HEAD)'.app"/' installer/macos/nightly.json - TARGET="DB.Browser.for.SQLite-dev-$(git rev-parse --short --verify HEAD).dmg" - else - # Nightly without SQLCipher - TARGET="DB.Browser.for.SQLite-universal_$DATE.dmg" - fi - appdmg --quiet installer/macos/nightly.json "$TARGET" -fi +TARGET="DB.Browser.for.SQLite-v3.13.1.dmg" +appdmg --quiet installer/macos/nightly.json "$TARGET" codesign --sign "$DEV_ID" --verbose --options=runtime --timestamp "$TARGET" codesign -vvv --deep --strict --verbose=4 "$TARGET" diff --git a/installer/macos/sqlcipher-nightly.json b/installer/macos/sqlcipher-nightly.json index 7334aae4b..793a97cc7 100644 --- a/installer/macos/sqlcipher-nightly.json +++ b/installer/macos/sqlcipher-nightly.json @@ -1,5 +1,5 @@ { - "title": "Install DB4S Nightly build", + "title": "Install DB4S", "icon": "macapp-nightly.icns", "icon-size": 128, "background": "background.png", @@ -20,4 +20,3 @@ { "x": 90, "y": 530, "type": "position", "path": ".Trashes" } ] } - diff --git a/installer/windows/license.rtf b/installer/windows/license.rtf index a8d3c168b..2601ae905 100644 --- a/installer/windows/license.rtf +++ b/installer/windows/license.rtf @@ -1,238 +1,1179 @@ -{\rtf1\ansi\ansicpg1252\deff0\deflang1033{\fonttbl{\f0\fnil\fcharset0 Calibri;}} -{\colortbl ;\red0\green0\blue255;} -{\*\generator Msftedit 5.41.21.2510;}\viewkind4\uc1\pard\sa200\sl276\slmult1\lang9\f0\fs20 DB Browser for SQLite is bi-licensed under the Mozilla Public License Version 2, as well as the GNU General Public License Version 3 or later.\par -You can modify or redistribute it under the conditions of these licenses.\par -\pard\sa200\sl276\slmult1\qc ----------------------------------------------------------------------------------------------------\par -\b\fs22 GNU GENERAL PUBLIC LICENSE\par -\b0\fs20 Version 3, 29 June 2007\par -\pard\sa200\sl276\slmult1\par -Copyright (C) 2007 Free Software Foundation, Inc. <{\field{\*\fldinst{HYPERLINK "http://fsf.org/"}}{\fldrslt{\ul\cf1 http://fsf.org/}}}\f0\fs20 >\par -Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.\par -\par -\pard\sa200\sl276\slmult1\qc\b Preamble\b0\par -\pard\fi142\sa200\sl276\slmult1\qj The GNU General Public License is a free, copyleft license for software and other kinds of works.\par -The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too.\par -When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things.\par -To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others.\par -For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights.\par -Developers that use the GNU GPL protect your rights with two steps:\par -\pard\sa200\sl276\slmult1\qj (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it.\par -\pard\fi142\sa200\sl276\slmult1\qj For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions.\par -Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users.\par -Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free.\par -The precise terms and conditions for copying, distribution and modification follow.\par -\pard\sa200\sl276\slmult1\par -\pard\sa200\sl276\slmult1\qc\b TERMS AND CONDITIONS\b0\par -\pard\sa200\sl276\slmult1 0. Definitions.\par -\pard\fi142\sa200\sl276\slmult1 "This License" refers to version 3 of the GNU General Public License.\par -\pard\fi142\sa200\sl276\slmult1\qj "Copyright" also means copyright-like laws that apply to other kinds of works, such as semiconductor masks.\par -"The Program" refers to any copyrightable work licensed under this License. Each licensee is addressed as "you". "Licensees" and "recipients" may be individuals or organizations.\par -To "modify" a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a "modified version" of the earlier work or a work "based on" the earlier work.\par -A "covered work" means either the unmodified Program or a work based on the Program.\par -To "propagate" a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well.\par -To "convey" a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying.\par -An interactive user interface displays "Appropriate Legal Notices" to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion.\par -\pard\sa200\sl276\slmult1 1. Source Code.\par -\pard\fi142\sa200\sl276\slmult1\qj The "source code" for a work means the preferred form of the work for making modifications to it. "Object code" means any non-source form of a work.\par -A "Standard Interface" means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language.\par -The "System Libraries" of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A "Major Component", in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it.\par -The "Corresponding Source" for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work.\par -The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source.\par -\pard\fi142\sa200\sl276\slmult1 The Corresponding Source for a work in source code form is that same work.\par -\pard\sa200\sl276\slmult1 2. Basic Permissions.\par -\pard\fi142\sa200\sl276\slmult1\qj All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law.\par -You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you.\par -Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary.\par -\pard\sa200\sl276\slmult1 3. Protecting Users' Legal Rights From Anti-Circumvention Law.\par -\pard\fi142\sa200\sl276\slmult1\qj No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures.\par -When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures.\par -\pard\sa200\sl276\slmult1 4. Conveying Verbatim Copies.\par -\pard\fi142\sa200\sl276\slmult1\qj You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program.\par -You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee.\par -\pard\sa200\sl276\slmult1 5. Conveying Modified Source Versions.\par -\pard\fi142\sa200\sl276\slmult1\qj You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions:\par -\pard\li284\sa200\sl276\slmult1\qj a) The work must carry prominent notices stating that you modified it, and giving a relevant date.\par -b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to "keep intact all notices".\par -c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it.\par -d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so.\par -\pard\fi142\sa200\sl276\slmult1\qj A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an "aggregate" if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate.\par -\pard\sa200\sl276\slmult1 6. Conveying Non-Source Forms.\par -\pard\fi142\sa200\sl276\slmult1\qj You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways:\par -\pard\li284\sa200\sl276\slmult1\qj a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange.\par -b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge.\par -c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b.\par -d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements.\par -e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d.\par -\pard\fi142\sa200\sl276\slmult1\qj A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work.\par -A "User Product" is either (1) a "consumer product", which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, "normally used" refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product.\par -"Installation Information" for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made.\par -If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM).\par -The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network.\par -Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying.\par -\pard\sa200\sl276\slmult1 7. Additional Terms.\par -\pard\fi142\sa200\sl276\slmult1\qj "Additional permissions" are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions.\par -When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission.\par -Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms:\par -\pard\li284\sa200\sl276\slmult1\qj a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or\par -b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or\par -c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or\par -d) Limiting the use for publicity purposes of names of licensors or authors of the material; or\par -e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or\par -f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors.\par -\pard\fi142\sa200\sl276\slmult1\qj All other non-permissive additional terms are considered "further restrictions" within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying.\par -If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms.\par -Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way.\par -\pard\sa200\sl276\slmult1 8. Termination.\par -\pard\fi142\sa200\sl276\slmult1\qj You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11).\par -However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation.\par -Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice.\par -Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10.\par -\pard\sa200\sl276\slmult1 9. Acceptance Not Required for Having Copies.\par -\pard\fi142\sa200\sl276\slmult1\qj You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so.\par -\pard\sa200\sl276\slmult1 10. Automatic Licensing of Downstream Recipients.\par -\pard\fi142\sa200\sl276\slmult1\qj Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License.\par -An "entity transaction" is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts.\par -You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it.\par -\pard\sa200\sl276\slmult1 11. Patents.\par -\pard\fi142\sa200\sl276\slmult1\qj A "contributor" is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's "contributor version".\par -A contributor's "essential patent claims" are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, "control" includes the right to grant patent sublicenses in a manner consistent with the requirements of this License.\par -Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version.\par -In the following three paragraphs, a "patent license" is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To "grant" such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party.\par -If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. "Knowingly relying" means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid.\par -If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it.\par -A patent license is "discriminatory" if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007.\par -Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law.\par -\pard\sa200\sl276\slmult1 12. No Surrender of Others' Freedom.\par -\pard\fi142\sa200\sl276\slmult1\qj If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program.\par -\pard\sa200\sl276\slmult1 13. Use with the GNU Affero General Public License.\par -\pard\fi142\sa200\sl276\slmult1\qj Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such.\par -\pard\sa200\sl276\slmult1 14. Revised Versions of this License.\par -\pard\fi142\sa200\sl276\slmult1\qj The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns.\par -Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation.\par -If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program.\par -Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version.\par -\pard\sa200\sl276\slmult1 15. Disclaimer of Warranty.\par -\pard\fi142\sa200\sl276\slmult1\qj THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.\par -\pard\sa200\sl276\slmult1 16. Limitation of Liability.\par -\pard\fi142\sa200\sl276\slmult1\qj IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.\par -\pard\sa200\sl276\slmult1 17. Interpretation of Sections 15 and 16.\par -\pard\fi142\sa200\sl276\slmult1\qj If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee.\par -\pard\sa200\sl276\slmult1\qc\b END OF TERMS AND CONDITIONS\b0\par -\pard\sa200\sl276\slmult1\par -\pard\sa200\sl276\slmult1\qc\b How to Apply These Terms to Your New Programs\par -\pard\fi142\sa200\sl276\slmult1\qj\b0 If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms.\par -To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found.\par -\pard\sa200\sl276\slmult1 \par -\pard\li284\sa200\sl276\slmult1\qj Copyright (C) \par -This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.\par -This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.\par -You should have received a copy of the GNU General Public License along with this program. If not, see <{\field{\*\fldinst{HYPERLINK "http://www.gnu.org/licenses/"}}{\fldrslt{\ul\cf1 http://www.gnu.org/licenses/}}}\f0\fs20 >.\par -\pard\sa200\sl276\slmult1 Also add information on how to contact you by electronic and paper mail.\par -\pard\fi142\sa200\sl276\slmult1\qj If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode:\par -\pard\li284\sa200\sl276\slmult1\qj Copyright (C) This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details.\par -\pard\sa200\sl276\slmult1\qj The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, your program's commands might be different; for a GUI interface, you would use an "about box".\par -\pard\fi142\sa200\sl276\slmult1\qj You should also get your employer (if you work as a programmer) or school, if any, to sign a "copyright disclaimer" for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see <{\field{\*\fldinst{HYPERLINK "http://www.gnu.org/licenses/"}}{\fldrslt{\ul\cf1 http://www.gnu.org/licenses/}}}\f0\fs20 >.\par -The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read <{\field{\*\fldinst{HYPERLINK "http://www.gnu.org/philosophy/why-not-lgpl.html"}}{\fldrslt{\ul\cf1 http://www.gnu.org/philosophy/why-not-lgpl.html}}}\f0\fs20 >.\par -\pard\sa200\sl276\slmult1\par -\pard\sa200\sl276\slmult1\qc ----------------------------------------------------------------------------------------------------\par -\pard\sa200\sl276\slmult1\par -\pard\sa200\sl276\slmult1\qc\b\fs22 Mozilla Public License Version 2.0\par -\pard\sa200\sl276\slmult1\b0\fs20\par -\fs22 1. Definitions\fs20\par -1.1. "Contributor"\par -\pard\fi-10\li426\sa200\sl276\slmult1\qj means each individual or legal entity that creates, contributes to the creation of, or owns Covered Software.\par -\pard\sa200\sl276\slmult1 1.2. "Contributor Version"\par -\pard\li426\sa200\sl276\slmult1\qj means the combination of the Contributions of others (if any) used by a Contributor and that particular Contributor's Contribution.\par -\pard\sa200\sl276\slmult1 1.3. "Contribution"\par -\pard\li426\sa200\sl276\slmult1\qj means Covered Software of a particular Contributor.\par -\pard\sa200\sl276\slmult1 1.4. "Covered Software"\par -\pard\li426\sa200\sl276\slmult1\qj means Source Code Form to which the initial Contributor has attached the notice in Exhibit A, the Executable Form of such Source Code Form, and Modifications of such Source Code Form, in each case including portions thereof.\par -\pard\sa200\sl276\slmult1 1.5. "Incompatible With Secondary Licenses"\par -\pard\li426\sa200\sl276\slmult1\qj means\par -(a) that the initial Contributor has attached the notice described in Exhibit B to the Covered Software; or\par -(b) that the Covered Software was made available under the terms of version 1.1 or earlier of the License, but not also under the terms of a Secondary License.\par -\pard\sa200\sl276\slmult1 1.6. "Executable Form"\par -\pard\li426\sa200\sl276\slmult1\qj means any form of the work other than Source Code Form.\par -\pard\sa200\sl276\slmult1 1.7. "Larger Work"\par -\pard\li426\sa200\sl276\slmult1\qj means a work that combines Covered Software with other material, in a separate file or files, that is not Covered Software.\par -\pard\sa200\sl276\slmult1 1.8. "License"\par -\pard\li426\sa200\sl276\slmult1\qj means this document.\par -\pard\sa200\sl276\slmult1 1.9. "Licensable"\par -\pard\li426\sa200\sl276\slmult1\qj means having the right to grant, to the maximum extent possible, whether at the time of the initial grant or subsequently, any and all of the rights conveyed by this License.\par -\pard\sa200\sl276\slmult1 1.10. "Modifications"\par -\pard\li426\sa200\sl276\slmult1\qj means any of the following:\par -(a) any file in Source Code Form that results from an addition to, deletion from, or modification of the contents of Covered Software; or\par -(b) any new file in Source Code Form that contains any Covered Software.\par -\pard\sa200\sl276\slmult1 1.11. "Patent Claims" of a Contributor\par -\pard\li426\sa200\sl276\slmult1\qj means any patent claim(s), including without limitation, method, process, and apparatus claims, in any patent Licensable by such Contributor that would be infringed, but for the grant of the License, by the making, using, selling, offering for sale, having made, import, or transfer of either its Contributions or its Contributor Version.\par -\pard\sa200\sl276\slmult1 1.12. "Secondary License"\par -\pard\li426\sa200\sl276\slmult1\qj means either the GNU General Public License, Version 2.0, the GNU Lesser General Public License, Version 2.1, the GNU Affero General Public License, Version 3.0, or any later versions of those licenses.\par -\pard\sa200\sl276\slmult1 1.13. "Source Code Form"\par -\pard\li426\sa200\sl276\slmult1\qj means the form of the work preferred for making modifications.\par -\pard\sa200\sl276\slmult1 1.14. "You" (or "Your")\par -\pard\li426\sa200\sl276\slmult1\qj means an individual or a legal entity exercising rights under this License. For legal entities, "You" includes any entity that controls, is controlled by, or is under common control with You. For purposes of this definition, "control" means (a) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (b) ownership of more than fifty percent (50%) of the outstanding shares or beneficial ownership of such entity.\par -\pard\sa200\sl276\slmult1\fs22 2. License Grants and Conditions\fs20\par -2.1. Grants\par -Each Contributor hereby grants You a world-wide, royalty-free, non-exclusive license:\par -\pard\li426\sa200\sl276\slmult1\qj (a) under intellectual property rights (other than patent or trademark) Licensable by such Contributor to use, reproduce, make available, modify, display, perform, distribute, and otherwise exploit its Contributions, either on an unmodified basis, with Modifications, or as part of a Larger Work; and\par -(b) under Patent Claims of such Contributor to make, use, sell, offer for sale, have made, import, and otherwise transfer either its Contributions or its Contributor Version.\par -\pard\sa200\sl276\slmult1 2.2. Effective Date\par -\pard\sa200\sl276\slmult1\qj The licenses granted in Section 2.1 with respect to any Contribution become effective for each Contribution on the date the Contributor first distributes such Contribution.\par -\pard\sa200\sl276\slmult1 2.3. Limitations on Grant Scope\par -\pard\sa200\sl276\slmult1\qj The licenses granted in this Section 2 are the only rights granted under this License. No additional rights or licenses will be implied from the distribution or licensing of Covered Software under this License. Notwithstanding Section 2.1(b) above, no patent license is granted by a Contributor:\par -\pard\li426\sa200\sl276\slmult1 (a) for any code that a Contributor has removed from Covered Software; or\par -(b) for infringements caused by: (i) Your and any other third party's modifications of Covered Software, or (ii) the combination of its Contributions with other software (except as part of its Contributor Version); or\par -(c) under Patent Claims infringed by Covered Software in the absence of its Contributions.\par -\pard\sa200\sl276\slmult1\qj This License does not grant any rights in the trademarks, service marks, or logos of any Contributor (except as may be necessary to comply with the notice requirements in Section 3.4).\par -\pard\sa200\sl276\slmult1 2.4. Subsequent Licenses\par -\pard\sa200\sl276\slmult1\qj No Contributor makes additional grants as a result of Your choice to distribute the Covered Software under a subsequent version of this License (see Section 10.2) or under the terms of a Secondary License (if permitted under the terms of Section 3.3).\par -\pard\sa200\sl276\slmult1 2.5. Representation\par -\pard\sa200\sl276\slmult1\qj Each Contributor represents that the Contributor believes its Contributions are its original creation(s) or it has sufficient rights to grant the rights to its Contributions conveyed by this License.\par -\pard\sa200\sl276\slmult1 2.6. Fair Use\par -\pard\sa200\sl276\slmult1\qj This License is not intended to limit any rights You have under applicable copyright doctrines of fair use, fair dealing, or other equivalents.\par -\pard\sa200\sl276\slmult1 2.7. Conditions\par -Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted in Section 2.1.\par -\fs22 3. Responsibilities\par -\fs20 3.1. Distribution of Source Form\par -\pard\sa200\sl276\slmult1\qj All distribution of Covered Software in Source Code Form, including any Modifications that You create or to which You contribute, must be under the terms of this License. You must inform recipients that the Source Code Form of the Covered Software is governed by the terms of this License, and how they can obtain a copy of this License. You may not attempt to alter or restrict the recipients' rights in the Source Code Form.\par -\pard\sa200\sl276\slmult1 3.2. Distribution of Executable Form\par -If You distribute Covered Software in Executable Form then:\par -\pard\li426\sa200\sl276\slmult1\qj (a) such Covered Software must also be made available in Source Code Form, as described in Section 3.1, and You must inform recipients of the Executable Form how they can obtain a copy of such Source Code Form by reasonable means in a timely manner, at a charge no more than the cost of distribution to the recipient; and\par -(b) You may distribute such Executable Form under the terms of this License, or sublicense it under different terms, provided that the license for the Executable Form does not attempt to limit or alter the recipients' rights in the Source Code Form under this License.\par -\pard\sa200\sl276\slmult1 3.3. Distribution of a Larger Work\par -\pard\sa200\sl276\slmult1\qj You may create and distribute a Larger Work under terms of Your choice, provided that You also comply with the requirements of this License for the Covered Software. If the Larger Work is a combination of Covered Software with a work governed by one or more Secondary Licenses, and the Covered Software is not Incompatible With Secondary Licenses, this License permits You to additionally distribute such Covered Software under the terms of such Secondary License(s), so that the recipient of the Larger Work may, at their option, further distribute the Covered Software under the terms of either this License or such Secondary License(s).\par -\pard\sa200\sl276\slmult1 3.4. Notices\par -\pard\sa200\sl276\slmult1\qj You may not remove or alter the substance of any license notices (including copyright notices, patent notices, disclaimers of warranty, or limitations of liability) contained within the Source Code Form of the Covered Software, except that You may alter any license notices to the extent required to remedy known factual inaccuracies.\par -\pard\sa200\sl276\slmult1 3.5. Application of Additional Terms\par -\pard\sa200\sl276\slmult1\qj You may choose to offer, and to charge a fee for, warranty, support, indemnity or liability obligations to one or more recipients of Covered Software. However, You may do so only on Your own behalf, and not on behalf of any Contributor. You must make it absolutely clear that any such warranty, support, indemnity, or liability obligation is offered by You alone, and You hereby agree to indemnify every Contributor for any liability incurred by such Contributor as a result of warranty, support, indemnity or liability terms You offer. You may include additional disclaimers of warranty and limitations of liability specific to any jurisdiction.\par -\pard\sa200\sl276\slmult1\fs22 4. Inability to Comply Due to Statute or Regulation\par -\pard\sa200\sl276\slmult1\qj\fs20 If it is impossible for You to comply with any of the terms of this License with respect to some or all of the Covered Software due to statute, judicial order, or regulation then You must: (a) comply with the terms of this License to the maximum extent possible; and (b) describe the limitations and the code they affect. Such description must be placed in a text file included with all distributions of the Covered Software under this License. Except to the extent prohibited by statute or regulation, such description must be sufficiently detailed for a recipient of ordinary skill to be able to understand it.\par -\pard\sa200\sl276\slmult1\fs22 5. Termination\fs20\par -\pard\sa200\sl276\slmult1\qj 5.1. The rights granted under this License will terminate automatically if You fail to comply with any of its terms. However, if You become compliant, then the rights granted under this License from a particular Contributor are reinstated (a) provisionally, unless and until such Contributor explicitly and finally terminates Your grants, and (b) on an ongoing basis, if such Contributor fails to notify You of the non-compliance by some reasonable means prior to 60 days after You have come back into compliance. Moreover, Your grants from a particular Contributor are reinstated on an ongoing basis if such Contributor notifies You of the non-compliance by some reasonable means, this is the first time You have received notice of non-compliance with this License from such Contributor, and You become compliant prior to 30 days after Your receipt of the notice.\par -5.2. If You initiate litigation against any entity by asserting a patent infringement claim (excluding declaratory judgment actions, counter-claims, and cross-claims) alleging that a Contributor Version directly or indirectly infringes any patent, then the rights granted to You by any and all Contributors for the Covered Software under Section 2.1 of this License shall terminate.\par -5.3. In the event of termination under Sections 5.1 or 5.2 above, all end user license agreements (excluding distributors and resellers) which have been validly granted by You or Your distributors under this License prior to termination shall survive termination.\par -\pard\sa200\sl276\slmult1\fs22 6. Disclaimer of Warranty\fs20\par -\pard\sa200\sl276\slmult1\qj Covered Software is provided under this License on an "as is" basis, without warranty of any kind, either expressed, implied, or statutory, including, without limitation, warranties that the Covered Software is free of defects, merchantable, fit for a particular purpose or non-infringing. The entire risk as to the quality and performance of the Covered Software is with You. Should any Covered Software prove defective in any respect, You (not any Contributor) assume the cost of any necessary servicing, repair, or correction. This disclaimer of warranty constitutes an essential part of this License. No use of any Covered Software is authorized under this License except under this disclaimer.\par -\pard\sa200\sl276\slmult1\fs22 7. Limitation of Liability\fs20\par -\pard\sa200\sl276\slmult1\qj Under no circumstances and under no legal theory, whether tort (including negligence), contract, or otherwise, shall any Contributor, or anyone who distributes Covered Software as permitted above, be liable to You for any direct, indirect, special, incidental, or consequential damages of any character including, without limitation, damages for lost profits, loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses, even if such party shall have been informed of the possibility of such damages. This limitation of liability shall not apply to liability for death or personal injury resulting from such party's negligence to the extent applicable law prohibits such limitation. Some jurisdictions do not allow the exclusion or limitation of incidental or consequential damages, so this exclusion and limitation may not apply to You.\par -\pard\sa200\sl276\slmult1\fs22 8. Litigation\fs20\par -\pard\sa200\sl276\slmult1\qj Any litigation relating to this License may be brought only in the courts of a jurisdiction where the defendant maintains its principal place of business and such litigation shall be governed by laws of that jurisdiction, without reference to its conflict-of-law provisions. Nothing in this Section shall prevent a party's ability to bring cross-claims or counter-claims.\par -\pard\sa200\sl276\slmult1\fs22 9. Miscellaneous\fs20\par -\pard\sa200\sl276\slmult1\qj This License represents the complete agreement concerning the subject matter hereof. If any provision of this License is held to be unenforceable, such provision shall be reformed only to the extent necessary to make it enforceable. Any law or regulation which provides that the language of a contract shall be construed against the drafter shall not be used to construe this License against a Contributor.\par -\pard\sa200\sl276\slmult1\fs22 10. Versions of the License\par -\fs20 10.1. New Versions\par -\pard\sa200\sl276\slmult1\qj Mozilla Foundation is the license steward. Except as provided in Section 10.3, no one other than the license steward has the right to modify or publish new versions of this License. Each version will be given a distinguishing version number.\par -\pard\sa200\sl276\slmult1 10.2. Effect of New Versions\par -\pard\sa200\sl276\slmult1\qj You may distribute the Covered Software under the terms of the version of the License under which You originally received the Covered Software, or under the terms of any subsequent version published by the license steward.\par -\pard\sa200\sl276\slmult1 10.3. Modified Versions\par -\pard\sa200\sl276\slmult1\qj If you create software not governed by this License, and you want to create a new license for such software, you may create and use a modified version of this License if you rename the license and remove any references to the name of the license steward (except to note that such modified license differs from this License).\par -\pard\sa200\sl276\slmult1 10.4. Distributing Source Code Form that is Incompatible With Secondary Licenses\par -\pard\sa200\sl276\slmult1\qj If You choose to distribute Source Code Form that is Incompatible With Secondary Licenses under the terms of this version of the License, the notice described in Exhibit B of this License must be attached.\par -\pard\sa200\sl276\slmult1\fs22 Exhibit A - Source Code Form License Notice\par -\pard\li284\sa200\sl276\slmult1\qj\fs20 This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at {\field{\*\fldinst{HYPERLINK "http://mozilla.org/MPL/2.0/"}}{\fldrslt{\ul\cf1 http://mozilla.org/MPL/2.0/}}}\f0\fs20 .\par -\pard\sa200\sl276\slmult1\qj If it is not possible or desirable to put the notice in a particular file, then You may include the notice in a location (such as a LICENSE file in a relevant directory) where a recipient would be likely to look for such a notice.\par -\pard\sa200\sl276\slmult1 You may add additional accurate notices of copyright ownership.\par -\fs22 Exhibit B - "Incompatible With Secondary Licenses" Notice\par -\pard\li284\sa200\sl276\slmult1\qj\fs20 This Source Code Form is "Incompatible With Secondary Licenses", as defined by the Mozilla Public License, v. 2.0.\par -} - \ No newline at end of file +{\rtf1\ansi\ansicpg1252\cocoartf2761 +\cocoatextscaling0\cocoaplatform0{\fonttbl\f0\fswiss\fcharset0 Arial-BoldMT;\f1\fswiss\fcharset0 ArialMT;} +{\colortbl;\red255\green255\blue255;} +{\*\expandedcolortbl;;} +\paperw11900\paperh16840\margl1440\margr1440\vieww16560\viewh8400\viewkind0 +\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\pardirnatural\partightenfactor0 + +\f0\b\fs28 \cf0 DB Browser for SQLite is bi-licensed under the Mozilla Public License\ +Version 2, as well as the GNU General Public License Version 3 or later.\ +\ +Modification or redistribution is permitted under the conditions of these licenses.\ +\ +Check `LICENSE-GPL-3.0` for the full text of the GNU General Public License Version 3.\ +Check `LICENSE-MPL-2.0` for the full text of the Mozilla Public License Version 2.\ +Check `LICENSE-MIT` for the full text of the MIT License. and that is the license for the `nalgeon/sqlean` library.\ +Check `LICENSE-PLUGINS` for other rights regarding included third-party resources. +\f1\b0\fs24 \ +\ + +\f0\b\fs26 LICENSE-GPL-3.0 +\f1\b0\fs24 \ + GNU GENERAL PUBLIC LICENSE\ + Version 3, 29 June 2007\ +\ + Copyright (C) 2007 Free Software Foundation, Inc. \ + Everyone is permitted to copy and distribute verbatim copies\ + of this license document, but changing it is not allowed.\ +\ + Preamble\ +\ + The GNU General Public License is a free, copyleft license for\ +software and other kinds of works.\ +\ + The licenses for most software and other practical works are designed\ +to take away your freedom to share and change the works. By contrast,\ +the GNU General Public License is intended to guarantee your freedom to\ +share and change all versions of a program--to make sure it remains free\ +software for all its users. We, the Free Software Foundation, use the\ +GNU General Public License for most of our software; it applies also to\ +any other work released this way by its authors. You can apply it to\ +your programs, too.\ +\ + When we speak of free software, we are referring to freedom, not\ +price. Our General Public Licenses are designed to make sure that you\ +have the freedom to distribute copies of free software (and charge for\ +them if you wish), that you receive source code or can get it if you\ +want it, that you can change the software or use pieces of it in new\ +free programs, and that you know you can do these things.\ +\ + To protect your rights, we need to prevent others from denying you\ +these rights or asking you to surrender the rights. Therefore, you have\ +certain responsibilities if you distribute copies of the software, or if\ +you modify it: responsibilities to respect the freedom of others.\ +\ + For example, if you distribute copies of such a program, whether\ +gratis or for a fee, you must pass on to the recipients the same\ +freedoms that you received. You must make sure that they, too, receive\ +or can get the source code. And you must show them these terms so they\ +know their rights.\ +\ + Developers that use the GNU GPL protect your rights with two steps:\ +(1) assert copyright on the software, and (2) offer you this License\ +giving you legal permission to copy, distribute and/or modify it.\ +\ + For the developers' and authors' protection, the GPL clearly explains\ +that there is no warranty for this free software. For both users' and\ +authors' sake, the GPL requires that modified versions be marked as\ +changed, so that their problems will not be attributed erroneously to\ +authors of previous versions.\ +\ + Some devices are designed to deny users access to install or run\ +modified versions of the software inside them, although the manufacturer\ +can do so. This is fundamentally incompatible with the aim of\ +protecting users' freedom to change the software. The systematic\ +pattern of such abuse occurs in the area of products for individuals to\ +use, which is precisely where it is most unacceptable. Therefore, we\ +have designed this version of the GPL to prohibit the practice for those\ +products. If such problems arise substantially in other domains, we\ +stand ready to extend this provision to those domains in future versions\ +of the GPL, as needed to protect the freedom of users.\ +\ + Finally, every program is threatened constantly by software patents.\ +States should not allow patents to restrict development and use of\ +software on general-purpose computers, but in those that do, we wish to\ +avoid the special danger that patents applied to a free program could\ +make it effectively proprietary. To prevent this, the GPL assures that\ +patents cannot be used to render the program non-free.\ +\ + The precise terms and conditions for copying, distribution and\ +modification follow.\ +\ + TERMS AND CONDITIONS\ +\ + 0. Definitions.\ +\ + "This License" refers to version 3 of the GNU General Public License.\ +\ + "Copyright" also means copyright-like laws that apply to other kinds of\ +works, such as semiconductor masks.\ +\ + "The Program" refers to any copyrightable work licensed under this\ +License. Each licensee is addressed as "you". "Licensees" and\ +"recipients" may be individuals or organizations.\ +\ + To "modify" a work means to copy from or adapt all or part of the work\ +in a fashion requiring copyright permission, other than the making of an\ +exact copy. The resulting work is called a "modified version" of the\ +earlier work or a work "based on" the earlier work.\ +\ + A "covered work" means either the unmodified Program or a work based\ +on the Program.\ +\ + To "propagate" a work means to do anything with it that, without\ +permission, would make you directly or secondarily liable for\ +infringement under applicable copyright law, except executing it on a\ +computer or modifying a private copy. Propagation includes copying,\ +distribution (with or without modification), making available to the\ +public, and in some countries other activities as well.\ +\ + To "convey" a work means any kind of propagation that enables other\ +parties to make or receive copies. Mere interaction with a user through\ +a computer network, with no transfer of a copy, is not conveying.\ +\ + An interactive user interface displays "Appropriate Legal Notices"\ +to the extent that it includes a convenient and prominently visible\ +feature that (1) displays an appropriate copyright notice, and (2)\ +tells the user that there is no warranty for the work (except to the\ +extent that warranties are provided), that licensees may convey the\ +work under this License, and how to view a copy of this License. If\ +the interface presents a list of user commands or options, such as a\ +menu, a prominent item in the list meets this criterion.\ +\ + 1. Source Code.\ +\ + The "source code" for a work means the preferred form of the work\ +for making modifications to it. "Object code" means any non-source\ +form of a work.\ +\ + A "Standard Interface" means an interface that either is an official\ +standard defined by a recognized standards body, or, in the case of\ +interfaces specified for a particular programming language, one that\ +is widely used among developers working in that language.\ +\ + The "System Libraries" of an executable work include anything, other\ +than the work as a whole, that (a) is included in the normal form of\ +packaging a Major Component, but which is not part of that Major\ +Component, and (b) serves only to enable use of the work with that\ +Major Component, or to implement a Standard Interface for which an\ +implementation is available to the public in source code form. A\ +"Major Component", in this context, means a major essential component\ +(kernel, window system, and so on) of the specific operating system\ +(if any) on which the executable work runs, or a compiler used to\ +produce the work, or an object code interpreter used to run it.\ +\ + The "Corresponding Source" for a work in object code form means all\ +the source code needed to generate, install, and (for an executable\ +work) run the object code and to modify the work, including scripts to\ +control those activities. However, it does not include the work's\ +System Libraries, or general-purpose tools or generally available free\ +programs which are used unmodified in performing those activities but\ +which are not part of the work. For example, Corresponding Source\ +includes interface definition files associated with source files for\ +the work, and the source code for shared libraries and dynamically\ +linked subprograms that the work is specifically designed to require,\ +such as by intimate data communication or control flow between those\ +subprograms and other parts of the work.\ +\ + The Corresponding Source need not include anything that users\ +can regenerate automatically from other parts of the Corresponding\ +Source.\ +\ + The Corresponding Source for a work in source code form is that\ +same work.\ +\ + 2. Basic Permissions.\ +\ + All rights granted under this License are granted for the term of\ +copyright on the Program, and are irrevocable provided the stated\ +conditions are met. This License explicitly affirms your unlimited\ +permission to run the unmodified Program. The output from running a\ +covered work is covered by this License only if the output, given its\ +content, constitutes a covered work. This License acknowledges your\ +rights of fair use or other equivalent, as provided by copyright law.\ +\ + You may make, run and propagate covered works that you do not\ +convey, without conditions so long as your license otherwise remains\ +in force. You may convey covered works to others for the sole purpose\ +of having them make modifications exclusively for you, or provide you\ +with facilities for running those works, provided that you comply with\ +the terms of this License in conveying all material for which you do\ +not control copyright. Those thus making or running the covered works\ +for you must do so exclusively on your behalf, under your direction\ +and control, on terms that prohibit them from making any copies of\ +your copyrighted material outside their relationship with you.\ +\ + Conveying under any other circumstances is permitted solely under\ +the conditions stated below. Sublicensing is not allowed; section 10\ +makes it unnecessary.\ +\ + 3. Protecting Users' Legal Rights From Anti-Circumvention Law.\ +\ + No covered work shall be deemed part of an effective technological\ +measure under any applicable law fulfilling obligations under article\ +11 of the WIPO copyright treaty adopted on 20 December 1996, or\ +similar laws prohibiting or restricting circumvention of such\ +measures.\ +\ + When you convey a covered work, you waive any legal power to forbid\ +circumvention of technological measures to the extent such circumvention\ +is effected by exercising rights under this License with respect to\ +the covered work, and you disclaim any intention to limit operation or\ +modification of the work as a means of enforcing, against the work's\ +users, your or third parties' legal rights to forbid circumvention of\ +technological measures.\ +\ + 4. Conveying Verbatim Copies.\ +\ + You may convey verbatim copies of the Program's source code as you\ +receive it, in any medium, provided that you conspicuously and\ +appropriately publish on each copy an appropriate copyright notice;\ +keep intact all notices stating that this License and any\ +non-permissive terms added in accord with section 7 apply to the code;\ +keep intact all notices of the absence of any warranty; and give all\ +recipients a copy of this License along with the Program.\ +\ + You may charge any price or no price for each copy that you convey,\ +and you may offer support or warranty protection for a fee.\ +\ + 5. Conveying Modified Source Versions.\ +\ + You may convey a work based on the Program, or the modifications to\ +produce it from the Program, in the form of source code under the\ +terms of section 4, provided that you also meet all of these conditions:\ +\ + a) The work must carry prominent notices stating that you modified\ + it, and giving a relevant date.\ +\ + b) The work must carry prominent notices stating that it is\ + released under this License and any conditions added under section\ + 7. This requirement modifies the requirement in section 4 to\ + "keep intact all notices".\ +\ + c) You must license the entire work, as a whole, under this\ + License to anyone who comes into possession of a copy. This\ + License will therefore apply, along with any applicable section 7\ + additional terms, to the whole of the work, and all its parts,\ + regardless of how they are packaged. This License gives no\ + permission to license the work in any other way, but it does not\ + invalidate such permission if you have separately received it.\ +\ + d) If the work has interactive user interfaces, each must display\ + Appropriate Legal Notices; however, if the Program has interactive\ + interfaces that do not display Appropriate Legal Notices, your\ + work need not make them do so.\ +\ + A compilation of a covered work with other separate and independent\ +works, which are not by their nature extensions of the covered work,\ +and which are not combined with it such as to form a larger program,\ +in or on a volume of a storage or distribution medium, is called an\ +"aggregate" if the compilation and its resulting copyright are not\ +used to limit the access or legal rights of the compilation's users\ +beyond what the individual works permit. Inclusion of a covered work\ +in an aggregate does not cause this License to apply to the other\ +parts of the aggregate.\ +\ + 6. Conveying Non-Source Forms.\ +\ + You may convey a covered work in object code form under the terms\ +of sections 4 and 5, provided that you also convey the\ +machine-readable Corresponding Source under the terms of this License,\ +in one of these ways:\ +\ + a) Convey the object code in, or embodied in, a physical product\ + (including a physical distribution medium), accompanied by the\ + Corresponding Source fixed on a durable physical medium\ + customarily used for software interchange.\ +\ + b) Convey the object code in, or embodied in, a physical product\ + (including a physical distribution medium), accompanied by a\ + written offer, valid for at least three years and valid for as\ + long as you offer spare parts or customer support for that product\ + model, to give anyone who possesses the object code either (1) a\ + copy of the Corresponding Source for all the software in the\ + product that is covered by this License, on a durable physical\ + medium customarily used for software interchange, for a price no\ + more than your reasonable cost of physically performing this\ + conveying of source, or (2) access to copy the\ + Corresponding Source from a network server at no charge.\ +\ + c) Convey individual copies of the object code with a copy of the\ + written offer to provide the Corresponding Source. This\ + alternative is allowed only occasionally and noncommercially, and\ + only if you received the object code with such an offer, in accord\ + with subsection 6b.\ +\ + d) Convey the object code by offering access from a designated\ + place (gratis or for a charge), and offer equivalent access to the\ + Corresponding Source in the same way through the same place at no\ + further charge. You need not require recipients to copy the\ + Corresponding Source along with the object code. If the place to\ + copy the object code is a network server, the Corresponding Source\ + may be on a different server (operated by you or a third party)\ + that supports equivalent copying facilities, provided you maintain\ + clear directions next to the object code saying where to find the\ + Corresponding Source. Regardless of what server hosts the\ + Corresponding Source, you remain obligated to ensure that it is\ + available for as long as needed to satisfy these requirements.\ +\ + e) Convey the object code using peer-to-peer transmission, provided\ + you inform other peers where the object code and Corresponding\ + Source of the work are being offered to the general public at no\ + charge under subsection 6d.\ +\ + A separable portion of the object code, whose source code is excluded\ +from the Corresponding Source as a System Library, need not be\ +included in conveying the object code work.\ +\ + A "User Product" is either (1) a "consumer product", which means any\ +tangible personal property which is normally used for personal, family,\ +or household purposes, or (2) anything designed or sold for incorporation\ +into a dwelling. In determining whether a product is a consumer product,\ +doubtful cases shall be resolved in favor of coverage. For a particular\ +product received by a particular user, "normally used" refers to a\ +typical or common use of that class of product, regardless of the status\ +of the particular user or of the way in which the particular user\ +actually uses, or expects or is expected to use, the product. A product\ +is a consumer product regardless of whether the product has substantial\ +commercial, industrial or non-consumer uses, unless such uses represent\ +the only significant mode of use of the product.\ +\ + "Installation Information" for a User Product means any methods,\ +procedures, authorization keys, or other information required to install\ +and execute modified versions of a covered work in that User Product from\ +a modified version of its Corresponding Source. The information must\ +suffice to ensure that the continued functioning of the modified object\ +code is in no case prevented or interfered with solely because\ +modification has been made.\ +\ + If you convey an object code work under this section in, or with, or\ +specifically for use in, a User Product, and the conveying occurs as\ +part of a transaction in which the right of possession and use of the\ +User Product is transferred to the recipient in perpetuity or for a\ +fixed term (regardless of how the transaction is characterized), the\ +Corresponding Source conveyed under this section must be accompanied\ +by the Installation Information. But this requirement does not apply\ +if neither you nor any third party retains the ability to install\ +modified object code on the User Product (for example, the work has\ +been installed in ROM).\ +\ + The requirement to provide Installation Information does not include a\ +requirement to continue to provide support service, warranty, or updates\ +for a work that has been modified or installed by the recipient, or for\ +the User Product in which it has been modified or installed. Access to a\ +network may be denied when the modification itself materially and\ +adversely affects the operation of the network or violates the rules and\ +protocols for communication across the network.\ +\ + Corresponding Source conveyed, and Installation Information provided,\ +in accord with this section must be in a format that is publicly\ +documented (and with an implementation available to the public in\ +source code form), and must require no special password or key for\ +unpacking, reading or copying.\ +\ + 7. Additional Terms.\ +\ + "Additional permissions" are terms that supplement the terms of this\ +License by making exceptions from one or more of its conditions.\ +Additional permissions that are applicable to the entire Program shall\ +be treated as though they were included in this License, to the extent\ +that they are valid under applicable law. If additional permissions\ +apply only to part of the Program, that part may be used separately\ +under those permissions, but the entire Program remains governed by\ +this License without regard to the additional permissions.\ +\ + When you convey a copy of a covered work, you may at your option\ +remove any additional permissions from that copy, or from any part of\ +it. (Additional permissions may be written to require their own\ +removal in certain cases when you modify the work.) You may place\ +additional permissions on material, added by you to a covered work,\ +for which you have or can give appropriate copyright permission.\ +\ + Notwithstanding any other provision of this License, for material you\ +add to a covered work, you may (if authorized by the copyright holders of\ +that material) supplement the terms of this License with terms:\ +\ + a) Disclaiming warranty or limiting liability differently from the\ + terms of sections 15 and 16 of this License; or\ +\ + b) Requiring preservation of specified reasonable legal notices or\ + author attributions in that material or in the Appropriate Legal\ + Notices displayed by works containing it; or\ +\ + c) Prohibiting misrepresentation of the origin of that material, or\ + requiring that modified versions of such material be marked in\ + reasonable ways as different from the original version; or\ +\ + d) Limiting the use for publicity purposes of names of licensors or\ + authors of the material; or\ +\ + e) Declining to grant rights under trademark law for use of some\ + trade names, trademarks, or service marks; or\ +\ + f) Requiring indemnification of licensors and authors of that\ + material by anyone who conveys the material (or modified versions of\ + it) with contractual assumptions of liability to the recipient, for\ + any liability that these contractual assumptions directly impose on\ + those licensors and authors.\ +\ + All other non-permissive additional terms are considered "further\ +restrictions" within the meaning of section 10. If the Program as you\ +received it, or any part of it, contains a notice stating that it is\ +governed by this License along with a term that is a further\ +restriction, you may remove that term. If a license document contains\ +a further restriction but permits relicensing or conveying under this\ +License, you may add to a covered work material governed by the terms\ +of that license document, provided that the further restriction does\ +not survive such relicensing or conveying.\ +\ + If you add terms to a covered work in accord with this section, you\ +must place, in the relevant source files, a statement of the\ +additional terms that apply to those files, or a notice indicating\ +where to find the applicable terms.\ +\ + Additional terms, permissive or non-permissive, may be stated in the\ +form of a separately written license, or stated as exceptions;\ +the above requirements apply either way.\ +\ + 8. Termination.\ +\ + You may not propagate or modify a covered work except as expressly\ +provided under this License. Any attempt otherwise to propagate or\ +modify it is void, and will automatically terminate your rights under\ +this License (including any patent licenses granted under the third\ +paragraph of section 11).\ +\ + However, if you cease all violation of this License, then your\ +license from a particular copyright holder is reinstated (a)\ +provisionally, unless and until the copyright holder explicitly and\ +finally terminates your license, and (b) permanently, if the copyright\ +holder fails to notify you of the violation by some reasonable means\ +prior to 60 days after the cessation.\ +\ + Moreover, your license from a particular copyright holder is\ +reinstated permanently if the copyright holder notifies you of the\ +violation by some reasonable means, this is the first time you have\ +received notice of violation of this License (for any work) from that\ +copyright holder, and you cure the violation prior to 30 days after\ +your receipt of the notice.\ +\ + Termination of your rights under this section does not terminate the\ +licenses of parties who have received copies or rights from you under\ +this License. If your rights have been terminated and not permanently\ +reinstated, you do not qualify to receive new licenses for the same\ +material under section 10.\ +\ + 9. Acceptance Not Required for Having Copies.\ +\ + You are not required to accept this License in order to receive or\ +run a copy of the Program. Ancillary propagation of a covered work\ +occurring solely as a consequence of using peer-to-peer transmission\ +to receive a copy likewise does not require acceptance. However,\ +nothing other than this License grants you permission to propagate or\ +modify any covered work. These actions infringe copyright if you do\ +not accept this License. Therefore, by modifying or propagating a\ +covered work, you indicate your acceptance of this License to do so.\ +\ + 10. Automatic Licensing of Downstream Recipients.\ +\ + Each time you convey a covered work, the recipient automatically\ +receives a license from the original licensors, to run, modify and\ +propagate that work, subject to this License. You are not responsible\ +for enforcing compliance by third parties with this License.\ +\ + An "entity transaction" is a transaction transferring control of an\ +organization, or substantially all assets of one, or subdividing an\ +organization, or merging organizations. If propagation of a covered\ +work results from an entity transaction, each party to that\ +transaction who receives a copy of the work also receives whatever\ +licenses to the work the party's predecessor in interest had or could\ +give under the previous paragraph, plus a right to possession of the\ +Corresponding Source of the work from the predecessor in interest, if\ +the predecessor has it or can get it with reasonable efforts.\ +\ + You may not impose any further restrictions on the exercise of the\ +rights granted or affirmed under this License. For example, you may\ +not impose a license fee, royalty, or other charge for exercise of\ +rights granted under this License, and you may not initiate litigation\ +(including a cross-claim or counterclaim in a lawsuit) alleging that\ +any patent claim is infringed by making, using, selling, offering for\ +sale, or importing the Program or any portion of it.\ +\ + 11. Patents.\ +\ + A "contributor" is a copyright holder who authorizes use under this\ +License of the Program or a work on which the Program is based. The\ +work thus licensed is called the contributor's "contributor version".\ +\ + A contributor's "essential patent claims" are all patent claims\ +owned or controlled by the contributor, whether already acquired or\ +hereafter acquired, that would be infringed by some manner, permitted\ +by this License, of making, using, or selling its contributor version,\ +but do not include claims that would be infringed only as a\ +consequence of further modification of the contributor version. For\ +purposes of this definition, "control" includes the right to grant\ +patent sublicenses in a manner consistent with the requirements of\ +this License.\ +\ + Each contributor grants you a non-exclusive, worldwide, royalty-free\ +patent license under the contributor's essential patent claims, to\ +make, use, sell, offer for sale, import and otherwise run, modify and\ +propagate the contents of its contributor version.\ +\ + In the following three paragraphs, a "patent license" is any express\ +agreement or commitment, however denominated, not to enforce a patent\ +(such as an express permission to practice a patent or covenant not to\ +sue for patent infringement). To "grant" such a patent license to a\ +party means to make such an agreement or commitment not to enforce a\ +patent against the party.\ +\ + If you convey a covered work, knowingly relying on a patent license,\ +and the Corresponding Source of the work is not available for anyone\ +to copy, free of charge and under the terms of this License, through a\ +publicly available network server or other readily accessible means,\ +then you must either (1) cause the Corresponding Source to be so\ +available, or (2) arrange to deprive yourself of the benefit of the\ +patent license for this particular work, or (3) arrange, in a manner\ +consistent with the requirements of this License, to extend the patent\ +license to downstream recipients. "Knowingly relying" means you have\ +actual knowledge that, but for the patent license, your conveying the\ +covered work in a country, or your recipient's use of the covered work\ +in a country, would infringe one or more identifiable patents in that\ +country that you have reason to believe are valid.\ +\ + If, pursuant to or in connection with a single transaction or\ +arrangement, you convey, or propagate by procuring conveyance of, a\ +covered work, and grant a patent license to some of the parties\ +receiving the covered work authorizing them to use, propagate, modify\ +or convey a specific copy of the covered work, then the patent license\ +you grant is automatically extended to all recipients of the covered\ +work and works based on it.\ +\ + A patent license is "discriminatory" if it does not include within\ +the scope of its coverage, prohibits the exercise of, or is\ +conditioned on the non-exercise of one or more of the rights that are\ +specifically granted under this License. You may not convey a covered\ +work if you are a party to an arrangement with a third party that is\ +in the business of distributing software, under which you make payment\ +to the third party based on the extent of your activity of conveying\ +the work, and under which the third party grants, to any of the\ +parties who would receive the covered work from you, a discriminatory\ +patent license (a) in connection with copies of the covered work\ +conveyed by you (or copies made from those copies), or (b) primarily\ +for and in connection with specific products or compilations that\ +contain the covered work, unless you entered into that arrangement,\ +or that patent license was granted, prior to 28 March 2007.\ +\ + Nothing in this License shall be construed as excluding or limiting\ +any implied license or other defenses to infringement that may\ +otherwise be available to you under applicable patent law.\ +\ + 12. No Surrender of Others' Freedom.\ +\ + If conditions are imposed on you (whether by court order, agreement or\ +otherwise) that contradict the conditions of this License, they do not\ +excuse you from the conditions of this License. If you cannot convey a\ +covered work so as to satisfy simultaneously your obligations under this\ +License and any other pertinent obligations, then as a consequence you may\ +not convey it at all. For example, if you agree to terms that obligate you\ +to collect a royalty for further conveying from those to whom you convey\ +the Program, the only way you could satisfy both those terms and this\ +License would be to refrain entirely from conveying the Program.\ +\ + 13. Use with the GNU Affero General Public License.\ +\ + Notwithstanding any other provision of this License, you have\ +permission to link or combine any covered work with a work licensed\ +under version 3 of the GNU Affero General Public License into a single\ +combined work, and to convey the resulting work. The terms of this\ +License will continue to apply to the part which is the covered work,\ +but the special requirements of the GNU Affero General Public License,\ +section 13, concerning interaction through a network will apply to the\ +combination as such.\ +\ + 14. Revised Versions of this License.\ +\ + The Free Software Foundation may publish revised and/or new versions of\ +the GNU General Public License from time to time. Such new versions will\ +be similar in spirit to the present version, but may differ in detail to\ +address new problems or concerns.\ +\ + Each version is given a distinguishing version number. If the\ +Program specifies that a certain numbered version of the GNU General\ +Public License "or any later version" applies to it, you have the\ +option of following the terms and conditions either of that numbered\ +version or of any later version published by the Free Software\ +Foundation. If the Program does not specify a version number of the\ +GNU General Public License, you may choose any version ever published\ +by the Free Software Foundation.\ +\ + If the Program specifies that a proxy can decide which future\ +versions of the GNU General Public License can be used, that proxy's\ +public statement of acceptance of a version permanently authorizes you\ +to choose that version for the Program.\ +\ + Later license versions may give you additional or different\ +permissions. However, no additional obligations are imposed on any\ +author or copyright holder as a result of your choosing to follow a\ +later version.\ +\ + 15. Disclaimer of Warranty.\ +\ + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY\ +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT\ +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY\ +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,\ +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\ +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM\ +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF\ +ALL NECESSARY SERVICING, REPAIR OR CORRECTION.\ +\ + 16. Limitation of Liability.\ +\ + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING\ +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS\ +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY\ +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE\ +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF\ +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD\ +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),\ +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF\ +SUCH DAMAGES.\ +\ + 17. Interpretation of Sections 15 and 16.\ +\ + If the disclaimer of warranty and limitation of liability provided\ +above cannot be given local legal effect according to their terms,\ +reviewing courts shall apply local law that most closely approximates\ +an absolute waiver of all civil liability in connection with the\ +Program, unless a warranty or assumption of liability accompanies a\ +copy of the Program in return for a fee.\ +\ + END OF TERMS AND CONDITIONS\ +\ + How to Apply These Terms to Your New Programs\ +\ + If you develop a new program, and you want it to be of the greatest\ +possible use to the public, the best way to achieve this is to make it\ +free software which everyone can redistribute and change under these terms.\ +\ + To do so, attach the following notices to the program. It is safest\ +to attach them to the start of each source file to most effectively\ +state the exclusion of warranty; and each file should have at least\ +the "copyright" line and a pointer to where the full notice is found.\ +\ + \ + Copyright (C) \ +\ + This program is free software: you can redistribute it and/or modify\ + it under the terms of the GNU General Public License as published by\ + the Free Software Foundation, either version 3 of the License, or\ + (at your option) any later version.\ +\ + This program is distributed in the hope that it will be useful,\ + but WITHOUT ANY WARRANTY; without even the implied warranty of\ + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\ + GNU General Public License for more details.\ +\ + You should have received a copy of the GNU General Public License\ + along with this program. If not, see .\ +\ +Also add information on how to contact you by electronic and paper mail.\ +\ + If the program does terminal interaction, make it output a short\ +notice like this when it starts in an interactive mode:\ +\ + Copyright (C) \ + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.\ + This is free software, and you are welcome to redistribute it\ + under certain conditions; type `show c' for details.\ +\ +The hypothetical commands `show w' and `show c' should show the appropriate\ +parts of the General Public License. Of course, your program's commands\ +might be different; for a GUI interface, you would use an "about box".\ +\ + You should also get your employer (if you work as a programmer) or school,\ +if any, to sign a "copyright disclaimer" for the program, if necessary.\ +For more information on this, and how to apply and follow the GNU GPL, see\ +.\ +\ + The GNU General Public License does not permit incorporating your program\ +into proprietary programs. If your program is a subroutine library, you\ +may consider it more useful to permit linking proprietary applications with\ +the library. If this is what you want to do, use the GNU Lesser General\ +Public License instead of this License. But first, please read\ +.\ +\ + +\f0\b\fs26 LICENSE-MPL-2.0 +\f1\b0\fs24 \ +Mozilla Public License Version 2.0\ +==================================\ +\ +1. Definitions\ +--------------\ +\ +1.1. "Contributor"\ + means each individual or legal entity that creates, contributes to\ + the creation of, or owns Covered Software.\ +\ +1.2. "Contributor Version"\ + means the combination of the Contributions of others (if any) used\ + by a Contributor and that particular Contributor's Contribution.\ +\ +1.3. "Contribution"\ + means Covered Software of a particular Contributor.\ +\ +1.4. "Covered Software"\ + means Source Code Form to which the initial Contributor has attached\ + the notice in Exhibit A, the Executable Form of such Source Code\ + Form, and Modifications of such Source Code Form, in each case\ + including portions thereof.\ +\ +1.5. "Incompatible With Secondary Licenses"\ + means\ +\ + (a) that the initial Contributor has attached the notice described\ + in Exhibit B to the Covered Software; or\ +\ + (b) that the Covered Software was made available under the terms of\ + version 1.1 or earlier of the License, but not also under the\ + terms of a Secondary License.\ +\ +1.6. "Executable Form"\ + means any form of the work other than Source Code Form.\ +\ +1.7. "Larger Work"\ + means a work that combines Covered Software with other material, in\ + a separate file or files, that is not Covered Software.\ +\ +1.8. "License"\ + means this document.\ +\ +1.9. "Licensable"\ + means having the right to grant, to the maximum extent possible,\ + whether at the time of the initial grant or subsequently, any and\ + all of the rights conveyed by this License.\ +\ +1.10. "Modifications"\ + means any of the following:\ +\ + (a) any file in Source Code Form that results from an addition to,\ + deletion from, or modification of the contents of Covered\ + Software; or\ +\ + (b) any new file in Source Code Form that contains any Covered\ + Software.\ +\ +1.11. "Patent Claims" of a Contributor\ + means any patent claim(s), including without limitation, method,\ + process, and apparatus claims, in any patent Licensable by such\ + Contributor that would be infringed, but for the grant of the\ + License, by the making, using, selling, offering for sale, having\ + made, import, or transfer of either its Contributions or its\ + Contributor Version.\ +\ +1.12. "Secondary License"\ + means either the GNU General Public License, Version 2.0, the GNU\ + Lesser General Public License, Version 2.1, the GNU Affero General\ + Public License, Version 3.0, or any later versions of those\ + licenses.\ +\ +1.13. "Source Code Form"\ + means the form of the work preferred for making modifications.\ +\ +1.14. "You" (or "Your")\ + means an individual or a legal entity exercising rights under this\ + License. For legal entities, "You" includes any entity that\ + controls, is controlled by, or is under common control with You. For\ + purposes of this definition, "control" means (a) the power, direct\ + or indirect, to cause the direction or management of such entity,\ + whether by contract or otherwise, or (b) ownership of more than\ + fifty percent (50%) of the outstanding shares or beneficial\ + ownership of such entity.\ +\ +2. License Grants and Conditions\ +--------------------------------\ +\ +2.1. Grants\ +\ +Each Contributor hereby grants You a world-wide, royalty-free,\ +non-exclusive license:\ +\ +(a) under intellectual property rights (other than patent or trademark)\ + Licensable by such Contributor to use, reproduce, make available,\ + modify, display, perform, distribute, and otherwise exploit its\ + Contributions, either on an unmodified basis, with Modifications, or\ + as part of a Larger Work; and\ +\ +(b) under Patent Claims of such Contributor to make, use, sell, offer\ + for sale, have made, import, and otherwise transfer either its\ + Contributions or its Contributor Version.\ +\ +2.2. Effective Date\ +\ +The licenses granted in Section 2.1 with respect to any Contribution\ +become effective for each Contribution on the date the Contributor first\ +distributes such Contribution.\ +\ +2.3. Limitations on Grant Scope\ +\ +The licenses granted in this Section 2 are the only rights granted under\ +this License. No additional rights or licenses will be implied from the\ +distribution or licensing of Covered Software under this License.\ +Notwithstanding Section 2.1(b) above, no patent license is granted by a\ +Contributor:\ +\ +(a) for any code that a Contributor has removed from Covered Software;\ + or\ +\ +(b) for infringements caused by: (i) Your and any other third party's\ + modifications of Covered Software, or (ii) the combination of its\ + Contributions with other software (except as part of its Contributor\ + Version); or\ +\ +(c) under Patent Claims infringed by Covered Software in the absence of\ + its Contributions.\ +\ +This License does not grant any rights in the trademarks, service marks,\ +or logos of any Contributor (except as may be necessary to comply with\ +the notice requirements in Section 3.4).\ +\ +2.4. Subsequent Licenses\ +\ +No Contributor makes additional grants as a result of Your choice to\ +distribute the Covered Software under a subsequent version of this\ +License (see Section 10.2) or under the terms of a Secondary License (if\ +permitted under the terms of Section 3.3).\ +\ +2.5. Representation\ +\ +Each Contributor represents that the Contributor believes its\ +Contributions are its original creation(s) or it has sufficient rights\ +to grant the rights to its Contributions conveyed by this License.\ +\ +2.6. Fair Use\ +\ +This License is not intended to limit any rights You have under\ +applicable copyright doctrines of fair use, fair dealing, or other\ +equivalents.\ +\ +2.7. Conditions\ +\ +Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted\ +in Section 2.1.\ +\ +3. Responsibilities\ +-------------------\ +\ +3.1. Distribution of Source Form\ +\ +All distribution of Covered Software in Source Code Form, including any\ +Modifications that You create or to which You contribute, must be under\ +the terms of this License. You must inform recipients that the Source\ +Code Form of the Covered Software is governed by the terms of this\ +License, and how they can obtain a copy of this License. You may not\ +attempt to alter or restrict the recipients' rights in the Source Code\ +Form.\ +\ +3.2. Distribution of Executable Form\ +\ +If You distribute Covered Software in Executable Form then:\ +\ +(a) such Covered Software must also be made available in Source Code\ + Form, as described in Section 3.1, and You must inform recipients of\ + the Executable Form how they can obtain a copy of such Source Code\ + Form by reasonable means in a timely manner, at a charge no more\ + than the cost of distribution to the recipient; and\ +\ +(b) You may distribute such Executable Form under the terms of this\ + License, or sublicense it under different terms, provided that the\ + license for the Executable Form does not attempt to limit or alter\ + the recipients' rights in the Source Code Form under this License.\ +\ +3.3. Distribution of a Larger Work\ +\ +You may create and distribute a Larger Work under terms of Your choice,\ +provided that You also comply with the requirements of this License for\ +the Covered Software. If the Larger Work is a combination of Covered\ +Software with a work governed by one or more Secondary Licenses, and the\ +Covered Software is not Incompatible With Secondary Licenses, this\ +License permits You to additionally distribute such Covered Software\ +under the terms of such Secondary License(s), so that the recipient of\ +the Larger Work may, at their option, further distribute the Covered\ +Software under the terms of either this License or such Secondary\ +License(s).\ +\ +3.4. Notices\ +\ +You may not remove or alter the substance of any license notices\ +(including copyright notices, patent notices, disclaimers of warranty,\ +or limitations of liability) contained within the Source Code Form of\ +the Covered Software, except that You may alter any license notices to\ +the extent required to remedy known factual inaccuracies.\ +\ +3.5. Application of Additional Terms\ +\ +You may choose to offer, and to charge a fee for, warranty, support,\ +indemnity or liability obligations to one or more recipients of Covered\ +Software. However, You may do so only on Your own behalf, and not on\ +behalf of any Contributor. You must make it absolutely clear that any\ +such warranty, support, indemnity, or liability obligation is offered by\ +You alone, and You hereby agree to indemnify every Contributor for any\ +liability incurred by such Contributor as a result of warranty, support,\ +indemnity or liability terms You offer. You may include additional\ +disclaimers of warranty and limitations of liability specific to any\ +jurisdiction.\ +\ +4. Inability to Comply Due to Statute or Regulation\ +---------------------------------------------------\ +\ +If it is impossible for You to comply with any of the terms of this\ +License with respect to some or all of the Covered Software due to\ +statute, judicial order, or regulation then You must: (a) comply with\ +the terms of this License to the maximum extent possible; and (b)\ +describe the limitations and the code they affect. Such description must\ +be placed in a text file included with all distributions of the Covered\ +Software under this License. Except to the extent prohibited by statute\ +or regulation, such description must be sufficiently detailed for a\ +recipient of ordinary skill to be able to understand it.\ +\ +5. Termination\ +--------------\ +\ +5.1. The rights granted under this License will terminate automatically\ +if You fail to comply with any of its terms. However, if You become\ +compliant, then the rights granted under this License from a particular\ +Contributor are reinstated (a) provisionally, unless and until such\ +Contributor explicitly and finally terminates Your grants, and (b) on an\ +ongoing basis, if such Contributor fails to notify You of the\ +non-compliance by some reasonable means prior to 60 days after You have\ +come back into compliance. Moreover, Your grants from a particular\ +Contributor are reinstated on an ongoing basis if such Contributor\ +notifies You of the non-compliance by some reasonable means, this is the\ +first time You have received notice of non-compliance with this License\ +from such Contributor, and You become compliant prior to 30 days after\ +Your receipt of the notice.\ +\ +5.2. If You initiate litigation against any entity by asserting a patent\ +infringement claim (excluding declaratory judgment actions,\ +counter-claims, and cross-claims) alleging that a Contributor Version\ +directly or indirectly infringes any patent, then the rights granted to\ +You by any and all Contributors for the Covered Software under Section\ +2.1 of this License shall terminate.\ +\ +5.3. In the event of termination under Sections 5.1 or 5.2 above, all\ +end user license agreements (excluding distributors and resellers) which\ +have been validly granted by You or Your distributors under this License\ +prior to termination shall survive termination.\ +\ +************************************************************************\ +* *\ +* 6. Disclaimer of Warranty *\ +* ------------------------- *\ +* *\ +* Covered Software is provided under this License on an "as is" *\ +* basis, without warranty of any kind, either expressed, implied, or *\ +* statutory, including, without limitation, warranties that the *\ +* Covered Software is free of defects, merchantable, fit for a *\ +* particular purpose or non-infringing. The entire risk as to the *\ +* quality and performance of the Covered Software is with You. *\ +* Should any Covered Software prove defective in any respect, You *\ +* (not any Contributor) assume the cost of any necessary servicing, *\ +* repair, or correction. This disclaimer of warranty constitutes an *\ +* essential part of this License. No use of any Covered Software is *\ +* authorized under this License except under this disclaimer. *\ +* *\ +************************************************************************\ +\ +************************************************************************\ +* *\ +* 7. Limitation of Liability *\ +* -------------------------- *\ +* *\ +* Under no circumstances and under no legal theory, whether tort *\ +* (including negligence), contract, or otherwise, shall any *\ +* Contributor, or anyone who distributes Covered Software as *\ +* permitted above, be liable to You for any direct, indirect, *\ +* special, incidental, or consequential damages of any character *\ +* including, without limitation, damages for lost profits, loss of *\ +* goodwill, work stoppage, computer failure or malfunction, or any *\ +* and all other commercial damages or losses, even if such party *\ +* shall have been informed of the possibility of such damages. This *\ +* limitation of liability shall not apply to liability for death or *\ +* personal injury resulting from such party's negligence to the *\ +* extent applicable law prohibits such limitation. Some *\ +* jurisdictions do not allow the exclusion or limitation of *\ +* incidental or consequential damages, so this exclusion and *\ +* limitation may not apply to You. *\ +* *\ +************************************************************************\ +\ +8. Litigation\ +-------------\ +\ +Any litigation relating to this License may be brought only in the\ +courts of a jurisdiction where the defendant maintains its principal\ +place of business and such litigation shall be governed by laws of that\ +jurisdiction, without reference to its conflict-of-law provisions.\ +Nothing in this Section shall prevent a party's ability to bring\ +cross-claims or counter-claims.\ +\ +9. Miscellaneous\ +----------------\ +\ +This License represents the complete agreement concerning the subject\ +matter hereof. If any provision of this License is held to be\ +unenforceable, such provision shall be reformed only to the extent\ +necessary to make it enforceable. Any law or regulation which provides\ +that the language of a contract shall be construed against the drafter\ +shall not be used to construe this License against a Contributor.\ +\ +10. Versions of the License\ +---------------------------\ +\ +10.1. New Versions\ +\ +Mozilla Foundation is the license steward. Except as provided in Section\ +10.3, no one other than the license steward has the right to modify or\ +publish new versions of this License. Each version will be given a\ +distinguishing version number.\ +\ +10.2. Effect of New Versions\ +\ +You may distribute the Covered Software under the terms of the version\ +of the License under which You originally received the Covered Software,\ +or under the terms of any subsequent version published by the license\ +steward.\ +\ +10.3. Modified Versions\ +\ +If you create software not governed by this License, and you want to\ +create a new license for such software, you may create and use a\ +modified version of this License if you rename the license and remove\ +any references to the name of the license steward (except to note that\ +such modified license differs from this License).\ +\ +10.4. Distributing Source Code Form that is Incompatible With Secondary\ +Licenses\ +\ +If You choose to distribute Source Code Form that is Incompatible With\ +Secondary Licenses under the terms of this version of the License, the\ +notice described in Exhibit B of this License must be attached.\ +\ +Exhibit A - Source Code Form License Notice\ +-------------------------------------------\ +\ + This Source Code Form is subject to the terms of the Mozilla Public\ + License, v. 2.0. If a copy of the MPL was not distributed with this\ + file, You can obtain one at http://mozilla.org/MPL/2.0/.\ +\ +If it is not possible or desirable to put the notice in a particular\ +file, then You may include the notice in a location (such as a LICENSE\ +file in a relevant directory) where a recipient would be likely to look\ +for such a notice.\ +\ +You may add additional accurate notices of copyright ownership.\ +\ +Exhibit B - "Incompatible With Secondary Licenses" Notice\ +---------------------------------------------------------\ +\ + This Source Code Form is "Incompatible With Secondary Licenses", as\ + defined by the Mozilla Public License, v. 2.0.\ +\ + +\f0\b\fs26 LICENSE-MIT +\f1\b0\fs24 \ +MIT License\ +\ +Copyright (c) 2021+ Anton Zhiyanov \ +\ +Permission is hereby granted, free of charge, to any person obtaining a copy\ +of this software and associated documentation files (the "Software"), to deal\ +in the Software without restriction, including without limitation the rights\ +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ +copies of the Software, and to permit persons to whom the Software is\ +furnished to do so, subject to the following conditions:\ +\ +The above copyright notice and this permission notice shall be included in all\ +copies or substantial portions of the Software.\ +\ +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\ +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\ +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\ +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\ +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\ +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\ +SOFTWARE.\ +\ + +\f0\b\fs26 LICENSE-PLUGINS +\f1\b0\fs24 \ +DB Browser for SQLite includes support for TIFF and WebP images. The\ +support for these comes from the LibTIFF and WebP projects, which have\ +their own (Open Source) licenses, different to ours.\ +\ +LibTIFF - http://www.simplesystems.org/libtiff/\ +\ + Copyright (c) 1988-1997 Sam Leffler\ + Copyright (c) 1991-1997 Silicon Graphics, Inc.\ +\ + Permission to use, copy, modify, distribute, and sell this software and \ + its documentation for any purpose is hereby granted without fee, provided\ + that (i) the above copyright notices and this permission notice appear in\ + all copies of the software and related documentation, and (ii) the names of\ + Sam Leffler and Silicon Graphics may not be used in any advertising or\ + publicity relating to the software without the specific, prior written\ + permission of Sam Leffler and Silicon Graphics.\ +\ + THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, \ + EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY \ + WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. \ +\ + IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR\ + ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,\ + OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,\ + WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF \ + LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE \ + OF THIS SOFTWARE. \ +\ +WebP - https://developers.google.com/speed/webp/\ +\ + Copyright (c) 2010, Google Inc. All rights reserved.\ +\ + Redistribution and use in source and binary forms, with or without\ + modification, are permitted provided that the following conditions are\ + met:\ +\ + * Redistributions of source code must retain the above copyright\ + notice, this list of conditions and the following disclaimer.\ +\ + * Redistributions in binary form must reproduce the above copyright\ + notice, this list of conditions and the following disclaimer in\ + the documentation and/or other materials provided with the\ + distribution.\ +\ + * Neither the name of Google nor the names of its contributors may\ + be used to endorse or promote products derived from this software\ + without specific prior written permission.\ +\ + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\ + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\ + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\ + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\ + HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\ + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\ + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\ + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\ + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\ + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\ + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\ +\ +Icons - https://codefisher.org/pastel-svg/\ +\ +Most of the icons come from the Pastel SVG icon set created by Michael\ +Buckley. We have obtained a special license (Creative Commons\ +Attribution Share Alike 4.0\ +http://creativecommons.org/licenses/by-sa/4.0/) but you might be\ +required to redistribute it under Creative Commons Attribution\ +NonCommercial Share Alike 4.0\ +http://creativecommons.org/licenses/by-nc-sa/4.0/\ +Check https://codefisher.org/pastel-svg/ for clarification.\ +\ +The construction emoji for the icon used in the nightly version come\ +from the OpenMoji under CC BY-SA 4.0 license.\ +Check https://openmoji.org/library/emoji-1F6A7/ and\ +https://openmoji.org/faq/ for clarification.\ +\ +Some icons might have other open licenses, check history of the files\ +under `src/icons`.} \ No newline at end of file diff --git a/installer/windows/product.wxs b/installer/windows/product.wxs index c040591a8..df52263f3 100644 --- a/installer/windows/product.wxs +++ b/installer/windows/product.wxs @@ -231,13 +231,13 @@ - + - + diff --git a/installer/windows/variables.wxi b/installer/windows/variables.wxi index fbedf0c31..d52749177 100644 --- a/installer/windows/variables.wxi +++ b/installer/windows/variables.wxi @@ -3,7 +3,7 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + SHORTCUT_SQLITE_DESKTOP + + + + + SHORTCUT_SQLCIPHER_DESKTOP + + + + + + + SHORTCUT_SQLITE_PROGRAMMENU + + + + + SHORTCUT_SQLCIPHER_PROGRAMMENU + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + LicenseAccepted = "1" + NOT Installed + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + NSIS_INSTALLDIR + + + + + + + NSIS_INSTALLDIR + + + + + diff --git a/installer/windows_on_arm/resources/background.xcf b/installer/windows_on_arm/resources/background.xcf new file mode 100644 index 000000000..ebf51cf0f Binary files /dev/null and b/installer/windows_on_arm/resources/background.xcf differ diff --git a/installer/windows_on_arm/resources/banner.xcf b/installer/windows_on_arm/resources/banner.xcf new file mode 100644 index 000000000..10a3f83b7 Binary files /dev/null and b/installer/windows_on_arm/resources/banner.xcf differ diff --git a/installer/windows_on_arm/resources/icon.png b/installer/windows_on_arm/resources/icon.png new file mode 100644 index 000000000..f6505e913 Binary files /dev/null and b/installer/windows_on_arm/resources/icon.png differ diff --git a/installer/windows_on_arm/strings.wxl b/installer/windows_on_arm/strings.wxl new file mode 100644 index 000000000..f5af817de --- /dev/null +++ b/installer/windows_on_arm/strings.wxl @@ -0,0 +1,14 @@ + + + This Setup Wizard will install [ProductName] on your computer. If you have a previous version already installed, this installation process will update it. + + + [ProductName] Setup + {\WixUI_Font_Title}Shortcuts + Select the shortcuts for the application. + [ProductName] uses the latest version of SQLite, so you can enjoy all of its new features and bug fixes, but it does not have encryption support. It is also built with SQLCipher as a separate application. SQLCipher is an open source extension to SQLite providing transparent 256-bit AES encryption of database files, but uses a slightly older version of SQLite. Both applications (with and without SQLCipher) are installed and can run concurrently. This page allows you to choose the shortcuts for each application and where to place them. + DB Browser (SQLite) + DB Browser (SQLCipher) + Desktop + Program Menu + diff --git a/installer/windows_on_arm/translations.wxs b/installer/windows_on_arm/translations.wxs new file mode 100644 index 000000000..0bba89860 --- /dev/null +++ b/installer/windows_on_arm/translations.wxs @@ -0,0 +1,183 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/installer/windows_on_arm/ui.wxs b/installer/windows_on_arm/ui.wxs new file mode 100644 index 000000000..7fee7011f --- /dev/null +++ b/installer/windows_on_arm/ui.wxs @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + 1 + + + 1 + + + 1 + + + + + diff --git a/installer/windows_on_arm/variables.wxi b/installer/windows_on_arm/variables.wxi new file mode 100644 index 000000000..2f4886d31 --- /dev/null +++ b/installer/windows_on_arm/variables.wxi @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/libs/qcustomplot-source/CMakeLists.txt b/libs/qcustomplot-source/CMakeLists.txt index 3f2cf5a28..b6228cf9c 100644 --- a/libs/qcustomplot-source/CMakeLists.txt +++ b/libs/qcustomplot-source/CMakeLists.txt @@ -1,9 +1,9 @@ -cmake_minimum_required(VERSION 2.8.12.2) +cmake_minimum_required(VERSION 3.16) set(CMAKE_AUTOMOC ON) set(CMAKE_INCLUDE_CURRENT_DIR ON) -find_package(Qt5 REQUIRED COMPONENTS Widgets PrintSupport) +find_package(${QT_MAJOR} REQUIRED COMPONENTS Widgets PrintSupport) set(QCUSTOMPLOT_SRC qcustomplot.cpp @@ -16,6 +16,6 @@ set(QCUSTOMPLOT_MOC_HDR add_library(qcustomplot ${QCUSTOMPLOT_SRC} ${QCUSTOMPLOT_MOC_HDR} ${QCUSTOMPLOT_MOC}) target_include_directories(qcustomplot INTERFACE ${CMAKE_CURRENT_LIST_DIR}) -target_link_libraries(qcustomplot Qt5::Widgets Qt5::PrintSupport) +target_link_libraries(qcustomplot ${QT_MAJOR}::Widgets ${QT_MAJOR}::PrintSupport) add_library(QCustomPlot::QCustomPlot ALIAS qcustomplot) diff --git a/libs/qcustomplot-source/GPL.txt b/libs/qcustomplot-source/GPL.txt index 818433ecc..94a9ed024 100755 --- a/libs/qcustomplot-source/GPL.txt +++ b/libs/qcustomplot-source/GPL.txt @@ -1,674 +1,674 @@ - GNU GENERAL PUBLIC LICENSE - Version 3, 29 June 2007 - - Copyright (C) 2007 Free Software Foundation, Inc. - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The GNU General Public License is a free, copyleft license for -software and other kinds of works. - - The licenses for most software and other practical works are designed -to take away your freedom to share and change the works. By contrast, -the GNU General Public License is intended to guarantee your freedom to -share and change all versions of a program--to make sure it remains free -software for all its users. We, the Free Software Foundation, use the -GNU General Public License for most of our software; it applies also to -any other work released this way by its authors. You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -them if you wish), that you receive source code or can get it if you -want it, that you can change the software or use pieces of it in new -free programs, and that you know you can do these things. - - To protect your rights, we need to prevent others from denying you -these rights or asking you to surrender the rights. Therefore, you have -certain responsibilities if you distribute copies of the software, or if -you modify it: responsibilities to respect the freedom of others. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must pass on to the recipients the same -freedoms that you received. You must make sure that they, too, receive -or can get the source code. And you must show them these terms so they -know their rights. - - Developers that use the GNU GPL protect your rights with two steps: -(1) assert copyright on the software, and (2) offer you this License -giving you legal permission to copy, distribute and/or modify it. - - For the developers' and authors' protection, the GPL clearly explains -that there is no warranty for this free software. For both users' and -authors' sake, the GPL requires that modified versions be marked as -changed, so that their problems will not be attributed erroneously to -authors of previous versions. - - Some devices are designed to deny users access to install or run -modified versions of the software inside them, although the manufacturer -can do so. This is fundamentally incompatible with the aim of -protecting users' freedom to change the software. The systematic -pattern of such abuse occurs in the area of products for individuals to -use, which is precisely where it is most unacceptable. Therefore, we -have designed this version of the GPL to prohibit the practice for those -products. If such problems arise substantially in other domains, we -stand ready to extend this provision to those domains in future versions -of the GPL, as needed to protect the freedom of users. - - Finally, every program is threatened constantly by software patents. -States should not allow patents to restrict development and use of -software on general-purpose computers, but in those that do, we wish to -avoid the special danger that patents applied to a free program could -make it effectively proprietary. To prevent this, the GPL assures that -patents cannot be used to render the program non-free. - - The precise terms and conditions for copying, distribution and -modification follow. - - TERMS AND CONDITIONS - - 0. Definitions. - - "This License" refers to version 3 of the GNU General Public License. - - "Copyright" also means copyright-like laws that apply to other kinds of -works, such as semiconductor masks. - - "The Program" refers to any copyrightable work licensed under this -License. Each licensee is addressed as "you". "Licensees" and -"recipients" may be individuals or organizations. - - To "modify" a work means to copy from or adapt all or part of the work -in a fashion requiring copyright permission, other than the making of an -exact copy. The resulting work is called a "modified version" of the -earlier work or a work "based on" the earlier work. - - A "covered work" means either the unmodified Program or a work based -on the Program. - - To "propagate" a work means to do anything with it that, without -permission, would make you directly or secondarily liable for -infringement under applicable copyright law, except executing it on a -computer or modifying a private copy. Propagation includes copying, -distribution (with or without modification), making available to the -public, and in some countries other activities as well. - - To "convey" a work means any kind of propagation that enables other -parties to make or receive copies. Mere interaction with a user through -a computer network, with no transfer of a copy, is not conveying. - - An interactive user interface displays "Appropriate Legal Notices" -to the extent that it includes a convenient and prominently visible -feature that (1) displays an appropriate copyright notice, and (2) -tells the user that there is no warranty for the work (except to the -extent that warranties are provided), that licensees may convey the -work under this License, and how to view a copy of this License. If -the interface presents a list of user commands or options, such as a -menu, a prominent item in the list meets this criterion. - - 1. Source Code. - - The "source code" for a work means the preferred form of the work -for making modifications to it. "Object code" means any non-source -form of a work. - - A "Standard Interface" means an interface that either is an official -standard defined by a recognized standards body, or, in the case of -interfaces specified for a particular programming language, one that -is widely used among developers working in that language. - - The "System Libraries" of an executable work include anything, other -than the work as a whole, that (a) is included in the normal form of -packaging a Major Component, but which is not part of that Major -Component, and (b) serves only to enable use of the work with that -Major Component, or to implement a Standard Interface for which an -implementation is available to the public in source code form. A -"Major Component", in this context, means a major essential component -(kernel, window system, and so on) of the specific operating system -(if any) on which the executable work runs, or a compiler used to -produce the work, or an object code interpreter used to run it. - - The "Corresponding Source" for a work in object code form means all -the source code needed to generate, install, and (for an executable -work) run the object code and to modify the work, including scripts to -control those activities. However, it does not include the work's -System Libraries, or general-purpose tools or generally available free -programs which are used unmodified in performing those activities but -which are not part of the work. For example, Corresponding Source -includes interface definition files associated with source files for -the work, and the source code for shared libraries and dynamically -linked subprograms that the work is specifically designed to require, -such as by intimate data communication or control flow between those -subprograms and other parts of the work. - - The Corresponding Source need not include anything that users -can regenerate automatically from other parts of the Corresponding -Source. - - The Corresponding Source for a work in source code form is that -same work. - - 2. Basic Permissions. - - All rights granted under this License are granted for the term of -copyright on the Program, and are irrevocable provided the stated -conditions are met. This License explicitly affirms your unlimited -permission to run the unmodified Program. The output from running a -covered work is covered by this License only if the output, given its -content, constitutes a covered work. This License acknowledges your -rights of fair use or other equivalent, as provided by copyright law. - - You may make, run and propagate covered works that you do not -convey, without conditions so long as your license otherwise remains -in force. You may convey covered works to others for the sole purpose -of having them make modifications exclusively for you, or provide you -with facilities for running those works, provided that you comply with -the terms of this License in conveying all material for which you do -not control copyright. Those thus making or running the covered works -for you must do so exclusively on your behalf, under your direction -and control, on terms that prohibit them from making any copies of -your copyrighted material outside their relationship with you. - - Conveying under any other circumstances is permitted solely under -the conditions stated below. Sublicensing is not allowed; section 10 -makes it unnecessary. - - 3. Protecting Users' Legal Rights From Anti-Circumvention Law. - - No covered work shall be deemed part of an effective technological -measure under any applicable law fulfilling obligations under article -11 of the WIPO copyright treaty adopted on 20 December 1996, or -similar laws prohibiting or restricting circumvention of such -measures. - - When you convey a covered work, you waive any legal power to forbid -circumvention of technological measures to the extent such circumvention -is effected by exercising rights under this License with respect to -the covered work, and you disclaim any intention to limit operation or -modification of the work as a means of enforcing, against the work's -users, your or third parties' legal rights to forbid circumvention of -technological measures. - - 4. Conveying Verbatim Copies. - - You may convey verbatim copies of the Program's source code as you -receive it, in any medium, provided that you conspicuously and -appropriately publish on each copy an appropriate copyright notice; -keep intact all notices stating that this License and any -non-permissive terms added in accord with section 7 apply to the code; -keep intact all notices of the absence of any warranty; and give all -recipients a copy of this License along with the Program. - - You may charge any price or no price for each copy that you convey, -and you may offer support or warranty protection for a fee. - - 5. Conveying Modified Source Versions. - - You may convey a work based on the Program, or the modifications to -produce it from the Program, in the form of source code under the -terms of section 4, provided that you also meet all of these conditions: - - a) The work must carry prominent notices stating that you modified - it, and giving a relevant date. - - b) The work must carry prominent notices stating that it is - released under this License and any conditions added under section - 7. This requirement modifies the requirement in section 4 to - "keep intact all notices". - - c) You must license the entire work, as a whole, under this - License to anyone who comes into possession of a copy. This - License will therefore apply, along with any applicable section 7 - additional terms, to the whole of the work, and all its parts, - regardless of how they are packaged. This License gives no - permission to license the work in any other way, but it does not - invalidate such permission if you have separately received it. - - d) If the work has interactive user interfaces, each must display - Appropriate Legal Notices; however, if the Program has interactive - interfaces that do not display Appropriate Legal Notices, your - work need not make them do so. - - A compilation of a covered work with other separate and independent -works, which are not by their nature extensions of the covered work, -and which are not combined with it such as to form a larger program, -in or on a volume of a storage or distribution medium, is called an -"aggregate" if the compilation and its resulting copyright are not -used to limit the access or legal rights of the compilation's users -beyond what the individual works permit. Inclusion of a covered work -in an aggregate does not cause this License to apply to the other -parts of the aggregate. - - 6. Conveying Non-Source Forms. - - You may convey a covered work in object code form under the terms -of sections 4 and 5, provided that you also convey the -machine-readable Corresponding Source under the terms of this License, -in one of these ways: - - a) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by the - Corresponding Source fixed on a durable physical medium - customarily used for software interchange. - - b) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by a - written offer, valid for at least three years and valid for as - long as you offer spare parts or customer support for that product - model, to give anyone who possesses the object code either (1) a - copy of the Corresponding Source for all the software in the - product that is covered by this License, on a durable physical - medium customarily used for software interchange, for a price no - more than your reasonable cost of physically performing this - conveying of source, or (2) access to copy the - Corresponding Source from a network server at no charge. - - c) Convey individual copies of the object code with a copy of the - written offer to provide the Corresponding Source. This - alternative is allowed only occasionally and noncommercially, and - only if you received the object code with such an offer, in accord - with subsection 6b. - - d) Convey the object code by offering access from a designated - place (gratis or for a charge), and offer equivalent access to the - Corresponding Source in the same way through the same place at no - further charge. You need not require recipients to copy the - Corresponding Source along with the object code. If the place to - copy the object code is a network server, the Corresponding Source - may be on a different server (operated by you or a third party) - that supports equivalent copying facilities, provided you maintain - clear directions next to the object code saying where to find the - Corresponding Source. Regardless of what server hosts the - Corresponding Source, you remain obligated to ensure that it is - available for as long as needed to satisfy these requirements. - - e) Convey the object code using peer-to-peer transmission, provided - you inform other peers where the object code and Corresponding - Source of the work are being offered to the general public at no - charge under subsection 6d. - - A separable portion of the object code, whose source code is excluded -from the Corresponding Source as a System Library, need not be -included in conveying the object code work. - - A "User Product" is either (1) a "consumer product", which means any -tangible personal property which is normally used for personal, family, -or household purposes, or (2) anything designed or sold for incorporation -into a dwelling. In determining whether a product is a consumer product, -doubtful cases shall be resolved in favor of coverage. For a particular -product received by a particular user, "normally used" refers to a -typical or common use of that class of product, regardless of the status -of the particular user or of the way in which the particular user -actually uses, or expects or is expected to use, the product. A product -is a consumer product regardless of whether the product has substantial -commercial, industrial or non-consumer uses, unless such uses represent -the only significant mode of use of the product. - - "Installation Information" for a User Product means any methods, -procedures, authorization keys, or other information required to install -and execute modified versions of a covered work in that User Product from -a modified version of its Corresponding Source. The information must -suffice to ensure that the continued functioning of the modified object -code is in no case prevented or interfered with solely because -modification has been made. - - If you convey an object code work under this section in, or with, or -specifically for use in, a User Product, and the conveying occurs as -part of a transaction in which the right of possession and use of the -User Product is transferred to the recipient in perpetuity or for a -fixed term (regardless of how the transaction is characterized), the -Corresponding Source conveyed under this section must be accompanied -by the Installation Information. But this requirement does not apply -if neither you nor any third party retains the ability to install -modified object code on the User Product (for example, the work has -been installed in ROM). - - The requirement to provide Installation Information does not include a -requirement to continue to provide support service, warranty, or updates -for a work that has been modified or installed by the recipient, or for -the User Product in which it has been modified or installed. Access to a -network may be denied when the modification itself materially and -adversely affects the operation of the network or violates the rules and -protocols for communication across the network. - - Corresponding Source conveyed, and Installation Information provided, -in accord with this section must be in a format that is publicly -documented (and with an implementation available to the public in -source code form), and must require no special password or key for -unpacking, reading or copying. - - 7. Additional Terms. - - "Additional permissions" are terms that supplement the terms of this -License by making exceptions from one or more of its conditions. -Additional permissions that are applicable to the entire Program shall -be treated as though they were included in this License, to the extent -that they are valid under applicable law. If additional permissions -apply only to part of the Program, that part may be used separately -under those permissions, but the entire Program remains governed by -this License without regard to the additional permissions. - - When you convey a copy of a covered work, you may at your option -remove any additional permissions from that copy, or from any part of -it. (Additional permissions may be written to require their own -removal in certain cases when you modify the work.) You may place -additional permissions on material, added by you to a covered work, -for which you have or can give appropriate copyright permission. - - Notwithstanding any other provision of this License, for material you -add to a covered work, you may (if authorized by the copyright holders of -that material) supplement the terms of this License with terms: - - a) Disclaiming warranty or limiting liability differently from the - terms of sections 15 and 16 of this License; or - - b) Requiring preservation of specified reasonable legal notices or - author attributions in that material or in the Appropriate Legal - Notices displayed by works containing it; or - - c) Prohibiting misrepresentation of the origin of that material, or - requiring that modified versions of such material be marked in - reasonable ways as different from the original version; or - - d) Limiting the use for publicity purposes of names of licensors or - authors of the material; or - - e) Declining to grant rights under trademark law for use of some - trade names, trademarks, or service marks; or - - f) Requiring indemnification of licensors and authors of that - material by anyone who conveys the material (or modified versions of - it) with contractual assumptions of liability to the recipient, for - any liability that these contractual assumptions directly impose on - those licensors and authors. - - All other non-permissive additional terms are considered "further -restrictions" within the meaning of section 10. If the Program as you -received it, or any part of it, contains a notice stating that it is -governed by this License along with a term that is a further -restriction, you may remove that term. If a license document contains -a further restriction but permits relicensing or conveying under this -License, you may add to a covered work material governed by the terms -of that license document, provided that the further restriction does -not survive such relicensing or conveying. - - If you add terms to a covered work in accord with this section, you -must place, in the relevant source files, a statement of the -additional terms that apply to those files, or a notice indicating -where to find the applicable terms. - - Additional terms, permissive or non-permissive, may be stated in the -form of a separately written license, or stated as exceptions; -the above requirements apply either way. - - 8. Termination. - - You may not propagate or modify a covered work except as expressly -provided under this License. Any attempt otherwise to propagate or -modify it is void, and will automatically terminate your rights under -this License (including any patent licenses granted under the third -paragraph of section 11). - - However, if you cease all violation of this License, then your -license from a particular copyright holder is reinstated (a) -provisionally, unless and until the copyright holder explicitly and -finally terminates your license, and (b) permanently, if the copyright -holder fails to notify you of the violation by some reasonable means -prior to 60 days after the cessation. - - Moreover, your license from a particular copyright holder is -reinstated permanently if the copyright holder notifies you of the -violation by some reasonable means, this is the first time you have -received notice of violation of this License (for any work) from that -copyright holder, and you cure the violation prior to 30 days after -your receipt of the notice. - - Termination of your rights under this section does not terminate the -licenses of parties who have received copies or rights from you under -this License. If your rights have been terminated and not permanently -reinstated, you do not qualify to receive new licenses for the same -material under section 10. - - 9. Acceptance Not Required for Having Copies. - - You are not required to accept this License in order to receive or -run a copy of the Program. Ancillary propagation of a covered work -occurring solely as a consequence of using peer-to-peer transmission -to receive a copy likewise does not require acceptance. However, -nothing other than this License grants you permission to propagate or -modify any covered work. These actions infringe copyright if you do -not accept this License. Therefore, by modifying or propagating a -covered work, you indicate your acceptance of this License to do so. - - 10. Automatic Licensing of Downstream Recipients. - - Each time you convey a covered work, the recipient automatically -receives a license from the original licensors, to run, modify and -propagate that work, subject to this License. You are not responsible -for enforcing compliance by third parties with this License. - - An "entity transaction" is a transaction transferring control of an -organization, or substantially all assets of one, or subdividing an -organization, or merging organizations. If propagation of a covered -work results from an entity transaction, each party to that -transaction who receives a copy of the work also receives whatever -licenses to the work the party's predecessor in interest had or could -give under the previous paragraph, plus a right to possession of the -Corresponding Source of the work from the predecessor in interest, if -the predecessor has it or can get it with reasonable efforts. - - You may not impose any further restrictions on the exercise of the -rights granted or affirmed under this License. For example, you may -not impose a license fee, royalty, or other charge for exercise of -rights granted under this License, and you may not initiate litigation -(including a cross-claim or counterclaim in a lawsuit) alleging that -any patent claim is infringed by making, using, selling, offering for -sale, or importing the Program or any portion of it. - - 11. Patents. - - A "contributor" is a copyright holder who authorizes use under this -License of the Program or a work on which the Program is based. The -work thus licensed is called the contributor's "contributor version". - - A contributor's "essential patent claims" are all patent claims -owned or controlled by the contributor, whether already acquired or -hereafter acquired, that would be infringed by some manner, permitted -by this License, of making, using, or selling its contributor version, -but do not include claims that would be infringed only as a -consequence of further modification of the contributor version. For -purposes of this definition, "control" includes the right to grant -patent sublicenses in a manner consistent with the requirements of -this License. - - Each contributor grants you a non-exclusive, worldwide, royalty-free -patent license under the contributor's essential patent claims, to -make, use, sell, offer for sale, import and otherwise run, modify and -propagate the contents of its contributor version. - - In the following three paragraphs, a "patent license" is any express -agreement or commitment, however denominated, not to enforce a patent -(such as an express permission to practice a patent or covenant not to -sue for patent infringement). To "grant" such a patent license to a -party means to make such an agreement or commitment not to enforce a -patent against the party. - - If you convey a covered work, knowingly relying on a patent license, -and the Corresponding Source of the work is not available for anyone -to copy, free of charge and under the terms of this License, through a -publicly available network server or other readily accessible means, -then you must either (1) cause the Corresponding Source to be so -available, or (2) arrange to deprive yourself of the benefit of the -patent license for this particular work, or (3) arrange, in a manner -consistent with the requirements of this License, to extend the patent -license to downstream recipients. "Knowingly relying" means you have -actual knowledge that, but for the patent license, your conveying the -covered work in a country, or your recipient's use of the covered work -in a country, would infringe one or more identifiable patents in that -country that you have reason to believe are valid. - - If, pursuant to or in connection with a single transaction or -arrangement, you convey, or propagate by procuring conveyance of, a -covered work, and grant a patent license to some of the parties -receiving the covered work authorizing them to use, propagate, modify -or convey a specific copy of the covered work, then the patent license -you grant is automatically extended to all recipients of the covered -work and works based on it. - - A patent license is "discriminatory" if it does not include within -the scope of its coverage, prohibits the exercise of, or is -conditioned on the non-exercise of one or more of the rights that are -specifically granted under this License. You may not convey a covered -work if you are a party to an arrangement with a third party that is -in the business of distributing software, under which you make payment -to the third party based on the extent of your activity of conveying -the work, and under which the third party grants, to any of the -parties who would receive the covered work from you, a discriminatory -patent license (a) in connection with copies of the covered work -conveyed by you (or copies made from those copies), or (b) primarily -for and in connection with specific products or compilations that -contain the covered work, unless you entered into that arrangement, -or that patent license was granted, prior to 28 March 2007. - - Nothing in this License shall be construed as excluding or limiting -any implied license or other defenses to infringement that may -otherwise be available to you under applicable patent law. - - 12. No Surrender of Others' Freedom. - - If conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot convey a -covered work so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you may -not convey it at all. For example, if you agree to terms that obligate you -to collect a royalty for further conveying from those to whom you convey -the Program, the only way you could satisfy both those terms and this -License would be to refrain entirely from conveying the Program. - - 13. Use with the GNU Affero General Public License. - - Notwithstanding any other provision of this License, you have -permission to link or combine any covered work with a work licensed -under version 3 of the GNU Affero General Public License into a single -combined work, and to convey the resulting work. The terms of this -License will continue to apply to the part which is the covered work, -but the special requirements of the GNU Affero General Public License, -section 13, concerning interaction through a network will apply to the -combination as such. - - 14. Revised Versions of this License. - - The Free Software Foundation may publish revised and/or new versions of -the GNU General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - - Each version is given a distinguishing version number. If the -Program specifies that a certain numbered version of the GNU General -Public License "or any later version" applies to it, you have the -option of following the terms and conditions either of that numbered -version or of any later version published by the Free Software -Foundation. If the Program does not specify a version number of the -GNU General Public License, you may choose any version ever published -by the Free Software Foundation. - - If the Program specifies that a proxy can decide which future -versions of the GNU General Public License can be used, that proxy's -public statement of acceptance of a version permanently authorizes you -to choose that version for the Program. - - Later license versions may give you additional or different -permissions. However, no additional obligations are imposed on any -author or copyright holder as a result of your choosing to follow a -later version. - - 15. Disclaimer of Warranty. - - THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY -APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT -HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY -OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, -THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM -IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF -ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. Limitation of Liability. - - IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS -THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY -GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE -USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF -DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD -PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), -EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF -SUCH DAMAGES. - - 17. Interpretation of Sections 15 and 16. - - If the disclaimer of warranty and limitation of liability provided -above cannot be given local legal effect according to their terms, -reviewing courts shall apply local law that most closely approximates -an absolute waiver of all civil liability in connection with the -Program, unless a warranty or assumption of liability accompanies a -copy of the Program in return for a fee. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -state the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . - -Also add information on how to contact you by electronic and paper mail. - - If the program does terminal interaction, make it output a short -notice like this when it starts in an interactive mode: - - Copyright (C) - This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, your program's commands -might be different; for a GUI interface, you would use an "about box". - - You should also get your employer (if you work as a programmer) or school, -if any, to sign a "copyright disclaimer" for the program, if necessary. -For more information on this, and how to apply and follow the GNU GPL, see -. - - The GNU General Public License does not permit incorporating your program -into proprietary programs. If your program is a subroutine library, you -may consider it more useful to permit linking proprietary applications with -the library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. But first, please read -. + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/libs/qcustomplot-source/changelog.txt b/libs/qcustomplot-source/changelog.txt old mode 100644 new mode 100755 index cc0fede3f..de330e754 --- a/libs/qcustomplot-source/changelog.txt +++ b/libs/qcustomplot-source/changelog.txt @@ -1,3 +1,21 @@ +#### Version 2.1.1 released on 06.11.22 #### + +Added features: + - Qt6.4 Compatibility + +Bugfixes: + - dynamically changing device pixel ratios (e.g. when moving between different DPI screens) is handled properly + - bugfix Colormap autoscaling: recalculateDataBounds() if (0, 0) data point is NaN. + - minor bugfix in getMantissa for certain values due to rounding errors + - Graphs with line style lsImpulse properly ignore NaN data points + - fixed issue where QCP wasn't greyed out together with the rest of the UI on embedded systems when a modal dialog is shown + (QCustomPlot no longer has the Qt::WA_OpaquePaintEvent attribute enabled by default) + +Other: + - in QCPAxisPainterPrivate::getTickLabelData, don't use fixed 'e', but locale aware character of parent plot locale + - Axis rescaling now ignores +/- Inf in data values + - slight performance improvements of QCPColorMap colorization and fills. + #### Version 2.1.0 released on 29.03.21 #### Added features: diff --git a/libs/qcustomplot-source/qcustomplot.cpp b/libs/qcustomplot-source/qcustomplot.cpp index 04f3147dd..72b5bfb8b 100644 --- a/libs/qcustomplot-source/qcustomplot.cpp +++ b/libs/qcustomplot-source/qcustomplot.cpp @@ -1,7 +1,7 @@ /*************************************************************************** ** ** ** QCustomPlot, an easy to use, modern plotting widget for Qt ** -** Copyright (C) 2011-2021 Emanuel Eichhammer ** +** Copyright (C) 2011-2022 Emanuel Eichhammer ** ** ** ** This program is free software: you can redistribute it and/or modify ** ** it under the terms of the GNU General Public License as published by ** @@ -18,16 +18,16 @@ ** ** **************************************************************************** ** Author: Emanuel Eichhammer ** -** Website/Contact: http://www.qcustomplot.com/ ** -** Date: 29.03.21 ** -** Version: 2.1.0 ** +** Website/Contact: https://www.qcustomplot.com/ ** +** Date: 06.11.22 ** +** Version: 2.1.1 ** ****************************************************************************/ #include "qcustomplot.h" /* including file 'src/vector2d.cpp' */ -/* modified 2021-03-29T02:30:44, size 7973 */ +/* modified 2022-11-06T12:45:56, size 7973 */ //////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////// QCPVector2D @@ -272,7 +272,7 @@ QCPVector2D &QCPVector2D::operator-=(const QCPVector2D &vector) /* including file 'src/painter.cpp' */ -/* modified 2021-03-29T02:30:44, size 8656 */ +/* modified 2022-11-06T12:45:56, size 8656 */ //////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////// QCPPainter @@ -489,7 +489,7 @@ void QCPPainter::makeNonCosmetic() /* including file 'src/paintbuffer.cpp' */ -/* modified 2021-03-29T02:30:44, size 18915 */ +/* modified 2022-11-06T12:45:56, size 18915 */ //////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////// QCPAbstractPaintBuffer @@ -976,7 +976,7 @@ void QCPPaintBufferGlFbo::reallocateBuffer() /* including file 'src/layer.cpp' */ -/* modified 2021-03-29T02:30:44, size 37615 */ +/* modified 2022-11-06T12:45:56, size 37615 */ //////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////// QCPLayer @@ -1836,7 +1836,7 @@ void QCPLayerable::wheelEvent(QWheelEvent *event) /* including file 'src/axis/range.cpp' */ -/* modified 2021-03-29T02:30:44, size 12221 */ +/* modified 2022-11-06T12:45:56, size 12221 */ //////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////// QCPRange @@ -2158,7 +2158,7 @@ bool QCPRange::validRange(const QCPRange &range) /* including file 'src/selection.cpp' */ -/* modified 2021-03-29T02:30:44, size 21837 */ +/* modified 2022-11-06T12:45:56, size 21837 */ //////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////// QCPDataRange @@ -2759,7 +2759,7 @@ QCPDataSelection QCPDataSelection::inverse(const QCPDataRange &outerRange) const /* including file 'src/selectionrect.cpp' */ -/* modified 2021-03-29T02:30:44, size 9215 */ +/* modified 2022-11-06T12:45:56, size 9215 */ //////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////// QCPSelectionRect @@ -2988,7 +2988,7 @@ void QCPSelectionRect::draw(QCPPainter *painter) /* including file 'src/layout.cpp' */ -/* modified 2021-03-29T02:30:44, size 78863 */ +/* modified 2022-11-06T12:45:56, size 78863 */ //////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////// QCPMarginGroup @@ -5161,7 +5161,7 @@ void QCPLayoutInset::addElement(QCPLayoutElement *element, const QRectF &rect) /* including file 'src/lineending.cpp' */ -/* modified 2021-03-29T02:30:44, size 11189 */ +/* modified 2022-11-06T12:45:56, size 11189 */ //////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////// QCPLineEnding @@ -5455,7 +5455,7 @@ void QCPLineEnding::draw(QCPPainter *painter, const QCPVector2D &pos, double ang /* including file 'src/axis/labelpainter.cpp' */ -/* modified 2021-03-29T02:30:44, size 27296 */ +/* modified 2022-11-06T12:45:56, size 27519 */ //////////////////////////////////////////////////////////////////////////////////////////////////// @@ -5653,8 +5653,8 @@ QByteArray QCPLabelPainterPrivate::generateLabelParameterHash() const QByteArray result; result.append(QByteArray::number(mParentPlot->bufferDevicePixelRatio())); result.append(QByteArray::number(mRotation)); - //result.append(QByteArray::number((int)tickLabelSide)); TODO: check whether this is really a cache-invalidating property - result.append(QByteArray::number((int)mSubstituteExponent)); + //result.append(QByteArray::number(int(tickLabelSide))); TODO: check whether this is really a cache-invalidating property + result.append(QByteArray::number(int(mSubstituteExponent))); result.append(QString(mMultiplicationSymbol).toUtf8()); result.append(mColor.name().toLatin1()+QByteArray::number(mColor.alpha(), 16)); result.append(mFont.toString().toLatin1()); @@ -5757,9 +5757,12 @@ QPointF QCPLabelPainterPrivate::getAnchorPos(const QPointF &tickPos) case asTopRight: return tickPos+QPointF(-mPadding*M_SQRT1_2, mPadding*M_SQRT1_2); case asBottomRight: return tickPos+QPointF(-mPadding*M_SQRT1_2, -mPadding*M_SQRT1_2); case asBottomLeft: return tickPos+QPointF(mPadding*M_SQRT1_2, -mPadding*M_SQRT1_2); + default: qDebug() << Q_FUNC_INFO << "invalid mode for anchor side: " << mAnchorSide; break; } + break; } case amSkewedUpright: + // fall through case amSkewedRotated: { QCPVector2D anchorNormal(tickPos-mAnchorReference); @@ -5768,6 +5771,7 @@ QPointF QCPLabelPainterPrivate::getAnchorPos(const QPointF &tickPos) anchorNormal.normalize(); return tickPos+(anchorNormal*mPadding).toPointF(); } + default: qDebug() << Q_FUNC_INFO << "invalid mode for anchor mode: " << mAnchorMode; break; } return tickPos; } @@ -5985,8 +5989,8 @@ QByteArray QCPLabelPainterPrivate::cacheKey(const QString &text, const QColor &c { return text.toUtf8()+ QByteArray::number(color.red()+256*color.green()+65536*color.blue(), 36)+ - QByteArray::number(color.alpha()+256*(int)side, 36)+ - QByteArray::number((int)(rotation*100)%36000, 36); + QByteArray::number(color.alpha()+256*int(side), 36)+ + QByteArray::number(int(rotation*100), 36); } QCPLabelPainterPrivate::AnchorSide QCPLabelPainterPrivate::skewedAnchorSide(const QPointF &tickPos, double sideExpandHorz, double sideExpandVert) const @@ -6054,7 +6058,7 @@ void QCPLabelPainterPrivate::analyzeFontMetrics() /* including file 'src/axis/axisticker.cpp' */ -/* modified 2021-03-29T02:30:44, size 18688 */ +/* modified 2022-11-06T12:45:56, size 18693 */ //////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////// QCPAxisTicker @@ -6438,7 +6442,7 @@ double QCPAxisTicker::pickClosest(double target, const QVector &candidat */ double QCPAxisTicker::getMantissa(double input, double *magnitude) const { - const double mag = qPow(10.0, qFloor(qLn(input)/qLn(10.0))); + const double mag = std::pow(10.0, std::floor(std::log10(input))); if (magnitude) *magnitude = mag; return input/mag; } @@ -6474,7 +6478,7 @@ double QCPAxisTicker::cleanMantissa(double input) const /* including file 'src/axis/axistickerdatetime.cpp' */ -/* modified 2021-03-29T02:30:44, size 18829 */ +/* modified 2022-11-06T12:45:56, size 18829 */ //////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////// QCPAxisTickerDateTime @@ -6831,7 +6835,7 @@ double QCPAxisTickerDateTime::dateTimeToKey(const QDate &date, Qt::TimeSpec time /* including file 'src/axis/axistickertime.cpp' */ -/* modified 2021-03-29T02:30:44, size 11745 */ +/* modified 2022-11-06T12:45:56, size 11745 */ //////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////// QCPAxisTickerTime @@ -7080,7 +7084,7 @@ void QCPAxisTickerTime::replaceUnit(QString &text, QCPAxisTickerTime::TimeUnit u /* including file 'src/axis/axistickerfixed.cpp' */ -/* modified 2021-03-29T02:30:44, size 5575 */ +/* modified 2022-11-06T12:45:56, size 5575 */ //////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////// QCPAxisTickerFixed @@ -7182,7 +7186,7 @@ double QCPAxisTickerFixed::getTickStep(const QCPRange &range) /* including file 'src/axis/axistickertext.cpp' */ -/* modified 2021-03-29T02:30:44, size 8742 */ +/* modified 2022-11-06T12:45:56, size 8742 */ //////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////// QCPAxisTickerText @@ -7399,7 +7403,7 @@ QVector QCPAxisTickerText::createTickVector(double tickStep, const QCPRa /* including file 'src/axis/axistickerpi.cpp' */ -/* modified 2021-03-29T02:30:44, size 11177 */ +/* modified 2022-11-06T12:45:56, size 11177 */ //////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////// QCPAxisTickerPi @@ -7686,7 +7690,7 @@ QString QCPAxisTickerPi::unicodeSubscript(int number) const /* including file 'src/axis/axistickerlog.cpp' */ -/* modified 2021-03-29T02:30:44, size 7890 */ +/* modified 2022-11-06T12:45:56, size 7890 */ //////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////// QCPAxisTickerLog @@ -7827,7 +7831,7 @@ QVector QCPAxisTickerLog::createTickVector(double tickStep, const QCPRan /* including file 'src/axis/axis.cpp' */ -/* modified 2021-03-29T02:30:44, size 99883 */ +/* modified 2022-11-06T12:45:56, size 99911 */ //////////////////////////////////////////////////////////////////////////////////////////////////// @@ -10348,7 +10352,7 @@ QCPAxisPainterPrivate::TickLabelData QCPAxisPainterPrivate::getTickLabelData(con int eLast = -1; // last index of exponent part, rest of text after this will be suffixPart if (substituteExponent) { - ePos = text.indexOf(QLatin1Char('e')); + ePos = text.indexOf(QString(mParentPlot->locale().exponential())); if (ePos > 0 && text.at(ePos-1).isDigit()) { eLast = ePos; @@ -10545,7 +10549,7 @@ void QCPAxisPainterPrivate::getMaxTickLabelSize(const QFont &font, const QString /* including file 'src/scatterstyle.cpp' */ -/* modified 2021-03-29T02:30:44, size 17466 */ +/* modified 2022-11-06T12:45:56, size 17466 */ //////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////// QCPScatterStyle @@ -11018,7 +11022,7 @@ void QCPScatterStyle::drawShape(QCPPainter *painter, double x, double y) const /* including file 'src/plottable.cpp' */ -/* modified 2021-03-29T02:30:44, size 38818 */ +/* modified 2022-11-06T12:45:56, size 38818 */ //////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////// QCPSelectionDecorator @@ -11989,7 +11993,7 @@ void QCPAbstractPlottable::deselectEvent(bool *selectionStateChanged) /* including file 'src/item.cpp' */ -/* modified 2021-03-29T02:30:44, size 49486 */ +/* modified 2022-11-06T12:45:56, size 49486 */ //////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////// QCPItemAnchor @@ -13261,7 +13265,7 @@ QCP::Interaction QCPAbstractItem::selectionCategory() const /* including file 'src/core.cpp' */ -/* modified 2021-03-29T02:30:44, size 127198 */ +/* modified 2022-11-06T12:45:56, size 127625 */ //////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////// QCustomPlot @@ -13273,7 +13277,7 @@ QCP::Interaction QCPAbstractItem::selectionCategory() const interacts with the user. For tutorials on how to use QCustomPlot, see the website\n - http://www.qcustomplot.com/ + https://www.qcustomplot.com/ */ /* start of documentation of inline functions */ @@ -13597,7 +13601,7 @@ QCustomPlot::QCustomPlot(QWidget *parent) : xAxis2(nullptr), yAxis2(nullptr), legend(nullptr), - mBufferDevicePixelRatio(1.0), // will be adapted to primary screen below + mBufferDevicePixelRatio(1.0), // will be adapted to true value below mPlotLayout(nullptr), mAutoAddPlottableToLegend(true), mAntialiasedElements(QCP::aeNone), @@ -13626,7 +13630,6 @@ QCustomPlot::QCustomPlot(QWidget *parent) : mOpenGlCacheLabelsBackup(true) { setAttribute(Qt::WA_NoMousePropagation); - setAttribute(Qt::WA_OpaquePaintEvent); setFocusPolicy(Qt::ClickFocus); setMouseTracking(true); QLocale currentLocale = locale(); @@ -15466,6 +15469,22 @@ QSize QCustomPlot::sizeHint() const void QCustomPlot::paintEvent(QPaintEvent *event) { Q_UNUSED(event) + + // detect if the device pixel ratio has changed (e.g. moving window between different DPI screens), and adapt buffers if necessary: +#ifdef QCP_DEVICEPIXELRATIO_SUPPORTED +# ifdef QCP_DEVICEPIXELRATIO_FLOAT + double newDpr = devicePixelRatioF(); +# else + double newDpr = devicePixelRatio(); +# endif + if (!qFuzzyCompare(mBufferDevicePixelRatio, newDpr)) + { + setBufferDevicePixelRatio(newDpr); + replot(QCustomPlot::rpQueuedRefresh); + return; + } +#endif + QCPPainter painter(this); if (painter.isActive()) { @@ -16480,7 +16499,7 @@ void QCustomPlot::toPainter(QCPPainter *painter, int width, int height) /* including file 'src/colorgradient.cpp' */ -/* modified 2021-03-29T02:30:44, size 25278 */ +/* modified 2022-11-06T12:45:56, size 25408 */ //////////////////////////////////////////////////////////////////////////////////////////////////// @@ -16710,10 +16729,10 @@ void QCPColorGradient::colorize(const double *data, const QCPRange &range, QRgb const double value = data[dataIndexFactor*i]; if (skipNanCheck || !std::isnan(value)) { - int index = int((!logarithmic ? value-range.lower : qLn(value/range.lower)) * posToIndexFactor); + qint64 index = qint64((!logarithmic ? value-range.lower : qLn(value/range.lower)) * posToIndexFactor); if (!mPeriodic) { - index = qBound(0, index, mLevelCount-1); + index = qBound(qint64(0), index, qint64(mLevelCount-1)); } else { index %= mLevelCount; @@ -16771,10 +16790,10 @@ void QCPColorGradient::colorize(const double *data, const unsigned char *alpha, const double value = data[dataIndexFactor*i]; if (skipNanCheck || !std::isnan(value)) { - int index = int((!logarithmic ? value-range.lower : qLn(value/range.lower)) * posToIndexFactor); + qint64 index = qint64((!logarithmic ? value-range.lower : qLn(value/range.lower)) * posToIndexFactor); if (!mPeriodic) { - index = qBound(0, index, mLevelCount-1); + index = qBound(qint64(0), index, qint64(mLevelCount-1)); } else { index %= mLevelCount; @@ -17017,7 +17036,7 @@ void QCPColorGradient::updateColorBuffer() for (int i=0; i::const_iterator it = mColorStops.lowerBound(position); + QMap::const_iterator it = const_cast*>(&mColorStops)->lowerBound(position); // force using the const lowerBound method if (it == mColorStops.constEnd()) // position is on or after last stop, use color of last stop { if (useAlpha) @@ -17115,7 +17134,7 @@ void QCPColorGradient::updateColorBuffer() /* including file 'src/selectiondecorator-bracket.cpp' */ -/* modified 2021-03-29T02:30:44, size 12308 */ +/* modified 2022-11-06T12:45:56, size 12308 */ //////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////// QCPSelectionDecoratorBracket @@ -17401,7 +17420,7 @@ QPointF QCPSelectionDecoratorBracket::getPixelCoordinates(const QCPPlottableInte /* including file 'src/layoutelements/layoutelement-axisrect.cpp' */ -/* modified 2021-03-29T02:30:44, size 47193 */ +/* modified 2022-11-06T12:45:56, size 47193 */ //////////////////////////////////////////////////////////////////////////////////////////////////// @@ -18686,7 +18705,7 @@ void QCPAxisRect::wheelEvent(QWheelEvent *event) /* including file 'src/layoutelements/layoutelement-legend.cpp' */ -/* modified 2021-03-29T02:30:44, size 31762 */ +/* modified 2022-11-06T12:45:56, size 31762 */ //////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////// QCPAbstractLegendItem @@ -19610,7 +19629,7 @@ void QCPLegend::parentPlotInitialized(QCustomPlot *parentPlot) /* including file 'src/layoutelements/layoutelement-textelement.cpp' */ -/* modified 2021-03-29T02:30:44, size 12925 */ +/* modified 2022-11-06T12:45:56, size 12925 */ //////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////// QCPTextElement @@ -20016,7 +20035,7 @@ QColor QCPTextElement::mainTextColor() const /* including file 'src/layoutelements/layoutelement-colorscale.cpp' */ -/* modified 2021-03-29T02:30:44, size 26531 */ +/* modified 2022-11-06T12:45:56, size 26531 */ //////////////////////////////////////////////////////////////////////////////////////////////////// @@ -20700,7 +20719,7 @@ void QCPColorScaleAxisRectPrivate::axisSelectableChanged(QCPAxis::SelectablePart /* including file 'src/plottables/plottable-graph.cpp' */ -/* modified 2021-03-29T02:30:44, size 74518 */ +/* modified 2022-11-06T12:45:57, size 74926 */ //////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////// QCPGraphData @@ -21530,21 +21549,37 @@ QVector QCPGraph::dataToImpulseLines(const QVector &data) { for (int i=0; icoordToPixel(data.at(i).key); - result[i*2+0].setX(valueAxis->coordToPixel(0)); - result[i*2+0].setY(key); - result[i*2+1].setX(valueAxis->coordToPixel(data.at(i).value)); - result[i*2+1].setY(key); + const QCPGraphData ¤t = data.at(i); + if (!qIsNaN(current.value)) + { + const double key = keyAxis->coordToPixel(current.key); + result[i*2+0].setX(valueAxis->coordToPixel(0)); + result[i*2+0].setY(key); + result[i*2+1].setX(valueAxis->coordToPixel(current.value)); + result[i*2+1].setY(key); + } else + { + result[i*2+0] = QPointF(0, 0); + result[i*2+1] = QPointF(0, 0); + } } } else // key axis is horizontal { for (int i=0; icoordToPixel(data.at(i).key); - result[i*2+0].setX(key); - result[i*2+0].setY(valueAxis->coordToPixel(0)); - result[i*2+1].setX(key); - result[i*2+1].setY(valueAxis->coordToPixel(data.at(i).value)); + const QCPGraphData ¤t = data.at(i); + if (!qIsNaN(current.value)) + { + const double key = keyAxis->coordToPixel(data.at(i).key); + result[i*2+0].setX(key); + result[i*2+0].setY(valueAxis->coordToPixel(0)); + result[i*2+1].setX(key); + result[i*2+1].setY(valueAxis->coordToPixel(data.at(i).value)); + } else + { + result[i*2+0] = QPointF(0, 0); + result[i*2+1] = QPointF(0, 0); + } } } return result; @@ -22458,7 +22493,7 @@ int QCPGraph::findIndexBelowY(const QVector *data, double y) const /* including file 'src/plottables/plottable-curve.cpp' */ -/* modified 2021-03-29T02:30:44, size 63851 */ +/* modified 2022-11-06T12:45:56, size 63851 */ //////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////// QCPCurveData @@ -23916,7 +23951,7 @@ double QCPCurve::pointDistance(const QPointF &pixelPoint, QCPCurveDataContainer: /* including file 'src/plottables/plottable-bars.cpp' */ -/* modified 2021-03-29T02:30:44, size 43907 */ +/* modified 2022-11-06T12:45:56, size 43907 */ //////////////////////////////////////////////////////////////////////////////////////////////////// @@ -25092,7 +25127,7 @@ void QCPBars::connectBars(QCPBars *lower, QCPBars *upper) /* including file 'src/plottables/plottable-statisticalbox.cpp' */ -/* modified 2021-03-29T02:30:44, size 28951 */ +/* modified 2022-11-06T12:45:57, size 28951 */ //////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////// QCPStatisticalBoxData @@ -25754,7 +25789,7 @@ QVector QCPStatisticalBox::getWhiskerBarLines(QCPStatisticalBoxDataConta /* including file 'src/plottables/plottable-colormap.cpp' */ -/* modified 2021-03-29T02:30:44, size 48149 */ +/* modified 2022-11-06T12:45:56, size 48189 */ //////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////// QCPColorMapData @@ -26124,8 +26159,8 @@ void QCPColorMapData::recalculateDataBounds() { if (mKeySize > 0 && mValueSize > 0) { - double minHeight = mData[0]; - double maxHeight = mData[0]; + double minHeight = std::numeric_limits::max(); + double maxHeight = -std::numeric_limits::max(); const int dataCount = mValueSize*mKeySize; for (int i=0; i= 0x060200 // don't use QT_VERSION_CHECK here, some moc versions don't understand it namespace QCP { -#else -class QCP { // when in moc-run, make it look like a class, so we get Q_GADGET, Q_ENUMS/Q_FLAGS features in namespace + Q_NAMESPACE // this is how to add the staticMetaObject to namespaces in newer Qt versions +#else // Qt version older than 6.2.0 +# ifndef Q_MOC_RUN +namespace QCP { +# else // not in moc run +class QCP { Q_GADGET Q_ENUMS(ExportPen) Q_ENUMS(ResolutionUnit) Q_ENUMS(SignDomain) Q_ENUMS(MarginSide) - Q_FLAGS(MarginSides) Q_ENUMS(AntialiasedElement) - Q_FLAGS(AntialiasedElements) Q_ENUMS(PlottingHint) - Q_FLAGS(PlottingHints) Q_ENUMS(Interaction) - Q_FLAGS(Interactions) Q_ENUMS(SelectionRectMode) Q_ENUMS(SelectionType) + + Q_FLAGS(AntialiasedElements) + Q_FLAGS(PlottingHints) + Q_FLAGS(MarginSides) + Q_FLAGS(Interactions) public: +# endif #endif + /*! Defines the different units in which the image resolution can be specified in the export functions. @@ -378,14 +387,39 @@ inline int getMarginValue(const QMargins &margins, QCP::MarginSide side) return 0; } - -extern const QMetaObject staticMetaObject; // in moc-run we create a static meta object for QCP "fake" object. This line is the link to it via QCP::staticMetaObject in normal operation as namespace +// for newer Qt versions we have to declare the enums/flags as metatypes inside the namespace using Q_ENUM_NS/Q_FLAG_NS: +// if you change anything here, don't forget to change it for older Qt versions below, too, +// and at the start of the namespace in the fake moc-run class +#if QT_VERSION >= 0x060200 +Q_ENUM_NS(ExportPen) +Q_ENUM_NS(ResolutionUnit) +Q_ENUM_NS(SignDomain) +Q_ENUM_NS(MarginSide) +Q_ENUM_NS(AntialiasedElement) +Q_ENUM_NS(PlottingHint) +Q_ENUM_NS(Interaction) +Q_ENUM_NS(SelectionRectMode) +Q_ENUM_NS(SelectionType) + +Q_FLAG_NS(AntialiasedElements) +Q_FLAG_NS(PlottingHints) +Q_FLAG_NS(MarginSides) +Q_FLAG_NS(Interactions) +#else +extern const QMetaObject staticMetaObject; +#endif } // end of namespace QCP + Q_DECLARE_OPERATORS_FOR_FLAGS(QCP::AntialiasedElements) Q_DECLARE_OPERATORS_FOR_FLAGS(QCP::PlottingHints) Q_DECLARE_OPERATORS_FOR_FLAGS(QCP::MarginSides) Q_DECLARE_OPERATORS_FOR_FLAGS(QCP::Interactions) + +// for older Qt versions we have to declare the enums/flags as metatypes outside the namespace using Q_DECLARE_METATYPE: +// if you change anything here, don't forget to change it for newer Qt versions above, too, +// and at the start of the namespace in the fake moc-run class +#if QT_VERSION < QT_VERSION_CHECK(6, 2, 0) Q_DECLARE_METATYPE(QCP::ExportPen) Q_DECLARE_METATYPE(QCP::ResolutionUnit) Q_DECLARE_METATYPE(QCP::SignDomain) @@ -395,12 +429,13 @@ Q_DECLARE_METATYPE(QCP::PlottingHint) Q_DECLARE_METATYPE(QCP::Interaction) Q_DECLARE_METATYPE(QCP::SelectionRectMode) Q_DECLARE_METATYPE(QCP::SelectionType) +#endif /* end of 'src/global.h' */ /* including file 'src/vector2d.h' */ -/* modified 2021-03-29T02:30:44, size 4988 */ +/* modified 2022-11-06T12:45:56, size 4988 */ class QCP_LIB_DECL QCPVector2D { @@ -475,7 +510,7 @@ inline QDebug operator<< (QDebug d, const QCPVector2D &vec) /* including file 'src/painter.h' */ -/* modified 2021-03-29T02:30:44, size 4035 */ +/* modified 2022-11-06T12:45:56, size 4035 */ class QCP_LIB_DECL QCPPainter : public QPainter { @@ -534,7 +569,7 @@ Q_DECLARE_METATYPE(QCPPainter::PainterMode) /* including file 'src/paintbuffer.h' */ -/* modified 2021-03-29T02:30:44, size 5006 */ +/* modified 2022-11-06T12:45:56, size 5006 */ class QCP_LIB_DECL QCPAbstractPaintBuffer { @@ -642,7 +677,7 @@ class QCP_LIB_DECL QCPPaintBufferGlFbo : public QCPAbstractPaintBuffer /* including file 'src/layer.h' */ -/* modified 2021-03-29T02:30:44, size 7038 */ +/* modified 2022-11-06T12:45:56, size 7038 */ class QCP_LIB_DECL QCPLayer : public QObject { @@ -791,7 +826,7 @@ class QCP_LIB_DECL QCPLayerable : public QObject /* including file 'src/axis/range.h' */ -/* modified 2021-03-29T02:30:44, size 5280 */ +/* modified 2022-11-06T12:45:56, size 5280 */ class QCP_LIB_DECL QCPRange { @@ -909,7 +944,7 @@ inline const QCPRange operator/(const QCPRange& range, double value) /* including file 'src/selection.h' */ -/* modified 2021-03-29T02:30:44, size 8569 */ +/* modified 2022-11-06T12:45:56, size 8569 */ class QCP_LIB_DECL QCPDataRange { @@ -1113,7 +1148,7 @@ inline QDebug operator<< (QDebug d, const QCPDataSelection &selection) /* including file 'src/selectionrect.h' */ -/* modified 2021-03-29T02:30:44, size 3354 */ +/* modified 2022-11-06T12:45:56, size 3354 */ class QCP_LIB_DECL QCPSelectionRect : public QCPLayerable { @@ -1167,7 +1202,7 @@ class QCP_LIB_DECL QCPSelectionRect : public QCPLayerable /* including file 'src/layout.h' */ -/* modified 2021-03-29T02:30:44, size 14279 */ +/* modified 2022-11-06T12:45:56, size 14279 */ class QCP_LIB_DECL QCPMarginGroup : public QObject { @@ -1488,7 +1523,7 @@ Q_DECLARE_METATYPE(QCPLayoutInset::InsetPlacement) /* including file 'src/lineending.h' */ -/* modified 2021-03-29T02:30:44, size 4426 */ +/* modified 2022-11-06T12:45:56, size 4426 */ class QCP_LIB_DECL QCPLineEnding { @@ -1552,7 +1587,7 @@ Q_DECLARE_METATYPE(QCPLineEnding::EndingStyle) /* including file 'src/axis/labelpainter.h' */ -/* modified 2021-03-29T02:30:44, size 7086 */ +/* modified 2022-11-06T12:45:56, size 7086 */ class QCPLabelPainterPrivate { @@ -1692,7 +1727,7 @@ Q_DECLARE_METATYPE(QCPLabelPainterPrivate::AnchorSide) /* including file 'src/axis/axisticker.h' */ -/* modified 2021-03-29T02:30:44, size 4230 */ +/* modified 2022-11-06T12:45:56, size 4230 */ class QCP_LIB_DECL QCPAxisTicker { @@ -1757,7 +1792,7 @@ Q_DECLARE_METATYPE(QSharedPointer) /* including file 'src/axis/axistickerdatetime.h' */ -/* modified 2021-03-29T02:30:44, size 3600 */ +/* modified 2022-11-06T12:45:56, size 3600 */ class QCP_LIB_DECL QCPAxisTickerDateTime : public QCPAxisTicker { @@ -1806,7 +1841,7 @@ class QCP_LIB_DECL QCPAxisTickerDateTime : public QCPAxisTicker /* including file 'src/axis/axistickertime.h' */ -/* modified 2021-03-29T02:30:44, size 3542 */ +/* modified 2022-11-06T12:45:56, size 3542 */ class QCP_LIB_DECL QCPAxisTickerTime : public QCPAxisTicker { @@ -1858,7 +1893,7 @@ Q_DECLARE_METATYPE(QCPAxisTickerTime::TimeUnit) /* including file 'src/axis/axistickerfixed.h' */ -/* modified 2021-03-29T02:30:44, size 3308 */ +/* modified 2022-11-06T12:45:56, size 3308 */ class QCP_LIB_DECL QCPAxisTickerFixed : public QCPAxisTicker { @@ -1900,7 +1935,7 @@ Q_DECLARE_METATYPE(QCPAxisTickerFixed::ScaleStrategy) /* including file 'src/axis/axistickertext.h' */ -/* modified 2021-03-29T02:30:44, size 3090 */ +/* modified 2022-11-06T12:45:56, size 3090 */ class QCP_LIB_DECL QCPAxisTickerText : public QCPAxisTicker { @@ -1938,7 +1973,7 @@ class QCP_LIB_DECL QCPAxisTickerText : public QCPAxisTicker /* including file 'src/axis/axistickerpi.h' */ -/* modified 2021-03-29T02:30:44, size 3911 */ +/* modified 2022-11-06T12:45:56, size 3911 */ class QCP_LIB_DECL QCPAxisTickerPi : public QCPAxisTicker { @@ -1997,7 +2032,7 @@ Q_DECLARE_METATYPE(QCPAxisTickerPi::FractionStyle) /* including file 'src/axis/axistickerlog.h' */ -/* modified 2021-03-29T02:30:44, size 2594 */ +/* modified 2022-11-06T12:45:56, size 2594 */ class QCP_LIB_DECL QCPAxisTickerLog : public QCPAxisTicker { @@ -2029,7 +2064,7 @@ class QCP_LIB_DECL QCPAxisTickerLog : public QCPAxisTicker /* including file 'src/axis/axis.h' */ -/* modified 2021-03-29T02:30:44, size 20913 */ +/* modified 2022-11-06T12:45:56, size 20913 */ class QCP_LIB_DECL QCPGrid :public QCPLayerable { @@ -2457,7 +2492,7 @@ class QCPAxisPainterPrivate /* including file 'src/scatterstyle.h' */ -/* modified 2021-03-29T02:30:44, size 7275 */ +/* modified 2022-11-06T12:45:56, size 7275 */ class QCP_LIB_DECL QCPScatterStyle { @@ -2564,7 +2599,7 @@ Q_DECLARE_METATYPE(QCPScatterStyle::ScatterShape) /* including file 'src/datacontainer.h' */ -/* modified 2021-03-29T02:30:44, size 34070 */ +/* modified 2022-11-06T12:45:56, size 34305 */ /*! \relates QCPDataContainer Returns whether the sort key of \a a is less than the sort key of \a b. @@ -3233,6 +3268,8 @@ QCPRange QCPDataContainer::keyRange(bool &foundRange, QCP::SignDomain output parameter \a foundRange indicates whether a sensible range was found. If this is false, you should not use the returned QCPRange (e.g. the data container is empty or all points have the same value). + + Inf and -Inf data values are ignored. If \a inKeyRange has both lower and upper bound set to zero (is equal to QCPRange()), all data points are considered, without any restriction on the keys. @@ -3270,12 +3307,12 @@ QCPRange QCPDataContainer::valueRange(bool &foundRange, QCP::SignDomai if (restrictKeyRange && (it->mainKey() < inKeyRange.lower || it->mainKey() > inKeyRange.upper)) continue; current = it->valueRange(); - if ((current.lower < range.lower || !haveLower) && !qIsNaN(current.lower)) + if ((current.lower < range.lower || !haveLower) && !qIsNaN(current.lower) && std::isfinite(current.lower)) { range.lower = current.lower; haveLower = true; } - if ((current.upper > range.upper || !haveUpper) && !qIsNaN(current.upper)) + if ((current.upper > range.upper || !haveUpper) && !qIsNaN(current.upper) && std::isfinite(current.upper)) { range.upper = current.upper; haveUpper = true; @@ -3288,12 +3325,12 @@ QCPRange QCPDataContainer::valueRange(bool &foundRange, QCP::SignDomai if (restrictKeyRange && (it->mainKey() < inKeyRange.lower || it->mainKey() > inKeyRange.upper)) continue; current = it->valueRange(); - if ((current.lower < range.lower || !haveLower) && current.lower < 0 && !qIsNaN(current.lower)) + if ((current.lower < range.lower || !haveLower) && current.lower < 0 && !qIsNaN(current.lower) && std::isfinite(current.lower)) { range.lower = current.lower; haveLower = true; } - if ((current.upper > range.upper || !haveUpper) && current.upper < 0 && !qIsNaN(current.upper)) + if ((current.upper > range.upper || !haveUpper) && current.upper < 0 && !qIsNaN(current.upper) && std::isfinite(current.upper)) { range.upper = current.upper; haveUpper = true; @@ -3306,12 +3343,12 @@ QCPRange QCPDataContainer::valueRange(bool &foundRange, QCP::SignDomai if (restrictKeyRange && (it->mainKey() < inKeyRange.lower || it->mainKey() > inKeyRange.upper)) continue; current = it->valueRange(); - if ((current.lower < range.lower || !haveLower) && current.lower > 0 && !qIsNaN(current.lower)) + if ((current.lower < range.lower || !haveLower) && current.lower > 0 && !qIsNaN(current.lower) && std::isfinite(current.lower)) { range.lower = current.lower; haveLower = true; } - if ((current.upper > range.upper || !haveUpper) && current.upper > 0 && !qIsNaN(current.upper)) + if ((current.upper > range.upper || !haveUpper) && current.upper > 0 && !qIsNaN(current.upper) && std::isfinite(current.upper)) { range.upper = current.upper; haveUpper = true; @@ -3406,7 +3443,7 @@ void QCPDataContainer::performAutoSqueeze() /* including file 'src/plottable.h' */ -/* modified 2021-03-29T02:30:44, size 8461 */ +/* modified 2022-11-06T12:45:56, size 8461 */ class QCP_LIB_DECL QCPSelectionDecorator { @@ -3563,7 +3600,7 @@ class QCP_LIB_DECL QCPAbstractPlottable : public QCPLayerable /* including file 'src/item.h' */ -/* modified 2021-03-29T02:30:44, size 9425 */ +/* modified 2022-11-06T12:45:56, size 9425 */ class QCP_LIB_DECL QCPItemAnchor { @@ -3748,7 +3785,7 @@ class QCP_LIB_DECL QCPAbstractItem : public QCPLayerable /* including file 'src/core.h' */ -/* modified 2021-03-29T02:30:44, size 19304 */ +/* modified 2022-11-06T12:45:56, size 19304 */ class QCP_LIB_DECL QCustomPlot : public QWidget { @@ -4118,7 +4155,7 @@ ItemType *QCustomPlot::itemAt(const QPointF &pos, bool onlySelectable) const /* including file 'src/plottable1d.h' */ -/* modified 2021-03-29T02:30:44, size 25638 */ +/* modified 2022-11-06T12:45:56, size 25638 */ class QCPPlottableInterface1D { @@ -4710,7 +4747,7 @@ void QCPAbstractPlottable1D::drawPolyline(QCPPainter *painter, const Q /* including file 'src/colorgradient.h' */ -/* modified 2021-03-29T02:30:44, size 7262 */ +/* modified 2022-11-06T12:45:56, size 7262 */ class QCP_LIB_DECL QCPColorGradient { @@ -4813,7 +4850,7 @@ Q_DECLARE_METATYPE(QCPColorGradient::GradientPreset) /* including file 'src/selectiondecorator-bracket.h' */ -/* modified 2021-03-29T02:30:44, size 4458 */ +/* modified 2022-11-06T12:45:56, size 4458 */ class QCP_LIB_DECL QCPSelectionDecoratorBracket : public QCPSelectionDecorator { @@ -4882,7 +4919,7 @@ Q_DECLARE_METATYPE(QCPSelectionDecoratorBracket::BracketStyle) /* including file 'src/layoutelements/layoutelement-axisrect.h' */ -/* modified 2021-03-29T02:30:44, size 7529 */ +/* modified 2022-11-06T12:45:56, size 7529 */ class QCP_LIB_DECL QCPAxisRect : public QCPLayoutElement { @@ -5008,7 +5045,7 @@ class QCP_LIB_DECL QCPAxisRect : public QCPLayoutElement /* including file 'src/layoutelements/layoutelement-legend.h' */ -/* modified 2021-03-29T02:30:44, size 10425 */ +/* modified 2022-11-06T12:45:56, size 10425 */ class QCP_LIB_DECL QCPAbstractLegendItem : public QCPLayoutElement { @@ -5226,7 +5263,7 @@ Q_DECLARE_METATYPE(QCPLegend::SelectablePart) /* including file 'src/layoutelements/layoutelement-textelement.h' */ -/* modified 2021-03-29T02:30:44, size 5359 */ +/* modified 2022-11-06T12:45:56, size 5359 */ class QCP_LIB_DECL QCPTextElement : public QCPLayoutElement { @@ -5313,7 +5350,7 @@ class QCP_LIB_DECL QCPTextElement : public QCPLayoutElement /* including file 'src/layoutelements/layoutelement-colorscale.h' */ -/* modified 2021-03-29T02:30:44, size 5939 */ +/* modified 2022-11-06T12:45:56, size 5939 */ class QCPColorScaleAxisRectPrivate : public QCPAxisRect @@ -5421,7 +5458,7 @@ class QCP_LIB_DECL QCPColorScale : public QCPLayoutElement /* including file 'src/plottables/plottable-graph.h' */ -/* modified 2021-03-29T02:30:44, size 9316 */ +/* modified 2022-11-06T12:45:56, size 9316 */ class QCP_LIB_DECL QCPGraphData { @@ -5560,7 +5597,7 @@ Q_DECLARE_METATYPE(QCPGraph::LineStyle) /* including file 'src/plottables/plottable-curve.h' */ -/* modified 2021-03-29T02:30:44, size 7434 */ +/* modified 2022-11-06T12:45:56, size 7434 */ class QCP_LIB_DECL QCPCurveData { @@ -5675,7 +5712,7 @@ Q_DECLARE_METATYPE(QCPCurve::LineStyle) /* including file 'src/plottables/plottable-bars.h' */ -/* modified 2021-03-29T02:30:44, size 8955 */ +/* modified 2022-11-06T12:45:56, size 8955 */ class QCP_LIB_DECL QCPBarsGroup : public QObject { @@ -5863,7 +5900,7 @@ Q_DECLARE_METATYPE(QCPBars::WidthType) /* including file 'src/plottables/plottable-statisticalbox.h' */ -/* modified 2021-03-29T02:30:44, size 7522 */ +/* modified 2022-11-06T12:45:56, size 7522 */ class QCP_LIB_DECL QCPStatisticalBoxData { @@ -5980,7 +6017,7 @@ class QCP_LIB_DECL QCPStatisticalBox : public QCPAbstractPlottable1D -// The License.txt file describes the conditions under which this software may be distributed. - -#include -#include -#include - -#include -#include - -#include "ILexer.h" -#include "Scintilla.h" -#include "SciLexer.h" - -#include "LexerModule.h" -#include "Catalogue.h" - -using namespace Scintilla; - -static std::vector lexerCatalogue; -static int nextLanguage = SCLEX_AUTOMATIC+1; - -const LexerModule *Catalogue::Find(int language) { - Scintilla_LinkLexers(); - for (const LexerModule *lm : lexerCatalogue) { - if (lm->GetLanguage() == language) { - return lm; - } - } - return nullptr; -} - -const LexerModule *Catalogue::Find(const char *languageName) { - Scintilla_LinkLexers(); - if (languageName) { - for (const LexerModule *lm : lexerCatalogue) { - if (lm->languageName && (0 == strcmp(lm->languageName, languageName))) { - return lm; - } - } - } - return nullptr; -} - -void Catalogue::AddLexerModule(LexerModule *plm) { - if (plm->GetLanguage() == SCLEX_AUTOMATIC) { - plm->language = nextLanguage; - nextLanguage++; - } - lexerCatalogue.push_back(plm); -} - -// To add or remove a lexer, add or remove its file and run LexGen.py. - -// Force a reference to all of the Scintilla lexers so that the linker will -// not remove the code of the lexers. -int Scintilla_LinkLexers() { - - static int initialised = 0; - if (initialised) - return 0; - initialised = 1; - -// Shorten the code that declares a lexer and ensures it is linked in by calling a method. -#define LINK_LEXER(lexer) extern LexerModule lexer; Catalogue::AddLexerModule(&lexer); - -//++Autogenerated -- run scripts/LexGen.py to regenerate -//**\(\tLINK_LEXER(\*);\n\) - LINK_LEXER(lmSQL); - LINK_LEXER(lmJSON); - LINK_LEXER(lmHTML); - LINK_LEXER(lmXML); - -//--Autogenerated -- end of automatically generated section - - return 1; -} diff --git a/libs/qscintilla/src/UnicodeFromUTF8.h b/libs/qscintilla/src/UnicodeFromUTF8.h deleted file mode 100644 index ae66cb0a9..000000000 --- a/libs/qscintilla/src/UnicodeFromUTF8.h +++ /dev/null @@ -1,32 +0,0 @@ -// Scintilla source code edit control -/** @file UnicodeFromUTF8.h - ** Lexer infrastructure. - **/ -// Copyright 2013 by Neil Hodgson -// This file is in the public domain. - -#ifndef UNICODEFROMUTF8_H -#define UNICODEFROMUTF8_H - -#ifdef SCI_NAMESPACE -namespace Scintilla { -#endif - -inline int UnicodeFromUTF8(const unsigned char *us) { - if (us[0] < 0xC2) { - return us[0]; - } else if (us[0] < 0xE0) { - return ((us[0] & 0x1F) << 6) + (us[1] & 0x3F); - } else if (us[0] < 0xF0) { - return ((us[0] & 0xF) << 12) + ((us[1] & 0x3F) << 6) + (us[2] & 0x3F); - } else if (us[0] < 0xF5) { - return ((us[0] & 0x7) << 18) + ((us[1] & 0x3F) << 12) + ((us[2] & 0x3F) << 6) + (us[3] & 0x3F); - } - return us[0]; -} - -#ifdef SCI_NAMESPACE -} -#endif - -#endif diff --git a/libs/qscintilla/ChangeLog b/libs/qscintilla_2.14.1/ChangeLog similarity index 92% rename from libs/qscintilla/ChangeLog rename to libs/qscintilla_2.14.1/ChangeLog index 944189c6f..19a51c732 100644 --- a/libs/qscintilla/ChangeLog +++ b/libs/qscintilla_2.14.1/ChangeLog @@ -1,5 +1,652 @@ +2023-06-07 Phil Thompson + + * NEWS, Python/project.py: + Rolled back the explicit setting of the minimum GLIBC version now + that we have changed the build platform. + [4ea73206e689] [2.14.1] <2.14-maint> + +2023-05-22 Phil Thompson + + * NEWS, qt/InputMethod.cpp, qt/qscintilla.pro: + Fixed a pointer truncation in the handling of input method queries. + [e3a47ebe8c93] <2.14-maint> + +2023-05-14 Phil Thompson + + * NEWS, Python/project.py: + Fixed the manylinux wheel tag when building on Ubuntu 22.04. + [77c97572f18c] <2.14-maint> + +2023-04-27 Phil Thompson + + * .hgtags: + Added tag 2.14.0 for changeset b748338e45bb + [670c1fb1beeb] + +2023-04-24 Phil Thompson + + * NEWS, qt/qsciscintilla.cpp: + Fixed a regression in QSciScintilla::text(). + [b748338e45bb] [2.14.0] + +2023-04-20 Phil Thompson + + * qt/qsciscintilla.cpp: + Use SCI_ADDTEXT rather than SCI_SETTEXT to set the text so tht + embedded zero bytes can be loaded. + [774bcbca48b9] + + * NEWS, qt/InputMethod.cpp, qt/SciAccessibility.cpp, + qt/SciAccessibility.h, qt/qscilexer.cpp, qt/qscilexer.h, + qt/qsciscintilla.cpp, qt/qsciscintillabase.cpp, + qt/qsciscintillabase.h: + Refactored the conversions from bytes to a QString to allow for + embedded zero bytes and to remove duplicated code. + [c8eb0d943c07] + +2023-03-31 Phil Thompson + + * NEWS, qt/qscintilla_cs.ts, qt/qscintilla_de.qm, qt/qscintilla_de.ts, + qt/qscintilla_es.ts, qt/qscintilla_fr.ts, qt/qscintilla_pt_br.ts: + Fixed the .ts files. + [5d000fe9301e] + +2023-03-28 Phil Thompson + + * Python/sip/qscilexerasm.sip, Python/sip/qscilexermasm.sip, + Python/sip/qscilexernasm.sip, Python/sip/qscimodcommon.sip, + Python/sip/qsciscintillabase.sip: + Implemented the Python wrappers for the assembler lexers. + [0030fcf7a208] + + * qt/qscintilla_cs.ts, qt/qscintilla_de.ts, qt/qscintilla_es.ts, + qt/qscintilla_fr.ts, qt/qscintilla_pt_br.ts: + Updated the translation source files. + [0fb2491bb039] + + * qt/qscilexer.cpp, qt/qscilexer.h, qt/qscilexerasm.cpp, + qt/qscilexerasm.h, qt/qsciscintillabase.h: + Completed the implementation of the assember lexers. Note we choose + not to support explicit fold points. + [629503d9342b] + + * NEWS, qt/qsciscintilla.cpp, qt/qsciscintilla.h, + qt/qsciscintillabase.cpp, qt/qsciscintillabase.h: + Removed a Qt4 compatibility macro. + [4b23653f3e5c] + + * qt/qscilexerasm.cpp, qt/qscilexerasm.h: + Added the support for compact and multi-line comment folding to + QsciLexerAsm. + [708bed0e9e2d] + +2023-03-27 Phil Thompson + + * NEWS, qt/qscilexerasm.cpp, qt/qscilexerasm.h, + qt/qscilexerintelhex.cpp, qt/qscilexermasm.cpp, qt/qscilexermasm.h, + qt/qscilexernasm.cpp, qt/qscilexernasm.h, qt/qscilexertekhex.cpp, + qt/qscintilla.pro: + Initial implementation of the QsciLexerAsm, QsciLexerMASM and + QsciLexerNASM classes. + [f216dfe8a7a9] + +2023-03-26 Phil Thompson + + * Python/sip/qscilexerintelhex.sip, Python/sip/qscilexersrec.sip, + Python/sip/qscilexertekhex.sip, Python/sip/qscimodcommon.sip, + Python/sip/qsciscintillabase.sip: + Completed the new Python wrappers. + [9acd96c733d2] + + * Python/sip/qscilexerhex.sip, Python/sip/qscilexerintelhex.sip, + Python/sip/qscilexersrec.sip, Python/sip/qscilexertekhex.sip: + Added the Python bindings for the new lexer classes. + [7882938747c0] + + * qt/qscintilla_cs.ts, qt/qscintilla_de.ts, qt/qscintilla_es.ts, + qt/qscintilla_fr.ts, qt/qscintilla_pt_br.ts: + Updated the translation source files. + [ee55692ee907] + + * NEWS, qt/qscilexerhex.cpp, qt/qscilexerhex.h, + qt/qscilexerintelhex.cpp, qt/qscilexerintelhex.h, + qt/qscilexersrec.cpp, qt/qscilexersrec.h, qt/qscilexertekhex.cpp, + qt/qscilexertekhex.h, qt/qscintilla.pro: + Added the QsciLexerHex, QsciLexerIntelHex, QsciLexerSRec and + QsciLexerTekHex classes. + [5e1cb8b52206] + + * Merged the 2.13-maint branch. + [a9480b2f6bdb] + +2023-03-02 Phil Thompson + + * NEWS, lexlib/LexAccessor.h: + Disabled an assert() in the lexer library as the following code + handles the case anyway. The real bug is probably in the HTML lexer + triggered when the HTML has embedded DTD. + [6452e3b634b6] <2.13-maint> + +2023-01-15 Phil Thompson + + * .hgtags: + Added tag 2.13.4 for changeset b2c87a81f0c3 + [d2bc1ac10aa3] <2.13-maint> + +2022-12-06 Phil Thompson + + * NEWS, src/EditView.cxx: + Fixed horizontally scrolled text overwriting margins when EOLs are + visible. + [b2c87a81f0c3] [2.13.4] <2.13-maint> + +2022-06-17 Phil Thompson + + * NEWS, qsci/api/python/Python-3.11.api: + Added the .api file for Python v3.11. + [96eca4a41bcb] <2.13-maint> + +2022-05-24 Phil Thompson + + * NEWS, lib/gen_python3_api.py, lib/gen_python_api.py, + qsci/api/python/Python-3.10.api, qsci/api/python/Python-3.8.api, + qsci/api/python/Python-3.9.api: + Added the .api file for Python v3.10. Removed the script that + generates .api files for Python v2. Updated the .api file for Python + v3.8 and v3.9 removing non-stdlib stuff. + [048961f449ea] <2.13-maint> + +2022-05-13 Phil Thompson + + * .hgtags: + Added tag 2.13.3 for changeset 5b8465ba3664 + [f37eea15e210] <2.13-maint> + +2022-04-25 Phil Thompson + + * NEWS, qt/InputMethod.cpp: + Updates to the input method code to fix a problem with KDE on + Wayland. + [5b8465ba3664] [2.13.3] <2.13-maint> + +2022-03-15 Phil Thompson + + * .hgtags: + Added tag 2.13.2 for changeset bb61ba6bf385 + [6cdbcd2c2dad] <2.13-maint> + + * NEWS, Python/project.py: + Fixed building from an sdist for iOS. + [bb61ba6bf385] [2.13.2] <2.13-maint> + +2021-10-14 Phil Thompson + + * .hgtags: + Added tag 2.13.1 for changeset 0763a2d7a8c2 + [90c834cc462d] <2.13-maint> + +2021-10-12 Phil Thompson + + * NEWS, designer/designer.pro, example/application.pro, + lib/README.doc, qt/qscintilla.pro: + Updated the .pro files and docs to cover multiple architecture + builds on macOS. + [0763a2d7a8c2] [2.13.1] <2.13-maint> + +2021-09-08 Phil Thompson + + * NEWS, qt/qscintilla.pro, qt/qsciscintilla.cpp: + Fixed the target used by findNext() after a call to replace(). + [6d59f97850d7] <2.13-maint> + +2021-06-26 Phil Thompson + + * .hgtags: + Added tag 2.13.0 for changeset 84da33178802 + [95ec8d681eae] + +2021-06-13 Phil Thompson + + * NEWS, Python/sip/qsciscintillabase.sip: + Fixed the Python bindings of SendScintilla() so that a negative + value can be passed as the wParam argument (specifically + SC_CURSORNORMAL). + [84da33178802] [2.13.0] + +2021-06-03 Phil Thompson + + * NEWS, Python/sip/qsciprinter.sip, qt/qscintilla.pro, + qt/qsciprinter.cpp, qt/qsciprinter.h: + Added the new QsciPrinter::printRange() overload. The library + version number is now v15.1.0. + [4b18dcfe67c4] + + * Merged the 2.12-maint branch. + [a33fcd321f79] + +2021-05-20 Phil Thompson + + * qt/PlatQt.cpp: + Fixed the handling of explicit Qt font weights for Qt6. + [1dbb97147333] <2.12-maint> + +2021-05-06 Phil Thompson + + * qt/qscintilla.pro: + Bumped the version number of the shared library. + [7b3f97fa852f] <2.12-maint> + + * NEWS, qt/ListBoxQt.cpp: + Improved the appearence of the auto-completion popup. + [6d05cdc2c9c9] <2.12-maint> + +2021-03-04 Phil Thompson + + * .hgtags: + Added tag 2.12.1 for changeset c1e9b5f091d6 + [0e8a95ee3197] <2.12-maint> + + * NEWS: + Released as v2.12.1. + [c1e9b5f091d6] [2.12.1] <2.12-maint> + + * rb-product.toml: + Fixed the PyQt dependencies. + [c7af7dfff891] <2.12-maint> + +2021-03-02 Phil Thompson + + * NEWS: + Updated the NEWS file. + [811ff4c9ffb2] <2.12-maint> + +2021-02-27 Phil Thompson + + * Python/pyproject-qt5.toml, Python/pyproject-qt6.toml: + Fixed the project dependencies. + [f84410807305] <2.12-maint> + + * rb-product, rb-product.toml: + Updated the product file. + [266fa5c4525a] <2.12-maint> + +2021-02-22 Phil Thompson + + * .hgtags: + Added tag 2.12.0 for changeset 1cfa1f74a2a6 + [a3df8b831652] + + * NEWS: + Released as v2.12.0. + [1cfa1f74a2a6] [2.12.0] + + * NEWS: + Updated the NEWS file. + [15c838b76bbb] + +2021-02-21 Phil Thompson + + * Python/project.py: + Fixed project.py so that it will use an embedded QScintilla library + when being built from an sdist. + [71cc17f4adb2] + + * qt/qscintilla.pro: + Added missing .h files from qscintilla.pro. + [c932fdd83a5e] + +2021-02-19 Phil Thompson + + * Python/pyproject-qt5.toml: + Reverted the name of the Qt5 Python bindings PyPI project because a + new name would cause significant problems. + [c318f3bd3474] + +2021-02-18 Phil Thompson + + * Python/pyproject-qt5.toml, Python/pyproject-qt6.toml, + Python/sip/qsciscintillabase.sip: + Fixed the Python bindings for PyQt6. + [e48e4f400215] + + * lib/README.doc: + Re-ordered the section in the main page of the docs. + [35fd189ea5da] + +2021-02-17 Phil Thompson + + * Python/project.py, Python/pyproject-qt5.toml, Python/pyproject- + qt6.toml, Python/pyproject.toml, Python/sip/qscimod5.sip, + Python/sip/qscimod6.sip, Python/sip/qscimodcommon.sip, + lib/README.doc, qt/features/qscintilla2.prf, + qt/features_staticlib/qscintilla2.prf: + Update the building of the Python bindings from a full source + package. + [124c17880e06] + +2021-02-15 Phil Thompson + + * lib/README.doc, lib/qscintilla.dxy: + Some documentation fixes. + [81cc3ac8a8df] + + * qt/PlatQt.cpp: + Fixed a regression in building against Qt5. + [4e87186ec216] + + * qt/InputMethod.cpp, qt/MacPasteboardMime.cpp, qt/PlatQt.cpp, + qt/SciAccessibility.cpp, qt/qsciapis.cpp, qt/qscicommandset.cpp, + qt/qsciglobal.h, qt/qscilexer.cpp, qt/qscimacro.cpp, + qt/qscintilla.pro, qt/qsciprinter.cpp, qt/qsciprinter.h, + qt/qsciscintilla.cpp, qt/qsciscintillabase.cpp: + Initial port to Qt6. + [b88e78ec2ca3] + +2021-02-14 Phil Thompson + + * Python/configure-old.py, Python/configure.py, Python/pyproject.toml, + Python/sip/qscimod4.sip, designer-Qt4Qt5/designer.pro, designer- + Qt4Qt5/qscintillaplugin.cpp, designer-Qt4Qt5/qscintillaplugin.h, + designer/designer.pro, designer/qscintillaplugin.cpp, + designer/qscintillaplugin.h, example-Qt4Qt5/application.pro, + example-Qt4Qt5/application.qrc, example-Qt4Qt5/images/copy.png, + example-Qt4Qt5/images/cut.png, example-Qt4Qt5/images/new.png, + example-Qt4Qt5/images/open.png, example-Qt4Qt5/images/paste.png, + example-Qt4Qt5/images/save.png, example-Qt4Qt5/main.cpp, example- + Qt4Qt5/mainwindow.cpp, example-Qt4Qt5/mainwindow.h, + example/application.pro, example/application.qrc, + example/images/copy.png, example/images/cut.png, + example/images/new.png, example/images/open.png, + example/images/paste.png, example/images/save.png, example/main.cpp, + example/mainwindow.cpp, example/mainwindow.h, lib/README.doc, + lib/ed.py, lib/pyproject.toml, qt/InputMethod.cpp, qt/ListBoxQt.cpp, + qt/MacPasteboardMime.cpp, qt/PlatQt.cpp, qt/SciClasses.cpp, + qt/ScintillaQt.cpp, qt/qsciglobal.h, qt/qscintilla.pro, + qt/qsciscintillabase.cpp, qt/qsciscintillabase.h: + Removed support for Qt4. + [dad7e9b4d62e] + + * Merged the 2.11-maint branch. + [8c1814ec889a] + +2020-11-23 Phil Thompson + + * .hgtags: + Added tag 2.11.6 for changeset c262a7a02f6d + [a12ce93c13bf] <2.11-maint> + + * NEWS: + Released as v2.11.6. + [c262a7a02f6d] [2.11.6] <2.11-maint> + + * NEWS: + Updated the NEWS file. + [0f32bcb43dd3] <2.11-maint> + +2020-10-22 Phil Thompson + + * qt/features/qscintilla2.prf, qt/features_staticlib/qscintilla2.prf, + qt/qscintilla.pro: + Fixes for building for iOS with recent versions of Qt. + [aea84882d372] <2.11-maint> + +2020-10-20 Phil Thompson + + * Python/project.py: + Added the --qsci-translations-dir option to sip-wheel. + [df77754750b3] <2.11-maint> + +2020-10-19 Phil Thompson + + * qsci/api/python/Python-3.9.api: + Added the .api file for Python v3.9. + [bff51b8043e2] <2.11-maint> + + * .hgignore: + Updated .hgignore for the current build naming convention. + [b659680b3f24] <2.11-maint> + +2020-10-11 Phil Thompson + + * qt/qsciscintilla.cpp: + Fixed the display of non-latin1 call tips. + [f9fa57df2fbb] <2.11-maint> + +2020-09-17 Phil Thompson + + * Python/project.py, lib/pyproject.toml: + Require PyQt-builder v1.6 as we no longer specify the sip module and + ABI. + [0e989cce12ea] <2.11-maint> + +2020-08-22 Phil Thompson + + * Python/project.py: + Set the name of the sip module explicitly. + [a6b6fd548cf3] <2.11-maint> + +2020-06-30 Phil Thompson + + * example-Qt4Qt5/main.cpp, example-Qt4Qt5/mainwindow.cpp, example- + Qt4Qt5/mainwindow.h: + Updated the copyright notices on the example. + [8937c1d51479] <2.11-maint> + +2020-06-09 Phil Thompson + + * .hgtags: + Added tag 2.11.5 for changeset 36bf61975fe2 + [7e336947e75e] <2.11-maint> + + * NEWS: + Released as v2.11.5. + [36bf61975fe2] [2.11.5] <2.11-maint> + + * NEWS, Python/sip/qsciabstractapis.sip, Python/sip/qsciapis.sip: + Fixed the Python signatures of the QsciAbstractAPIs and QsciAPIs + ctors. + [80aeec9058bf] <2.11-maint> + +2020-05-09 Phil Thompson + + * Python/project.py, lib/pyproject.toml: + The minimum ABI version is 12.8 which requires SIP v5.3. + [c0e8e2e7e485] <2.11-maint> + +2020-04-11 Phil Thompson + + * lib/pyproject.toml: + We know that The Python binding swill be able to use SIP v6. + [4f1f5381fb69] <2.11-maint> + +2020-04-10 Phil Thompson + + * NEWS: + Updated the NEWS file. + [2ef898e42a1e] <2.11-maint> + + * Python/project.py, lib/pyproject.toml: + Include the bundled .api files in wheels. + [ded23cd63255] <2.11-maint> + +2020-02-08 Phil Thompson + + * lib/pyproject.toml: + Fixed METADATA for commercial wheels. + [efc053939949] <2.11-maint> + +2019-12-18 Phil Thompson + + * .hgtags: + Added tag 2.11.4 for changeset b9eb589b0dab + [3f3722aac2ad] <2.11-maint> + + * NEWS: + Released as v2.11.4. + [b9eb589b0dab] [2.11.4] <2.11-maint> + + * lib/pyproject.toml: + Fixed requires-dist for commercial wheels. + [53c08faf43ff] <2.11-maint> + +2019-11-02 Phil Thompson + + * .hgtags: + Added tag 2.11.3 for changeset 989462577f67 + [3f6d7cf0fc4b] <2.11-maint> + + * NEWS: + Released as v2.11.3. + [989462577f67] [2.11.3] <2.11-maint> + + * NEWS: + Updated the NEWS file. + [2075344b2124] <2.11-maint> + +2019-10-03 Phil Thompson + + * lib/pyproject.toml: + Fixed the name of PEP 566. + [e435d3af1587] <2.11-maint> + + * lib/pyproject.toml: + Requires PyQt-builder v1. + [9502a2b46a2b] <2.11-maint> + +2019-10-01 Phil Thompson + + * lib/pyproject.toml: + Fixed the name of the PyQt-builder project. + [efe96da72b1f] <2.11-maint> + +2019-09-23 Phil Thompson + + * Python/project.py: + Fixes for changes in the sip v5 API. + [a79acd2cdd94] <2.11-maint> + +2019-09-14 Phil Thompson + + * lib/pyproject.toml: + Added the requires-dist meta-data. + [941784a50fad] <2.11-maint> + +2019-09-07 Phil Thompson + + * NEWS: + Updated the NEWS file. + [6c83ad469a4e] <2.11-maint> + + * lib/pyproject.toml: + Temporarily set the version of PyQt-builder required to be v0.1. + [734461946ff0] <2.11-maint> + +2019-09-06 Phil Thompson + + * Python/project.py: + Fixes for relative path options. + [e7bc21d4cb25] <2.11-maint> + +2019-09-05 Phil Thompson + + * Python/project.py: + Added the options to build the bindings from a locally installed + copy of the library. + [54094e26d201] <2.11-maint> + +2019-09-04 Phil Thompson + + * Python/configure-old.py, Python/configure.py, Python/project.py, + designer-Qt4Qt5/designer.pro, example-Qt4Qt5/application.pro, + qt/qscintilla.pro: + Removed the code to change the install_name on macOS. + [c88922cb4dee] <2.11-maint> + + * Python/configure.py, qt/qscintilla.pro: + Fixed the install_name of the .dylib on macOS so that it is relative + to @rpath. + [010c78f5da88] <2.11-maint> + + * Python/config-tests/cfgtest_Qsci.cpp: + Fixed the configuration test. + [c00c4195e8fc] <2.11-maint> + + * METADATA.in, Python/README, Python/config-tests/cfgtest_Qsci.cpp, + Python/configure-old.py, Python/configure.py, Python/project.py, + lib/README, lib/pyproject.toml, qt/qscintilla.pro: + Added support for sip-build. + [20e39552153c] <2.11-maint> + +2019-08-30 Phil Thompson + + * METADATA.in, lib/README: + Updated the meta-data description. + [7681c13103f2] <2.11-maint> + +2019-08-21 Phil Thompson + + * METADATA.in: + Updated the link to the docs for PyPI. + [ab14aecc07de] <2.11-maint> + +2019-07-04 Phil Thompson + + * qt/qscilexercss.cpp: + Fixed the styling of CSS comments. + [9b2dd132b868] <2.11-maint> + +2019-06-25 Phil Thompson + + * .hgtags: + Added tag 2.11.2 for changeset 9a9bab556970 + [e39e215312b4] <2.11-maint> + + * NEWS: + Released as v2.11.2. + [9a9bab556970] [2.11.2] <2.11-maint> + + * qsci/api/python/Python-3.8.api: + Added the .api file for Python v3.8. + [4bc9c6baa011] <2.11-maint> + + * NEWS: + Updated the NEWS file. + [38685401d592] <2.11-maint> + +2019-05-31 Phil Thompson + + * qt/PlatQt.cpp: + Fixes to allow compilation with WASM. + [71be3fd818c8] <2.11-maint> + +2019-05-15 Phil Thompson + + * qt/ScintillaQt.cpp, qt/ScintillaQt.h, qt/qsciscintillabase.cpp, + qt/qsciscintillabase.h: + Fixed selection-related issues on macOS (and probably Windows) + triggered by the use of additional selections. + [47aaec2fa37c] <2.11-maint> + +2019-05-09 Phil Thompson + + * NEWS, Python/sip/qsciscintilla.sip, qt/qsciscintilla.cpp, + qt/qsciscintilla.h: + QsciScintilla::findMatchingBrace() is now part of the public API. + [b1973ad12f82] <2.11-maint> + +2019-03-13 Phil Thompson + + * NEWS, qt/qsciscintilla.cpp: + QsciScintilla::clear() now clears the undo history to be consistent + with Qt and setText(). + [b013bbaed4a5] <2.11-maint> + 2019-02-12 Phil Thompson + * .hgtags: + Added tag 2.11.1 for changeset bebf741baff8 + [c09e91f304b8] <2.11-maint> + * NEWS: Released as v2.11.1. [bebf741baff8] [2.11.1] <2.11-maint> diff --git a/libs/qscintilla/LICENSE b/libs/qscintilla_2.14.1/LICENSE similarity index 100% rename from libs/qscintilla/LICENSE rename to libs/qscintilla_2.14.1/LICENSE diff --git a/libs/qscintilla/NEWS b/libs/qscintilla_2.14.1/NEWS similarity index 93% rename from libs/qscintilla/NEWS rename to libs/qscintilla_2.14.1/NEWS index 28f8f1f2d..ccd6e00d1 100644 --- a/libs/qscintilla/NEWS +++ b/libs/qscintilla_2.14.1/NEWS @@ -1,3 +1,66 @@ +v2.14.1 7th June 2023 + - Bug fixes. + +v2.14.0 24th April 2023 + - Added the QsciLexerAsm, QsciLexerMASM and QsciLexerNASM classes. + - Added the QsciLexerHex, QsciLexerIntelHex, QsciLexerSRec and + QsciLexerTekHex classes. + - Bug fixes. + +v2.13.4 6th December 2022 + - Added the .api files for Python v3.10 and v3.11. + - Bug fixes. + +v2.13.3 25th April 2022 + - Bug fixes. + +v2.13.2 15th March 2022 + - Bug fixes that only affect iOS. + +v2.13.1 12th October 2021 + - Documented how to build for multiple architectures on macOS. + - Bug fixes. + +v2.13.0 13th June 2021 + - Added the QsciPrinter::printRange() overload that uses a supplied QPainter + to render the pages. + - Improved the appearence of the auto-completion popup. + - Bug fixes. + +v2.12.1 4th March 2021 + - Packaging bug fixes. + +v2.12.0 23rd February 2021 + - Added support for Qt6. + - Removed support for Qt4 and Qt5 earlier than v5.11.0. + - sdists are now provided. + +v2.11.6 23rd November 2020 + - Added the --qsci-translations-dir option to sip-wheel. + - Added the .api file for Python v3.9. + - Build system changes. + - Bug fixes. + +v2.11.5 10th June 2020 + - The bundled .api files are now included in Python wheels if the + QScintilla.api file is enabled. + - Bug fixes. + +v2.11.4 19th December 2019 + - An administrative release with no code changes. + +v2.11.3 3rd November 2019 + - Added support for SIP v5. + - On macOS the install name of the C++ library is now relative to @rpath. + +v2.11.2 26th June 2019 + - Added QsciScintilla::findMatchingBrace(). + - QsciScintiila::clear() is no longer undoable and instead clears the undo + history. + - Added support for building with WASM. + - Added the .api file for Python v3.8. + - Bug fixes. + v2.11.1 14th February 2019 - There is a small (but potentially incompatible) change to the signature of a QsciScintillaBase::SendScintilla() overload which may require an explicit diff --git a/libs/qscintilla_2.14.1/Qt5Qt6/CMakeLists.txt b/libs/qscintilla_2.14.1/Qt5Qt6/CMakeLists.txt new file mode 100644 index 000000000..5fc83a430 --- /dev/null +++ b/libs/qscintilla_2.14.1/Qt5Qt6/CMakeLists.txt @@ -0,0 +1,323 @@ +cmake_minimum_required(VERSION 3.16) +project(qscintilla2 VERSION 2.14.1 LANGUAGES CXX) + +set(CMAKE_AUTOMOC ON) +set(CMAKE_INCLUDE_CURRENT_DIR ON) + +find_package(${QT_MAJOR} REQUIRED COMPONENTS PrintSupport Widgets) + +if(APPLE) + find_package(${QT_MAJOR} REQUIRED COMPONENTS MacExtras) +endif() + +add_definitions(-DSCINTILLA_QT) +add_definitions(-DSCI_LEXER) + +set(SRC_LIST + ../scintilla/include/ILexer.h + ../scintilla/include/ILoader.h + ../scintilla/include/Platform.h + ../scintilla/include/SciLexer.h + ../scintilla/include/Sci_Position.h + ../scintilla/include/Scintilla.h + ../scintilla/include/ScintillaWidget.h + ../scintilla/lexers/LexA68k.cpp + ../scintilla/lexers/LexAPDL.cpp + ../scintilla/lexers/LexASY.cpp + ../scintilla/lexers/LexAU3.cpp + ../scintilla/lexers/LexAVE.cpp + ../scintilla/lexers/LexAVS.cpp + ../scintilla/lexers/LexAbaqus.cpp + ../scintilla/lexers/LexAda.cpp + ../scintilla/lexers/LexAsm.cpp + ../scintilla/lexers/LexAsn1.cpp + ../scintilla/lexers/LexBaan.cpp + ../scintilla/lexers/LexBash.cpp + ../scintilla/lexers/LexBasic.cpp + ../scintilla/lexers/LexBatch.cpp + ../scintilla/lexers/LexBibTeX.cpp + ../scintilla/lexers/LexBullant.cpp + ../scintilla/lexers/LexCLW.cpp + ../scintilla/lexers/LexCOBOL.cpp + ../scintilla/lexers/LexCPP.cpp + ../scintilla/lexers/LexCSS.cpp + ../scintilla/lexers/LexCaml.cpp + ../scintilla/lexers/LexCmake.cpp + ../scintilla/lexers/LexCoffeeScript.cpp + ../scintilla/lexers/LexConf.cpp + ../scintilla/lexers/LexCrontab.cpp + ../scintilla/lexers/LexCsound.cpp + ../scintilla/lexers/LexD.cpp + ../scintilla/lexers/LexDMAP.cpp + ../scintilla/lexers/LexDMIS.cpp + ../scintilla/lexers/LexDiff.cpp + ../scintilla/lexers/LexECL.cpp + ../scintilla/lexers/LexEDIFACT.cpp + ../scintilla/lexers/LexEScript.cpp + ../scintilla/lexers/LexEiffel.cpp + ../scintilla/lexers/LexErlang.cpp + ../scintilla/lexers/LexErrorList.cpp + ../scintilla/lexers/LexFlagship.cpp + ../scintilla/lexers/LexForth.cpp + ../scintilla/lexers/LexFortran.cpp + ../scintilla/lexers/LexGAP.cpp + ../scintilla/lexers/LexGui4Cli.cpp + ../scintilla/lexers/LexHTML.cpp + ../scintilla/lexers/LexHaskell.cpp + ../scintilla/lexers/LexHex.cpp + ../scintilla/lexers/LexIndent.cpp + ../scintilla/lexers/LexInno.cpp + ../scintilla/lexers/LexJSON.cpp + ../scintilla/lexers/LexKVIrc.cpp + ../scintilla/lexers/LexKix.cpp + ../scintilla/lexers/LexLaTeX.cpp + ../scintilla/lexers/LexLisp.cpp + ../scintilla/lexers/LexLout.cpp + ../scintilla/lexers/LexLua.cpp + ../scintilla/lexers/LexMMIXAL.cpp + ../scintilla/lexers/LexMPT.cpp + ../scintilla/lexers/LexMSSQL.cpp + ../scintilla/lexers/LexMagik.cpp + ../scintilla/lexers/LexMake.cpp + ../scintilla/lexers/LexMarkdown.cpp + ../scintilla/lexers/LexMatlab.cpp + ../scintilla/lexers/LexMaxima.cpp + ../scintilla/lexers/LexMetapost.cpp + ../scintilla/lexers/LexModula.cpp + ../scintilla/lexers/LexMySQL.cpp + ../scintilla/lexers/LexNimrod.cpp + ../scintilla/lexers/LexNsis.cpp + ../scintilla/lexers/LexNull.cpp + ../scintilla/lexers/LexOScript.cpp + ../scintilla/lexers/LexOpal.cpp + ../scintilla/lexers/LexPB.cpp + ../scintilla/lexers/LexPLM.cpp + ../scintilla/lexers/LexPO.cpp + ../scintilla/lexers/LexPOV.cpp + ../scintilla/lexers/LexPS.cpp + ../scintilla/lexers/LexPascal.cpp + ../scintilla/lexers/LexPerl.cpp + ../scintilla/lexers/LexPowerPro.cpp + ../scintilla/lexers/LexPowerShell.cpp + ../scintilla/lexers/LexProgress.cpp + ../scintilla/lexers/LexProps.cpp + ../scintilla/lexers/LexPython.cpp + ../scintilla/lexers/LexR.cpp + ../scintilla/lexers/LexRebol.cpp + ../scintilla/lexers/LexRegistry.cpp + ../scintilla/lexers/LexRuby.cpp + ../scintilla/lexers/LexRust.cpp + ../scintilla/lexers/LexSAS.cpp + ../scintilla/lexers/LexSML.cpp + ../scintilla/lexers/LexSQL.cpp + ../scintilla/lexers/LexSTTXT.cpp + ../scintilla/lexers/LexScriptol.cpp + ../scintilla/lexers/LexSmalltalk.cpp + ../scintilla/lexers/LexSorcus.cpp + ../scintilla/lexers/LexSpecman.cpp + ../scintilla/lexers/LexSpice.cpp + ../scintilla/lexers/LexStata.cpp + ../scintilla/lexers/LexTACL.cpp + ../scintilla/lexers/LexTADS3.cpp + ../scintilla/lexers/LexTAL.cpp + ../scintilla/lexers/LexTCL.cpp + ../scintilla/lexers/LexTCMD.cpp + ../scintilla/lexers/LexTeX.cpp + ../scintilla/lexers/LexTxt2tags.cpp + ../scintilla/lexers/LexVB.cpp + ../scintilla/lexers/LexVHDL.cpp + ../scintilla/lexers/LexVerilog.cpp + ../scintilla/lexers/LexVisualProlog.cpp + ../scintilla/lexers/LexYAML.cpp + ../scintilla/lexlib/Accessor.cpp ../scintilla/lexlib/Accessor.h + ../scintilla/lexlib/CharacterCategory.cpp ../scintilla/lexlib/CharacterCategory.h + ../scintilla/lexlib/CharacterSet.cpp ../scintilla/lexlib/CharacterSet.h + ../scintilla/lexlib/DefaultLexer.cpp ../scintilla/lexlib/DefaultLexer.h + ../scintilla/lexlib/LexAccessor.h + ../scintilla/lexlib/LexerBase.cpp ../scintilla/lexlib/LexerBase.h + ../scintilla/lexlib/LexerModule.cpp ../scintilla/lexlib/LexerModule.h + ../scintilla/lexlib/LexerNoExceptions.cpp ../scintilla/lexlib/LexerNoExceptions.h + ../scintilla/lexlib/LexerSimple.cpp ../scintilla/lexlib/LexerSimple.h + ../scintilla/lexlib/OptionSet.h + ../scintilla/lexlib/PropSetSimple.cpp ../scintilla/lexlib/PropSetSimple.h + ../scintilla/lexlib/SparseState.h + ../scintilla/lexlib/StringCopy.h + ../scintilla/lexlib/StyleContext.cpp ../scintilla/lexlib/StyleContext.h + ../scintilla/lexlib/SubStyles.h + ../scintilla/lexlib/WordList.cpp ../scintilla/lexlib/WordList.h + ../scintilla/src/AutoComplete.cpp ../scintilla/src/AutoComplete.h + ../scintilla/src/CallTip.cpp ../scintilla/src/CallTip.h + ../scintilla/src/CaseConvert.cpp ../scintilla/src/CaseConvert.h + ../scintilla/src/CaseFolder.cpp ../scintilla/src/CaseFolder.h + ../scintilla/src/Catalogue.cpp ../scintilla/src/Catalogue.h + ../scintilla/src/CellBuffer.cpp ../scintilla/src/CellBuffer.h + ../scintilla/src/CharClassify.cpp ../scintilla/src/CharClassify.h + ../scintilla/src/ContractionState.cpp ../scintilla/src/ContractionState.h + ../scintilla/src/DBCS.cpp ../scintilla/src/DBCS.h + ../scintilla/src/Decoration.cpp ../scintilla/src/Decoration.h + ../scintilla/src/Document.cpp ../scintilla/src/Document.h + ../scintilla/src/EditModel.cpp ../scintilla/src/EditModel.h + ../scintilla/src/EditView.cpp ../scintilla/src/EditView.h + ../scintilla/src/Editor.cpp ../scintilla/src/Editor.h + ../scintilla/src/ElapsedPeriod.h + ../scintilla/src/ExternalLexer.cpp ../scintilla/src/ExternalLexer.h + ../scintilla/src/FontQuality.h + ../scintilla/src/Indicator.cpp ../scintilla/src/Indicator.h + ../scintilla/src/IntegerRectangle.h + ../scintilla/src/KeyMap.cpp ../scintilla/src/KeyMap.h + ../scintilla/src/LineMarker.cpp ../scintilla/src/LineMarker.h + ../scintilla/src/MarginView.cpp ../scintilla/src/MarginView.h + ../scintilla/src/Partitioning.h + ../scintilla/src/PerLine.cpp ../scintilla/src/PerLine.h + ../scintilla/src/Position.h + ../scintilla/src/PositionCache.cpp ../scintilla/src/PositionCache.h + ../scintilla/src/RESearch.cpp ../scintilla/src/RESearch.h + ../scintilla/src/RunStyles.cpp ../scintilla/src/RunStyles.h + ../scintilla/src/ScintillaBase.cpp ../scintilla/src/ScintillaBase.h + ../scintilla/src/Selection.cpp ../scintilla/src/Selection.h + ../scintilla/src/SparseVector.h + ../scintilla/src/SplitVector.h + ../scintilla/src/Style.cpp ../scintilla/src/Style.h + ../scintilla/src/UniConversion.cpp ../scintilla/src/UniConversion.h + ../scintilla/src/UniqueString.h + ../scintilla/src/ViewStyle.cpp ../scintilla/src/ViewStyle.h + ../scintilla/src/XPM.cpp ../scintilla/src/XPM.h + InputMethod.cpp + ListBoxQt.cpp ListBoxQt.h + MacPasteboardMime.cpp + PlatQt.cpp + Qsci/qsciabstractapis.h + Qsci/qsciapis.h + Qsci/qscicommand.h + Qsci/qscicommandset.h + Qsci/qscidocument.h + Qsci/qsciglobal.h + Qsci/qscilexer.h + Qsci/qscilexerasm.h + Qsci/qscilexeravs.h + Qsci/qscilexerbash.h + Qsci/qscilexerbatch.h + Qsci/qscilexercmake.h + Qsci/qscilexercoffeescript.h + Qsci/qscilexercpp.h + Qsci/qscilexercsharp.h + Qsci/qscilexercss.h + Qsci/qscilexercustom.h + Qsci/qscilexerd.h + Qsci/qscilexerdiff.h + Qsci/qscilexeredifact.h + Qsci/qscilexerfortran.h + Qsci/qscilexerfortran77.h + Qsci/qscilexerhex.h + Qsci/qscilexerhtml.h + Qsci/qscilexeridl.h + Qsci/qscilexerintelhex.h + Qsci/qscilexerjava.h + Qsci/qscilexerjavascript.h + Qsci/qscilexerjson.h + Qsci/qscilexerlua.h + Qsci/qscilexermakefile.h + Qsci/qscilexermarkdown.h + Qsci/qscilexermasm.h + Qsci/qscilexermatlab.h + Qsci/qscilexernasm.h + Qsci/qscilexeroctave.h + Qsci/qscilexerpascal.h + Qsci/qscilexerperl.h + Qsci/qscilexerpo.h + Qsci/qscilexerpostscript.h + Qsci/qscilexerpov.h + Qsci/qscilexerproperties.h + Qsci/qscilexerpython.h + Qsci/qscilexerruby.h + Qsci/qscilexerspice.h + Qsci/qscilexersql.h + Qsci/qscilexersrec.h + Qsci/qscilexertcl.h + Qsci/qscilexertekhex.h + Qsci/qscilexertex.h + Qsci/qscilexerverilog.h + Qsci/qscilexervhdl.h + Qsci/qscilexerxml.h + Qsci/qscilexeryaml.h + Qsci/qscimacro.h + Qsci/qsciscintilla.h + Qsci/qsciscintillabase.h + Qsci/qscistyle.h + Qsci/qscistyledtext.h + Qsci/qsciprinter.h + SciAccessibility.cpp SciAccessibility.h + SciClasses.cpp SciClasses.h + ScintillaQt.cpp ScintillaQt.h + qsciabstractapis.cpp + qsciapis.cpp + qscicommand.cpp + qscicommandset.cpp + qscidocument.cpp + qscilexer.cpp + qscilexerasm.cpp + qscilexeravs.cpp + qscilexerbash.cpp + qscilexerbatch.cpp + qscilexercmake.cpp + qscilexercoffeescript.cpp + qscilexercpp.cpp + qscilexercsharp.cpp + qscilexercss.cpp + qscilexercustom.cpp + qscilexerd.cpp + qscilexerdiff.cpp + qscilexeredifact.cpp + qscilexerfortran.cpp + qscilexerfortran77.cpp + qscilexerhex.cpp + qscilexerhtml.cpp + qscilexeridl.cpp + qscilexerintelhex.cpp + qscilexerjava.cpp + qscilexerjavascript.cpp + qscilexerjson.cpp + qscilexerlua.cpp + qscilexermakefile.cpp + qscilexermarkdown.cpp + qscilexermasm.cpp + qscilexermatlab.cpp + qscilexernasm.cpp + qscilexeroctave.cpp + qscilexerpascal.cpp + qscilexerperl.cpp + qscilexerpo.cpp + qscilexerpostscript.cpp + qscilexerpov.cpp + qscilexerproperties.cpp + qscilexerpython.cpp + qscilexerruby.cpp + qscilexerspice.cpp + qscilexersql.cpp + qscilexersrec.cpp + qscilexertcl.cpp + qscilexertekhex.cpp + qscilexertex.cpp + qscilexerverilog.cpp + qscilexervhdl.cpp + qscilexerxml.cpp + qscilexeryaml.cpp + qscimacro.cpp + qsciscintilla.cpp + qsciscintillabase.cpp + qscistyle.cpp + qscistyledtext.cpp + qsciprinter.cpp +) + +add_library(qscintilla2 ${SRC_LIST}) +target_include_directories(qscintilla2 PRIVATE ../scintilla/include ../scintilla/lexlib ../scintilla/src) +target_include_directories(qscintilla2 INTERFACE .) + +target_link_libraries(qscintilla2 ${QT_MAJOR}::Widgets ${QT_MAJOR}::PrintSupport) + +if (APPLE) + target_link_libraries(qscintilla2 ${QT_MAJOR}::MacExtras) +endif() + +add_library(QScintilla::QScintilla ALIAS qscintilla2) diff --git a/libs/qscintilla/Qt4Qt5/InputMethod.cpp b/libs/qscintilla_2.14.1/Qt5Qt6/InputMethod.cpp similarity index 88% rename from libs/qscintilla/Qt4Qt5/InputMethod.cpp rename to libs/qscintilla_2.14.1/Qt5Qt6/InputMethod.cpp index f4ba7fc42..afce5a143 100644 --- a/libs/qscintilla/Qt4Qt5/InputMethod.cpp +++ b/libs/qscintilla_2.14.1/Qt5Qt6/InputMethod.cpp @@ -1,4 +1,4 @@ -// Copyright (c) 2017 Riverbank Computing Limited +// Copyright (c) 2021 Riverbank Computing Limited // Copyright (c) 2011 Archaeopteryx Software, Inc. // Copyright (c) 1990-2011, Scientific Toolworks, Inc. // @@ -137,44 +137,45 @@ void QsciScintillaBase::inputMethodEvent(QInputMethodEvent *event) return; } + bool initialCompose = false; if (sci->pdoc->TentativeActive()) { sci->pdoc->TentativeUndo(); } else { // No tentative undo means start of this composition so // Fill in any virtual spaces. - sci->ClearBeforeTentativeStart(); + initialCompose = true; } sci->view.imeCaretBlockOverride = false; if (!event->commitString().isEmpty()) { const QString commitStr = event->commitString(); - const unsigned int commitStrLen = commitStr.length(); + const int commitStrLen = commitStr.length(); - for (unsigned int i = 0; i < commitStrLen;) { - const unsigned int ucWidth = commitStr.at(i).isHighSurrogate() ? 2 : 1; + for (int i = 0; i < commitStrLen;) { + const int ucWidth = commitStr.at(i).isHighSurrogate() ? 2 : 1; const QString oneCharUTF16 = commitStr.mid(i, ucWidth); const QByteArray oneChar = textAsBytes(oneCharUTF16); const int oneCharLen = oneChar.length(); - sci->AddCharUTF(oneChar.data(), oneCharLen); + sci->AddCharUTF(oneChar.data(), oneChar.length()); i += ucWidth; } } else if (!event->preeditString().isEmpty()) { const QString preeditStr = event->preeditString(); - const unsigned int preeditStrLen = preeditStr.length(); - if ((preeditStrLen == 0) || (preeditStrLen > MAXLENINPUTIME)) { + const int preeditStrLen = preeditStr.length(); + if (preeditStrLen == 0) { sci->ShowCaretAtCurrentPosition(); return; } + if (initialCompose) + sci->ClearBeforeTentativeStart(); sci->pdoc->TentativeStart(); // TentativeActive() from now on. std::vector imeIndicator = MapImeIndicators(event); - const bool recording = sci->recordingMacro; - sci->recordingMacro = false; for (unsigned int i = 0; i < preeditStrLen;) { const unsigned int ucWidth = preeditStr.at(i).isHighSurrogate() ? 2 : 1; const QString oneCharUTF16 = preeditStr.mid(i, ucWidth); @@ -186,7 +187,6 @@ void QsciScintillaBase::inputMethodEvent(QInputMethodEvent *event) DrawImeIndicator(sci, imeIndicator[i], oneCharLen); i += ucWidth; } - sci->recordingMacro = recording; // Move IME carets. int imeCaretPos = GetImeCaretPos(event); @@ -205,7 +205,7 @@ void QsciScintillaBase::inputMethodEvent(QInputMethodEvent *event) sci->view.imeCaretBlockOverride = true; } - // Set candidate box position for Qt::ImMicroFocus. + // Set candidate box position for Qt::ImCursorRectangle. preeditPos = sci->CurrentPosition(); sci->EnsureCaretVisible(); updateMicroFocus(); @@ -219,12 +219,10 @@ QVariant QsciScintillaBase::inputMethodQuery(Qt::InputMethodQuery query) const int line = SendScintilla(SCI_LINEFROMPOSITION, pos); switch (query) { -#if QT_VERSION >= 0x050000 case Qt::ImHints: return QWidget::inputMethodQuery(query); -#endif - case Qt::ImMicroFocus: + case Qt::ImCursorRectangle: { int startPos = (preeditPos >= 0) ? preeditPos : pos; Scintilla::Point pt = sci->LocationFromPosition(startPos); @@ -256,25 +254,17 @@ QVariant QsciScintillaBase::inputMethodQuery(Qt::InputMethodQuery query) const int paraEnd = sci->pdoc->ParaDown(pos); QVarLengthArray buffer(paraEnd - paraStart + 1); - Sci_CharacterRange charRange; - charRange.cpMin = paraStart; - charRange.cpMax = paraEnd; - - Sci_TextRange textRange; - textRange.chrg = charRange; - textRange.lpstrText = buffer.data(); - - SendScintilla(SCI_GETTEXTRANGE, 0, (sptr_t)&textRange); + SendScintilla(SCI_GETTEXTRANGE, paraStart, paraEnd, buffer.data()); - return bytesAsText(buffer.constData()); + return bytesAsText(buffer.constData(), buffer.size()); } case Qt::ImCurrentSelection: { - QVarLengthArray buffer(SendScintilla(SCI_GETSELTEXT)); + QVarLengthArray buffer(SendScintilla(SCI_GETSELTEXT) + 1); SendScintilla(SCI_GETSELTEXT, 0, (sptr_t)buffer.data()); - return bytesAsText(buffer.constData()); + return bytesAsText(buffer.constData(), buffer.size() - 1); } default: diff --git a/libs/qscintilla/Qt4Qt5/ListBoxQt.cpp b/libs/qscintilla_2.14.1/Qt5Qt6/ListBoxQt.cpp similarity index 91% rename from libs/qscintilla/Qt4Qt5/ListBoxQt.cpp rename to libs/qscintilla_2.14.1/Qt5Qt6/ListBoxQt.cpp index c4db45ce1..f67e581c1 100644 --- a/libs/qscintilla/Qt4Qt5/ListBoxQt.cpp +++ b/libs/qscintilla_2.14.1/Qt5Qt6/ListBoxQt.cpp @@ -1,7 +1,7 @@ // This module implements the specialisation of QListBox that handles the // Scintilla double-click callback. // -// Copyright (c) 2019 Riverbank Computing Limited +// Copyright (c) 2023 Riverbank Computing Limited // // This file is part of QScintilla. // @@ -23,6 +23,8 @@ #include +#include + #include "SciClasses.h" #include "Qsci/qsciscintilla.h" @@ -79,10 +81,22 @@ Scintilla::PRectangle QsciListBoxQt::GetDesiredRect() if (slb) { - QSize sh = slb->sizeHint(); + int rows = slb->count(); + + if (rows == 0 || rows > visible_rows) + rows = visible_rows; + + int row_height = slb->sizeHintForRow(0); + int height = (rows * row_height) + (2 * slb->frameWidth()); + + int width = slb->sizeHintForColumn(0) + (2 * slb->frameWidth()); + + if (slb->count() > rows) + width += QApplication::style()->pixelMetric( + QStyle::PM_ScrollBarExtent); - rc.right = sh.width(); - rc.bottom = sh.height(); + rc.right = width; + rc.bottom = height; } return rc; @@ -243,11 +257,7 @@ void QsciListBoxQt::RegisterRGBAImage(int type, int, int, { QPixmap pm; -#if QT_VERSION >= 0x040700 pm.convertFromImage(*reinterpret_cast(pixelsImage)); -#else - pm = QPixmap::fromImage(*reinterpret_cast(pixelsImage)); -#endif xset.insert(type, pm); } diff --git a/libs/qscintilla/Qt4Qt5/ListBoxQt.h b/libs/qscintilla_2.14.1/Qt5Qt6/ListBoxQt.h similarity index 97% rename from libs/qscintilla/Qt4Qt5/ListBoxQt.h rename to libs/qscintilla_2.14.1/Qt5Qt6/ListBoxQt.h index e4bc7711d..ffcc17a06 100644 --- a/libs/qscintilla/Qt4Qt5/ListBoxQt.h +++ b/libs/qscintilla_2.14.1/Qt5Qt6/ListBoxQt.h @@ -1,7 +1,7 @@ // This defines the specialisation of QListBox that handles the Scintilla // double-click callback. // -// Copyright (c) 2019 Riverbank Computing Limited +// Copyright (c) 2023 Riverbank Computing Limited // // This file is part of QScintilla. // diff --git a/libs/qscintilla/Qt4Qt5/MacPasteboardMime.cpp b/libs/qscintilla_2.14.1/Qt5Qt6/MacPasteboardMime.cpp similarity index 91% rename from libs/qscintilla/Qt4Qt5/MacPasteboardMime.cpp rename to libs/qscintilla_2.14.1/Qt5Qt6/MacPasteboardMime.cpp index d1cfca97f..bea06b50c 100644 --- a/libs/qscintilla/Qt4Qt5/MacPasteboardMime.cpp +++ b/libs/qscintilla_2.14.1/Qt5Qt6/MacPasteboardMime.cpp @@ -1,8 +1,8 @@ // This module implements part of the support for rectangular selections on -// OS/X. It is a separate file to avoid clashes between OS/X and Scintilla +// macOS. It is a separate file to avoid clashes between macOS and Scintilla // data types. // -// Copyright (c) 2019 Riverbank Computing Limited +// Copyright (c) 2023 Riverbank Computing Limited // // This file is part of QScintilla. // @@ -22,7 +22,7 @@ #include -#if (QT_VERSION >= 0x040200 && QT_VERSION < 0x050000 && defined(Q_OS_MAC)) || (QT_VERSION >= 0x050200 && defined(Q_OS_OSX)) +#if QT_VERSION < 0x060000 && defined(Q_OS_OSX) #include #include diff --git a/libs/qscintilla/Qt4Qt5/PlatQt.cpp b/libs/qscintilla_2.14.1/Qt5Qt6/PlatQt.cpp similarity index 92% rename from libs/qscintilla/Qt4Qt5/PlatQt.cpp rename to libs/qscintilla_2.14.1/Qt5Qt6/PlatQt.cpp index 6c3127b59..073c5fd01 100644 --- a/libs/qscintilla/Qt4Qt5/PlatQt.cpp +++ b/libs/qscintilla_2.14.1/Qt5Qt6/PlatQt.cpp @@ -1,6 +1,6 @@ // This module implements the portability layer for the Qt port of Scintilla. // -// Copyright (c) 2019 Riverbank Computing Limited +// Copyright (c) 2023 Riverbank Computing Limited // // This file is part of QScintilla. // @@ -25,17 +25,20 @@ #include #include #include -#include #include #include -#include #include #include #include +#include #include #include #include +#if !defined(Q_OS_WASM) +#include +#endif + #include "Platform.h" #include "XPM.h" @@ -95,48 +98,34 @@ void Font::Create(const FontParameters &fp) strategy = QFont::PreferDefault; } -#if defined(Q_OS_MAC) && QT_VERSION < 0x050000 -#if QT_VERSION >= 0x040700 - strategy = static_cast(strategy | QFont::ForceIntegerMetrics); + f->setStyleStrategy(strategy); + f->setFamily(fp.faceName); + f->setPointSizeF(fp.size); + f->setItalic(fp.italic); + + // Scintilla weights are between 1 and 100, Qt5 weights are between 0 and + // 99, and Qt6 weights match Scintilla. A negative weight is interpreted + // as an explicit Qt weight (ie. the back door). +#if QT_VERSION >= 0x060000 + QFont::Weight qt_weight = static_cast(abs(fp.weight)); #else -#warning "Correct handling of QFont metrics requires Qt v4.7.0 or later" -#endif + int qt_weight; + + if (fp.weight < 0) + qt_weight = -fp.weight; + else if (fp.weight <= 200) + qt_weight = QFont::Light; + else if (fp.weight <= QsciScintillaBase::SC_WEIGHT_NORMAL) + qt_weight = QFont::Normal; + else if (fp.weight <= 600) + qt_weight = QFont::DemiBold; + else if (fp.weight <= 850) + qt_weight = QFont::Bold; + else + qt_weight = QFont::Black; #endif - f->setStyleStrategy(strategy); - - // If name of the font begins with a '-', assume, that it is an XLFD. - if (fp.faceName[0] == '-') - { - f->setRawName(fp.faceName); - } - else - { - f->setFamily(fp.faceName); - f->setPointSizeF(fp.size); - - // See if the Qt weight has been passed via the back door. Otherwise - // map Scintilla weights to Qt weights ensuring that the SC_WEIGHT_* - // values get mapped to the correct QFont::Weight values. - int qt_weight; - - if (fp.weight < 0) - qt_weight = -fp.weight; - else if (fp.weight <= 200) - qt_weight = QFont::Light; - else if (fp.weight <= QsciScintillaBase::SC_WEIGHT_NORMAL) - qt_weight = QFont::Normal; - else if (fp.weight <= 600) - qt_weight = QFont::DemiBold; - else if (fp.weight <= 850) - qt_weight = QFont::Bold; - else - qt_weight = QFont::Black; - - f->setWeight(qt_weight); - - f->setItalic(fp.italic); - } + f->setWeight(qt_weight); fid = f; } @@ -275,14 +264,9 @@ void SurfaceImpl::InitPixMap(int width, int height, Surface *sid, WindowID wid) { Release(); -#if QT_VERSION >= 0x050100 int dpr = PWindow(wid)->devicePixelRatio(); QPixmap *pixmap = new QPixmap(width * dpr, height * dpr); pixmap->setDevicePixelRatio(dpr); -#else - QPixmap *pixmap = new QPixmap(width, height); - Q_UNUSED(wid); -#endif pd = pixmap; @@ -396,8 +380,9 @@ void SurfaceImpl::RoundedRectangle(PRectangle rc, ColourDesired fore, painter->setPen(convertQColor(fore)); painter->setBrush(convertQColor(back)); - painter->drawRoundRect( - QRectF(rc.left, rc.top, rc.right - rc.left, rc.bottom - rc.top)); + painter->drawRoundedRect( + QRectF(rc.left, rc.top, rc.right - rc.left, rc.bottom - rc.top), + 25, 25, Qt::RelativeSize); } void SurfaceImpl::AlphaRectangle(PRectangle rc, int cornerSize, @@ -420,9 +405,9 @@ void SurfaceImpl::AlphaRectangle(PRectangle rc, int cornerSize, const int radius = (cornerSize ? 25 : 0); - painter->drawRoundRect( + painter->drawRoundedRect( QRectF(rc.left, rc.top, rc.right - rc.left, rc.bottom - rc.top), - radius, radius); + radius, radius, Qt::RelativeSize); } void SurfaceImpl::GradientRectangle(PRectangle rc, @@ -485,14 +470,12 @@ void SurfaceImpl::Copy(PRectangle rc, Point from, Surface &surfaceSource) qreal width = rc.right - rc.left; qreal height = rc.bottom - rc.top; -#if QT_VERSION >= 0x050100 qreal dpr = pm->devicePixelRatio(); x *= dpr; y *= dpr; width *= dpr; height *= dpr; -#endif painter->drawPixmap(QPointF(rc.left, rc.top), *pm, QRectF(x, y, width, height)); @@ -630,7 +613,7 @@ void SurfaceImpl::MeasureWidths(Font &font_, const char *s, int len, XYPOSITION SurfaceImpl::WidthText(Font &font_, const char *s, int len) { - return metrics(font_).width(convertText(s, len)); + return metrics(font_).horizontalAdvance(convertText(s, len)); } @@ -656,11 +639,7 @@ XYPOSITION SurfaceImpl::Height(Font &font_) XYPOSITION SurfaceImpl::AverageCharWidth(Font &font_) { -#if QT_VERSION >= 0x040200 return metrics(font_).averageCharWidth(); -#else - return metrics(font_).width('n'); -#endif } void SurfaceImpl::SetClip(PRectangle rc) @@ -852,7 +831,7 @@ void Window::SetCursor(Cursor curs) PRectangle Window::GetMonitorRect(Point pt) { QPoint qpt = PWindow(wid)->mapToGlobal(QPoint(pt.x, pt.y)); - QRect qr = QApplication::desktop()->availableGeometry(qpt); + QRect qr = QApplication::screenAt(qpt)->availableGeometry(); qpt = PWindow(wid)->mapFromGlobal(qr.topLeft()); return PRectangle(qpt.x(), qpt.y(), qpt.x() + qr.width(), qpt.y() + qr.height()); @@ -892,31 +871,43 @@ class DynamicLibraryImpl : public DynamicLibrary public: DynamicLibraryImpl(const char *modulePath) { +#if !defined(Q_OS_WASM) m = new QLibrary(modulePath); m->load(); +#endif } virtual ~DynamicLibraryImpl() { +#if !defined(Q_OS_WASM) if (m) delete m; +#endif } virtual Function FindFunction(const char *name) { +#if !defined(Q_OS_WASM) if (m) return (Function)m->resolve(name); +#endif return 0; } virtual bool IsValid() { +#if !defined(Q_OS_WASM) return m && m->isLoaded(); +#else + return false; +#endif } private: +#if !defined(Q_OS_WASM) QLibrary* m; +#endif }; DynamicLibrary *DynamicLibrary::Load(const char *modulePath) diff --git a/libs/qscintilla/Qt4Qt5/Qsci/qsciabstractapis.h b/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qsciabstractapis.h similarity index 98% rename from libs/qscintilla/Qt4Qt5/Qsci/qsciabstractapis.h rename to libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qsciabstractapis.h index 38b6133af..76e2a341c 100644 --- a/libs/qscintilla/Qt4Qt5/Qsci/qsciabstractapis.h +++ b/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qsciabstractapis.h @@ -1,6 +1,6 @@ // This module defines interface to the QsciAbstractAPIs class. // -// Copyright (c) 2019 Riverbank Computing Limited +// Copyright (c) 2023 Riverbank Computing Limited // // This file is part of QScintilla. // diff --git a/libs/qscintilla/Qt4Qt5/Qsci/qsciapis.h b/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qsciapis.h similarity index 99% rename from libs/qscintilla/Qt4Qt5/Qsci/qsciapis.h rename to libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qsciapis.h index c89ebe7a3..bc1eb68b2 100644 --- a/libs/qscintilla/Qt4Qt5/Qsci/qsciapis.h +++ b/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qsciapis.h @@ -1,6 +1,6 @@ // This module defines interface to the QsciAPIs class. // -// Copyright (c) 2019 Riverbank Computing Limited +// Copyright (c) 2023 Riverbank Computing Limited // // This file is part of QScintilla. // diff --git a/libs/qscintilla/Qt4Qt5/Qsci/qscicommand.h b/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscicommand.h similarity index 99% rename from libs/qscintilla/Qt4Qt5/Qsci/qscicommand.h rename to libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscicommand.h index 4b68c9f65..563fb562e 100644 --- a/libs/qscintilla/Qt4Qt5/Qsci/qscicommand.h +++ b/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscicommand.h @@ -1,6 +1,6 @@ // This defines the interface to the QsciCommand class. // -// Copyright (c) 2019 Riverbank Computing Limited +// Copyright (c) 2023 Riverbank Computing Limited // // This file is part of QScintilla. // diff --git a/libs/qscintilla/Qt4Qt5/Qsci/qscicommandset.h b/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscicommandset.h similarity index 97% rename from libs/qscintilla/Qt4Qt5/Qsci/qscicommandset.h rename to libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscicommandset.h index e19591911..85bb2bc36 100644 --- a/libs/qscintilla/Qt4Qt5/Qsci/qscicommandset.h +++ b/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscicommandset.h @@ -1,6 +1,6 @@ // This defines the interface to the QsciCommandSet class. // -// Copyright (c) 2019 Riverbank Computing Limited +// Copyright (c) 2023 Riverbank Computing Limited // // This file is part of QScintilla. // diff --git a/libs/qscintilla/Qt4Qt5/Qsci/qscidocument.h b/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscidocument.h similarity index 96% rename from libs/qscintilla/Qt4Qt5/Qsci/qscidocument.h rename to libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscidocument.h index feba21a0c..965ebb018 100644 --- a/libs/qscintilla/Qt4Qt5/Qsci/qscidocument.h +++ b/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscidocument.h @@ -1,6 +1,6 @@ // This defines the interface to the QsciDocument class. // -// Copyright (c) 2019 Riverbank Computing Limited +// Copyright (c) 2023 Riverbank Computing Limited // // This file is part of QScintilla. // diff --git a/libs/qscintilla/Qt4Qt5/Qsci/qsciglobal.h b/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qsciglobal.h similarity index 84% rename from libs/qscintilla/Qt4Qt5/Qsci/qsciglobal.h rename to libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qsciglobal.h index 14fe5483f..215088106 100644 --- a/libs/qscintilla/Qt4Qt5/Qsci/qsciglobal.h +++ b/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qsciglobal.h @@ -1,6 +1,6 @@ // This module defines various things common to all of the Scintilla Qt port. // -// Copyright (c) 2019 Riverbank Computing Limited +// Copyright (c) 2023 Riverbank Computing Limited // // This file is part of QScintilla. // @@ -24,8 +24,14 @@ #include -#define QSCINTILLA_VERSION 0x020b01 -#define QSCINTILLA_VERSION_STR "2.11.1" +#define QSCINTILLA_VERSION 0x020e01 +#define QSCINTILLA_VERSION_STR "2.14.1" + + +// We only support Qt v5.11 and later. +#if QT_VERSION < 0x050b00 +#error "Qt v5.11.0 or later is required" +#endif // Define QSCINTILLA_MAKE_DLL to create a QScintilla shared library, or diff --git a/libs/qscintilla/Qt4Qt5/Qsci/qscilexer.h b/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexer.h similarity index 97% rename from libs/qscintilla/Qt4Qt5/Qsci/qscilexer.h rename to libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexer.h index e05cc21d5..fdb088a37 100644 --- a/libs/qscintilla/Qt4Qt5/Qsci/qscilexer.h +++ b/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexer.h @@ -1,6 +1,6 @@ // This defines the interface to the QsciLexer class. // -// Copyright (c) 2019 Riverbank Computing Limited +// Copyright (c) 2023 Riverbank Computing Limited // // This file is part of QScintilla. // @@ -318,6 +318,12 @@ public slots: //! virtual bool writeProperties(QSettings &qs,const QString &prefix) const; + //! \internal Convert a QString to encoded bytes. + QByteArray textAsBytes(const QString &text) const; + + //! \internal Convert encoded bytes to a QString. + QString bytesAsText(const char *bytes, int size) const; + private: struct StyleData { QFont font; diff --git a/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexerasm.h b/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexerasm.h new file mode 100644 index 000000000..bedb72024 --- /dev/null +++ b/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexerasm.h @@ -0,0 +1,201 @@ +// This defines the interface to the abstract QsciLexerAsm class. +// +// Copyright (c) 2023 Riverbank Computing Limited +// +// This file is part of QScintilla. +// +// This file may be used under the terms of the GNU General Public License +// version 3.0 as published by the Free Software Foundation and appearing in +// the file LICENSE included in the packaging of this file. Please review the +// following information to ensure the GNU General Public License version 3.0 +// requirements will be met: http://www.gnu.org/copyleft/gpl.html. +// +// If you do not wish to use this file under the terms of the GPL version 3.0 +// then you may purchase a commercial license. For more information contact +// info@riverbankcomputing.com. +// +// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + + +#ifndef QSCILEXERASM_H +#define QSCILEXERASM_H + +#include +#include + +#include +#include + + +//! \brief The abstract QsciLexerAsm class encapsulates the Scintilla Asm +//! lexer. +class QSCINTILLA_EXPORT QsciLexerAsm : public QsciLexer +{ + Q_OBJECT + +public: + //! This enum defines the meanings of the different styles used by the + //! Asm lexer. + enum { + //! The default. + Default = 0, + + //! A comment. + Comment = 1, + + //! A number. + Number = 2, + + //! A double-quoted string. + DoubleQuotedString = 3, + + //! An operator. + Operator = 4, + + //! An identifier. + Identifier = 5, + + //! A CPU instruction. + CPUInstruction = 6, + + //! An FPU instruction. + FPUInstruction = 7, + + //! A register. + Register = 8, + + //! A directive. + Directive = 9, + + //! A directive operand. + DirectiveOperand = 11, + + //! A block comment. + BlockComment = 12, + + //! A single-quoted string. + SingleQuotedString = 13, + + //! The end of a line where a string is not closed. + UnclosedString = 14, + + //! An extended instruction. + ExtendedInstruction = 16, + + //! A comment directive. + CommentDirective = 17, + }; + + //! Construct a QsciLexerAsm with parent \a parent. \a parent is + //! typically the QsciScintilla instance. + QsciLexerAsm(QObject *parent = 0); + + //! Destroys the QsciLexerAsm instance. + virtual ~QsciLexerAsm(); + + //! Returns the foreground colour of the text for style number \a style. + QColor defaultColor(int style) const; + + //! Returns the end-of-line fill for style number \a style. + bool defaultEolFill(int style) const; + + //! Returns the font for style number \a style. + QFont defaultFont(int style) const; + + //! Returns the background colour of the text for style number \a style. + //! + //! \sa defaultColor() + QColor defaultPaper(int style) const; + + //! Returns the set of keywords for the keyword set \a set recognised + //! by the lexer as a space separated string. Set 1 is normally used for + //! CPU instructions. Set 2 is normally used for FPU instructions. Set 3 + //! is normally used for register names. Set 4 is normally used for + //! directives. Set 5 is normally used for directive operands. Set 6 is + //! normally used for extended instructions. + const char *keywords(int set) const; + + //! Returns the descriptive name for style number \a style. If the + //! style is invalid for this language then an empty QString is returned. + //! This is intended to be used in user preference dialogs. + QString description(int style) const; + + //! Causes all properties to be refreshed by emitting the propertyChanged() + //! signal as required. + void refreshProperties(); + + //! Returns true if multi-line comment blocks can be folded. + //! + //! \sa setFoldComments() + bool foldComments() const; + + //! Returns true if trailing blank lines are included in a fold block. + //! + //! \sa setFoldCompact() + bool foldCompact() const; + + //! Returns the delimiter used by the COMMENT directive. + //! + //! \sa setCommentDelimiter() + QChar commentDelimiter() const; + + //! Returns true if syntax-based folding is enabled. + //! + //! \sa setFoldSyntaxBased() + bool foldSyntaxBased() const; + +public slots: + //! If \a fold is true then multi-line comment blocks can be folded. + //! The default is true. + //! + //! \sa foldComments() + virtual void setFoldComments(bool fold); + + //! If \a fold is true then trailing blank lines are included in a fold + //! block. The default is true. + //! + //! \sa foldCompact() + virtual void setFoldCompact(bool fold); + + //! \a delimiter is the character used for the COMMENT directive's + //! delimiter. The default is '~'. + //! + //! \sa commentDelimiter() + virtual void setCommentDelimiter(QChar delimeter); + + //! If \a syntax_based is true then syntax-based folding is enabled. The + //! default is true. + //! + //! \sa foldSyntaxBased() + virtual void setFoldSyntaxBased(bool syntax_based); + +protected: + //! The lexer's properties are read from the settings \a qs. \a prefix + //! (which has a trailing '/') should be used as a prefix to the key of + //! each setting. true is returned if there is no error. + //! + bool readProperties(QSettings &qs, const QString &prefix); + + //! The lexer's properties are written to the settings \a qs. + //! \a prefix (which has a trailing '/') should be used as a prefix to + //! the key of each setting. true is returned if there is no error. + //! + bool writeProperties(QSettings &qs, const QString &prefix) const; + +private: + void setCommentProp(); + void setCompactProp(); + void setCommentDelimiterProp(); + void setSyntaxBasedProp(); + + bool fold_comments; + bool fold_compact; + QChar comment_delimiter; + bool fold_syntax_based; + + QsciLexerAsm(const QsciLexerAsm &); + QsciLexerAsm &operator=(const QsciLexerAsm &); +}; + +#endif diff --git a/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexeravs.h b/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexeravs.h new file mode 100644 index 000000000..bea07b923 --- /dev/null +++ b/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexeravs.h @@ -0,0 +1,174 @@ +// This defines the interface to the QsciLexerAVS class. +// +// Copyright (c) 2023 Riverbank Computing Limited +// +// This file is part of QScintilla. +// +// This file may be used under the terms of the GNU General Public License +// version 3.0 as published by the Free Software Foundation and appearing in +// the file LICENSE included in the packaging of this file. Please review the +// following information to ensure the GNU General Public License version 3.0 +// requirements will be met: http://www.gnu.org/copyleft/gpl.html. +// +// If you do not wish to use this file under the terms of the GPL version 3.0 +// then you may purchase a commercial license. For more information contact +// info@riverbankcomputing.com. +// +// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + + +#ifndef QSCILEXERAVS_H +#define QSCILEXERAVS_H + +#include + +#include +#include + + +//! \brief The QsciLexerAVS class encapsulates the Scintilla AVS lexer. +class QSCINTILLA_EXPORT QsciLexerAVS : public QsciLexer +{ + Q_OBJECT + +public: + //! This enum defines the meanings of the different styles used by the + //! AVS lexer. + enum { + //! The default. + Default = 0, + + //! A block comment. + BlockComment = 1, + + //! A nested block comment. + NestedBlockComment = 2, + + //! A line comment. + LineComment = 3, + + //! A number. + Number = 4, + + //! An operator. + Operator = 5, + + //! An identifier + Identifier = 6, + + //! A string. + String = 7, + + //! A triple quoted string. + TripleString = 8, + + //! A keyword (as defined by keyword set number 1).. + Keyword = 9, + + //! A filter (as defined by keyword set number 2). + Filter = 10, + + //! A plugin (as defined by keyword set number 3). + Plugin = 11, + + //! A function (as defined by keyword set number 4). + Function = 12, + + //! A clip property (as defined by keyword set number 5). + ClipProperty = 13, + + //! A keyword defined in keyword set number 6. The class must be + //! sub-classed and re-implement keywords() to make use of this style. + KeywordSet6 = 14 + }; + + //! Construct a QsciLexerAVS with parent \a parent. \a parent is typically + //! the QsciScintilla instance. + QsciLexerAVS(QObject *parent = 0); + + //! Destroys the QsciLexerAVS instance. + virtual ~QsciLexerAVS(); + + //! Returns the name of the language. + const char *language() const; + + //! Returns the name of the lexer. Some lexers support a number of + //! languages. + const char *lexer() const; + + //! \internal Returns the style used for braces for brace matching. + int braceStyle() const; + + //! Returns the string of characters that comprise a word. + const char *wordCharacters() const; + + //! Returns the foreground colour of the text for style number \a style. + //! + //! \sa defaultPaper() + QColor defaultColor(int style) const; + + //! Returns the font for style number \a style. + QFont defaultFont(int style) const; + + //! Returns the set of keywords for the keyword set \a set recognised + //! by the lexer as a space separated string. + const char *keywords(int set) const; + + //! Returns the descriptive name for style number \a style. If the + //! style is invalid for this language then an empty QString is returned. + //! This is intended to be used in user preference dialogs. + QString description(int style) const; + + //! Causes all properties to be refreshed by emitting the propertyChanged() + //! signal as required. + void refreshProperties(); + + //! Returns true if multi-line comment blocks can be folded. + //! + //! \sa setFoldComments() + bool foldComments() const; + + //! Returns true if trailing blank lines are included in a fold block. + //! + //! \sa setFoldCompact() + bool foldCompact() const; + +public slots: + //! If \a fold is true then multi-line comment blocks can be folded. + //! The default is false. + //! + //! \sa foldComments() + virtual void setFoldComments(bool fold); + + //! If \a fold is true then trailing blank lines are included in a fold + //! block. The default is true. + //! + //! \sa foldCompact() + virtual void setFoldCompact(bool fold); + +protected: + //! The lexer's properties are read from the settings \a qs. \a prefix + //! (which has a trailing '/') should be used as a prefix to the key of + //! each setting. true is returned if there is no error. + //! + bool readProperties(QSettings &qs,const QString &prefix); + + //! The lexer's properties are written to the settings \a qs. + //! \a prefix (which has a trailing '/') should be used as a prefix to + //! the key of each setting. true is returned if there is no error. + //! + bool writeProperties(QSettings &qs,const QString &prefix) const; + +private: + void setCommentProp(); + void setCompactProp(); + + bool fold_comments; + bool fold_compact; + + QsciLexerAVS(const QsciLexerAVS &); + QsciLexerAVS &operator=(const QsciLexerAVS &); +}; + +#endif diff --git a/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexerbash.h b/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexerbash.h new file mode 100644 index 000000000..aac7aabd0 --- /dev/null +++ b/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexerbash.h @@ -0,0 +1,178 @@ +// This defines the interface to the QsciLexerBash class. +// +// Copyright (c) 2023 Riverbank Computing Limited +// +// This file is part of QScintilla. +// +// This file may be used under the terms of the GNU General Public License +// version 3.0 as published by the Free Software Foundation and appearing in +// the file LICENSE included in the packaging of this file. Please review the +// following information to ensure the GNU General Public License version 3.0 +// requirements will be met: http://www.gnu.org/copyleft/gpl.html. +// +// If you do not wish to use this file under the terms of the GPL version 3.0 +// then you may purchase a commercial license. For more information contact +// info@riverbankcomputing.com. +// +// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + + +#ifndef QSCILEXERBASH_H +#define QSCILEXERBASH_H + +#include + +#include +#include + + +//! \brief The QsciLexerBash class encapsulates the Scintilla Bash lexer. +class QSCINTILLA_EXPORT QsciLexerBash : public QsciLexer +{ + Q_OBJECT + +public: + //! This enum defines the meanings of the different styles used by the + //! Bash lexer. + enum { + //! The default. + Default = 0, + + //! An error. + Error = 1, + + //! A comment. + Comment = 2, + + //! A number. + Number = 3, + + //! A keyword. + Keyword = 4, + + //! A double-quoted string. + DoubleQuotedString = 5, + + //! A single-quoted string. + SingleQuotedString = 6, + + //! An operator. + Operator = 7, + + //! An identifier + Identifier = 8, + + //! A scalar. + Scalar = 9, + + //! Parameter expansion. + ParameterExpansion = 10, + + //! Backticks. + Backticks = 11, + + //! A here document delimiter. + HereDocumentDelimiter = 12, + + //! A single quoted here document. + SingleQuotedHereDocument = 13 + }; + + //! Construct a QsciLexerBash with parent \a parent. \a parent is + //! typically the QsciScintilla instance. + QsciLexerBash(QObject *parent = 0); + + //! Destroys the QsciLexerBash instance. + virtual ~QsciLexerBash(); + + //! Returns the name of the language. + const char *language() const; + + //! Returns the name of the lexer. Some lexers support a number of + //! languages. + const char *lexer() const; + + //! \internal Returns the style used for braces for brace matching. + int braceStyle() const; + + //! Returns the string of characters that comprise a word. + const char *wordCharacters() const; + + //! Returns the foreground colour of the text for style number \a style. + //! + //! \sa defaultPaper() + QColor defaultColor(int style) const; + + //! Returns the end-of-line fill for style number \a style. + bool defaultEolFill(int style) const; + + //! Returns the font for style number \a style. + QFont defaultFont(int style) const; + + //! Returns the background colour of the text for style number \a style. + //! + //! \sa defaultColor() + QColor defaultPaper(int style) const; + + //! Returns the set of keywords for the keyword set \a set recognised + //! by the lexer as a space separated string. + const char *keywords(int set) const; + + //! Returns the descriptive name for style number \a style. If the + //! style is invalid for this language then an empty QString is returned. + //! This is intended to be used in user preference dialogs. + QString description(int style) const; + + //! Causes all properties to be refreshed by emitting the + //! propertyChanged() signal as required. + void refreshProperties(); + + //! Returns true if multi-line comment blocks can be folded. + //! + //! \sa setFoldComments() + bool foldComments() const; + + //! Returns true if trailing blank lines are included in a fold block. + //! + //! \sa setFoldCompact() + bool foldCompact() const; + +public slots: + //! If \a fold is true then multi-line comment blocks can be folded. + //! The default is false. + //! + //! \sa foldComments() + virtual void setFoldComments(bool fold); + + //! If \a fold is true then trailing blank lines are included in a fold + //! block. The default is true. + //! + //! \sa foldCompact() + virtual void setFoldCompact(bool fold); + +protected: + //! The lexer's properties are read from the settings \a qs. \a prefix + //! (which has a trailing '/') should be used as a prefix to the key of + //! each setting. true is returned if there is no error. + //! + bool readProperties(QSettings &qs,const QString &prefix); + + //! The lexer's properties are written to the settings \a qs. + //! \a prefix (which has a trailing '/') should be used as a prefix to + //! the key of each setting. true is returned if there is no error. + //! + bool writeProperties(QSettings &qs,const QString &prefix) const; + +private: + void setCommentProp(); + void setCompactProp(); + + bool fold_comments; + bool fold_compact; + + QsciLexerBash(const QsciLexerBash &); + QsciLexerBash &operator=(const QsciLexerBash &); +}; + +#endif diff --git a/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexerbatch.h b/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexerbatch.h new file mode 100644 index 000000000..0d2d61a2a --- /dev/null +++ b/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexerbatch.h @@ -0,0 +1,115 @@ +// This defines the interface to the QsciLexerBatch class. +// +// Copyright (c) 2023 Riverbank Computing Limited +// +// This file is part of QScintilla. +// +// This file may be used under the terms of the GNU General Public License +// version 3.0 as published by the Free Software Foundation and appearing in +// the file LICENSE included in the packaging of this file. Please review the +// following information to ensure the GNU General Public License version 3.0 +// requirements will be met: http://www.gnu.org/copyleft/gpl.html. +// +// If you do not wish to use this file under the terms of the GPL version 3.0 +// then you may purchase a commercial license. For more information contact +// info@riverbankcomputing.com. +// +// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + + +#ifndef QSCILEXERBATCH_H +#define QSCILEXERBATCH_H + +#include + +#include +#include + + +//! \brief The QsciLexerBatch class encapsulates the Scintilla batch file +//! lexer. +class QSCINTILLA_EXPORT QsciLexerBatch : public QsciLexer +{ + Q_OBJECT + +public: + //! This enum defines the meanings of the different styles used by the + //! batch file lexer. + enum { + //! The default. + Default = 0, + + //! A comment. + Comment = 1, + + //! A keyword. + Keyword = 2, + + //! A label. + Label = 3, + + //! An hide command character. + HideCommandChar = 4, + + //! An external command . + ExternalCommand = 5, + + //! A variable. + Variable = 6, + + //! An operator + Operator = 7 + }; + + //! Construct a QsciLexerBatch with parent \a parent. \a parent is + //! typically the QsciScintilla instance. + QsciLexerBatch(QObject *parent = 0); + + //! Destroys the QsciLexerBatch instance. + virtual ~QsciLexerBatch(); + + //! Returns the name of the language. + const char *language() const; + + //! Returns the name of the lexer. Some lexers support a number of + //! languages. + const char *lexer() const; + + //! Returns the string of characters that comprise a word. + const char *wordCharacters() const; + + //! \internal Returns true if the language is case sensitive. + bool caseSensitive() const; + + //! Returns the foreground colour of the text for style number \a style. + //! + //! \sa defaultPaper() + QColor defaultColor(int style) const; + + //! Returns the end-of-line fill for style number \a style. + bool defaultEolFill(int style) const; + + //! Returns the font for style number \a style. + QFont defaultFont(int style) const; + + //! Returns the background colour of the text for style number \a style. + //! + //! \sa defaultColor() + QColor defaultPaper(int style) const; + + //! Returns the set of keywords for the keyword set \a set recognised + //! by the lexer as a space separated string. + const char *keywords(int set) const; + + //! Returns the descriptive name for style number \a style. If the + //! style is invalid for this language then an empty QString is returned. + //! This is intended to be used in user preference dialogs. + QString description(int style) const; + +private: + QsciLexerBatch(const QsciLexerBatch &); + QsciLexerBatch &operator=(const QsciLexerBatch &); +}; + +#endif diff --git a/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexercmake.h b/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexercmake.h new file mode 100644 index 000000000..07a7bbca7 --- /dev/null +++ b/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexercmake.h @@ -0,0 +1,160 @@ +// This defines the interface to the QsciLexerCMake class. +// +// Copyright (c) 2023 Riverbank Computing Limited +// +// This file is part of QScintilla. +// +// This file may be used under the terms of the GNU General Public License +// version 3.0 as published by the Free Software Foundation and appearing in +// the file LICENSE included in the packaging of this file. Please review the +// following information to ensure the GNU General Public License version 3.0 +// requirements will be met: http://www.gnu.org/copyleft/gpl.html. +// +// If you do not wish to use this file under the terms of the GPL version 3.0 +// then you may purchase a commercial license. For more information contact +// info@riverbankcomputing.com. +// +// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + + +#ifndef QSCILEXERCMAKE_H +#define QSCILEXERCMAKE_H + +#include + +#include +#include + + +//! \brief The QsciLexerCMake class encapsulates the Scintilla CMake lexer. +class QSCINTILLA_EXPORT QsciLexerCMake : public QsciLexer +{ + Q_OBJECT + +public: + //! This enum defines the meanings of the different styles used by the + //! CMake lexer. + enum { + //! The default. + Default = 0, + + //! A comment. + Comment = 1, + + //! A string. + String = 2, + + //! A left quoted string. + StringLeftQuote = 3, + + //! A right quoted string. + StringRightQuote = 4, + + //! A function. (Defined by keyword set number 1.) + Function = 5, + + //! A variable. (Defined by keyword set number 2.) + Variable = 6, + + //! A label. + Label = 7, + + //! A keyword defined in keyword set number 3. The class must be + //! sub-classed and re-implement keywords() to make use of this style. + KeywordSet3 = 8, + + //! A WHILE block. + BlockWhile = 9, + + //! A FOREACH block. + BlockForeach = 10, + + //! An IF block. + BlockIf = 11, + + //! A MACRO block. + BlockMacro = 12, + + //! A variable within a string. + StringVariable = 13, + + //! A number. + Number = 14 + }; + + //! Construct a QsciLexerCMake with parent \a parent. \a parent is + //! typically the QsciScintilla instance. + QsciLexerCMake(QObject *parent = 0); + + //! Destroys the QsciLexerCMake instance. + virtual ~QsciLexerCMake(); + + //! Returns the name of the language. + const char *language() const; + + //! Returns the name of the lexer. Some lexers support a number of + //! languages. + const char *lexer() const; + + //! Returns the foreground colour of the text for style number \a style. + //! + //! \sa defaultPaper() + QColor defaultColor(int style) const; + + //! Returns the font for style number \a style. + QFont defaultFont(int style) const; + + //! Returns the background colour of the text for style number \a style. + //! + //! \sa defaultColor() + QColor defaultPaper(int style) const; + + //! Returns the set of keywords for the keyword set \a set recognised + //! by the lexer as a space separated string. + const char *keywords(int set) const; + + //! Returns the descriptive name for style number \a style. If the + //! style is invalid for this language then an empty QString is returned. + //! This is intended to be used in user preference dialogs. + QString description(int style) const; + + //! Causes all properties to be refreshed by emitting the propertyChanged() + //! signal as required. + void refreshProperties(); + + //! Returns true if ELSE blocks can be folded. + //! + //! \sa setFoldAtElse() + bool foldAtElse() const; + +public slots: + //! If \a fold is true then ELSE blocks can be folded. The default is + //! false. + //! + //! \sa foldAtElse() + virtual void setFoldAtElse(bool fold); + +protected: + //! The lexer's properties are read from the settings \a qs. \a prefix + //! (which has a trailing '/') should be used as a prefix to the key of + //! each setting. true is returned if there is no error. + //! + bool readProperties(QSettings &qs,const QString &prefix); + + //! The lexer's properties are written to the settings \a qs. + //! \a prefix (which has a trailing '/') should be used as a prefix to + //! the key of each setting. true is returned if there is no error. + //! + bool writeProperties(QSettings &qs,const QString &prefix) const; + +private: + void setAtElseProp(); + + bool fold_atelse; + + QsciLexerCMake(const QsciLexerCMake &); + QsciLexerCMake &operator=(const QsciLexerCMake &); +}; + +#endif diff --git a/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexercoffeescript.h b/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexercoffeescript.h new file mode 100644 index 000000000..925aa03ff --- /dev/null +++ b/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexercoffeescript.h @@ -0,0 +1,264 @@ +// This defines the interface to the QsciLexerCoffeeScript class. +// +// Copyright (c) 2023 Riverbank Computing Limited +// +// This file is part of QScintilla. +// +// This file may be used under the terms of the GNU General Public License +// version 3.0 as published by the Free Software Foundation and appearing in +// the file LICENSE included in the packaging of this file. Please review the +// following information to ensure the GNU General Public License version 3.0 +// requirements will be met: http://www.gnu.org/copyleft/gpl.html. +// +// If you do not wish to use this file under the terms of the GPL version 3.0 +// then you may purchase a commercial license. For more information contact +// info@riverbankcomputing.com. +// +// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + + +#ifndef QSCILEXERCOFFEESCRIPT_H +#define QSCILEXERCOFFEESCRIPT_H + +#include + +#include +#include + + +//! \brief The QsciLexerCoffeeScript class encapsulates the Scintilla +//! CoffeeScript lexer. +class QSCINTILLA_EXPORT QsciLexerCoffeeScript : public QsciLexer +{ + Q_OBJECT + +public: + //! This enum defines the meanings of the different styles used by the + //! C++ lexer. + enum { + //! The default. + Default = 0, + + //! A C-style comment. + Comment = 1, + + //! A C++-style comment line. + CommentLine = 2, + + //! A JavaDoc/Doxygen C-style comment. + CommentDoc = 3, + + //! A number. + Number = 4, + + //! A keyword. + Keyword = 5, + + //! A double-quoted string. + DoubleQuotedString = 6, + + //! A single-quoted string. + SingleQuotedString = 7, + + //! An IDL UUID. + UUID = 8, + + //! A pre-processor block. + PreProcessor = 9, + + //! An operator. + Operator = 10, + + //! An identifier + Identifier = 11, + + //! The end of a line where a string is not closed. + UnclosedString = 12, + + //! A C# verbatim string. + VerbatimString = 13, + + //! A regular expression. + Regex = 14, + + //! A JavaDoc/Doxygen C++-style comment line. + CommentLineDoc = 15, + + //! A keyword defined in keyword set number 2. The class must be + //! sub-classed and re-implement keywords() to make use of this style. + KeywordSet2 = 16, + + //! A JavaDoc/Doxygen keyword. + CommentDocKeyword = 17, + + //! A JavaDoc/Doxygen keyword error defined in keyword set number 3. + //! The class must be sub-classed and re-implement keywords() to make + //! use of this style. + CommentDocKeywordError = 18, + + //! A global class defined in keyword set number 4. The class must be + //! sub-classed and re-implement keywords() to make use of this style. + GlobalClass = 19, + + //! A block comment. + CommentBlock = 22, + + //! A block regular expression. + BlockRegex = 23, + + //! A block regular expression comment. + BlockRegexComment = 24, + + //! An instance property. + InstanceProperty = 25, + }; + + //! Construct a QsciLexerCoffeeScript with parent \a parent. \a parent is + //! typically the QsciScintilla instance. + QsciLexerCoffeeScript(QObject *parent = 0); + + //! Destroys the QsciLexerCoffeeScript instance. + virtual ~QsciLexerCoffeeScript(); + + //! Returns the name of the language. + const char *language() const; + + //! Returns the name of the lexer. Some lexers support a number of + //! languages. + const char *lexer() const; + + //! \internal Returns the character sequences that can separate + //! auto-completion words. + QStringList autoCompletionWordSeparators() const; + + //! \internal Returns a space separated list of words or characters in + //! a particular style that define the end of a block for + //! auto-indentation. The styles is returned via \a style. + const char *blockEnd(int *style = 0) const; + + //! \internal Returns a space separated list of words or characters in + //! a particular style that define the start of a block for + //! auto-indentation. The styles is returned via \a style. + const char *blockStart(int *style = 0) const; + + //! \internal Returns a space separated list of keywords in a + //! particular style that define the start of a block for + //! auto-indentation. The styles is returned via \a style. + const char *blockStartKeyword(int *style = 0) const; + + //! \internal Returns the style used for braces for brace matching. + int braceStyle() const; + + //! Returns the string of characters that comprise a word. + const char *wordCharacters() const; + + //! Returns the foreground colour of the text for style number \a style. + //! + //! \sa defaultPaper() + QColor defaultColor(int style) const; + + //! Returns the end-of-line fill for style number \a style. + bool defaultEolFill(int style) const; + + //! Returns the font for style number \a style. + QFont defaultFont(int style) const; + + //! Returns the background colour of the text for style number \a style. + //! + //! \sa defaultColor() + QColor defaultPaper(int style) const; + + //! Returns the set of keywords for the keyword set \a set recognised + //! by the lexer as a space separated string. Set 1 is normally used for + //! primary keywords and identifiers. Set 2 is normally used for secondary + //! keywords and identifiers. Set 3 is normally used for documentation + //! comment keywords. Set 4 is normally used for global classes and + //! typedefs. + const char *keywords(int set) const; + + //! Returns the descriptive name for style number \a style. If the + //! style is invalid for this language then an empty QString is returned. + //! This is intended to be used in user preference dialogs. + QString description(int style) const; + + //! Causes all properties to be refreshed by emitting the + //! propertyChanged() signal as required. + void refreshProperties(); + + //! Returns true if '$' characters are allowed in identifier names. + //! + //! \sa setDollarsAllowed() + bool dollarsAllowed() const {return dollars;} + + //! If \a allowed is true then '$' characters are allowed in identifier + //! names. The default is true. + //! + //! \sa dollarsAllowed() + void setDollarsAllowed(bool allowed); + + //! Returns true if multi-line comment blocks can be folded. + //! + //! \sa setFoldComments() + bool foldComments() const {return fold_comments;} + + //! If \a fold is true then multi-line comment blocks can be folded. + //! The default is false. + //! + //! \sa foldComments() + void setFoldComments(bool fold); + + //! Returns true if trailing blank lines are included in a fold block. + //! + //! \sa setFoldCompact() + bool foldCompact() const {return fold_compact;} + + //! If \a fold is true then trailing blank lines are included in a fold + //! block. The default is true. + //! + //! \sa foldCompact() + void setFoldCompact(bool fold); + + //! Returns true if preprocessor lines (after the preprocessor + //! directive) are styled. + //! + //! \sa setStylePreprocessor() + bool stylePreprocessor() const {return style_preproc;} + + //! If \a style is true then preprocessor lines (after the preprocessor + //! directive) are styled. The default is false. + //! + //! \sa stylePreprocessor() + void setStylePreprocessor(bool style); + +protected: + //! The lexer's properties are read from the settings \a qs. \a prefix + //! (which has a trailing '/') should be used as a prefix to the key of + //! each setting. true is returned if there is no error. + //! + //! \sa writeProperties() + bool readProperties(QSettings &qs,const QString &prefix); + + //! The lexer's properties are written to the settings \a qs. + //! \a prefix (which has a trailing '/') should be used as a prefix to + //! the key of each setting. true is returned if there is no error. + //! + //! \sa readProperties() + bool writeProperties(QSettings &qs,const QString &prefix) const; + +private: + void setCommentProp(); + void setCompactProp(); + void setStylePreprocProp(); + void setDollarsProp(); + + bool fold_comments; + bool fold_compact; + bool style_preproc; + bool dollars; + + QsciLexerCoffeeScript(const QsciLexerCoffeeScript &); + QsciLexerCoffeeScript &operator=(const QsciLexerCoffeeScript &); +}; + +#endif diff --git a/libs/qscintilla/Qt4Qt5/Qsci/qscilexercpp.h b/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexercpp.h similarity index 99% rename from libs/qscintilla/Qt4Qt5/Qsci/qscilexercpp.h rename to libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexercpp.h index 69abc1ce6..da54b446f 100644 --- a/libs/qscintilla/Qt4Qt5/Qsci/qscilexercpp.h +++ b/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexercpp.h @@ -1,6 +1,6 @@ // This defines the interface to the QsciLexerCPP class. // -// Copyright (c) 2019 Riverbank Computing Limited +// Copyright (c) 2023 Riverbank Computing Limited // // This file is part of QScintilla. // diff --git a/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexercsharp.h b/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexercsharp.h new file mode 100644 index 000000000..60eea7c77 --- /dev/null +++ b/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexercsharp.h @@ -0,0 +1,77 @@ +// This defines the interface to the QsciLexerCSharp class. +// +// Copyright (c) 2023 Riverbank Computing Limited +// +// This file is part of QScintilla. +// +// This file may be used under the terms of the GNU General Public License +// version 3.0 as published by the Free Software Foundation and appearing in +// the file LICENSE included in the packaging of this file. Please review the +// following information to ensure the GNU General Public License version 3.0 +// requirements will be met: http://www.gnu.org/copyleft/gpl.html. +// +// If you do not wish to use this file under the terms of the GPL version 3.0 +// then you may purchase a commercial license. For more information contact +// info@riverbankcomputing.com. +// +// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + + +#ifndef QSCILEXERCSHARP_H +#define QSCILEXERCSHARP_H + +#include + +#include +#include + + +//! \brief The QsciLexerCSharp class encapsulates the Scintilla C# +//! lexer. +class QSCINTILLA_EXPORT QsciLexerCSharp : public QsciLexerCPP +{ + Q_OBJECT + +public: + //! Construct a QsciLexerCSharp with parent \a parent. \a parent is + //! typically the QsciScintilla instance. + QsciLexerCSharp(QObject *parent = 0); + + //! Destroys the QsciLexerCSharp instance. + virtual ~QsciLexerCSharp(); + + //! Returns the name of the language. + const char *language() const; + + //! Returns the foreground colour of the text for style number \a style. + //! + //! \sa defaultPaper() + QColor defaultColor(int style) const; + + //! Returns the end-of-line fill for style number \a style. + bool defaultEolFill(int style) const; + + //! Returns the font for style number \a style. + QFont defaultFont(int style) const; + + //! Returns the background colour of the text for style number \a style. + //! + //! \sa defaultColor() + QColor defaultPaper(int style) const; + + //! Returns the set of keywords for the keyword set \a set recognised + //! by the lexer as a space separated string. + const char *keywords(int set) const; + + //! Returns the descriptive name for style number \a style. If the + //! style is invalid for this language then an empty QString is returned. + //! This is intended to be used in user preference dialogs. + QString description(int style) const; + +private: + QsciLexerCSharp(const QsciLexerCSharp &); + QsciLexerCSharp &operator=(const QsciLexerCSharp &); +}; + +#endif diff --git a/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexercss.h b/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexercss.h new file mode 100644 index 000000000..addc85835 --- /dev/null +++ b/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexercss.h @@ -0,0 +1,252 @@ +// This defines the interface to the QsciLexerCSS class. +// +// Copyright (c) 2023 Riverbank Computing Limited +// +// This file is part of QScintilla. +// +// This file may be used under the terms of the GNU General Public License +// version 3.0 as published by the Free Software Foundation and appearing in +// the file LICENSE included in the packaging of this file. Please review the +// following information to ensure the GNU General Public License version 3.0 +// requirements will be met: http://www.gnu.org/copyleft/gpl.html. +// +// If you do not wish to use this file under the terms of the GPL version 3.0 +// then you may purchase a commercial license. For more information contact +// info@riverbankcomputing.com. +// +// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + + +#ifndef QSCILEXERCSS_H +#define QSCILEXERCSS_H + +#include + +#include +#include + + +//! \brief The QsciLexerCSS class encapsulates the Scintilla CSS lexer. +class QSCINTILLA_EXPORT QsciLexerCSS : public QsciLexer +{ + Q_OBJECT + +public: + //! This enum defines the meanings of the different styles used by the + //! CSS lexer. + enum { + //! The default. + Default = 0, + + //! A tag. + Tag = 1, + + //! A class selector. + ClassSelector = 2, + + //! A pseudo class. The list of pseudo classes is defined by keyword + //! set 2. + PseudoClass = 3, + + //! An unknown pseudo class. + UnknownPseudoClass = 4, + + //! An operator. + Operator = 5, + + //! A CSS1 property. The list of CSS1 properties is defined by keyword + //! set 1. + CSS1Property = 6, + + //! An unknown property. + UnknownProperty = 7, + + //! A value. + Value = 8, + + //! A comment. + Comment = 9, + + //! An ID selector. + IDSelector = 10, + + //! An important value. + Important = 11, + + //! An @-rule. + AtRule = 12, + + //! A double-quoted string. + DoubleQuotedString = 13, + + //! A single-quoted string. + SingleQuotedString = 14, + + //! A CSS2 property. The list of CSS2 properties is defined by keyword + //! set 3. + CSS2Property = 15, + + //! An attribute. + Attribute = 16, + + //! A CSS3 property. The list of CSS3 properties is defined by keyword + //! set 4. + CSS3Property = 17, + + //! A pseudo element. The list of pseudo elements is defined by + //! keyword set 5. + PseudoElement = 18, + + //! An extended (browser specific) CSS property. The list of extended + //! CSS properties is defined by keyword set 6. + ExtendedCSSProperty = 19, + + //! An extended (browser specific) pseudo class. The list of extended + //! pseudo classes is defined by keyword set 7. + ExtendedPseudoClass = 20, + + //! An extended (browser specific) pseudo element. The list of + //! extended pseudo elements is defined by keyword set 8. + ExtendedPseudoElement = 21, + + //! A media rule. + MediaRule = 22, + + //! A variable. + Variable = 23, + }; + + //! Construct a QsciLexerCSS with parent \a parent. \a parent is typically + //! the QsciScintilla instance. + QsciLexerCSS(QObject *parent = 0); + + //! Destroys the QsciLexerCSS instance. + virtual ~QsciLexerCSS(); + + //! Returns the name of the language. + const char *language() const; + + //! Returns the name of the lexer. Some lexers support a number of + //! languages. + const char *lexer() const; + + //! \internal Returns a space separated list of words or characters in + //! a particular style that define the end of a block for + //! auto-indentation. The styles is returned via \a style. + const char *blockEnd(int *style = 0) const; + + //! \internal Returns a space separated list of words or characters in + //! a particular style that define the start of a block for + //! auto-indentation. The styles is returned via \a style. + const char *blockStart(int *style = 0) const; + + //! Returns the string of characters that comprise a word. + const char *wordCharacters() const; + + //! Returns the foreground colour of the text for style number \a style. + QColor defaultColor(int style) const; + + //! Returns the font for style number \a style. + QFont defaultFont(int style) const; + + //! Returns the set of keywords for the keyword set \a set recognised + //! by the lexer as a space separated string. + const char *keywords(int set) const; + + //! Returns the descriptive name for style number \a style. If the + //! style is invalid for this language then an empty QString is returned. + //! This is intended to be used in user preference dialogs. + QString description(int style) const; + + //! Causes all properties to be refreshed by emitting the + //! propertyChanged() signal as required. + void refreshProperties(); + + //! Returns true if multi-line comment blocks can be folded. + //! + //! \sa setFoldComments() + bool foldComments() const; + + //! Returns true if trailing blank lines are included in a fold block. + //! + //! \sa setFoldCompact() + bool foldCompact() const; + + //! If \a enabled is true then support for HSS is enabled. The default is + //! false. + //! + //! \sa HSSLanguage() + void setHSSLanguage(bool enabled); + + //! Returns true if support for HSS is enabled. + //! + //! \sa setHSSLanguage() + bool HSSLanguage() const {return hss_language;} + + //! If \a enabled is true then support for Less CSS is enabled. The + //! default is false. + //! + //! \sa LessLanguage() + void setLessLanguage(bool enabled); + + //! Returns true if support for Less CSS is enabled. + //! + //! \sa setLessLanguage() + bool LessLanguage() const {return less_language;} + + //! If \a enabled is true then support for Sassy CSS is enabled. The + //! default is false. + //! + //! \sa SCSSLanguage() + void setSCSSLanguage(bool enabled); + + //! Returns true if support for Sassy CSS is enabled. + //! + //! \sa setSCSSLanguage() + bool SCSSLanguage() const {return scss_language;} + +public slots: + //! If \a fold is true then multi-line comment blocks can be folded. + //! The default is false. + //! + //! \sa foldComments() + virtual void setFoldComments(bool fold); + + //! If \a fold is true then trailing blank lines are included in a fold + //! block. The default is true. + //! + //! \sa foldCompact() + virtual void setFoldCompact(bool fold); + +protected: + //! The lexer's properties are read from the settings \a qs. \a prefix + //! (which has a trailing '/') should be used as a prefix to the key of + //! each setting. true is returned if there is no error. + //! + bool readProperties(QSettings &qs,const QString &prefix); + + //! The lexer's properties are written to the settings \a qs. + //! \a prefix (which has a trailing '/') should be used as a prefix to + //! the key of each setting. true is returned if there is no error. + //! + bool writeProperties(QSettings &qs,const QString &prefix) const; + +private: + void setCommentProp(); + void setCompactProp(); + void setHSSProp(); + void setLessProp(); + void setSCSSProp(); + + bool fold_comments; + bool fold_compact; + bool hss_language; + bool less_language; + bool scss_language; + + QsciLexerCSS(const QsciLexerCSS &); + QsciLexerCSS &operator=(const QsciLexerCSS &); +}; + +#endif diff --git a/libs/qscintilla/Qt4Qt5/Qsci/qscilexercustom.h b/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexercustom.h similarity index 98% rename from libs/qscintilla/Qt4Qt5/Qsci/qscilexercustom.h rename to libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexercustom.h index e2210dfb0..d1ba17ba4 100644 --- a/libs/qscintilla/Qt4Qt5/Qsci/qscilexercustom.h +++ b/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexercustom.h @@ -1,6 +1,6 @@ // This defines the interface to the QsciLexerCustom class. // -// Copyright (c) 2019 Riverbank Computing Limited +// Copyright (c) 2023 Riverbank Computing Limited // // This file is part of QScintilla. // diff --git a/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexerd.h b/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexerd.h new file mode 100644 index 000000000..e910188c1 --- /dev/null +++ b/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexerd.h @@ -0,0 +1,242 @@ +// This defines the interface to the QsciLexerD class. +// +// Copyright (c) 2023 Riverbank Computing Limited +// +// This file is part of QScintilla. +// +// This file may be used under the terms of the GNU General Public License +// version 3.0 as published by the Free Software Foundation and appearing in +// the file LICENSE included in the packaging of this file. Please review the +// following information to ensure the GNU General Public License version 3.0 +// requirements will be met: http://www.gnu.org/copyleft/gpl.html. +// +// If you do not wish to use this file under the terms of the GPL version 3.0 +// then you may purchase a commercial license. For more information contact +// info@riverbankcomputing.com. +// +// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + + +#ifndef QSCILEXERD_H +#define QSCILEXERD_H + +#include + +#include +#include + + +//! \brief The QsciLexerD class encapsulates the Scintilla D lexer. +class QSCINTILLA_EXPORT QsciLexerD : public QsciLexer +{ + Q_OBJECT + +public: + //! This enum defines the meanings of the different styles used by the D + //! lexer. + enum { + //! The default. + Default = 0, + + //! A comment. + Comment = 1, + + //! A comment line. + CommentLine = 2, + + //! A JavaDoc and Doxygen comment. + CommentDoc = 3, + + //! A nested comment. + CommentNested = 4, + + //! A number. + Number = 5, + + //! A keyword. + Keyword = 6, + + //! A secondary keyword. + KeywordSecondary = 7, + + //! A doc keyword + KeywordDoc = 8, + + //! Typedefs and aliases + Typedefs = 9, + + //! A string. + String = 10, + + //! The end of a line where a string is not closed. + UnclosedString = 11, + + //! A character + Character = 12, + + //! An operator. + Operator = 13, + + //! An identifier + Identifier = 14, + + //! A JavaDoc and Doxygen line. + CommentLineDoc = 15, + + //! A JavaDoc and Doxygen keyword. + CommentDocKeyword = 16, + + //! A JavaDoc and Doxygen keyword error. + CommentDocKeywordError = 17, + + //! A backquoted string. + BackquoteString = 18, + + //! A raw, hexadecimal or delimited string. + RawString = 19, + + //! A keyword defined in keyword set number 5. The class must be + //! sub-classed and re-implement keywords() to make use of this style. + KeywordSet5 = 20, + + //! A keyword defined in keyword set number 6. The class must be + //! sub-classed and re-implement keywords() to make use of this style. + KeywordSet6 = 21, + + //! A keyword defined in keyword set number 7. The class must be + //! sub-classed and re-implement keywords() to make use of this style. + KeywordSet7 = 22, + }; + + //! Construct a QsciLexerD with parent \a parent. \a parent is typically + //! the QsciScintilla instance. + QsciLexerD(QObject *parent = 0); + + //! Destroys the QsciLexerD instance. + virtual ~QsciLexerD(); + + //! Returns the name of the language. + const char *language() const; + + //! Returns the name of the lexer. Some lexers support a number of + //! languages. + const char *lexer() const; + + //! \internal Returns the character sequences that can separate + //! auto-completion words. + QStringList autoCompletionWordSeparators() const; + + //! \internal Returns a space separated list of words or characters in a + //! particular style that define the end of a block for auto-indentation. + //! The styles is returned via \a style. + const char *blockEnd(int *style = 0) const; + + //! \internal Returns a space separated list of words or characters in a + //! particular style that define the start of a block for auto-indentation. + //! The styles is returned via \a style. + const char *blockStart(int *style = 0) const; + + //! \internal Returns a space separated list of keywords in a particular + //! style that define the start of a block for auto-indentation. The + //! styles is returned via \a style. + const char *blockStartKeyword(int *style = 0) const; + + //! \internal Returns the style used for braces for brace matching. + int braceStyle() const; + + //! Returns the string of characters that comprise a word. + const char *wordCharacters() const; + + //! Returns the foreground colour of the text for style number \a style. + //! + //! \sa defaultPaper() + QColor defaultColor(int style) const; + + //! Returns the end-of-line fill for style number \a style. + bool defaultEolFill(int style) const; + + //! Returns the font for style number \a style. + QFont defaultFont(int style) const; + + //! Returns the background colour of the text for style number \a style. + //! + //! \sa defaultColor() + QColor defaultPaper(int style) const; + + //! Returns the set of keywords for the keyword set \a set recognised by + //! the lexer as a space separated string. + const char *keywords(int set) const; + + //! Returns the descriptive name for style number \a style. If the style + //! is invalid for this language then an empty QString is returned. This + //! is intended to be used in user preference dialogs. + QString description(int style) const; + + //! Causes all properties to be refreshed by emitting the propertyChanged() + //! signal as required. + void refreshProperties(); + + //! Returns true if "} else {" lines can be folded. + //! + //! \sa setFoldAtElse() + bool foldAtElse() const; + + //! Returns true if multi-line comment blocks can be folded. + //! + //! \sa setFoldComments() + bool foldComments() const; + + //! Returns true if trailing blank lines are included in a fold block. + //! + //! \sa setFoldCompact() + bool foldCompact() const; + +public slots: + //! If \a fold is true then "} else {" lines can be folded. The default is + //! false. + //! + //! \sa foldAtElse() + virtual void setFoldAtElse(bool fold); + + //! If \a fold is true then multi-line comment blocks can be folded. The + //! default is false. + //! + //! \sa foldComments() + virtual void setFoldComments(bool fold); + + //! If \a fold is true then trailing blank lines are included in a fold + //! block. The default is true. + //! + //! \sa foldCompact() + virtual void setFoldCompact(bool fold); + +protected: + //! The lexer's properties are read from the settings \a qs. \a prefix + //! (which has a trailing '/') should be used as a prefix to the key of + //! each setting. true is returned if there is no error. + //! + //! \sa writeProperties() + bool readProperties(QSettings &qs,const QString &prefix); + + //! The lexer's properties are written to the settings \a qs. \a prefix + //! (which has a trailing '/') should be used as a prefix to the key of + //! each setting. true is returned if there is no error. + //! + //! \sa readProperties() + bool writeProperties(QSettings &qs,const QString &prefix) const; + +private: + void setAtElseProp(); + void setCommentProp(); + void setCompactProp(); + + bool fold_atelse; + bool fold_comments; + bool fold_compact; + + QsciLexerD(const QsciLexerD &); + QsciLexerD &operator=(const QsciLexerD &); +}; + +#endif diff --git a/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexerdiff.h b/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexerdiff.h new file mode 100644 index 000000000..43b67e99a --- /dev/null +++ b/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexerdiff.h @@ -0,0 +1,107 @@ +// This defines the interface to the QsciLexerDiff class. +// +// Copyright (c) 2023 Riverbank Computing Limited +// +// This file is part of QScintilla. +// +// This file may be used under the terms of the GNU General Public License +// version 3.0 as published by the Free Software Foundation and appearing in +// the file LICENSE included in the packaging of this file. Please review the +// following information to ensure the GNU General Public License version 3.0 +// requirements will be met: http://www.gnu.org/copyleft/gpl.html. +// +// If you do not wish to use this file under the terms of the GPL version 3.0 +// then you may purchase a commercial license. For more information contact +// info@riverbankcomputing.com. +// +// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + + +#ifndef QSCILEXERDIFF_H +#define QSCILEXERDIFF_H + +#include + +#include +#include + + +//! \brief The QsciLexerDiff class encapsulates the Scintilla Diff +//! lexer. +class QSCINTILLA_EXPORT QsciLexerDiff : public QsciLexer +{ + Q_OBJECT + +public: + //! This enum defines the meanings of the different styles used by the + //! Diff lexer. + enum { + //! The default. + Default = 0, + + //! A comment. + Comment = 1, + + //! A command. + Command = 2, + + //! A header. + Header = 3, + + //! A position. + Position = 4, + + //! A line removed. + LineRemoved = 5, + + //! A line added. + LineAdded = 6, + + //! A line changed. + LineChanged = 7, + + //! An adding patch added. + AddingPatchAdded = 8, + + //! A removing patch added. + RemovingPatchAdded = 9, + + //! An adding patch added. + AddingPatchRemoved = 10, + + //! A removing patch added. + RemovingPatchRemoved = 11, + }; + + //! Construct a QsciLexerDiff with parent \a parent. \a parent is + //! typically the QsciScintilla instance. + QsciLexerDiff(QObject *parent = 0); + + //! Destroys the QsciLexerDiff instance. + virtual ~QsciLexerDiff(); + + //! Returns the name of the language. + const char *language() const; + + //! Returns the name of the lexer. Some lexers support a number of + //! languages. + const char *lexer() const; + + //! Returns the string of characters that comprise a word. + const char *wordCharacters() const; + + //! Returns the foreground colour of the text for style number \a style. + QColor defaultColor(int style) const; + + //! Returns the descriptive name for style number \a style. If the + //! style is invalid for this language then an empty QString is returned. + //! This is intended to be used in user preference dialogs. + QString description(int style) const; + +private: + QsciLexerDiff(const QsciLexerDiff &); + QsciLexerDiff &operator=(const QsciLexerDiff &); +}; + +#endif diff --git a/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexeredifact.h b/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexeredifact.h new file mode 100644 index 000000000..548fa0953 --- /dev/null +++ b/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexeredifact.h @@ -0,0 +1,96 @@ +// This defines the interface to the QsciLexerEDIFACT class. +// +// Copyright (c) 2023 Riverbank Computing Limited +// +// This file is part of QScintilla. +// +// This file may be used under the terms of the GNU General Public License +// version 3.0 as published by the Free Software Foundation and appearing in +// the file LICENSE included in the packaging of this file. Please review the +// following information to ensure the GNU General Public License version 3.0 +// requirements will be met: http://www.gnu.org/copyleft/gpl.html. +// +// If you do not wish to use this file under the terms of the GPL version 3.0 +// then you may purchase a commercial license. For more information contact +// info@riverbankcomputing.com. +// +// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + + +#ifndef QSCILEXEREDIFACT_H +#define QSCILEXEREDIFACT_H + +#include + +#include +#include + + +//! \brief The QsciLexerEDIFACT class encapsulates the Scintilla EDIFACT lexer. +class QSCINTILLA_EXPORT QsciLexerEDIFACT : public QsciLexer +{ + Q_OBJECT + +public: + //! This enum defines the meanings of the different styles used by the + //! EDIFACT lexer. + enum { + //! The default. + Default = 0, + + //! A segment start. + SegmentStart = 1, + + //! A segment end. + SegmentEnd = 2, + + //! An element separator. + ElementSeparator = 3, + + //! A composite separator. + CompositeSeparator = 4, + + //! A release separator. + ReleaseSeparator = 5, + + //! A UNA segment header. + UNASegmentHeader = 6, + + //! A UNH segment header. + UNHSegmentHeader = 7, + + //! A bad segment. + BadSegment = 8, + }; + + //! Construct a QsciLexerEDIFACT with parent \a parent. \a parent is + //! typically the QsciScintilla instance. + QsciLexerEDIFACT(QObject *parent = 0); + + //! Destroys the QsciLexerEDIFACT instance. + virtual ~QsciLexerEDIFACT(); + + //! Returns the name of the language. + const char *language() const; + + //! Returns the name of the lexer. Some lexers support a number of + //! languages. + const char *lexer() const; + + //! Returns the foreground colour of the text for style number \a style. + //! + //! \sa defaultPaper() + QColor defaultColor(int style) const; + + //! Returns the descriptive name for style number \a style. If the + //! style is invalid for this language then an empty QString is returned. + //! This is intended to be used in user preference dialogs. + QString description(int style) const; + +private: + QsciLexerEDIFACT(const QsciLexerEDIFACT &); + QsciLexerEDIFACT &operator=(const QsciLexerEDIFACT &); +}; + +#endif diff --git a/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexerfortran.h b/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexerfortran.h new file mode 100644 index 000000000..f5aa99b0d --- /dev/null +++ b/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexerfortran.h @@ -0,0 +1,59 @@ +// This defines the interface to the QsciLexerFortran class. +// +// Copyright (c) 2023 Riverbank Computing Limited +// +// This file is part of QScintilla. +// +// This file may be used under the terms of the GNU General Public License +// version 3.0 as published by the Free Software Foundation and appearing in +// the file LICENSE included in the packaging of this file. Please review the +// following information to ensure the GNU General Public License version 3.0 +// requirements will be met: http://www.gnu.org/copyleft/gpl.html. +// +// If you do not wish to use this file under the terms of the GPL version 3.0 +// then you may purchase a commercial license. For more information contact +// info@riverbankcomputing.com. +// +// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + + +#ifndef QSCILEXERFORTRAN_H +#define QSCILEXERFORTRAN_H + +#include + +#include +#include + + +//! \brief The QsciLexerFortran class encapsulates the Scintilla Fortran lexer. +class QSCINTILLA_EXPORT QsciLexerFortran : public QsciLexerFortran77 +{ + Q_OBJECT + +public: + //! Construct a QsciLexerFortran with parent \a parent. \a parent is + //! typically the QsciScintilla instance. + QsciLexerFortran(QObject *parent = 0); + + //! Destroys the QsciLexerFortran instance. + virtual ~QsciLexerFortran(); + + //! Returns the name of the language. + const char *language() const; + + //! Returns the name of the lexer. Some lexers support a number of + //! languages. + const char *lexer() const; + + //! Returns the set of keywords for the keyword set \a set recognised + //! by the lexer as a space separated string. + const char *keywords(int set) const; + +private: + QsciLexerFortran(const QsciLexerFortran &); + QsciLexerFortran &operator=(const QsciLexerFortran &); +}; + +#endif diff --git a/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexerfortran77.h b/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexerfortran77.h new file mode 100644 index 000000000..4689d6c40 --- /dev/null +++ b/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexerfortran77.h @@ -0,0 +1,168 @@ +// This defines the interface to the QsciLexerFortran77 class. +// +// Copyright (c) 2023 Riverbank Computing Limited +// +// This file is part of QScintilla. +// +// This file may be used under the terms of the GNU General Public License +// version 3.0 as published by the Free Software Foundation and appearing in +// the file LICENSE included in the packaging of this file. Please review the +// following information to ensure the GNU General Public License version 3.0 +// requirements will be met: http://www.gnu.org/copyleft/gpl.html. +// +// If you do not wish to use this file under the terms of the GPL version 3.0 +// then you may purchase a commercial license. For more information contact +// info@riverbankcomputing.com. +// +// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + + +#ifndef QSCILEXERFORTRAN77_H +#define QSCILEXERFORTRAN77_H + +#include + +#include +#include + + +//! \brief The QsciLexerFortran77 class encapsulates the Scintilla Fortran77 +//! lexer. +class QSCINTILLA_EXPORT QsciLexerFortran77 : public QsciLexer +{ + Q_OBJECT + +public: + //! This enum defines the meanings of the different styles used by the + //! Fortran77 lexer. + enum { + //! The default. + Default = 0, + + //! A comment. + Comment = 1, + + //! A number. + Number = 2, + + //! A single-quoted string. + SingleQuotedString = 3, + + //! A double-quoted string. + DoubleQuotedString = 4, + + //! The end of a line where a string is not closed. + UnclosedString = 5, + + //! An operator. + Operator = 6, + + //! An identifier + Identifier = 7, + + //! A keyword. + Keyword = 8, + + //! An intrinsic function. + IntrinsicFunction = 9, + + //! An extended, non-standard or user defined function. + ExtendedFunction = 10, + + //! A pre-processor block. + PreProcessor = 11, + + //! An operator in .NAME. format. + DottedOperator = 12, + + //! A label. + Label = 13, + + //! A continuation. + Continuation = 14 + }; + + //! Construct a QsciLexerFortran77 with parent \a parent. \a parent is + //! typically the QsciScintilla instance. + QsciLexerFortran77(QObject *parent = 0); + + //! Destroys the QsciLexerFortran77 instance. + virtual ~QsciLexerFortran77(); + + //! Returns the name of the language. + const char *language() const; + + //! Returns the name of the lexer. Some lexers support a number of + //! languages. + const char *lexer() const; + + //! \internal Returns the style used for braces for brace matching. + int braceStyle() const; + + //! Returns the foreground colour of the text for style number \a style. + //! + //! \sa defaultPaper() + QColor defaultColor(int style) const; + + //! Returns the end-of-line fill for style number \a style. + bool defaultEolFill(int style) const; + + //! Returns the font for style number \a style. + QFont defaultFont(int style) const; + + //! Returns the background colour of the text for style number \a style. + //! + //! \sa defaultColor() + QColor defaultPaper(int style) const; + + //! Returns the set of keywords for the keyword set \a set recognised + //! by the lexer as a space separated string. + const char *keywords(int set) const; + + //! Returns the descriptive name for style number \a style. If the + //! style is invalid for this language then an empty QString is returned. + //! This is intended to be used in user preference dialogs. + QString description(int style) const; + + //! Causes all properties to be refreshed by emitting the + //! propertyChanged() signal as required. + void refreshProperties(); + + //! Returns true if trailing blank lines are included in a fold block. + //! + //! \sa setFoldCompact() + bool foldCompact() const; + +public slots: + //! If \a fold is true then trailing blank lines are included in a fold + //! block. The default is true. + //! + //! \sa foldCompact() + virtual void setFoldCompact(bool fold); + +protected: + //! The lexer's properties are read from the settings \a qs. \a prefix + //! (which has a trailing '/') should be used as a prefix to the key of + //! each setting. true is returned if there is no error. + //! + //! \sa writeProperties() + bool readProperties(QSettings &qs,const QString &prefix); + + //! The lexer's properties are written to the settings \a qs. + //! \a prefix (which has a trailing '/') should be used as a prefix to + //! the key of each setting. true is returned if there is no error. + //! + //! \sa readProperties() + bool writeProperties(QSettings &qs,const QString &prefix) const; + +private: + void setCompactProp(); + + bool fold_compact; + + QsciLexerFortran77(const QsciLexerFortran77 &); + QsciLexerFortran77 &operator=(const QsciLexerFortran77 &); +}; + +#endif diff --git a/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexerhex.h b/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexerhex.h new file mode 100644 index 000000000..dc4287427 --- /dev/null +++ b/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexerhex.h @@ -0,0 +1,120 @@ +// This defines the interface to the abstract QsciLexerHex class. +// +// Copyright (c) 2023 Riverbank Computing Limited +// +// This file is part of QScintilla. +// +// This file may be used under the terms of the GNU General Public License +// version 3.0 as published by the Free Software Foundation and appearing in +// the file LICENSE included in the packaging of this file. Please review the +// following information to ensure the GNU General Public License version 3.0 +// requirements will be met: http://www.gnu.org/copyleft/gpl.html. +// +// If you do not wish to use this file under the terms of the GPL version 3.0 +// then you may purchase a commercial license. For more information contact +// info@riverbankcomputing.com. +// +// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + + +#ifndef QSCILEXERHEX_H +#define QSCILEXERHEX_H + +#include + +#include +#include + + +//! \brief The abstract QsciLexerHex class encapsulates the Scintilla Hex +//! lexer. +class QSCINTILLA_EXPORT QsciLexerHex : public QsciLexer +{ + Q_OBJECT + +public: + //! This enum defines the meanings of the different styles used by the + //! Hex lexer. + enum { + //! The default. + Default = 0, + + //! A record start. + RecordStart = 1, + + //! A record type. + RecordType = 2, + + //! An unknown record type. + UnknownRecordType = 3, + + //! A correct byte count field. + ByteCount = 4, + + //! An incorrect byte count field. + IncorrectByteCount = 5, + + //! No address (S-Record and Intel Hex only). + NoAddress = 6, + + //! A data address. + DataAddress = 7, + + //! A record count (S-Record only). + RecordCount = 8, + + //! A start address. + StartAddress = 9, + + //! An extended address (Intel Hex only). + ExtendedAddress = 11, + + //! Odd data. + OddData = 12, + + //! Even data. + EvenData = 13, + + //! Unknown data (S-Record and Intel Hex only). + UnknownData = 14, + + //! A correct checksum. + Checksum = 16, + + //! An incorrect checksum. + IncorrectChecksum = 17, + + //! Garbage data after the record. + TrailingGarbage = 18, + }; + + //! Construct a QsciLexerHex with parent \a parent. \a parent is + //! typically the QsciScintilla instance. + QsciLexerHex(QObject *parent = 0); + + //! Destroys the QsciLexerHex instance. + virtual ~QsciLexerHex(); + + //! Returns the foreground colour of the text for style number \a style. + QColor defaultColor(int style) const; + + //! Returns the font for style number \a style. + QFont defaultFont(int style) const; + + //! Returns the background colour of the text for style number \a style. + //! + //! \sa defaultColor() + QColor defaultPaper(int style) const; + + //! Returns the descriptive name for style number \a style. If the + //! style is invalid for this language then an empty QString is returned. + //! This is intended to be used in user preference dialogs. + QString description(int style) const; + +private: + QsciLexerHex(const QsciLexerHex &); + QsciLexerHex &operator=(const QsciLexerHex &); +}; + +#endif diff --git a/libs/qscintilla/Qt4Qt5/Qsci/qscilexerhtml.h b/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexerhtml.h similarity index 99% rename from libs/qscintilla/Qt4Qt5/Qsci/qscilexerhtml.h rename to libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexerhtml.h index 825b33336..b4bdc2f0d 100644 --- a/libs/qscintilla/Qt4Qt5/Qsci/qscilexerhtml.h +++ b/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexerhtml.h @@ -1,6 +1,6 @@ // This defines the interface to the QsciLexerHTML class. // -// Copyright (c) 2019 Riverbank Computing Limited +// Copyright (c) 2023 Riverbank Computing Limited // // This file is part of QScintilla. // diff --git a/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexeridl.h b/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexeridl.h new file mode 100644 index 000000000..52e0c2f20 --- /dev/null +++ b/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexeridl.h @@ -0,0 +1,64 @@ +// This defines the interface to the QsciLexerIDL class. +// +// Copyright (c) 2023 Riverbank Computing Limited +// +// This file is part of QScintilla. +// +// This file may be used under the terms of the GNU General Public License +// version 3.0 as published by the Free Software Foundation and appearing in +// the file LICENSE included in the packaging of this file. Please review the +// following information to ensure the GNU General Public License version 3.0 +// requirements will be met: http://www.gnu.org/copyleft/gpl.html. +// +// If you do not wish to use this file under the terms of the GPL version 3.0 +// then you may purchase a commercial license. For more information contact +// info@riverbankcomputing.com. +// +// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + + +#ifndef QSCILEXERIDL_H +#define QSCILEXERIDL_H + +#include + +#include +#include + + +//! \brief The QsciLexerIDL class encapsulates the Scintilla IDL +//! lexer. +class QSCINTILLA_EXPORT QsciLexerIDL : public QsciLexerCPP +{ + Q_OBJECT + +public: + //! Construct a QsciLexerIDL with parent \a parent. \a parent is typically + //! the QsciScintilla instance. + QsciLexerIDL(QObject *parent = 0); + + //! Destroys the QsciLexerIDL instance. + virtual ~QsciLexerIDL(); + + //! Returns the name of the language. + const char *language() const; + + //! Returns the foreground colour of the text for style number \a style. + QColor defaultColor(int style) const; + + //! Returns the set of keywords for the keyword set \a set recognised + //! by the lexer as a space separated string. + const char *keywords(int set) const; + + //! Returns the descriptive name for style number \a style. If the + //! style is invalid for this language then an empty QString is returned. + //! This is intended to be used in user preference dialogs. + QString description(int style) const; + +private: + QsciLexerIDL(const QsciLexerIDL &); + QsciLexerIDL &operator=(const QsciLexerIDL &); +}; + +#endif diff --git a/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexerintelhex.h b/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexerintelhex.h new file mode 100644 index 000000000..8a6aa3da5 --- /dev/null +++ b/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexerintelhex.h @@ -0,0 +1,60 @@ +// This defines the interface to the QsciLexerIntelHex class. +// +// Copyright (c) 2023 Riverbank Computing Limited +// +// This file is part of QScintilla. +// +// This file may be used under the terms of the GNU General Public License +// version 3.0 as published by the Free Software Foundation and appearing in +// the file LICENSE included in the packaging of this file. Please review the +// following information to ensure the GNU General Public License version 3.0 +// requirements will be met: http://www.gnu.org/copyleft/gpl.html. +// +// If you do not wish to use this file under the terms of the GPL version 3.0 +// then you may purchase a commercial license. For more information contact +// info@riverbankcomputing.com. +// +// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + + +#ifndef QSCILEXERINTELHEX_H +#define QSCILEXERINTELHEX_H + +#include + +#include +#include + + +//! \brief The QsciLexerIntelHex class encapsulates the Scintilla Intel Hex +//! lexer. +class QSCINTILLA_EXPORT QsciLexerIntelHex : public QsciLexerHex +{ + Q_OBJECT + +public: + //! Construct a QsciLexerIntelHex with parent \a parent. \a parent is + //! typically the QsciScintilla instance. + QsciLexerIntelHex(QObject *parent = 0); + + //! Destroys the QsciLexerIntelHex instance. + virtual ~QsciLexerIntelHex(); + + //! Returns the name of the language. + const char *language() const; + + //! Returns the name of the lexer. + const char *lexer() const; + + //! Returns the descriptive name for style number \a style. If the + //! style is invalid for this language then an empty QString is returned. + //! This is intended to be used in user preference dialogs. + QString description(int style) const; + +private: + QsciLexerIntelHex(const QsciLexerIntelHex &); + QsciLexerIntelHex &operator=(const QsciLexerIntelHex &); +}; + +#endif diff --git a/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexerjava.h b/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexerjava.h new file mode 100644 index 000000000..5111c2790 --- /dev/null +++ b/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexerjava.h @@ -0,0 +1,55 @@ +// This defines the interface to the QsciLexerJava class. +// +// Copyright (c) 2023 Riverbank Computing Limited +// +// This file is part of QScintilla. +// +// This file may be used under the terms of the GNU General Public License +// version 3.0 as published by the Free Software Foundation and appearing in +// the file LICENSE included in the packaging of this file. Please review the +// following information to ensure the GNU General Public License version 3.0 +// requirements will be met: http://www.gnu.org/copyleft/gpl.html. +// +// If you do not wish to use this file under the terms of the GPL version 3.0 +// then you may purchase a commercial license. For more information contact +// info@riverbankcomputing.com. +// +// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + + +#ifndef QSCILEXERJAVA_H +#define QSCILEXERJAVA_H + +#include + +#include +#include + + +//! \brief The QsciLexerJava class encapsulates the Scintilla Java lexer. +class QSCINTILLA_EXPORT QsciLexerJava : public QsciLexerCPP +{ + Q_OBJECT + +public: + //! Construct a QsciLexerJava with parent \a parent. \a parent is + //! typically the QsciScintilla instance. + QsciLexerJava(QObject *parent = 0); + + //! Destroys the QsciLexerJava instance. + virtual ~QsciLexerJava(); + + //! Returns the name of the language. + const char *language() const; + + //! Returns the set of keywords for the keyword set \a set recognised + //! by the lexer as a space separated string. + const char *keywords(int set) const; + +private: + QsciLexerJava(const QsciLexerJava &); + QsciLexerJava &operator=(const QsciLexerJava &); +}; + +#endif diff --git a/libs/qscintilla/Qt4Qt5/Qsci/qscilexerjavascript.h b/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexerjavascript.h similarity index 97% rename from libs/qscintilla/Qt4Qt5/Qsci/qscilexerjavascript.h rename to libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexerjavascript.h index cf37fcd18..94afc7544 100644 --- a/libs/qscintilla/Qt4Qt5/Qsci/qscilexerjavascript.h +++ b/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexerjavascript.h @@ -1,6 +1,6 @@ // This defines the interface to the QsciLexerJavaScript class. // -// Copyright (c) 2019 Riverbank Computing Limited +// Copyright (c) 2023 Riverbank Computing Limited // // This file is part of QScintilla. // diff --git a/libs/qscintilla/Qt4Qt5/Qsci/qscilexerjson.h b/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexerjson.h similarity index 98% rename from libs/qscintilla/Qt4Qt5/Qsci/qscilexerjson.h rename to libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexerjson.h index 8f6d956b1..7e5bf2900 100644 --- a/libs/qscintilla/Qt4Qt5/Qsci/qscilexerjson.h +++ b/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexerjson.h @@ -1,6 +1,6 @@ // This defines the interface to the QsciLexerJSON class. // -// Copyright (c) 2019 Riverbank Computing Limited +// Copyright (c) 2023 Riverbank Computing Limited // // This file is part of QScintilla. // diff --git a/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexerlua.h b/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexerlua.h new file mode 100644 index 000000000..ea1cee38f --- /dev/null +++ b/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexerlua.h @@ -0,0 +1,194 @@ +// This defines the interface to the QsciLexerLua class. +// +// Copyright (c) 2023 Riverbank Computing Limited +// +// This file is part of QScintilla. +// +// This file may be used under the terms of the GNU General Public License +// version 3.0 as published by the Free Software Foundation and appearing in +// the file LICENSE included in the packaging of this file. Please review the +// following information to ensure the GNU General Public License version 3.0 +// requirements will be met: http://www.gnu.org/copyleft/gpl.html. +// +// If you do not wish to use this file under the terms of the GPL version 3.0 +// then you may purchase a commercial license. For more information contact +// info@riverbankcomputing.com. +// +// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + + +#ifndef QSCILEXERLUA_H +#define QSCILEXERLUA_H + +#include + +#include +#include + + +//! \brief The QsciLexerLua class encapsulates the Scintilla Lua +//! lexer. +class QSCINTILLA_EXPORT QsciLexerLua : public QsciLexer +{ + Q_OBJECT + +public: + //! This enum defines the meanings of the different styles used by the + //! Lua lexer. + enum { + //! The default. + Default = 0, + + //! A block comment. + Comment = 1, + + //! A line comment. + LineComment = 2, + + //! A number. + Number = 4, + + //! A keyword. + Keyword = 5, + + //! A string. + String = 6, + + //! A character. + Character = 7, + + //! A literal string. + LiteralString = 8, + + //! Preprocessor + Preprocessor = 9, + + //! An operator. + Operator = 10, + + //! An identifier + Identifier = 11, + + //! The end of a line where a string is not closed. + UnclosedString = 12, + + //! Basic functions. + BasicFunctions = 13, + + //! String, table and maths functions. + StringTableMathsFunctions = 14, + + //! Coroutines, I/O and system facilities. + CoroutinesIOSystemFacilities = 15, + + //! A keyword defined in keyword set number 5. The class must be + //! sub-classed and re-implement keywords() to make use of this style. + KeywordSet5 = 16, + + //! A keyword defined in keyword set number 6. The class must be + //! sub-classed and re-implement keywords() to make use of this style. + KeywordSet6 = 17, + + //! A keyword defined in keyword set number 7. The class must be + //! sub-classed and re-implement keywords() to make use of this style. + KeywordSet7 = 18, + + //! A keyword defined in keyword set number 8. The class must be + //! sub-classed and re-implement keywords() to make use of this style. + KeywordSet8 = 19, + + //! A label. + Label = 20 + }; + + //! Construct a QsciLexerLua with parent \a parent. \a parent is typically + //! the QsciScintilla instance. + QsciLexerLua(QObject *parent = 0); + + //! Destroys the QsciLexerLua instance. + virtual ~QsciLexerLua(); + + //! Returns the name of the language. + const char *language() const; + + //! Returns the name of the lexer. Some lexers support a number of + //! languages. + const char *lexer() const; + + //! \internal Returns the character sequences that can separate + //! auto-completion words. + QStringList autoCompletionWordSeparators() const; + + //! \internal Returns a space separated list of words or characters in + //! a particular style that define the start of a block for + //! auto-indentation. The styles is returned via \a style. + const char *blockStart(int *style = 0) const; + + //! \internal Returns the style used for braces for brace matching. + int braceStyle() const; + + //! Returns the foreground colour of the text for style number \a style. + //! + //! \sa defaultPaper() + QColor defaultColor(int style) const; + + //! Returns the end-of-line fill for style number \a style. + bool defaultEolFill(int style) const; + + //! Returns the font for style number \a style. + QFont defaultFont(int style) const; + + //! Returns the background colour of the text for style number \a style. + //! + //! \sa defaultColor() + QColor defaultPaper(int style) const; + + //! Returns the set of keywords for the keyword set \a set recognised + //! by the lexer as a space separated string. + const char *keywords(int set) const; + + //! Returns the descriptive name for style number \a style. If the + //! style is invalid for this language then an empty QString is returned. + //! This is intended to be used in user preference dialogs. + QString description(int style) const; + + //! Causes all properties to be refreshed by emitting the + //! propertyChanged() signal as required. + void refreshProperties(); + + //! Returns true if trailing blank lines are included in a fold block. + //! + //! \sa setFoldCompact() + bool foldCompact() const; + +public slots: + //! If \a fold is true then trailing blank lines are included in a fold + //! block. The default is true. + //! + //! \sa foldCompact() + virtual void setFoldCompact(bool fold); + +protected: + //! The lexer's properties are read from the settings \a qs. \a prefix + //! (which has a trailing '/') should be used as a prefix to the key of + //! each setting. true is returned if there is no error. + //! + bool readProperties(QSettings &qs,const QString &prefix); + + //! The lexer's properties are written to the settings \a qs. + //! \a prefix (which has a trailing '/') should be used as a prefix to + //! the key of each setting. true is returned if there is no error. + //! + bool writeProperties(QSettings &qs,const QString &prefix) const; + +private: + void setCompactProp(); + + bool fold_compact; + + QsciLexerLua(const QsciLexerLua &); + QsciLexerLua &operator=(const QsciLexerLua &); +}; + +#endif diff --git a/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexermakefile.h b/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexermakefile.h new file mode 100644 index 000000000..76c1bbca9 --- /dev/null +++ b/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexermakefile.h @@ -0,0 +1,105 @@ +// This defines the interface to the QsciLexerMakefile class. +// +// Copyright (c) 2023 Riverbank Computing Limited +// +// This file is part of QScintilla. +// +// This file may be used under the terms of the GNU General Public License +// version 3.0 as published by the Free Software Foundation and appearing in +// the file LICENSE included in the packaging of this file. Please review the +// following information to ensure the GNU General Public License version 3.0 +// requirements will be met: http://www.gnu.org/copyleft/gpl.html. +// +// If you do not wish to use this file under the terms of the GPL version 3.0 +// then you may purchase a commercial license. For more information contact +// info@riverbankcomputing.com. +// +// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + + +#ifndef QSCILEXERMAKEFILE_H +#define QSCILEXERMAKEFILE_H + +#include + +#include +#include + + +//! \brief The QsciLexerMakefile class encapsulates the Scintilla +//! Makefile lexer. +class QSCINTILLA_EXPORT QsciLexerMakefile : public QsciLexer +{ + Q_OBJECT + +public: + //! This enum defines the meanings of the different styles used by the + //! Makefile lexer. + enum { + //! The default. + Default = 0, + + //! A comment. + Comment = 1, + + //! A pre-processor directive. + Preprocessor = 2, + + //! A variable. + Variable = 3, + + //! An operator. + Operator = 4, + + //! A target. + Target = 5, + + //! An error. + Error = 9 + }; + + //! Construct a QsciLexerMakefile with parent \a parent. \a parent is + //! typically the QsciScintilla instance. + QsciLexerMakefile(QObject *parent = 0); + + //! Destroys the QsciLexerMakefile instance. + virtual ~QsciLexerMakefile(); + + //! Returns the name of the language. + const char *language() const; + + //! Returns the name of the lexer. Some lexers support a number of + //! languages. + const char *lexer() const; + + //! Returns the string of characters that comprise a word. + const char *wordCharacters() const; + + //! Returns the foreground colour of the text for style number \a style. + //! + //! \sa defaultPaper() + QColor defaultColor(int style) const; + + //! Returns the end-of-line fill for style number \a style. + bool defaultEolFill(int style) const; + + //! Returns the font for style number \a style. + QFont defaultFont(int style) const; + + //! Returns the background colour of the text for style number \a style. + //! + //! \sa defaultColor() + QColor defaultPaper(int style) const; + + //! Returns the descriptive name for style number \a style. If the + //! style is invalid for this language then an empty QString is returned. + //! This is intended to be used in user preference dialogs. + QString description(int style) const; + +private: + QsciLexerMakefile(const QsciLexerMakefile &); + QsciLexerMakefile &operator=(const QsciLexerMakefile &); +}; + +#endif diff --git a/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexermarkdown.h b/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexermarkdown.h new file mode 100644 index 000000000..dc257150a --- /dev/null +++ b/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexermarkdown.h @@ -0,0 +1,148 @@ +// This defines the interface to the QsciLexerMarkdown class. +// +// Copyright (c) 2023 Riverbank Computing Limited +// +// This file is part of QScintilla. +// +// This file may be used under the terms of the GNU General Public License +// version 3.0 as published by the Free Software Foundation and appearing in +// the file LICENSE included in the packaging of this file. Please review the +// following information to ensure the GNU General Public License version 3.0 +// requirements will be met: http://www.gnu.org/copyleft/gpl.html. +// +// If you do not wish to use this file under the terms of the GPL version 3.0 +// then you may purchase a commercial license. For more information contact +// info@riverbankcomputing.com. +// +// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + + +#ifndef QSCILEXERMARKDOWN_H +#define QSCILEXERMARKDOWN_H + +#include + +#include +#include + + +//! \brief The QsciLexerMarkdown class encapsulates the Scintilla Markdown +//! lexer. +class QSCINTILLA_EXPORT QsciLexerMarkdown : public QsciLexer +{ + Q_OBJECT + +public: + //! This enum defines the meanings of the different styles used by the + //! Markdown lexer. + + // Note that some values are omitted (ie. LINE_BEGIN and PRECHAR) as these + // seem to be internal state information rather than indicating that text + // should be styled differently. + enum { + //! The default. + Default = 0, + + //! Special (e.g. end-of-line codes if enabled). + Special = 1, + + //! Strong emphasis using double asterisks. + StrongEmphasisAsterisks = 2, + + //! Strong emphasis using double underscores. + StrongEmphasisUnderscores = 3, + + //! Emphasis using single asterisks. + EmphasisAsterisks = 4, + + //! Emphasis using single underscores. + EmphasisUnderscores = 5, + + //! A level 1 header. + Header1 = 6, + + //! A level 2 header. + Header2 = 7, + + //! A level 3 header. + Header3 = 8, + + //! A level 4 header. + Header4 = 9, + + //! A level 5 header. + Header5 = 10, + + //! A level 6 header. + Header6 = 11, + + //! Pre-char (up to three indent spaces, e.g. for a sub-list). + Prechar = 12, + + //! An unordered list item. + UnorderedListItem = 13, + + //! An ordered list item. + OrderedListItem = 14, + + //! A block quote. + BlockQuote = 15, + + //! Strike out. + StrikeOut = 16, + + //! A horizontal rule. + HorizontalRule = 17, + + //! A link. + Link = 18, + + //! Code between backticks. + CodeBackticks = 19, + + //! Code between double backticks. + CodeDoubleBackticks = 20, + + //! A code block. + CodeBlock = 21, + }; + + //! Construct a QsciLexerMarkdown with parent \a parent. \a parent is + //! typically the QsciScintilla instance. + QsciLexerMarkdown(QObject *parent = 0); + + //! Destroys the QsciLexerMarkdown instance. + virtual ~QsciLexerMarkdown(); + + //! Returns the name of the language. + const char *language() const; + + //! Returns the name of the lexer. Some lexers support a number of + //! languages. + const char *lexer() const; + + //! Returns the foreground colour of the text for style number \a style. + //! + //! \sa defaultPaper() + QColor defaultColor(int style) const; + + //! Returns the font for style number \a style. + QFont defaultFont(int style) const; + + //! Returns the background colour of the text for style number \a style. + //! + //! \sa defaultColor() + QColor defaultPaper(int style) const; + + //! Returns the descriptive name for style number \a style. If the + //! style is invalid for this language then an empty QString is returned. + //! This is intended to be used in user preference dialogs. + QString description(int style) const; + +private: + QsciLexerMarkdown(const QsciLexerMarkdown &); + QsciLexerMarkdown &operator=(const QsciLexerMarkdown &); +}; + +#endif diff --git a/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexermasm.h b/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexermasm.h new file mode 100644 index 000000000..81b90b895 --- /dev/null +++ b/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexermasm.h @@ -0,0 +1,54 @@ +// This defines the interface to the QsciLexerMASM class. +// +// Copyright (c) 2023 Riverbank Computing Limited +// +// This file is part of QScintilla. +// +// This file may be used under the terms of the GNU General Public License +// version 3.0 as published by the Free Software Foundation and appearing in +// the file LICENSE included in the packaging of this file. Please review the +// following information to ensure the GNU General Public License version 3.0 +// requirements will be met: http://www.gnu.org/copyleft/gpl.html. +// +// If you do not wish to use this file under the terms of the GPL version 3.0 +// then you may purchase a commercial license. For more information contact +// info@riverbankcomputing.com. +// +// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + + +#ifndef QSCILEXERMASM_H +#define QSCILEXERMASM_H + +#include + +#include +#include + + +//! \brief The QsciLexerMASM class encapsulates the Scintilla MASM lexer. +class QSCINTILLA_EXPORT QsciLexerMASM : public QsciLexerAsm +{ + Q_OBJECT + +public: + //! Construct a QsciLexerMASM with parent \a parent. \a parent is + //! typically the QsciScintilla instance. + QsciLexerMASM(QObject *parent = 0); + + //! Destroys the QsciLexerMASM instance. + virtual ~QsciLexerMASM(); + + //! Returns the name of the language. + const char *language() const; + + //! Returns the name of the lexer. + const char *lexer() const; + +private: + QsciLexerMASM(const QsciLexerMASM &); + QsciLexerMASM &operator=(const QsciLexerMASM &); +}; + +#endif diff --git a/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexermatlab.h b/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexermatlab.h new file mode 100644 index 000000000..c04e67bdb --- /dev/null +++ b/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexermatlab.h @@ -0,0 +1,104 @@ +// This defines the interface to the QsciLexerMatlab class. +// +// Copyright (c) 2023 Riverbank Computing Limited +// +// This file is part of QScintilla. +// +// This file may be used under the terms of the GNU General Public License +// version 3.0 as published by the Free Software Foundation and appearing in +// the file LICENSE included in the packaging of this file. Please review the +// following information to ensure the GNU General Public License version 3.0 +// requirements will be met: http://www.gnu.org/copyleft/gpl.html. +// +// If you do not wish to use this file under the terms of the GPL version 3.0 +// then you may purchase a commercial license. For more information contact +// info@riverbankcomputing.com. +// +// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + + +#ifndef QSCILEXERMATLAB_H +#define QSCILEXERMATLAB_H + +#include + +#include +#include + + +//! \brief The QsciLexerMatlab class encapsulates the Scintilla Matlab file +//! lexer. +class QSCINTILLA_EXPORT QsciLexerMatlab : public QsciLexer +{ + Q_OBJECT + +public: + //! This enum defines the meanings of the different styles used by the + //! Matlab file lexer. + enum { + //! The default. + Default = 0, + + //! A comment. + Comment = 1, + + //! A command. + Command = 2, + + //! A number. + Number = 3, + + //! A keyword. + Keyword = 4, + + //! A single quoted string. + SingleQuotedString = 5, + + //! An operator + Operator = 6, + + //! An identifier. + Identifier = 7, + + //! A double quoted string. + DoubleQuotedString = 8 + }; + + //! Construct a QsciLexerMatlab with parent \a parent. \a parent is + //! typically the QsciScintilla instance. + QsciLexerMatlab(QObject *parent = 0); + + //! Destroys the QsciLexerMatlab instance. + virtual ~QsciLexerMatlab(); + + //! Returns the name of the language. + const char *language() const; + + //! Returns the name of the lexer. Some lexers support a number of + //! languages. + const char *lexer() const; + + //! Returns the foreground colour of the text for style number \a style. + //! + //! \sa defaultPaper() + QColor defaultColor(int style) const; + + //! Returns the font for style number \a style. + QFont defaultFont(int style) const; + + //! Returns the set of keywords for the keyword set \a set recognised + //! by the lexer as a space separated string. + const char *keywords(int set) const; + + //! Returns the descriptive name for style number \a style. If the + //! style is invalid for this language then an empty QString is returned. + //! This is intended to be used in user preference dialogs. + QString description(int style) const; + +private: + QsciLexerMatlab(const QsciLexerMatlab &); + QsciLexerMatlab &operator=(const QsciLexerMatlab &); +}; + +#endif diff --git a/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexernasm.h b/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexernasm.h new file mode 100644 index 000000000..0a8e8eb7c --- /dev/null +++ b/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexernasm.h @@ -0,0 +1,54 @@ +// This defines the interface to the QsciLexerNASM class. +// +// Copyright (c) 2023 Riverbank Computing Limited +// +// This file is part of QScintilla. +// +// This file may be used under the terms of the GNU General Public License +// version 3.0 as published by the Free Software Foundation and appearing in +// the file LICENSE included in the packaging of this file. Please review the +// following information to ensure the GNU General Public License version 3.0 +// requirements will be met: http://www.gnu.org/copyleft/gpl.html. +// +// If you do not wish to use this file under the terms of the GPL version 3.0 +// then you may purchase a commercial license. For more information contact +// info@riverbankcomputing.com. +// +// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + + +#ifndef QSCILEXERNASM_H +#define QSCILEXERNASM_H + +#include + +#include +#include + + +//! \brief The QsciLexerNASM class encapsulates the Scintilla NASM lexer. +class QSCINTILLA_EXPORT QsciLexerNASM : public QsciLexerAsm +{ + Q_OBJECT + +public: + //! Construct a QsciLexerNASM with parent \a parent. \a parent is + //! typically the QsciScintilla instance. + QsciLexerNASM(QObject *parent = 0); + + //! Destroys the QsciLexerNASM instance. + virtual ~QsciLexerNASM(); + + //! Returns the name of the language. + const char *language() const; + + //! Returns the name of the lexer. + const char *lexer() const; + +private: + QsciLexerNASM(const QsciLexerNASM &); + QsciLexerNASM &operator=(const QsciLexerNASM &); +}; + +#endif diff --git a/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexeroctave.h b/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexeroctave.h new file mode 100644 index 000000000..dafbadfb7 --- /dev/null +++ b/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexeroctave.h @@ -0,0 +1,60 @@ +// This defines the interface to the QsciLexerOctave class. +// +// Copyright (c) 2023 Riverbank Computing Limited +// +// This file is part of QScintilla. +// +// This file may be used under the terms of the GNU General Public License +// version 3.0 as published by the Free Software Foundation and appearing in +// the file LICENSE included in the packaging of this file. Please review the +// following information to ensure the GNU General Public License version 3.0 +// requirements will be met: http://www.gnu.org/copyleft/gpl.html. +// +// If you do not wish to use this file under the terms of the GPL version 3.0 +// then you may purchase a commercial license. For more information contact +// info@riverbankcomputing.com. +// +// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + + +#ifndef QSCILEXEROCTAVE_H +#define QSCILEXEROCTAVE_H + +#include + +#include +#include + + +//! \brief The QsciLexerOctave class encapsulates the Scintilla Octave file +//! lexer. +class QSCINTILLA_EXPORT QsciLexerOctave : public QsciLexerMatlab +{ + Q_OBJECT + +public: + //! Construct a QsciLexerOctave with parent \a parent. \a parent is + //! typically the QsciScintilla instance. + QsciLexerOctave(QObject *parent = 0); + + //! Destroys the QsciLexerOctave instance. + virtual ~QsciLexerOctave(); + + //! Returns the name of the language. + const char *language() const; + + //! Returns the name of the lexer. Some lexers support a number of + //! languages. + const char *lexer() const; + + //! Returns the set of keywords for the keyword set \a set recognised + //! by the lexer as a space separated string. + const char *keywords(int set) const; + +private: + QsciLexerOctave(const QsciLexerOctave &); + QsciLexerOctave &operator=(const QsciLexerOctave &); +}; + +#endif diff --git a/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexerpascal.h b/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexerpascal.h new file mode 100644 index 000000000..f8caf119f --- /dev/null +++ b/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexerpascal.h @@ -0,0 +1,227 @@ +// This defines the interface to the QsciLexerPascal class. +// +// Copyright (c) 2023 Riverbank Computing Limited +// +// This file is part of QScintilla. +// +// This file may be used under the terms of the GNU General Public License +// version 3.0 as published by the Free Software Foundation and appearing in +// the file LICENSE included in the packaging of this file. Please review the +// following information to ensure the GNU General Public License version 3.0 +// requirements will be met: http://www.gnu.org/copyleft/gpl.html. +// +// If you do not wish to use this file under the terms of the GPL version 3.0 +// then you may purchase a commercial license. For more information contact +// info@riverbankcomputing.com. +// +// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + + +#ifndef QSCILEXERPASCAL_H +#define QSCILEXERPASCAL_H + +#include + +#include +#include + + +//! \brief The QsciLexerPascal class encapsulates the Scintilla Pascal lexer. +class QSCINTILLA_EXPORT QsciLexerPascal : public QsciLexer +{ + Q_OBJECT + +public: + //! This enum defines the meanings of the different styles used by the + //! C++ lexer. + enum { + //! The default. + Default = 0, + + //! An identifier + Identifier = 1, + + //! A '{ ... }' style comment. + Comment = 2, + + //! A '(* ... *)' style comment. + CommentParenthesis = 3, + + //! A comment line. + CommentLine = 4, + + //! A '{$ ... }' style pre-processor block. + PreProcessor = 5, + + //! A '(*$ ... *)' style pre-processor block. + PreProcessorParenthesis = 6, + + //! A number. + Number = 7, + + //! A hexadecimal number. + HexNumber = 8, + + //! A keyword. + Keyword = 9, + + //! A single-quoted string. + SingleQuotedString = 10, + + //! The end of a line where a string is not closed. + UnclosedString = 11, + + //! A character. + Character = 12, + + //! An operator. + Operator = 13, + + //! Inline Asm. + Asm = 14 + }; + + //! Construct a QsciLexerPascal with parent \a parent. \a parent is + //! typically the QsciScintilla instance. + QsciLexerPascal(QObject *parent = 0); + + //! Destroys the QsciLexerPascal instance. + virtual ~QsciLexerPascal(); + + //! Returns the name of the language. + const char *language() const; + + //! Returns the name of the lexer. Some lexers support a number of + //! languages. + const char *lexer() const; + + //! \internal Returns the character sequences that can separate + //! auto-completion words. + QStringList autoCompletionWordSeparators() const; + + //! \internal Returns a space separated list of words or characters in + //! a particular style that define the end of a block for + //! auto-indentation. The styles is returned via \a style. + const char *blockEnd(int *style = 0) const; + + //! \internal Returns a space separated list of words or characters in + //! a particular style that define the start of a block for + //! auto-indentation. The styles is returned via \a style. + const char *blockStart(int *style = 0) const; + + //! \internal Returns a space separated list of keywords in a + //! particular style that define the start of a block for + //! auto-indentation. The styles is returned via \a style. + const char *blockStartKeyword(int *style = 0) const; + + //! \internal Returns the style used for braces for brace matching. + int braceStyle() const; + + //! Returns the foreground colour of the text for style number \a style. + //! + //! \sa defaultPaper() + QColor defaultColor(int style) const; + + //! Returns the end-of-line fill for style number \a style. + bool defaultEolFill(int style) const; + + //! Returns the font for style number \a style. + QFont defaultFont(int style) const; + + //! Returns the background colour of the text for style number \a style. + //! + //! \sa defaultColor() + QColor defaultPaper(int style) const; + + //! Returns the set of keywords for the keyword set \a set recognised + //! by the lexer as a space separated string. + const char *keywords(int set) const; + + //! Returns the descriptive name for style number \a style. If the + //! style is invalid for this language then an empty QString is returned. + //! This is intended to be used in user preference dialogs. + QString description(int style) const; + + //! Causes all properties to be refreshed by emitting the + //! propertyChanged() signal as required. + void refreshProperties(); + + //! Returns true if multi-line comment blocks can be folded. + //! + //! \sa setFoldComments() + bool foldComments() const; + + //! Returns true if trailing blank lines are included in a fold block. + //! + //! \sa setFoldCompact() + bool foldCompact() const; + + //! Returns true if preprocessor blocks can be folded. + //! + //! \sa setFoldPreprocessor() + bool foldPreprocessor() const; + + //! If \a enabled is true then some keywords will only be highlighted in an + //! appropriate context (similar to how the Delphi IDE works). The default + //! is true. + //! + //! \sa smartHighlighting() + void setSmartHighlighting(bool enabled); + + //! Returns true if some keywords will only be highlighted in an + //! appropriate context (similar to how the Delphi IDE works). + //! + //! \sa setSmartHighlighting() + bool smartHighlighting() const; + +public slots: + //! If \a fold is true then multi-line comment blocks can be folded. + //! The default is false. + //! + //! \sa foldComments() + virtual void setFoldComments(bool fold); + + //! If \a fold is true then trailing blank lines are included in a fold + //! block. The default is true. + //! + //! \sa foldCompact() + virtual void setFoldCompact(bool fold); + + //! If \a fold is true then preprocessor blocks can be folded. The + //! default is true. + //! + //! \sa foldPreprocessor() + virtual void setFoldPreprocessor(bool fold); + +protected: + //! The lexer's properties are read from the settings \a qs. \a prefix + //! (which has a trailing '/') should be used as a prefix to the key of + //! each setting. true is returned if there is no error. + //! + //! \sa writeProperties() + bool readProperties(QSettings &qs,const QString &prefix); + + //! The lexer's properties are written to the settings \a qs. + //! \a prefix (which has a trailing '/') should be used as a prefix to + //! the key of each setting. true is returned if there is no error. + //! + //! \sa readProperties() + bool writeProperties(QSettings &qs,const QString &prefix) const; + +private: + void setCommentProp(); + void setCompactProp(); + void setPreprocProp(); + void setSmartHighlightProp(); + + bool fold_comments; + bool fold_compact; + bool fold_preproc; + bool smart_highlight; + + QsciLexerPascal(const QsciLexerPascal &); + QsciLexerPascal &operator=(const QsciLexerPascal &); +}; + +#endif diff --git a/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexerperl.h b/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexerperl.h new file mode 100644 index 000000000..0a5f77c67 --- /dev/null +++ b/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexerperl.h @@ -0,0 +1,312 @@ +// This defines the interface to the QsciLexerPerl class. +// +// Copyright (c) 2023 Riverbank Computing Limited +// +// This file is part of QScintilla. +// +// This file may be used under the terms of the GNU General Public License +// version 3.0 as published by the Free Software Foundation and appearing in +// the file LICENSE included in the packaging of this file. Please review the +// following information to ensure the GNU General Public License version 3.0 +// requirements will be met: http://www.gnu.org/copyleft/gpl.html. +// +// If you do not wish to use this file under the terms of the GPL version 3.0 +// then you may purchase a commercial license. For more information contact +// info@riverbankcomputing.com. +// +// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + + +#ifndef QSCILEXERPERL_H +#define QSCILEXERPERL_H + +#include + +#include +#include + + +//! \brief The QsciLexerPerl class encapsulates the Scintilla Perl +//! lexer. +class QSCINTILLA_EXPORT QsciLexerPerl : public QsciLexer +{ + Q_OBJECT + +public: + //! This enum defines the meanings of the different styles used by the + //! Perl lexer. + enum { + //! The default. + Default = 0, + + //! An error. + Error = 1, + + //! A comment. + Comment = 2, + + //! A POD. + POD = 3, + + //! A number. + Number = 4, + + //! A keyword. + Keyword = 5, + + //! A double-quoted string. + DoubleQuotedString = 6, + + //! A single-quoted string. + SingleQuotedString = 7, + + //! An operator. + Operator = 10, + + //! An identifier + Identifier = 11, + + //! A scalar. + Scalar = 12, + + //! An array. + Array = 13, + + //! A hash. + Hash = 14, + + //! A symbol table. + SymbolTable = 15, + + //! A regular expression. + Regex = 17, + + //! A substitution. + Substitution = 18, + + //! Backticks. + Backticks = 20, + + //! A data section. + DataSection = 21, + + //! A here document delimiter. + HereDocumentDelimiter = 22, + + //! A single quoted here document. + SingleQuotedHereDocument = 23, + + //! A double quoted here document. + DoubleQuotedHereDocument = 24, + + //! A backtick here document. + BacktickHereDocument = 25, + + //! A quoted string (q). + QuotedStringQ = 26, + + //! A quoted string (qq). + QuotedStringQQ = 27, + + //! A quoted string (qx). + QuotedStringQX = 28, + + //! A quoted string (qr). + QuotedStringQR = 29, + + //! A quoted string (qw). + QuotedStringQW = 30, + + //! A verbatim POD. + PODVerbatim = 31, + + //! A Subroutine prototype. + SubroutinePrototype = 40, + + //! A format identifier. + FormatIdentifier = 41, + + //! A format body. + FormatBody = 42, + + //! A double-quoted string (interpolated variable). + DoubleQuotedStringVar = 43, + + //! A translation. + Translation = 44, + + //! A regular expression (interpolated variable). + RegexVar = 54, + + //! A substitution (interpolated variable). + SubstitutionVar = 55, + + //! Backticks (interpolated variable). + BackticksVar = 57, + + //! A double quoted here document (interpolated variable). + DoubleQuotedHereDocumentVar = 61, + + //! A backtick here document (interpolated variable). + BacktickHereDocumentVar = 62, + + //! A quoted string (qq, interpolated variable). + QuotedStringQQVar = 64, + + //! A quoted string (qx, interpolated variable). + QuotedStringQXVar = 65, + + //! A quoted string (qr, interpolated variable). + QuotedStringQRVar = 66 + }; + + //! Construct a QsciLexerPerl with parent \a parent. \a parent is + //! typically the QsciScintilla instance. + QsciLexerPerl(QObject *parent = 0); + + //! Destroys the QsciLexerPerl instance. + virtual ~QsciLexerPerl(); + + //! Returns the name of the language. + const char *language() const; + + //! Returns the name of the lexer. Some lexers support a number of + //! languages. + const char *lexer() const; + + //! \internal Returns the character sequences that can separate + //! auto-completion words. + QStringList autoCompletionWordSeparators() const; + + //! \internal Returns a space separated list of words or characters in + //! a particular style that define the end of a block for + //! auto-indentation. The styles is returned via \a style. + const char *blockEnd(int *style = 0) const; + + //! \internal Returns a space separated list of words or characters in + //! a particular style that define the start of a block for + //! auto-indentation. The styles is returned via \a style. + const char *blockStart(int *style = 0) const; + + //! \internal Returns the style used for braces for brace matching. + int braceStyle() const; + + //! Returns the string of characters that comprise a word. + const char *wordCharacters() const; + + //! Returns the foreground colour of the text for style number + //! \a style. + //! + //! \sa defaultPaper() + QColor defaultColor(int style) const; + + //! Returns the end-of-line fill for style number \a style. + bool defaultEolFill(int style) const; + + //! Returns the font for style number \a style. + QFont defaultFont(int style) const; + + //! Returns the background colour of the text for style number \a style. + //! + //! \sa defaultColor() + QColor defaultPaper(int style) const; + + //! Returns the set of keywords for the keyword set \a set recognised + //! by the lexer as a space separated string. + const char *keywords(int set) const; + + //! Returns the descriptive name for style number \a style. If the + //! style is invalid for this language then an empty QString is returned. + //! This is intended to be used in user preference dialogs. + QString description(int style) const; + + //! Causes all properties to be refreshed by emitting the + //! propertyChanged() signal as required. + void refreshProperties(); + + //! If \a fold is true then "} else {" lines can be folded. The default is + //! false. + //! + //! \sa foldAtElse() + void setFoldAtElse(bool fold); + + //! Returns true if "} else {" lines can be folded. + //! + //! \sa setFoldAtElse() + bool foldAtElse() const {return fold_atelse;} + + //! Returns true if multi-line comment blocks can be folded. + //! + //! \sa setFoldComments() + bool foldComments() const; + + //! Returns true if trailing blank lines are included in a fold block. + //! + //! \sa setFoldCompact() + bool foldCompact() const; + + //! If \a fold is true then packages can be folded. The default is true. + //! + //! \sa foldPackages() + void setFoldPackages(bool fold); + + //! Returns true if packages can be folded. + //! + //! \sa setFoldPackages() + bool foldPackages() const; + + //! If \a fold is true then POD blocks can be folded. The default is true. + //! + //! \sa foldPODBlocks() + void setFoldPODBlocks(bool fold); + + //! Returns true if POD blocks can be folded. + //! + //! \sa setFoldPODBlocks() + bool foldPODBlocks() const; + +public slots: + //! If \a fold is true then multi-line comment blocks can be folded. + //! The default is false. + //! + //! \sa foldComments() + virtual void setFoldComments(bool fold); + + //! If \a fold is true then trailing blank lines are included in a fold + //! block. The default is true. + //! + //! \sa foldCompact() + virtual void setFoldCompact(bool fold); + +protected: + //! The lexer's properties are read from the settings \a qs. \a prefix + //! (which has a trailing '/') should be used as a prefix to the key of + //! each setting. true is returned if there is no error. + //! + bool readProperties(QSettings &qs,const QString &prefix); + + //! The lexer's properties are written to the settings \a qs. + //! \a prefix (which has a trailing '/') should be used as a prefix to + //! the key of each setting. true is returned if there is no error. + //! + bool writeProperties(QSettings &qs,const QString &prefix) const; + +private: + void setAtElseProp(); + void setCommentProp(); + void setCompactProp(); + void setPackagesProp(); + void setPODBlocksProp(); + + bool fold_atelse; + bool fold_comments; + bool fold_compact; + bool fold_packages; + bool fold_pod_blocks; + + QsciLexerPerl(const QsciLexerPerl &); + QsciLexerPerl &operator=(const QsciLexerPerl &); +}; + +#endif diff --git a/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexerpo.h b/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexerpo.h new file mode 100644 index 000000000..083308f62 --- /dev/null +++ b/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexerpo.h @@ -0,0 +1,163 @@ +// This defines the interface to the QsciLexerPO class. +// +// Copyright (c) 2023 Riverbank Computing Limited +// +// This file is part of QScintilla. +// +// This file may be used under the terms of the GNU General Public License +// version 3.0 as published by the Free Software Foundation and appearing in +// the file LICENSE included in the packaging of this file. Please review the +// following information to ensure the GNU General Public License version 3.0 +// requirements will be met: http://www.gnu.org/copyleft/gpl.html. +// +// If you do not wish to use this file under the terms of the GPL version 3.0 +// then you may purchase a commercial license. For more information contact +// info@riverbankcomputing.com. +// +// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + + +#ifndef QSCILEXERPO_H +#define QSCILEXERPO_H + +#include + +#include +#include + + +//! \brief The QsciLexerPO class encapsulates the Scintilla PO lexer. +class QSCINTILLA_EXPORT QsciLexerPO : public QsciLexer +{ + Q_OBJECT + +public: + //! This enum defines the meanings of the different styles used by the + //! PO lexer. + enum { + //! The default. + Default = 0, + + //! A comment. + Comment = 1, + + //! A message identifier. + MessageId = 2, + + //! The text of a message identifier. + MessageIdText = 3, + + //! A message string. + MessageString = 4, + + //! The text of a message string. + MessageStringText = 5, + + //! A message context. + MessageContext = 6, + + //! The text of a message context. + MessageContextText = 7, + + //! The "fuzzy" flag. + Fuzzy = 8, + + //! A programmer comment. + ProgrammerComment = 9, + + //! A reference. + Reference = 10, + + //! A flag. + Flags = 11, + + //! A message identifier text end-of-line. + MessageIdTextEOL = 12, + + //! A message string text end-of-line. + MessageStringTextEOL = 13, + + //! A message context text end-of-line. + MessageContextTextEOL = 14 + }; + + //! Construct a QsciLexerPO with parent \a parent. \a parent is typically + //! the QsciScintilla instance. + QsciLexerPO(QObject *parent = 0); + + //! Destroys the QsciLexerPO instance. + virtual ~QsciLexerPO(); + + //! Returns the name of the language. + const char *language() const; + + //! Returns the name of the lexer. Some lexers support a number of + //! languages. + const char *lexer() const; + + //! Returns the foreground colour of the text for style number \a style. + //! + //! \sa defaultPaper() + QColor defaultColor(int style) const; + + //! Returns the font for style number \a style. + QFont defaultFont(int style) const; + + //! Returns the descriptive name for style number \a style. If the + //! style is invalid for this language then an empty QString is returned. + //! This is intended to be used in user preference dialogs. + QString description(int style) const; + + //! Causes all properties to be refreshed by emitting the propertyChanged() + //! signal as required. + void refreshProperties(); + + //! Returns true if multi-line comment blocks can be folded. + //! + //! \sa setFoldComments() + bool foldComments() const; + + //! Returns true if trailing blank lines are included in a fold block. + //! + //! \sa setFoldCompact() + bool foldCompact() const; + +public slots: + //! If \a fold is true then multi-line comment blocks can be folded. + //! The default is false. + //! + //! \sa foldComments() + virtual void setFoldComments(bool fold); + + //! If \a fold is true then trailing blank lines are included in a fold + //! block. The default is true. + //! + //! \sa foldCompact() + virtual void setFoldCompact(bool fold); + +protected: + //! The lexer's properties are read from the settings \a qs. \a prefix + //! (which has a trailing '/') should be used as a prefix to the key of + //! each setting. true is returned if there is no error. + //! + bool readProperties(QSettings &qs,const QString &prefix); + + //! The lexer's properties are written to the settings \a qs. + //! \a prefix (which has a trailing '/') should be used as a prefix to + //! the key of each setting. true is returned if there is no error. + //! + bool writeProperties(QSettings &qs,const QString &prefix) const; + +private: + void setCommentProp(); + void setCompactProp(); + + bool fold_comments; + bool fold_compact; + + QsciLexerPO(const QsciLexerPO &); + QsciLexerPO &operator=(const QsciLexerPO &); +}; + +#endif diff --git a/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexerpostscript.h b/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexerpostscript.h new file mode 100644 index 000000000..1af088dd2 --- /dev/null +++ b/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexerpostscript.h @@ -0,0 +1,204 @@ +// This defines the interface to the QsciLexerPostScript class. +// +// Copyright (c) 2023 Riverbank Computing Limited +// +// This file is part of QScintilla. +// +// This file may be used under the terms of the GNU General Public License +// version 3.0 as published by the Free Software Foundation and appearing in +// the file LICENSE included in the packaging of this file. Please review the +// following information to ensure the GNU General Public License version 3.0 +// requirements will be met: http://www.gnu.org/copyleft/gpl.html. +// +// If you do not wish to use this file under the terms of the GPL version 3.0 +// then you may purchase a commercial license. For more information contact +// info@riverbankcomputing.com. +// +// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + + +#ifndef QSCILEXERPOSTSCRIPT_H +#define QSCILEXERPOSTSCRIPT_H + +#include + +#include +#include + + +//! \brief The QsciLexerPostScript class encapsulates the Scintilla PostScript +//! lexer. +class QSCINTILLA_EXPORT QsciLexerPostScript : public QsciLexer +{ + Q_OBJECT + +public: + //! This enum defines the meanings of the different styles used by the + //! PostScript lexer. + enum { + //! The default. + Default = 0, + + //! A comment. + Comment = 1, + + //! A DSC comment. + DSCComment = 2, + + //! A DSC comment value. + DSCCommentValue = 3, + + //! A number. + Number = 4, + + //! A name. + Name = 5, + + //! A keyword. + Keyword = 6, + + //! A literal. + Literal = 7, + + //! An immediately evaluated literal. + ImmediateEvalLiteral = 8, + + //! Array parenthesis. + ArrayParenthesis = 9, + + //! Dictionary parenthesis. + DictionaryParenthesis = 10, + + //! Procedure parenthesis. + ProcedureParenthesis = 11, + + //! Text. + Text = 12, + + //! A hexadecimal string. + HexString = 13, + + //! A base85 string. + Base85String = 14, + + //! A bad string character. + BadStringCharacter = 15 + }; + + //! Construct a QsciLexerPostScript with parent \a parent. \a parent is + //! typically the QsciScintilla instance. + QsciLexerPostScript(QObject *parent = 0); + + //! Destroys the QsciLexerPostScript instance. + virtual ~QsciLexerPostScript(); + + //! Returns the name of the language. + const char *language() const; + + //! Returns the name of the lexer. Some lexers support a number of + //! languages. + const char *lexer() const; + + //! \internal Returns the style used for braces for brace matching. + int braceStyle() const; + + //! Returns the foreground colour of the text for style number \a style. + //! + //! \sa defaultPaper() + QColor defaultColor(int style) const; + + //! Returns the font for style number \a style. + QFont defaultFont(int style) const; + + //! Returns the background colour of the text for style number \a style. + //! + //! \sa defaultColor() + QColor defaultPaper(int style) const; + + //! Returns the set of keywords for the keyword set \a set recognised + //! by the lexer as a space separated string. Set 5 can be used to provide + //! additional user defined keywords. + const char *keywords(int set) const; + + //! Returns the descriptive name for style number \a style. If the + //! style is invalid for this language then an empty QString is returned. + //! This is intended to be used in user preference dialogs. + QString description(int style) const; + + //! Causes all properties to be refreshed by emitting the propertyChanged() + //! signal as required. + void refreshProperties(); + + //! Returns true if tokens should be marked. + //! + //! \sa setTokenize() + bool tokenize() const; + + //! Returns the PostScript level. + //! + //! \sa setLevel() + int level() const; + + //! Returns true if trailing blank lines are included in a fold block. + //! + //! \sa setFoldCompact() + bool foldCompact() const; + + //! Returns true if else blocks can be folded. + //! + //! \sa setFoldAtElse() + bool foldAtElse() const; + +public slots: + //! If \a tokenize is true then tokens are marked. The default is false. + //! + //! \sa tokenize() + virtual void setTokenize(bool tokenize); + + //! The PostScript level is set to \a level. The default is 3. + //! + //! \sa level() + virtual void setLevel(int level); + + //! If \a fold is true then trailing blank lines are included in a fold + //! block. The default is true. + //! + //! \sa foldCompact() + virtual void setFoldCompact(bool fold); + + //! If \a fold is true then else blocks can be folded. The default is + //! false. + //! + //! \sa foldAtElse() + virtual void setFoldAtElse(bool fold); + +protected: + //! The lexer's properties are read from the settings \a qs. \a prefix + //! (which has a trailing '/') should be used as a prefix to the key of + //! each setting. true is returned if there is no error. + //! + bool readProperties(QSettings &qs,const QString &prefix); + + //! The lexer's properties are written to the settings \a qs. + //! \a prefix (which has a trailing '/') should be used as a prefix to + //! the key of each setting. true is returned if there is no error. + //! + bool writeProperties(QSettings &qs,const QString &prefix) const; + +private: + void setTokenizeProp(); + void setLevelProp(); + void setCompactProp(); + void setAtElseProp(); + + bool ps_tokenize; + int ps_level; + bool fold_compact; + bool fold_atelse; + + QsciLexerPostScript(const QsciLexerPostScript &); + QsciLexerPostScript &operator=(const QsciLexerPostScript &); +}; + +#endif diff --git a/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexerpov.h b/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexerpov.h new file mode 100644 index 000000000..1f522ac70 --- /dev/null +++ b/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexerpov.h @@ -0,0 +1,203 @@ +// This defines the interface to the QsciLexerPOV class. +// +// Copyright (c) 2023 Riverbank Computing Limited +// +// This file is part of QScintilla. +// +// This file may be used under the terms of the GNU General Public License +// version 3.0 as published by the Free Software Foundation and appearing in +// the file LICENSE included in the packaging of this file. Please review the +// following information to ensure the GNU General Public License version 3.0 +// requirements will be met: http://www.gnu.org/copyleft/gpl.html. +// +// If you do not wish to use this file under the terms of the GPL version 3.0 +// then you may purchase a commercial license. For more information contact +// info@riverbankcomputing.com. +// +// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + + +#ifndef QSCILEXERPOV_H +#define QSCILEXERPOV_H + +#include + +#include +#include + + +//! \brief The QsciLexerPOV class encapsulates the Scintilla POV lexer. +class QSCINTILLA_EXPORT QsciLexerPOV : public QsciLexer +{ + Q_OBJECT + +public: + //! This enum defines the meanings of the different styles used by the + //! POV lexer. + enum { + //! The default. + Default = 0, + + //! A comment. + Comment = 1, + + //! A comment line. + CommentLine = 2, + + //! A number. + Number = 3, + + //! An operator. + Operator = 4, + + //! An identifier + Identifier = 5, + + //! A string. + String = 6, + + //! The end of a line where a string is not closed. + UnclosedString = 7, + + //! A directive. + Directive = 8, + + //! A bad directive. + BadDirective = 9, + + //! Objects, CSG and appearance. + ObjectsCSGAppearance = 10, + + //! Types, modifiers and items. + TypesModifiersItems = 11, + + //! Predefined identifiers. + PredefinedIdentifiers = 12, + + //! Predefined identifiers. + PredefinedFunctions = 13, + + //! A keyword defined in keyword set number 6. The class must be + //! sub-classed and re-implement keywords() to make use of this style. + KeywordSet6 = 14, + + //! A keyword defined in keyword set number 7. The class must be + //! sub-classed and re-implement keywords() to make use of this style. + KeywordSet7 = 15, + + //! A keyword defined in keyword set number 8. The class must be + //! sub-classed and re-implement keywords() to make use of this style. + KeywordSet8 = 16 + }; + + //! Construct a QsciLexerPOV with parent \a parent. \a parent is typically + //! the QsciScintilla instance. + QsciLexerPOV(QObject *parent = 0); + + //! Destroys the QsciLexerPOV instance. + virtual ~QsciLexerPOV(); + + //! Returns the name of the language. + const char *language() const; + + //! Returns the name of the lexer. Some lexers support a number of + //! languages. + const char *lexer() const; + + //! \internal Returns the style used for braces for brace matching. + int braceStyle() const; + + //! Returns the string of characters that comprise a word. + const char *wordCharacters() const; + + //! Returns the foreground colour of the text for style number \a style. + //! + //! \sa defaultPaper() + QColor defaultColor(int style) const; + + //! Returns the end-of-line fill for style number \a style. + bool defaultEolFill(int style) const; + + //! Returns the font for style number \a style. + QFont defaultFont(int style) const; + + //! Returns the background colour of the text for style number \a style. + //! + //! \sa defaultColor() + QColor defaultPaper(int style) const; + + //! Returns the set of keywords for the keyword set \a set recognised + //! by the lexer as a space separated string. + const char *keywords(int set) const; + + //! Returns the descriptive name for style number \a style. If the + //! style is invalid for this language then an empty QString is returned. + //! This is intended to be used in user preference dialogs. + QString description(int style) const; + + //! Causes all properties to be refreshed by emitting the propertyChanged() + //! signal as required. + void refreshProperties(); + + //! Returns true if multi-line comment blocks can be folded. + //! + //! \sa setFoldComments() + bool foldComments() const; + + //! Returns true if trailing blank lines are included in a fold block. + //! + //! \sa setFoldCompact() + bool foldCompact() const; + + //! Returns true if directives can be folded. + //! + //! \sa setFoldDirectives() + bool foldDirectives() const; + +public slots: + //! If \a fold is true then multi-line comment blocks can be folded. + //! The default is false. + //! + //! \sa foldComments() + virtual void setFoldComments(bool fold); + + //! If \a fold is true then trailing blank lines are included in a fold + //! block. The default is true. + //! + //! \sa foldCompact() + virtual void setFoldCompact(bool fold); + + //! If \a fold is true then directives can be folded. The default is + //! false. + //! + //! \sa foldDirectives() + virtual void setFoldDirectives(bool fold); + +protected: + //! The lexer's properties are read from the settings \a qs. \a prefix + //! (which has a trailing '/') should be used as a prefix to the key of + //! each setting. true is returned if there is no error. + //! + bool readProperties(QSettings &qs,const QString &prefix); + + //! The lexer's properties are written to the settings \a qs. + //! \a prefix (which has a trailing '/') should be used as a prefix to + //! the key of each setting. true is returned if there is no error. + //! + bool writeProperties(QSettings &qs,const QString &prefix) const; + +private: + void setCommentProp(); + void setCompactProp(); + void setDirectiveProp(); + + bool fold_comments; + bool fold_compact; + bool fold_directives; + + QsciLexerPOV(const QsciLexerPOV &); + QsciLexerPOV &operator=(const QsciLexerPOV &); +}; + +#endif diff --git a/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexerproperties.h b/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexerproperties.h new file mode 100644 index 000000000..547de603f --- /dev/null +++ b/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexerproperties.h @@ -0,0 +1,150 @@ +// This defines the interface to the QsciLexerProperties class. +// +// Copyright (c) 2023 Riverbank Computing Limited +// +// This file is part of QScintilla. +// +// This file may be used under the terms of the GNU General Public License +// version 3.0 as published by the Free Software Foundation and appearing in +// the file LICENSE included in the packaging of this file. Please review the +// following information to ensure the GNU General Public License version 3.0 +// requirements will be met: http://www.gnu.org/copyleft/gpl.html. +// +// If you do not wish to use this file under the terms of the GPL version 3.0 +// then you may purchase a commercial license. For more information contact +// info@riverbankcomputing.com. +// +// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + + +#ifndef QSCILEXERPROPERTIES_H +#define QSCILEXERPROPERTIES_H + +#include + +#include +#include + + +//! \brief The QsciLexerProperties class encapsulates the Scintilla +//! Properties lexer. +class QSCINTILLA_EXPORT QsciLexerProperties : public QsciLexer +{ + Q_OBJECT + +public: + //! This enum defines the meanings of the different styles used by the + //! Properties lexer. + enum { + //! The default. + Default = 0, + + //! A comment. + Comment = 1, + + //! A section. + Section = 2, + + //! An assignment operator. + Assignment = 3, + + //! A default value. + DefaultValue = 4, + + //! A key. + Key = 5 + }; + + //! Construct a QsciLexerProperties with parent \a parent. \a parent is + //! typically the QsciScintilla instance. + QsciLexerProperties(QObject *parent = 0); + + //! Destroys the QsciLexerProperties instance. + virtual ~QsciLexerProperties(); + + //! Returns the name of the language. + const char *language() const; + + //! Returns the name of the lexer. Some lexers support a number of + //! languages. + const char *lexer() const; + + //! Returns the string of characters that comprise a word. + const char *wordCharacters() const; + + //! Returns the foreground colour of the text for style number \a style. + //! + //! \sa defaultPaper() + QColor defaultColor(int style) const; + + //! Returns the end-of-line fill for style number \a style. + bool defaultEolFill(int style) const; + + //! Returns the font for style number \a style. + QFont defaultFont(int style) const; + + //! Returns the background colour of the text for style number \a style. + //! + //! \sa defaultColor() + QColor defaultPaper(int style) const; + + //! Returns the descriptive name for style number \a style. If the style + //! is invalid for this language then an empty QString is returned. This + //! is intended to be used in user preference dialogs. + QString description(int style) const; + + //! Causes all properties to be refreshed by emitting the + //! propertyChanged() signal as required. + void refreshProperties(); + + //! Returns true if trailing blank lines are included in a fold block. + //! + //! \sa setFoldCompact() + bool foldCompact() const {return fold_compact;} + + //! If \a enable is true then initial spaces in a line are allowed. The + //! default is true. + //! + //! \sa initialSpaces() + void setInitialSpaces(bool enable); + + //! Returns true if initial spaces in a line are allowed. + //! + //! \sa setInitialSpaces() + bool initialSpaces() const {return initial_spaces;} + +public slots: + //! If \a fold is true then trailing blank lines are included in a fold + //! block. The default is true. + //! + //! \sa foldCompact() + virtual void setFoldCompact(bool fold); + +protected: + //! The lexer's properties are read from the settings \a qs. \a prefix + //! (which has a trailing '/') should be used as a prefix to the key of + //! each setting. true is returned if there is no error. + //! + //! \sa writeProperties() + bool readProperties(QSettings &qs,const QString &prefix); + + //! The lexer's properties are written to the settings \a qs. + //! \a prefix (which has a trailing '/') should be used as a prefix to + //! the key of each setting. true is returned if there is no error. + //! + //! \sa readProperties() + bool writeProperties(QSettings &qs,const QString &prefix) const; + +private: + void setCompactProp(); + void setInitialSpacesProp(); + + bool fold_compact; + bool initial_spaces; + + QsciLexerProperties(const QsciLexerProperties &); + QsciLexerProperties &operator=(const QsciLexerProperties &); +}; + +#endif diff --git a/libs/qscintilla/Qt4Qt5/Qsci/qscilexerpython.h b/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexerpython.h similarity index 99% rename from libs/qscintilla/Qt4Qt5/Qsci/qscilexerpython.h rename to libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexerpython.h index 403280787..240d96efc 100644 --- a/libs/qscintilla/Qt4Qt5/Qsci/qscilexerpython.h +++ b/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexerpython.h @@ -1,6 +1,6 @@ // This defines the interface to the QsciLexerPython class. // -// Copyright (c) 2019 Riverbank Computing Limited +// Copyright (c) 2023 Riverbank Computing Limited // // This file is part of QScintilla. // diff --git a/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexerruby.h b/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexerruby.h new file mode 100644 index 000000000..b09c79952 --- /dev/null +++ b/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexerruby.h @@ -0,0 +1,240 @@ +// This defines the interface to the QsciLexerRuby class. +// +// Copyright (c) 2023 Riverbank Computing Limited +// +// This file is part of QScintilla. +// +// This file may be used under the terms of the GNU General Public License +// version 3.0 as published by the Free Software Foundation and appearing in +// the file LICENSE included in the packaging of this file. Please review the +// following information to ensure the GNU General Public License version 3.0 +// requirements will be met: http://www.gnu.org/copyleft/gpl.html. +// +// If you do not wish to use this file under the terms of the GPL version 3.0 +// then you may purchase a commercial license. For more information contact +// info@riverbankcomputing.com. +// +// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + + +#ifndef QSCILEXERRUBY_H +#define QSCILEXERRUBY_H + +#include + +#include +#include + + +//! \brief The QsciLexerRuby class encapsulates the Scintilla Ruby lexer. +class QSCINTILLA_EXPORT QsciLexerRuby : public QsciLexer +{ + Q_OBJECT + +public: + //! This enum defines the meanings of the different styles used by the + //! Ruby lexer. + enum { + //! The default. + Default = 0, + + //! An error. + Error = 1, + + //! A comment. + Comment = 2, + + //! A POD. + POD = 3, + + //! A number. + Number = 4, + + //! A keyword. + Keyword = 5, + + //! A double-quoted string. + DoubleQuotedString = 6, + + //! A single-quoted string. + SingleQuotedString = 7, + + //! The name of a class. + ClassName = 8, + + //! The name of a function or method. + FunctionMethodName = 9, + + //! An operator. + Operator = 10, + + //! An identifier + Identifier = 11, + + //! A regular expression. + Regex = 12, + + //! A global. + Global = 13, + + //! A symbol. + Symbol = 14, + + //! The name of a module. + ModuleName = 15, + + //! An instance variable. + InstanceVariable = 16, + + //! A class variable. + ClassVariable = 17, + + //! Backticks. + Backticks = 18, + + //! A data section. + DataSection = 19, + + //! A here document delimiter. + HereDocumentDelimiter = 20, + + //! A here document. + HereDocument = 21, + + //! A %q string. + PercentStringq = 24, + + //! A %Q string. + PercentStringQ = 25, + + //! A %x string. + PercentStringx = 26, + + //! A %r string. + PercentStringr = 27, + + //! A %w string. + PercentStringw = 28, + + //! A demoted keyword. + DemotedKeyword = 29, + + //! stdin. + Stdin = 30, + + //! stdout. + Stdout = 31, + + //! stderr. + Stderr = 40 + }; + + //! Construct a QsciLexerRuby with parent \a parent. \a parent is + //! typically the QsciScintilla instance. + QsciLexerRuby(QObject *parent = 0); + + //! Destroys the QsciLexerRuby instance. + virtual ~QsciLexerRuby(); + + //! Returns the name of the language. + const char *language() const; + + //! Returns the name of the lexer. Some lexers support a number of + //! languages. + const char *lexer() const; + + //! \internal Returns a space separated list of words or characters in + //! a particular style that define the end of a block for + //! auto-indentation. The style is returned via \a style. + const char *blockEnd(int *style = 0) const; + + //! \internal Returns a space separated list of words or characters in + //! a particular style that define the start of a block for + //! auto-indentation. The styles is returned via \a style. + const char *blockStart(int *style = 0) const; + + //! \internal Returns a space separated list of keywords in a + //! particular style that define the start of a block for + //! auto-indentation. The style is returned via \a style. + const char *blockStartKeyword(int *style = 0) const; + + //! \internal Returns the style used for braces for brace matching. + int braceStyle() const; + + //! Returns the foreground colour of the text for style number \a style. + //! + //! \sa defaultpaper() + QColor defaultColor(int style) const; + + //! Returns the end-of-line fill for style number \a style. + bool defaultEolFill(int style) const; + + //! Returns the font for style number \a style. + QFont defaultFont(int style) const; + + //! Returns the background colour of the text for style number \a style. + //! + //! \sa defaultColor() + QColor defaultPaper(int style) const; + + //! Returns the set of keywords for the keyword set \a set recognised + //! by the lexer as a space separated string. + const char *keywords(int set) const; + + //! Returns the descriptive name for style number \a style. If the style + //! is invalid for this language then an empty QString is returned. This + //! is intended to be used in user preference dialogs. + QString description(int style) const; + + //! Causes all properties to be refreshed by emitting the + //! propertyChanged() signal as required. + void refreshProperties(); + + //! If \a fold is true then multi-line comment blocks can be folded. + //! The default is false. + //! + //! \sa foldComments() + void setFoldComments(bool fold); + + //! Returns true if multi-line comment blocks can be folded. + //! + //! \sa setFoldComments() + bool foldComments() const {return fold_comments;} + + //! If \a fold is true then trailing blank lines are included in a fold + //! block. The default is true. + //! + //! \sa foldCompact() + void setFoldCompact(bool fold); + + //! Returns true if trailing blank lines are included in a fold block. + //! + //! \sa setFoldCompact() + bool foldCompact() const {return fold_compact;} + +protected: + //! The lexer's properties are read from the settings \a qs. \a prefix + //! (which has a trailing '/') should be used as a prefix to the key of + //! each setting. true is returned if there is no error. + //! + bool readProperties(QSettings &qs, const QString &prefix); + + //! The lexer's properties are written to the settings \a qs. + //! \a prefix (which has a trailing '/') should be used as a prefix to + //! the key of each setting. true is returned if there is no error. + //! + bool writeProperties(QSettings &qs, const QString &prefix) const; + +private: + void setCommentProp(); + void setCompactProp(); + + bool fold_comments; + bool fold_compact; + + QsciLexerRuby(const QsciLexerRuby &); + QsciLexerRuby &operator=(const QsciLexerRuby &); +}; + +#endif diff --git a/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexerspice.h b/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexerspice.h new file mode 100644 index 000000000..364ef578c --- /dev/null +++ b/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexerspice.h @@ -0,0 +1,106 @@ +// This defines the interface to the QsciLexerSpice class. +// +// Copyright (c) 2023 Riverbank Computing Limited +// +// This file is part of QScintilla. +// +// This file may be used under the terms of the GNU General Public License +// version 3.0 as published by the Free Software Foundation and appearing in +// the file LICENSE included in the packaging of this file. Please review the +// following information to ensure the GNU General Public License version 3.0 +// requirements will be met: http://www.gnu.org/copyleft/gpl.html. +// +// If you do not wish to use this file under the terms of the GPL version 3.0 +// then you may purchase a commercial license. For more information contact +// info@riverbankcomputing.com. +// +// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + + +#ifndef QSCILEXERSPICE_H +#define QSCILEXERSPICE_H + +#include + +#include +#include + + +//! \brief The QsciLexerSpice class encapsulates the Scintilla Spice lexer. +class QSCINTILLA_EXPORT QsciLexerSpice : public QsciLexer +{ + Q_OBJECT + +public: + //! This enum defines the meanings of the different styles used by the + //! Spice lexer. + enum { + //! The default. + Default = 0, + + //! An identifier. + Identifier = 1, + + //! A command. + Command = 2, + + //! A function. + Function = 3, + + //! A parameter. + Parameter = 4, + + //! A number. + Number = 5, + + //! A delimiter. + Delimiter = 6, + + //! A value. + Value = 7, + + //! A comment. + Comment = 8 + }; + + //! Construct a QsciLexerSpice with parent \a parent. \a parent is + //! typically the QsciScintilla instance. + QsciLexerSpice(QObject *parent = 0); + + //! Destroys the QsciLexerSpice instance. + virtual ~QsciLexerSpice(); + + //! Returns the name of the language. + const char *language() const; + + //! Returns the name of the lexer. Some lexers support a number of + //! languages. + const char *lexer() const; + + //! \internal Returns the style used for braces for brace matching. + int braceStyle() const; + + //! Returns the set of keywords for the keyword set \a set recognised + //! by the lexer as a space separated string. + const char *keywords(int set) const; + + //! Returns the foreground colour of the text for style number \a style. + //! + //! \sa defaultPaper() + QColor defaultColor(int style) const; + + //! Returns the font for style number \a style. + QFont defaultFont(int style) const; + + //! Returns the descriptive name for style number \a style. If the + //! style is invalid for this language then an empty QString is returned. + //! This is intended to be used in user preference dialogs. + QString description(int style) const; + +private: + QsciLexerSpice(const QsciLexerSpice &); + QsciLexerSpice &operator=(const QsciLexerSpice &); +}; + +#endif diff --git a/libs/qscintilla/Qt4Qt5/Qsci/qscilexersql.h b/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexersql.h similarity index 99% rename from libs/qscintilla/Qt4Qt5/Qsci/qscilexersql.h rename to libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexersql.h index 0932d106e..93b64fc67 100644 --- a/libs/qscintilla/Qt4Qt5/Qsci/qscilexersql.h +++ b/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexersql.h @@ -1,6 +1,6 @@ // This defines the interface to the QsciLexerSQL class. // -// Copyright (c) 2019 Riverbank Computing Limited +// Copyright (c) 2023 Riverbank Computing Limited // // This file is part of QScintilla. // diff --git a/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexersrec.h b/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexersrec.h new file mode 100644 index 000000000..eee87016c --- /dev/null +++ b/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexersrec.h @@ -0,0 +1,59 @@ +// This defines the interface to the QsciLexerSRec class. +// +// Copyright (c) 2023 Riverbank Computing Limited +// +// This file is part of QScintilla. +// +// This file may be used under the terms of the GNU General Public License +// version 3.0 as published by the Free Software Foundation and appearing in +// the file LICENSE included in the packaging of this file. Please review the +// following information to ensure the GNU General Public License version 3.0 +// requirements will be met: http://www.gnu.org/copyleft/gpl.html. +// +// If you do not wish to use this file under the terms of the GPL version 3.0 +// then you may purchase a commercial license. For more information contact +// info@riverbankcomputing.com. +// +// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + + +#ifndef QSCILEXERSREC_H +#define QSCILEXERSREC_H + +#include + +#include +#include + + +//! \brief The QsciLexerSRec class encapsulates the Scintilla S-Record lexer. +class QSCINTILLA_EXPORT QsciLexerSRec : public QsciLexerHex +{ + Q_OBJECT + +public: + //! Construct a QsciLexerSRec with parent \a parent. \a parent is + //! typically the QsciScintilla instance. + QsciLexerSRec(QObject *parent = 0); + + //! Destroys the QsciLexerSRec instance. + virtual ~QsciLexerSRec(); + + //! Returns the name of the language. + const char *language() const; + + //! Returns the name of the lexer. + const char *lexer() const; + + //! Returns the descriptive name for style number \a style. If the + //! style is invalid for this language then an empty QString is returned. + //! This is intended to be used in user preference dialogs. + QString description(int style) const; + +private: + QsciLexerSRec(const QsciLexerSRec &); + QsciLexerSRec &operator=(const QsciLexerSRec &); +}; + +#endif diff --git a/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexertcl.h b/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexertcl.h new file mode 100644 index 000000000..95e98c7e4 --- /dev/null +++ b/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexertcl.h @@ -0,0 +1,189 @@ +// This defines the interface to the QsciLexerTCL class. +// +// Copyright (c) 2023 Riverbank Computing Limited +// +// This file is part of QScintilla. +// +// This file may be used under the terms of the GNU General Public License +// version 3.0 as published by the Free Software Foundation and appearing in +// the file LICENSE included in the packaging of this file. Please review the +// following information to ensure the GNU General Public License version 3.0 +// requirements will be met: http://www.gnu.org/copyleft/gpl.html. +// +// If you do not wish to use this file under the terms of the GPL version 3.0 +// then you may purchase a commercial license. For more information contact +// info@riverbankcomputing.com. +// +// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + + +#ifndef QSCILEXERTCL_H +#define QSCILEXERTCL_H + +#include + +#include +#include + + +//! \brief The QsciLexerTCL class encapsulates the Scintilla TCL lexer. +class QSCINTILLA_EXPORT QsciLexerTCL : public QsciLexer +{ + Q_OBJECT + +public: + //! This enum defines the meanings of the different styles used by the TCL + //! lexer. + enum { + //! The default. + Default = 0, + + //! A comment. + Comment = 1, + + //! A comment line. + CommentLine = 2, + + //! A number. + Number = 3, + + //! A quoted keyword. + QuotedKeyword = 4, + + //! A quoted string. + QuotedString = 5, + + //! An operator. + Operator = 6, + + //! An identifier + Identifier = 7, + + //! A substitution. + Substitution = 8, + + //! A substitution starting with a brace. + SubstitutionBrace = 9, + + //! A modifier. + Modifier = 10, + + //! Expand keyword (defined in keyword set number 5). + ExpandKeyword = 11, + + //! A TCL keyword (defined in keyword set number 1). + TCLKeyword = 12, + + //! A Tk keyword (defined in keyword set number 2). + TkKeyword = 13, + + //! An iTCL keyword (defined in keyword set number 3). + ITCLKeyword = 14, + + //! A Tk command (defined in keyword set number 4). + TkCommand = 15, + + //! A keyword defined in keyword set number 6. The class must be + //! sub-classed and re-implement keywords() to make use of this style. + KeywordSet6 = 16, + + //! A keyword defined in keyword set number 7. The class must be + //! sub-classed and re-implement keywords() to make use of this style. + KeywordSet7 = 17, + + //! A keyword defined in keyword set number 8. The class must be + //! sub-classed and re-implement keywords() to make use of this style. + KeywordSet8 = 18, + + //! A keyword defined in keyword set number 9. The class must be + //! sub-classed and re-implement keywords() to make use of this style. + KeywordSet9 = 19, + + //! A comment box. + CommentBox = 20, + + //! A comment block. + CommentBlock = 21 + }; + + //! Construct a QsciLexerTCL with parent \a parent. \a parent is + //! typically the QsciScintilla instance. + QsciLexerTCL(QObject *parent = 0); + + //! Destroys the QsciLexerTCL instance. + virtual ~QsciLexerTCL(); + + //! Returns the name of the language. + const char *language() const; + + //! Returns the name of the lexer. Some lexers support a number of + //! languages. + const char *lexer() const; + + //! \internal Returns the style used for braces for brace matching. + int braceStyle() const; + + //! Returns the foreground colour of the text for style number \a style. + //! + //! \sa defaultPaper() + QColor defaultColor(int style) const; + + //! Returns the end-of-line fill for style number \a style. + bool defaultEolFill(int style) const; + + //! Returns the font for style number \a style. + QFont defaultFont(int style) const; + + //! Returns the background colour of the text for style number \a style. + //! + //! \sa defaultColor() + QColor defaultPaper(int style) const; + + //! Returns the set of keywords for the keyword set \a set recognised + //! by the lexer as a space separated string. + const char *keywords(int set) const; + + //! Returns the descriptive name for style number \a style. If the style + //! is invalid for this language then an empty QString is returned. This + //! is intended to be used in user preference dialogs. + QString description(int style) const; + + //! Causes all properties to be refreshed by emitting the + //! propertyChanged() signal as required. + void refreshProperties(); + + //! If \a fold is true then multi-line comment blocks can be folded. The + //! default is false. + //! + //! \sa foldComments() + void setFoldComments(bool fold); + + //! Returns true if multi-line comment blocks can be folded. + //! + //! \sa setFoldComments() + bool foldComments() const {return fold_comments;} + +protected: + //! The lexer's properties are read from the settings \a qs. \a prefix + //! (which has a trailing '/') should be used as a prefix to the key of + //! each setting. true is returned if there is no error. + //! + bool readProperties(QSettings &qs,const QString &prefix); + + //! The lexer's properties are written to the settings \a qs. + //! \a prefix (which has a trailing '/') should be used as a prefix to + //! the key of each setting. true is returned if there is no error. + //! + bool writeProperties(QSettings &qs,const QString &prefix) const; + +private: + void setCommentProp(); + + bool fold_comments; + + QsciLexerTCL(const QsciLexerTCL &); + QsciLexerTCL &operator=(const QsciLexerTCL &); +}; + +#endif diff --git a/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexertekhex.h b/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexertekhex.h new file mode 100644 index 000000000..dea5a59ae --- /dev/null +++ b/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexertekhex.h @@ -0,0 +1,60 @@ +// This defines the interface to the QsciLexerTekHex class. +// +// Copyright (c) 2023 Riverbank Computing Limited +// +// This file is part of QScintilla. +// +// This file may be used under the terms of the GNU General Public License +// version 3.0 as published by the Free Software Foundation and appearing in +// the file LICENSE included in the packaging of this file. Please review the +// following information to ensure the GNU General Public License version 3.0 +// requirements will be met: http://www.gnu.org/copyleft/gpl.html. +// +// If you do not wish to use this file under the terms of the GPL version 3.0 +// then you may purchase a commercial license. For more information contact +// info@riverbankcomputing.com. +// +// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + + +#ifndef QSCILEXERTEKHEX_H +#define QSCILEXERTEKHEX_H + +#include + +#include +#include + + +//! \brief The QsciLexerTekHex class encapsulates the Scintilla Tektronix Hex +//! lexer. +class QSCINTILLA_EXPORT QsciLexerTekHex : public QsciLexerHex +{ + Q_OBJECT + +public: + //! Construct a QsciLexerTekHex with parent \a parent. \a parent is + //! typically the QsciScintilla instance. + QsciLexerTekHex(QObject *parent = 0); + + //! Destroys the QsciLexerTekHex instance. + virtual ~QsciLexerTekHex(); + + //! Returns the name of the language. + const char *language() const; + + //! Returns the name of the lexer. + const char *lexer() const; + + //! Returns the descriptive name for style number \a style. If the + //! style is invalid for this language then an empty QString is returned. + //! This is intended to be used in user preference dialogs. + QString description(int style) const; + +private: + QsciLexerTekHex(const QsciLexerTekHex &); + QsciLexerTekHex &operator=(const QsciLexerTekHex &); +}; + +#endif diff --git a/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexertex.h b/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexertex.h new file mode 100644 index 000000000..d9abb6460 --- /dev/null +++ b/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexertex.h @@ -0,0 +1,163 @@ +// This defines the interface to the QsciLexerTeX class. +// +// Copyright (c) 2023 Riverbank Computing Limited +// +// This file is part of QScintilla. +// +// This file may be used under the terms of the GNU General Public License +// version 3.0 as published by the Free Software Foundation and appearing in +// the file LICENSE included in the packaging of this file. Please review the +// following information to ensure the GNU General Public License version 3.0 +// requirements will be met: http://www.gnu.org/copyleft/gpl.html. +// +// If you do not wish to use this file under the terms of the GPL version 3.0 +// then you may purchase a commercial license. For more information contact +// info@riverbankcomputing.com. +// +// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + + +#ifndef QSCILEXERTEX_H +#define QSCILEXERTEX_H + +#include + +#include +#include + + +//! \brief The QsciLexerTeX class encapsulates the Scintilla TeX lexer. +class QSCINTILLA_EXPORT QsciLexerTeX : public QsciLexer +{ + Q_OBJECT + +public: + //! This enum defines the meanings of the different styles used by the + //! TeX lexer. + enum { + //! The default. + Default = 0, + + //! A special. + Special = 1, + + //! A group. + Group = 2, + + //! A symbol. + Symbol = 3, + + //! A command. + Command = 4, + + //! Text. + Text = 5 + }; + + //! Construct a QsciLexerTeX with parent \a parent. \a parent is typically + //! the QsciScintilla instance. + QsciLexerTeX(QObject *parent = 0); + + //! Destroys the QsciLexerTeX instance. + virtual ~QsciLexerTeX(); + + //! Returns the name of the language. + const char *language() const; + + //! Returns the name of the lexer. Some lexers support a number of + //! languages. + const char *lexer() const; + + //! Returns the string of characters that comprise a word. + const char *wordCharacters() const; + + //! Returns the foreground colour of the text for style number \a style. + QColor defaultColor(int style) const; + + //! Returns the set of keywords for the keyword set \a set recognised + //! by the lexer as a space separated string. + const char *keywords(int set) const; + + //! Returns the descriptive name for style number \a style. If the + //! style is invalid for this language then an empty QString is returned. + //! This is intended to be used in user preference dialogs. + QString description(int style) const; + + //! Causes all properties to be refreshed by emitting the + //! propertyChanged() signal as required. + void refreshProperties(); + + //! If \a fold is true then multi-line comment blocks can be folded. The + //! default is false. + //! + //! \sa foldComments() + void setFoldComments(bool fold); + + //! Returns true if multi-line comment blocks can be folded. + //! + //! \sa setFoldComments() + bool foldComments() const {return fold_comments;} + + //! If \a fold is true then trailing blank lines are included in a fold + //! block. The default is true. + //! + //! \sa foldCompact() + void setFoldCompact(bool fold); + + //! Returns true if trailing blank lines are included in a fold block. + //! + //! \sa setFoldCompact() + bool foldCompact() const {return fold_compact;} + + //! If \a enable is true then comments are processed as TeX source + //! otherwise they are ignored. The default is false. + //! + //! \sa processComments() + void setProcessComments(bool enable); + + //! Returns true if comments are processed as TeX source. + //! + //! \sa setProcessComments() + bool processComments() const {return process_comments;} + + //! If \a enable is true then \\if processed is processed as a + //! command. The default is true. + //! + //! \sa processIf() + void setProcessIf(bool enable); + + //! Returns true if \\if is processed as a command. + //! + //! \sa setProcessIf() + bool processIf() const {return process_if;} + +protected: + //! The lexer's properties are read from the settings \a qs. \a prefix + //! (which has a trailing '/') should be used as a prefix to the key of + //! each setting. true is returned if there is no error. + //! + bool readProperties(QSettings &qs, const QString &prefix); + + //! The lexer's properties are written to the settings \a qs. + //! \a prefix (which has a trailing '/') should be used as a prefix to + //! the key of each setting. true is returned if there is no error. + //! + bool writeProperties(QSettings &qs, const QString &prefix) const; + +private: + void setCommentProp(); + void setCompactProp(); + void setProcessCommentsProp(); + void setAutoIfProp(); + + bool fold_comments; + bool fold_compact; + bool process_comments; + bool process_if; + + QsciLexerTeX(const QsciLexerTeX &); + QsciLexerTeX &operator=(const QsciLexerTeX &); +}; + +#endif diff --git a/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexerverilog.h b/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexerverilog.h new file mode 100644 index 000000000..11e152e4e --- /dev/null +++ b/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexerverilog.h @@ -0,0 +1,257 @@ +// This defines the interface to the QsciLexerVerilog class. +// +// Copyright (c) 2023 Riverbank Computing Limited +// +// This file is part of QScintilla. +// +// This file may be used under the terms of the GNU General Public License +// version 3.0 as published by the Free Software Foundation and appearing in +// the file LICENSE included in the packaging of this file. Please review the +// following information to ensure the GNU General Public License version 3.0 +// requirements will be met: http://www.gnu.org/copyleft/gpl.html. +// +// If you do not wish to use this file under the terms of the GPL version 3.0 +// then you may purchase a commercial license. For more information contact +// info@riverbankcomputing.com. +// +// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + + +#ifndef QSCILEXERVERILOG_H +#define QSCILEXERVERILOG_H + +#include + +#include +#include + + +//! \brief The QsciLexerVerilog class encapsulates the Scintilla Verilog +//! lexer. +class QSCINTILLA_EXPORT QsciLexerVerilog : public QsciLexer +{ + Q_OBJECT + +public: + //! This enum defines the meanings of the different styles used by the + //! Verilog lexer. + enum { + //! The default. + Default = 0, + InactiveDefault = Default + 64, + + //! A comment. + Comment = 1, + InactiveComment = Comment + 64, + + //! A line comment. + CommentLine = 2, + InactiveCommentLine = CommentLine + 64, + + //! A bang comment. + CommentBang = 3, + InactiveCommentBang = CommentBang + 64, + + //! A number + Number = 4, + InactiveNumber = Number + 64, + + //! A keyword. + Keyword = 5, + InactiveKeyword = Keyword + 64, + + //! A string. + String = 6, + InactiveString = String + 64, + + //! A keyword defined in keyword set number 2. The class must + //! be sub-classed and re-implement keywords() to make use of + //! this style. + KeywordSet2 = 7, + InactiveKeywordSet2 = KeywordSet2 + 64, + + //! A system task. + SystemTask = 8, + InactiveSystemTask = SystemTask + 64, + + //! A pre-processor block. + Preprocessor = 9, + InactivePreprocessor = Preprocessor + 64, + + //! An operator. + Operator = 10, + InactiveOperator = Operator + 64, + + //! An identifier. + Identifier = 11, + InactiveIdentifier = Identifier + 64, + + //! The end of a line where a string is not closed. + UnclosedString = 12, + InactiveUnclosedString = UnclosedString + 64, + + //! A keyword defined in keyword set number 4. The class must + //! be sub-classed and re-implement keywords() to make use of + //! this style. This set is intended to be used for user defined + //! identifiers and tasks. + UserKeywordSet = 19, + InactiveUserKeywordSet = UserKeywordSet + 64, + + //! A keyword comment. + CommentKeyword = 20, + InactiveCommentKeyword = CommentKeyword + 64, + + //! An input port declaration. + DeclareInputPort = 21, + InactiveDeclareInputPort = DeclareInputPort + 64, + + //! An output port declaration. + DeclareOutputPort = 22, + InactiveDeclareOutputPort = DeclareOutputPort + 64, + + //! An input/output port declaration. + DeclareInputOutputPort = 23, + InactiveDeclareInputOutputPort = DeclareInputOutputPort + 64, + + //! A port connection. + PortConnection = 24, + InactivePortConnection = PortConnection + 64, + }; + + //! Construct a QsciLexerVerilog with parent \a parent. \a parent is + //! typically the QsciScintilla instance. + QsciLexerVerilog(QObject *parent = 0); + + //! Destroys the QsciLexerVerilog instance. + virtual ~QsciLexerVerilog(); + + //! Returns the name of the language. + const char *language() const; + + //! Returns the name of the lexer. Some lexers support a number of + //! languages. + const char *lexer() const; + + //! \internal Returns the style used for braces for brace matching. + int braceStyle() const; + + //! Returns the string of characters that comprise a word. + const char *wordCharacters() const; + + //! Returns the foreground colour of the text for style number \a style. + //! + //! \sa defaultPaper() + QColor defaultColor(int style) const; + + //! Returns the end-of-line fill for style number \a style. + bool defaultEolFill(int style) const; + + //! Returns the font for style number \a style. + QFont defaultFont(int style) const; + + //! Returns the background colour of the text for style number \a style. + //! + //! \sa defaultColor() + QColor defaultPaper(int style) const; + + //! Returns the set of keywords for the keyword set \a set recognised + //! by the lexer as a space separated string. + const char *keywords(int set) const; + + //! Returns the descriptive name for style number \a style. If the + //! style is invalid for this language then an empty QString is returned. + //! This is intended to be used in user preference dialogs. + QString description(int style) const; + + //! Causes all properties to be refreshed by emitting the + //! propertyChanged() signal as required. + void refreshProperties(); + + //! If \a fold is true then "} else {" lines can be folded. The + //! default is false. + //! + //! \sa foldAtElse() + void setFoldAtElse(bool fold); + + //! Returns true if "} else {" lines can be folded. + //! + //! \sa setFoldAtElse() + bool foldAtElse() const {return fold_atelse;} + + //! If \a fold is true then multi-line comment blocks can be folded. + //! The default is false. + //! + //! \sa foldComments() + void setFoldComments(bool fold); + + //! Returns true if multi-line comment blocks can be folded. + //! + //! \sa setFoldComments() + bool foldComments() const {return fold_comments;} + + //! If \a fold is true then trailing blank lines are included in a fold + //! block. The default is true. + //! + //! \sa foldCompact() + void setFoldCompact(bool fold); + + //! Returns true if trailing blank lines are included in a fold block. + //! + //! \sa setFoldCompact() + bool foldCompact() const {return fold_compact;}; + + //! If \a fold is true then preprocessor blocks can be folded. The + //! default is true. + //! + //! \sa foldPreprocessor() + void setFoldPreprocessor(bool fold); + + //! Returns true if preprocessor blocks can be folded. + //! + //! \sa setFoldPreprocessor() + bool foldPreprocessor() const {return fold_preproc;}; + + //! If \a fold is true then modules can be folded. The default is false. + //! + //! \sa foldAtModule() + void setFoldAtModule(bool fold); + + //! Returns true if modules can be folded. + //! + //! \sa setFoldAtModule() + bool foldAtModule() const {return fold_atmodule;}; + +protected: + //! The lexer's properties are read from the settings \a qs. \a prefix + //! (which has a trailing '/') should be used as a prefix to the key of + //! each setting. true is returned if there is no error. + //! + //! \sa writeProperties() + bool readProperties(QSettings &qs,const QString &prefix); + + //! The lexer's properties are written to the settings \a qs. + //! \a prefix (which has a trailing '/') should be used as a prefix to + //! the key of each setting. true is returned if there is no error. + //! + //! \sa readProperties() + bool writeProperties(QSettings &qs,const QString &prefix) const; + +private: + void setAtElseProp(); + void setCommentProp(); + void setCompactProp(); + void setPreprocProp(); + void setAtModuleProp(); + + bool fold_atelse; + bool fold_comments; + bool fold_compact; + bool fold_preproc; + bool fold_atmodule; + + QsciLexerVerilog(const QsciLexerVerilog &); + QsciLexerVerilog &operator=(const QsciLexerVerilog &); +}; + +#endif diff --git a/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexervhdl.h b/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexervhdl.h new file mode 100644 index 000000000..b1df141d1 --- /dev/null +++ b/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexervhdl.h @@ -0,0 +1,221 @@ +// This defines the interface to the QsciLexerVHDL class. +// +// Copyright (c) 2023 Riverbank Computing Limited +// +// This file is part of QScintilla. +// +// This file may be used under the terms of the GNU General Public License +// version 3.0 as published by the Free Software Foundation and appearing in +// the file LICENSE included in the packaging of this file. Please review the +// following information to ensure the GNU General Public License version 3.0 +// requirements will be met: http://www.gnu.org/copyleft/gpl.html. +// +// If you do not wish to use this file under the terms of the GPL version 3.0 +// then you may purchase a commercial license. For more information contact +// info@riverbankcomputing.com. +// +// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + + +#ifndef QSCILEXERVHDL_H +#define QSCILEXERVHDL_H + +#include + +#include +#include + + +//! \brief The QsciLexerVHDL class encapsulates the Scintilla VHDL lexer. +class QSCINTILLA_EXPORT QsciLexerVHDL : public QsciLexer +{ + Q_OBJECT + +public: + //! This enum defines the meanings of the different styles used by the + //! VHDL lexer. + enum { + //! The default. + Default = 0, + + //! A comment. + Comment = 1, + + //! A comment line. + CommentLine = 2, + + //! A number. + Number = 3, + + //! A string. + String = 4, + + //! An operator. + Operator = 5, + + //! An identifier + Identifier = 6, + + //! The end of a line where a string is not closed. + UnclosedString = 7, + + //! A keyword. + Keyword = 8, + + //! A standard operator. + StandardOperator = 9, + + //! An attribute. + Attribute = 10, + + //! A standard function. + StandardFunction = 11, + + //! A standard package. + StandardPackage = 12, + + //! A standard type. + StandardType = 13, + + //! A keyword defined in keyword set number 7. The class must be + //! sub-classed and re-implement keywords() to make use of this style. + KeywordSet7 = 14, + + //! A comment block. + CommentBlock = 15, + }; + + //! Construct a QsciLexerVHDL with parent \a parent. \a parent is + //! typically the QsciScintilla instance. + QsciLexerVHDL(QObject *parent = 0); + + //! Destroys the QsciLexerVHDL instance. + virtual ~QsciLexerVHDL(); + + //! Returns the name of the language. + const char *language() const; + + //! Returns the name of the lexer. Some lexers support a number of + //! languages. + const char *lexer() const; + + //! \internal Returns the style used for braces for brace matching. + int braceStyle() const; + + //! Returns the foreground colour of the text for style number \a style. + //! + //! \sa defaultPaper() + QColor defaultColor(int style) const; + + //! Returns the end-of-line fill for style number \a style. + bool defaultEolFill(int style) const; + + //! Returns the font for style number \a style. + QFont defaultFont(int style) const; + + //! Returns the background colour of the text for style number \a style. + //! + //! \sa defaultColor() + QColor defaultPaper(int style) const; + + //! Returns the set of keywords for the keyword set \a set recognised + //! by the lexer as a space separated string. + const char *keywords(int set) const; + + //! Returns the descriptive name for style number \a style. If the + //! style is invalid for this language then an empty QString is returned. + //! This is intended to be used in user preference dialogs. + QString description(int style) const; + + //! Causes all properties to be refreshed by emitting the propertyChanged() + //! signal as required. + void refreshProperties(); + + //! Returns true if multi-line comment blocks can be folded. + //! + //! \sa setFoldComments() + bool foldComments() const; + + //! Returns true if trailing blank lines are included in a fold block. + //! + //! \sa setFoldCompact() + bool foldCompact() const; + + //! Returns true if else blocks can be folded. + //! + //! \sa setFoldAtElse() + bool foldAtElse() const; + + //! Returns true if begin blocks can be folded. + //! + //! \sa setFoldAtBegin() + bool foldAtBegin() const; + + //! Returns true if blocks can be folded at a parenthesis. + //! + //! \sa setFoldAtParenthesis() + bool foldAtParenthesis() const; + +public slots: + //! If \a fold is true then multi-line comment blocks can be folded. + //! The default is true. + //! + //! \sa foldComments() + virtual void setFoldComments(bool fold); + + //! If \a fold is true then trailing blank lines are included in a fold + //! block. The default is true. + //! + //! \sa foldCompact() + virtual void setFoldCompact(bool fold); + + //! If \a fold is true then else blocks can be folded. The default is + //! true. + //! + //! \sa foldAtElse() + virtual void setFoldAtElse(bool fold); + + //! If \a fold is true then begin blocks can be folded. The default is + //! true. + //! + //! \sa foldAtBegin() + virtual void setFoldAtBegin(bool fold); + + //! If \a fold is true then blocks can be folded at a parenthesis. The + //! default is true. + //! + //! \sa foldAtParenthesis() + virtual void setFoldAtParenthesis(bool fold); + +protected: + //! The lexer's properties are read from the settings \a qs. \a prefix + //! (which has a trailing '/') should be used as a prefix to the key of + //! each setting. true is returned if there is no error. + //! + bool readProperties(QSettings &qs,const QString &prefix); + + //! The lexer's properties are written to the settings \a qs. + //! \a prefix (which has a trailing '/') should be used as a prefix to + //! the key of each setting. true is returned if there is no error. + //! + bool writeProperties(QSettings &qs,const QString &prefix) const; + +private: + void setCommentProp(); + void setCompactProp(); + void setAtElseProp(); + void setAtBeginProp(); + void setAtParenthProp(); + + bool fold_comments; + bool fold_compact; + bool fold_atelse; + bool fold_atbegin; + bool fold_atparenth; + + QsciLexerVHDL(const QsciLexerVHDL &); + QsciLexerVHDL &operator=(const QsciLexerVHDL &); +}; + +#endif diff --git a/libs/qscintilla/Qt4Qt5/Qsci/qscilexerxml.h b/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexerxml.h similarity index 98% rename from libs/qscintilla/Qt4Qt5/Qsci/qscilexerxml.h rename to libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexerxml.h index 6aafedc2b..9d40c6b0e 100644 --- a/libs/qscintilla/Qt4Qt5/Qsci/qscilexerxml.h +++ b/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexerxml.h @@ -1,6 +1,6 @@ // This defines the interface to the QsciLexerXML class. // -// Copyright (c) 2019 Riverbank Computing Limited +// Copyright (c) 2023 Riverbank Computing Limited // // This file is part of QScintilla. // diff --git a/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexeryaml.h b/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexeryaml.h new file mode 100644 index 000000000..0e094899f --- /dev/null +++ b/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscilexeryaml.h @@ -0,0 +1,147 @@ +// This defines the interface to the QsciLexerYAML class. +// +// Copyright (c) 2023 Riverbank Computing Limited +// +// This file is part of QScintilla. +// +// This file may be used under the terms of the GNU General Public License +// version 3.0 as published by the Free Software Foundation and appearing in +// the file LICENSE included in the packaging of this file. Please review the +// following information to ensure the GNU General Public License version 3.0 +// requirements will be met: http://www.gnu.org/copyleft/gpl.html. +// +// If you do not wish to use this file under the terms of the GPL version 3.0 +// then you may purchase a commercial license. For more information contact +// info@riverbankcomputing.com. +// +// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + + +#ifndef QSCILEXERYAML_H +#define QSCILEXERYAML_H + +#include + +#include +#include + + +//! \brief The QsciLexerYAML class encapsulates the Scintilla YAML lexer. +class QSCINTILLA_EXPORT QsciLexerYAML : public QsciLexer +{ + Q_OBJECT + +public: + //! This enum defines the meanings of the different styles used by the + //! YAML lexer. + enum { + //! The default. + Default = 0, + + //! A comment. + Comment = 1, + + //! An identifier. + Identifier = 2, + + //! A keyword + Keyword = 3, + + //! A number. + Number = 4, + + //! A reference. + Reference = 5, + + //! A document delimiter. + DocumentDelimiter = 6, + + //! A text block marker. + TextBlockMarker = 7, + + //! A syntax error marker. + SyntaxErrorMarker = 8, + + //! An operator. + Operator = 9 + }; + + //! Construct a QsciLexerYAML with parent \a parent. \a parent is + //! typically the QsciScintilla instance. + QsciLexerYAML(QObject *parent = 0); + + //! Destroys the QsciLexerYAML instance. + virtual ~QsciLexerYAML(); + + //! Returns the name of the language. + const char *language() const; + + //! Returns the name of the lexer. Some lexers support a number of + //! languages. + const char *lexer() const; + + //! Returns the foreground colour of the text for style number \a style. + //! + //! \sa defaultPaper() + QColor defaultColor(int style) const; + + //! Returns the end-of-line fill for style number \a style. + bool defaultEolFill(int style) const; + + //! Returns the font for style number \a style. + QFont defaultFont(int style) const; + + //! Returns the background colour of the text for style number \a style. + //! + //! \sa defaultColor() + QColor defaultPaper(int style) const; + + //! Returns the set of keywords for the keyword set \a set recognised + //! by the lexer as a space separated string. + const char *keywords(int set) const; + + //! Returns the descriptive name for style number \a style. If the + //! style is invalid for this language then an empty QString is returned. + //! This is intended to be used in user preference dialogs. + QString description(int style) const; + + //! Causes all properties to be refreshed by emitting the propertyChanged() + //! signal as required. + void refreshProperties(); + + //! Returns true if multi-line comment blocks can be folded. + //! + //! \sa setFoldComments() + bool foldComments() const; + +public slots: + //! If \a fold is true then multi-line comment blocks can be folded. + //! The default is false. + //! + //! \sa foldComments() + virtual void setFoldComments(bool fold); + +protected: + //! The lexer's properties are read from the settings \a qs. \a prefix + //! (which has a trailing '/') should be used as a prefix to the key of + //! each setting. true is returned if there is no error. + //! + bool readProperties(QSettings &qs,const QString &prefix); + + //! The lexer's properties are written to the settings \a qs. + //! \a prefix (which has a trailing '/') should be used as a prefix to + //! the key of each setting. true is returned if there is no error. + //! + bool writeProperties(QSettings &qs,const QString &prefix) const; + +private: + void setCommentProp(); + + bool fold_comments; + + QsciLexerYAML(const QsciLexerYAML &); + QsciLexerYAML &operator=(const QsciLexerYAML &); +}; + +#endif diff --git a/libs/qscintilla/Qt4Qt5/Qsci/qscimacro.h b/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscimacro.h similarity index 97% rename from libs/qscintilla/Qt4Qt5/Qsci/qscimacro.h rename to libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscimacro.h index f079fb223..89610a5af 100644 --- a/libs/qscintilla/Qt4Qt5/Qsci/qscimacro.h +++ b/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscimacro.h @@ -1,6 +1,6 @@ // This defines the interface to the QsciMacro class. // -// Copyright (c) 2019 Riverbank Computing Limited +// Copyright (c) 2023 Riverbank Computing Limited // // This file is part of QScintilla. // diff --git a/libs/qscintilla/Qt4Qt5/Qsci/qsciprinter.h b/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qsciprinter.h similarity index 79% rename from libs/qscintilla/Qt4Qt5/Qsci/qsciprinter.h rename to libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qsciprinter.h index d7457c463..869a8ed0e 100644 --- a/libs/qscintilla/Qt4Qt5/Qsci/qsciprinter.h +++ b/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qsciprinter.h @@ -1,6 +1,6 @@ // This module defines interface to the QsciPrinter class. // -// Copyright (c) 2019 Riverbank Computing Limited +// Copyright (c) 2023 Riverbank Computing Limited // // This file is part of QScintilla. // @@ -64,7 +64,7 @@ class QSCINTILLA_EXPORT QsciPrinter : public QPrinter //! area of the page that will be used to draw the text. This should be //! modified if it is necessary to reserve space for any customised text or //! graphics. By default the area is relative to the printable area of the - //! page. Use QPrinter::setFullPage() because calling printRange() if you + //! page. Use QPrinter::setFullPage() before calling printRange() if you //! want to try and print over the whole page. \a pagenr is the number of //! the page. The first page is numbered 1. virtual void formatPage(QPainter &painter, bool drawing, QRect &area, @@ -81,11 +81,19 @@ class QSCINTILLA_EXPORT QsciPrinter : public QPrinter //! \sa magnification() virtual void setMagnification(int magnification); - //! Print a range of lines from the Scintilla instance \a qsb. \a from is - //! the first line to print and a negative value signifies the first line - //! of text. \a to is the last line to print and a negative value - //! signifies the last line of text. true is returned if there was no - //! error. + //! Print a range of lines from the Scintilla instance \a qsb using the + //! supplied QPainter \a painter. \a from is the first line to print and a + //! negative value signifies the first line of text. \a to is the last + //! line to print and a negative value signifies the last line of text. + //! true is returned if there was no error. + virtual int printRange(QsciScintillaBase *qsb, QPainter &painter, + int from = -1, int to = -1); + + //! Print a range of lines from the Scintilla instance \a qsb using a + //! default QPainter. \a from is the first line to print and a negative + //! value signifies the first line of text. \a to is the last line to + //! print and a negative value signifies the last line of text. true is + //! returned if there was no error. virtual int printRange(QsciScintillaBase *qsb, int from = -1, int to = -1); //! Return the line wrap mode used when printing. The default is diff --git a/libs/qscintilla/Qt4Qt5/Qsci/qsciscintilla.h b/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qsciscintilla.h similarity index 99% rename from libs/qscintilla/Qt4Qt5/Qsci/qsciscintilla.h rename to libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qsciscintilla.h index 0732b4046..ffb9416dc 100644 --- a/libs/qscintilla/Qt4Qt5/Qsci/qsciscintilla.h +++ b/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qsciscintilla.h @@ -1,7 +1,7 @@ // This module defines the "official" high-level API of the Qt port of // Scintilla. // -// Copyright (c) 2019 Riverbank Computing Limited +// Copyright (c) 2023 Riverbank Computing Limited // // This file is part of QScintilla. // @@ -842,6 +842,13 @@ class QSCINTILLA_EXPORT QsciScintilla : public QsciScintillaBase //! \sa cancelFind(), findFirst(), findFirstInSelection(), replace() virtual bool findNext(); + //! Find a brace and it's match. \a brace is updated with the position of + //! the brace and will be -1 if there is none. \a is updated with the + //! position of the matching brace and will be -1 if there is none. + //! \a mode specifies how braces are matched. true is returned if the + //! current position is inside a pair of braces. + bool findMatchingBrace(long &brace, long &other, BraceMatch mode); + //! Returns the number of the first visible line. //! //! \sa setFirstVisibleLine() @@ -2217,7 +2224,6 @@ private slots: void setEnabledColors(int style, QColor &fore, QColor &back); void braceMatch(); - bool findMatchingBrace(long &brace, long &other, BraceMatch mode); long checkBrace(long pos, int brace_style, bool &colonMode); void gotoMatchingBrace(bool select); @@ -2236,7 +2242,7 @@ private slots: QString wordAtPosition(int position) const; - ScintillaBytes styleText(const QList &styled_text, + QByteArray styleText(const QList &styled_text, char **styles, int style_offset = 0); struct FindState diff --git a/libs/qscintilla/Qt4Qt5/Qsci/qsciscintillabase.h b/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qsciscintillabase.h similarity index 99% rename from libs/qscintilla/Qt4Qt5/Qsci/qsciscintillabase.h rename to libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qsciscintillabase.h index ac9b6d30e..606c8badc 100644 --- a/libs/qscintilla/Qt4Qt5/Qsci/qsciscintillabase.h +++ b/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qsciscintillabase.h @@ -1,6 +1,6 @@ // This class defines the "official" low-level API. // -// Copyright (c) 2019 Riverbank Computing Limited +// Copyright (c) 2023 Riverbank Computing Limited // // This file is part of QScintilla. // @@ -3845,16 +3845,15 @@ class QSCINTILLA_EXPORT QsciScintillaBase : public QAbstractScrollArea //! \internal This helps to work around some Scintilla bugs. void setScrollBars(); - //! \internal Qt4, Qt5 portability. - typedef QByteArray ScintillaBytes; - -#define ScintillaBytesConstData(b) (b).constData() - //! \internal Convert a QString to encoded bytes. - ScintillaBytes textAsBytes(const QString &text) const; + QByteArray textAsBytes(const QString &text) const; //! \internal Convert encoded bytes to a QString. - QString bytesAsText(const char *bytes) const; + QString bytesAsText(const char *bytes, int size) const; + + //! Give access to the text convertors. + friend class QsciAccessibleScintillaBase; + friend class QsciLexer; //! \internal A helper for QsciScintilla::contextMenuEvent(). bool contextMenuNeeded(int x, int y) const; @@ -3862,7 +3861,6 @@ class QSCINTILLA_EXPORT QsciScintillaBase : public QAbstractScrollArea private slots: void handleVSb(int value); void handleHSb(int value); - void handleSelection(); private: // This is needed to allow QsciScintillaQt to emit this class's signals. @@ -3874,9 +3872,7 @@ private slots: int preeditPos; int preeditNrBytes; QString preeditString; -#if QT_VERSION >= 0x050000 bool clickCausedFocus; -#endif void connectHorizontalScrollBar(); void connectVerticalScrollBar(); diff --git a/libs/qscintilla/Qt4Qt5/Qsci/qscistyle.h b/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscistyle.h similarity index 98% rename from libs/qscintilla/Qt4Qt5/Qsci/qscistyle.h rename to libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscistyle.h index f4f9ad34d..c6eb7ed87 100644 --- a/libs/qscintilla/Qt4Qt5/Qsci/qscistyle.h +++ b/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscistyle.h @@ -1,6 +1,6 @@ // This module defines interface to the QsciStyle class. // -// Copyright (c) 2019 Riverbank Computing Limited +// Copyright (c) 2023 Riverbank Computing Limited // // This file is part of QScintilla. // diff --git a/libs/qscintilla/Qt4Qt5/Qsci/qscistyledtext.h b/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscistyledtext.h similarity index 96% rename from libs/qscintilla/Qt4Qt5/Qsci/qscistyledtext.h rename to libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscistyledtext.h index cdb7776f3..4298f2bc0 100644 --- a/libs/qscintilla/Qt4Qt5/Qsci/qscistyledtext.h +++ b/libs/qscintilla_2.14.1/Qt5Qt6/Qsci/qscistyledtext.h @@ -1,6 +1,6 @@ // This module defines interface to the QsciStyledText class. // -// Copyright (c) 2019 Riverbank Computing Limited +// Copyright (c) 2023 Riverbank Computing Limited // // This file is part of QScintilla. // diff --git a/libs/qscintilla/Qt4Qt5/SciAccessibility.cpp b/libs/qscintilla_2.14.1/Qt5Qt6/SciAccessibility.cpp similarity index 95% rename from libs/qscintilla/Qt4Qt5/SciAccessibility.cpp rename to libs/qscintilla_2.14.1/Qt5Qt6/SciAccessibility.cpp index d4d25a5c6..5c4d67c64 100644 --- a/libs/qscintilla/Qt4Qt5/SciAccessibility.cpp +++ b/libs/qscintilla_2.14.1/Qt5Qt6/SciAccessibility.cpp @@ -1,6 +1,6 @@ // The implementation of the class that implements accessibility support. // -// Copyright (c) 2019 Riverbank Computing Limited +// Copyright (c) 2023 Riverbank Computing Limited // // This file is part of QScintilla. // @@ -113,7 +113,7 @@ void QsciAccessibleScintillaBase::textInserted(QsciScintillaBase *sb, { Q_ASSERT(text); - QString new_text = bytesAsText(sb, text, length); + QString new_text = sb->bytesAsText(text, length); int offset = positionAsOffset(sb, position); QAccessibleTextInsertEvent ev(sb, offset, new_text); @@ -220,7 +220,7 @@ void QsciAccessibleScintillaBase::textDeleted(QsciScintillaBase *sb, { Q_ASSERT(text); - QString old_text = bytesAsText(sb, text, length); + QString old_text = sb->bytesAsText(text, length); int offset = positionAsOffset(sb, position); QAccessibleTextRemoveEvent ev(sb, offset, old_text); @@ -359,29 +359,7 @@ QString QsciAccessibleScintillaBase::textRange(QsciScintillaBase *sb, sb->SendScintilla(QsciScintillaBase::SCI_GETTEXTRANGE, start_position, end_position, bytes.data()); - return bytesAsText(sb, bytes.constData(), bytes.size() - 1); -} - - -// Convert bytes to text. -QString QsciAccessibleScintillaBase::bytesAsText(QsciScintillaBase *sb, - const char *bytes, int length) -{ - if (sb->SendScintilla(QsciScintillaBase::SCI_GETCODEPAGE) == QsciScintillaBase::SC_CP_UTF8) - return QString::fromUtf8(bytes, length); - - return QString::fromLatin1(bytes, length); -} - - -// Convert text to bytes. -QByteArray QsciAccessibleScintillaBase::textAsBytes(QsciScintillaBase *sb, - const QString &text) -{ - if (sb->SendScintilla(QsciScintillaBase::SCI_GETCODEPAGE) == QsciScintillaBase::SC_CP_UTF8) - return text.toUtf8(); - - return text.toLatin1(); + return sb->bytesAsText(bytes.constData(), bytes.size() - 1); } @@ -528,7 +506,8 @@ QRect QsciAccessibleScintillaBase::characterRect(int offset) const int style = sb->SendScintilla(QsciScintillaBase::SCI_GETSTYLEAT, position); QFontMetrics metrics(fontForStyle(style)); - QRect rect(x_vport, y_vport, metrics.width(ch), metrics.height()); + QRect rect(x_vport, y_vport, metrics.horizontalAdvance(ch), + metrics.height()); rect.moveTo(sb->viewport()->mapToGlobal(rect.topLeft())); return rect; @@ -701,7 +680,7 @@ void QsciAccessibleScintillaBase::insertText(int offset, const QString &text) QsciScintillaBase *sb = sciWidget(); sb->SendScintilla(QsciScintillaBase::SCI_INSERTTEXT, - offsetAsPosition(sb, offset), textAsBytes(sb, text).constData()); + offsetAsPosition(sb, offset), sb->textAsBytes(text).constData()); } @@ -713,7 +692,7 @@ void QsciAccessibleScintillaBase::replaceText(int startOffset, int endOffset, addSelection(startOffset, endOffset); sb->SendScintilla(QsciScintillaBase::SCI_REPLACESEL, - textAsBytes(sb, text).constData()); + sb->textAsBytes(text).constData()); } diff --git a/libs/qscintilla/Qt4Qt5/SciAccessibility.h b/libs/qscintilla_2.14.1/Qt5Qt6/SciAccessibility.h similarity index 94% rename from libs/qscintilla/Qt4Qt5/SciAccessibility.h rename to libs/qscintilla_2.14.1/Qt5Qt6/SciAccessibility.h index 2f0dd10e2..e4b4ba595 100644 --- a/libs/qscintilla/Qt4Qt5/SciAccessibility.h +++ b/libs/qscintilla_2.14.1/Qt5Qt6/SciAccessibility.h @@ -1,6 +1,6 @@ // The definition of the class that implements accessibility support. // -// Copyright (c) 2019 Riverbank Computing Limited +// Copyright (c) 2023 Riverbank Computing Limited // // This file is part of QScintilla. // @@ -102,9 +102,6 @@ class QsciAccessibleScintillaBase : public QAccessibleWidget, int *end_position); static QString textRange(QsciScintillaBase *sb, int start_position, int end_position); - static QString bytesAsText(QsciScintillaBase *sb, const char *bytes, - int length); - static QByteArray textAsBytes(QsciScintillaBase *sb, const QString &text); static int positionAsOffset(QsciScintillaBase *sb, int position); static void positionRangeAsOffsetRange(QsciScintillaBase *sb, int start_position, int end_position, int *startOffset, diff --git a/libs/qscintilla/Qt4Qt5/SciClasses.cpp b/libs/qscintilla_2.14.1/Qt5Qt6/SciClasses.cpp similarity index 96% rename from libs/qscintilla/Qt4Qt5/SciClasses.cpp rename to libs/qscintilla_2.14.1/Qt5Qt6/SciClasses.cpp index 825c04e2f..438965a9e 100644 --- a/libs/qscintilla/Qt4Qt5/SciClasses.cpp +++ b/libs/qscintilla_2.14.1/Qt5Qt6/SciClasses.cpp @@ -1,7 +1,7 @@ // The implementation of various Qt version independent classes used by the // rest of the port. // -// Copyright (c) 2019 Riverbank Computing Limited +// Copyright (c) 2023 Riverbank Computing Limited // // This file is part of QScintilla. // @@ -129,11 +129,7 @@ QsciSciListBox::QsciSciListBox(QWidget *parent, QsciListBoxQt *lbx_) // to be that the following works. However it might now work because of a // change in Qt so we only enable it for recent versions in order to // reduce the risk of breaking something that works with earlier versions. -#if QT_VERSION >= 0x040500 setWindowFlags(Qt::ToolTip|Qt::WindowStaysOnTopHint); -#else - setWindowFlags(Qt::Tool|Qt::FramelessWindowHint); -#endif // This may not be needed. setFocusProxy(parent); diff --git a/libs/qscintilla/Qt4Qt5/SciClasses.h b/libs/qscintilla_2.14.1/Qt5Qt6/SciClasses.h similarity index 97% rename from libs/qscintilla/Qt4Qt5/SciClasses.h rename to libs/qscintilla_2.14.1/Qt5Qt6/SciClasses.h index d837bd1fd..d5e9e0867 100644 --- a/libs/qscintilla/Qt4Qt5/SciClasses.h +++ b/libs/qscintilla_2.14.1/Qt5Qt6/SciClasses.h @@ -1,7 +1,7 @@ // The definition of various Qt version independent classes used by the rest of // the port. // -// Copyright (c) 2019 Riverbank Computing Limited +// Copyright (c) 2023 Riverbank Computing Limited // // This file is part of QScintilla. // diff --git a/libs/qscintilla/Qt4Qt5/ScintillaQt.cpp b/libs/qscintilla_2.14.1/Qt5Qt6/ScintillaQt.cpp similarity index 96% rename from libs/qscintilla/Qt4Qt5/ScintillaQt.cpp rename to libs/qscintilla_2.14.1/Qt5Qt6/ScintillaQt.cpp index 8a354e275..e10556004 100644 --- a/libs/qscintilla/Qt4Qt5/ScintillaQt.cpp +++ b/libs/qscintilla_2.14.1/Qt5Qt6/ScintillaQt.cpp @@ -1,6 +1,6 @@ // The implementation of the Qt specific subclass of ScintillaBase. // -// Copyright (c) 2019 Riverbank Computing Limited +// Copyright (c) 2023 Riverbank Computing Limited // // This file is part of QScintilla. // @@ -137,6 +137,10 @@ QsciScintillaQt::~QsciScintillaQt() // Initialise the instance. void QsciScintillaQt::Initialise() { + // This signal is only ever emitted for systems that have a separate + // selection (ie. X11). + connect(QApplication::clipboard(), SIGNAL(selectionChanged()), this, + SLOT(onSelectionChanged())); } @@ -158,11 +162,7 @@ void QsciScintillaQt::StartDrag() QDrag *qdrag = new QDrag(qsb); qdrag->setMimeData(mimeSelection(drag)); -#if QT_VERSION >= 0x040300 Qt::DropAction action = qdrag->exec(Qt::MoveAction | Qt::CopyAction, Qt::MoveAction); -#else - Qt::DropAction action = qdrag->start(Qt::MoveAction); -#endif // Remove the dragged text if it was a move to another widget or // application. @@ -573,17 +573,15 @@ void QsciScintillaQt::AddToPopUp(const char *label, int cmd, bool enabled) } -// Claim the selection. +// Claim the (primary) selection. void QsciScintillaQt::ClaimSelection() { + QClipboard *cb = QApplication::clipboard(); bool isSel = !sel.Empty(); - if (isSel) + if (cb->supportsSelection()) { - QClipboard *cb = QApplication::clipboard(); - - // If we support X11 style selection then make it available now. - if (cb->supportsSelection()) + if (isSel) { Scintilla::SelectionText text; @@ -591,12 +589,14 @@ void QsciScintillaQt::ClaimSelection() if (text.Data()) cb->setMimeData(mimeSelection(text), QClipboard::Selection); - } - primarySelection = true; + primarySelection = true; + } + else + { + primarySelection = false; + } } - else - primarySelection = false; #if !defined(QT_NO_ACCESSIBILITY) QsciAccessibleScintillaBase::selectionChanged(qsb, isSel); @@ -606,12 +606,14 @@ void QsciScintillaQt::ClaimSelection() } -// Unclaim the selection. -void QsciScintillaQt::UnclaimSelection() +// Unclaim the (primary) selection. +void QsciScintillaQt::onSelectionChanged() { - if (primarySelection) + bool new_primary = QApplication::clipboard()->ownsSelection(); + + if (primarySelection != new_primary) { - primarySelection = false; + primarySelection = new_primary; qsb->viewport()->update(); } } diff --git a/libs/qscintilla/Qt4Qt5/ScintillaQt.h b/libs/qscintilla_2.14.1/Qt5Qt6/ScintillaQt.h similarity index 97% rename from libs/qscintilla/Qt4Qt5/ScintillaQt.h rename to libs/qscintilla_2.14.1/Qt5Qt6/ScintillaQt.h index 7e8db32de..c34229152 100644 --- a/libs/qscintilla/Qt4Qt5/ScintillaQt.h +++ b/libs/qscintilla_2.14.1/Qt5Qt6/ScintillaQt.h @@ -1,6 +1,6 @@ // The definition of the Qt specific subclass of ScintillaBase. // -// Copyright (c) 2019 Riverbank Computing Limited +// Copyright (c) 2023 Riverbank Computing Limited // // This file is part of QScintilla. // @@ -106,6 +106,7 @@ class QsciScintillaQt : public QObject, public Scintilla::ScintillaBase private slots: void onIdle(); + void onSelectionChanged(); private: void Initialise(); diff --git a/libs/qscintilla/Qt4Qt5/features/qscintilla2.prf b/libs/qscintilla_2.14.1/Qt5Qt6/features/qscintilla2.prf similarity index 75% rename from libs/qscintilla/Qt4Qt5/features/qscintilla2.prf rename to libs/qscintilla_2.14.1/Qt5Qt6/features/qscintilla2.prf index e7aba1512..731bb3253 100644 --- a/libs/qscintilla/Qt4Qt5/features/qscintilla2.prf +++ b/libs/qscintilla_2.14.1/Qt5Qt6/features/qscintilla2.prf @@ -1,9 +1,7 @@ -greaterThan(QT_MAJOR_VERSION, 4) { - QT += widgets printsupport - - greaterThan(QT_MINOR_VERSION, 1) { - macx:QT += macextras - } +QT += widgets +!ios:QT += printsupport +macx:lessThan(QT_MAJOR_VERSION, 6) { + QT += macextras } DEFINES += QSCINTILLA_DLL diff --git a/libs/qscintilla_2.14.1/Qt5Qt6/features_staticlib/qscintilla2.prf b/libs/qscintilla_2.14.1/Qt5Qt6/features_staticlib/qscintilla2.prf new file mode 100644 index 000000000..18a806d1c --- /dev/null +++ b/libs/qscintilla_2.14.1/Qt5Qt6/features_staticlib/qscintilla2.prf @@ -0,0 +1,23 @@ +QT += widgets +!ios:QT += printsupport +macx:lessThan(QT_MAJOR_VERSION, 6) { + QT += macextras +} + +INCLUDEPATH += $$[QT_INSTALL_HEADERS] + +LIBS += -L$$[QT_INSTALL_LIBS] + +CONFIG(debug, debug|release) { + mac: { + LIBS += -lqscintilla2_qt$${QT_MAJOR_VERSION}_debug + } else { + win32: { + LIBS += -lqscintilla2_qt$${QT_MAJOR_VERSION}d + } else { + LIBS += -lqscintilla2_qt$${QT_MAJOR_VERSION} + } + } +} else { + LIBS += -lqscintilla2_qt$${QT_MAJOR_VERSION} +} diff --git a/libs/qscintilla/Qt4Qt5/qsciabstractapis.cpp b/libs/qscintilla_2.14.1/Qt5Qt6/qsciabstractapis.cpp similarity index 95% rename from libs/qscintilla/Qt4Qt5/qsciabstractapis.cpp rename to libs/qscintilla_2.14.1/Qt5Qt6/qsciabstractapis.cpp index d9a770bad..6f17d6e86 100644 --- a/libs/qscintilla/Qt4Qt5/qsciabstractapis.cpp +++ b/libs/qscintilla_2.14.1/Qt5Qt6/qsciabstractapis.cpp @@ -1,6 +1,6 @@ // This module implements the QsciAbstractAPIs class. // -// Copyright (c) 2019 Riverbank Computing Limited +// Copyright (c) 2023 Riverbank Computing Limited // // This file is part of QScintilla. // diff --git a/libs/qscintilla/Qt4Qt5/qsciapis.cpp b/libs/qscintilla_2.14.1/Qt5Qt6/qsciapis.cpp similarity index 98% rename from libs/qscintilla/Qt4Qt5/qsciapis.cpp rename to libs/qscintilla_2.14.1/Qt5Qt6/qsciapis.cpp index 94ba323c8..d4abccc09 100644 --- a/libs/qscintilla/Qt4Qt5/qsciapis.cpp +++ b/libs/qscintilla_2.14.1/Qt5Qt6/qsciapis.cpp @@ -1,6 +1,6 @@ // This module implements the QsciAPIs class. // -// Copyright (c) 2019 Riverbank Computing Limited +// Copyright (c) 2023 Riverbank Computing Limited // // This file is part of QScintilla. // @@ -20,6 +20,8 @@ #include +#include + #include "Qsci/qsciapis.h" #include @@ -600,14 +602,8 @@ void QsciAPIs::autoCompletionSelected(const QString &selection) owords = path.mid(1, path.length() - 2); } - origin = qLowerBound(prep->raw_apis, owords); - /* - * There is a bug somewhere, either in qLowerBound() or QList (or in GCC as - * it seems to be Linux specific and the Qt code is the same on all - * platforms) that the following line seems to fix. Note that it is - * actually the call to detach() within begin() that is the important bit. - */ - prep->raw_apis.begin(); + origin = std::lower_bound(prep->raw_apis.begin(), prep->raw_apis.end(), + owords); origin_len = owords.length(); } diff --git a/libs/qscintilla/Qt4Qt5/qscicommand.cpp b/libs/qscintilla_2.14.1/Qt5Qt6/qscicommand.cpp similarity index 98% rename from libs/qscintilla/Qt4Qt5/qscicommand.cpp rename to libs/qscintilla_2.14.1/Qt5Qt6/qscicommand.cpp index b82f62c76..840c3bc31 100644 --- a/libs/qscintilla/Qt4Qt5/qscicommand.cpp +++ b/libs/qscintilla_2.14.1/Qt5Qt6/qscicommand.cpp @@ -1,6 +1,6 @@ // This module implements the QsciCommand class. // -// Copyright (c) 2019 Riverbank Computing Limited +// Copyright (c) 2023 Riverbank Computing Limited // // This file is part of QScintilla. // diff --git a/libs/qscintilla/Qt4Qt5/qscicommandset.cpp b/libs/qscintilla_2.14.1/Qt5Qt6/qscicommandset.cpp similarity index 98% rename from libs/qscintilla/Qt4Qt5/qscicommandset.cpp rename to libs/qscintilla_2.14.1/Qt5Qt6/qscicommandset.cpp index 7f2bbef5e..18bea3a83 100644 --- a/libs/qscintilla/Qt4Qt5/qscicommandset.cpp +++ b/libs/qscintilla_2.14.1/Qt5Qt6/qscicommandset.cpp @@ -1,6 +1,6 @@ // This module implements the QsciCommandSet class. // -// Copyright (c) 2019 Riverbank Computing Limited +// Copyright (c) 2023 Riverbank Computing Limited // // This file is part of QScintilla. // @@ -885,14 +885,12 @@ QsciCommandSet::~QsciCommandSet() bool QsciCommandSet::readSettings(QSettings &qs, const char *prefix) { bool rc = true; - QString skey; for (int i = 0; i < cmds.count(); ++i) { QsciCommand *cmd = cmds.at(i); - skey.sprintf("%s/keymap/c%d/", prefix, - static_cast(cmd->command())); + QString skey = QString("%1/keymap/c%2/").arg(prefix).arg(static_cast(cmd->command())); int key; bool ok; @@ -924,14 +922,12 @@ bool QsciCommandSet::readSettings(QSettings &qs, const char *prefix) bool QsciCommandSet::writeSettings(QSettings &qs, const char *prefix) { bool rc = true; - QString skey; for (int i = 0; i < cmds.count(); ++i) { QsciCommand *cmd = cmds.at(i); - skey.sprintf("%s/keymap/c%d/", prefix, - static_cast(cmd->command())); + QString skey = QString("%1/keymap/c%2/").arg(prefix).arg(static_cast(cmd->command())); // Write the key. qs.setValue(skey + "key", cmd->key()); diff --git a/libs/qscintilla/Qt4Qt5/qscidocument.cpp b/libs/qscintilla_2.14.1/Qt5Qt6/qscidocument.cpp similarity index 98% rename from libs/qscintilla/Qt4Qt5/qscidocument.cpp rename to libs/qscintilla_2.14.1/Qt5Qt6/qscidocument.cpp index 4f00cfe54..895ed3466 100644 --- a/libs/qscintilla/Qt4Qt5/qscidocument.cpp +++ b/libs/qscintilla_2.14.1/Qt5Qt6/qscidocument.cpp @@ -1,6 +1,6 @@ // This module implements the QsciDocument class. // -// Copyright (c) 2019 Riverbank Computing Limited +// Copyright (c) 2023 Riverbank Computing Limited // // This file is part of QScintilla. // diff --git a/libs/qscintilla/Qt4Qt5/qscilexer.cpp b/libs/qscintilla_2.14.1/Qt5Qt6/qscilexer.cpp similarity index 95% rename from libs/qscintilla/Qt4Qt5/qscilexer.cpp rename to libs/qscintilla_2.14.1/Qt5Qt6/qscilexer.cpp index bea560b58..c9576c703 100644 --- a/libs/qscintilla/Qt4Qt5/qscilexer.cpp +++ b/libs/qscintilla_2.14.1/Qt5Qt6/qscilexer.cpp @@ -1,6 +1,6 @@ // This module implements the QsciLexer class. // -// Copyright (c) 2019 Riverbank Computing Limited +// Copyright (c) 2023 Riverbank Computing Limited // // This file is part of QScintilla. // @@ -367,7 +367,7 @@ bool QsciLexer::readSettings(QSettings &qs,const char *prefix) if (description(i).isEmpty()) continue; - key.sprintf("%s/%s/style%d/",prefix,language(),i); + key = QString("%1/%2/style%3/").arg(prefix).arg(language()).arg(i); // Read the foreground colour. full_key = key + "color"; @@ -454,7 +454,7 @@ bool QsciLexer::readSettings(QSettings &qs,const char *prefix) } // Read the properties. - key.sprintf("%s/%s/properties/",prefix,language()); + key = QString("%1/%2/properties/").arg(prefix).arg(language()); if (!readProperties(qs,key)) rc = false; @@ -462,7 +462,7 @@ bool QsciLexer::readSettings(QSettings &qs,const char *prefix) refreshProperties(); // Read the rest. - key.sprintf("%s/%s/",prefix,language()); + key = QString("%1/%2/").arg(prefix).arg(language()); // Read the default foreground colour. full_key = key + "defaultcolor"; @@ -569,7 +569,7 @@ bool QsciLexer::writeSettings(QSettings &qs,const char *prefix) const QColor c; - key.sprintf("%s/%s/style%d/",prefix,language(),i); + key = QString("%1/%2/style%3/").arg(prefix).arg(language()).arg(i); // Write the foreground colour. c = color(i); @@ -607,13 +607,13 @@ bool QsciLexer::writeSettings(QSettings &qs,const char *prefix) const } // Write the properties. - key.sprintf("%s/%s/properties/",prefix,language()); + key = QString("%1/%2/properties/").arg(prefix).arg(language()); if (!writeProperties(qs,key)) rc = false; // Write the rest. - key.sprintf("%s/%s/",prefix,language()); + key = QString("%1/%2/").arg(prefix).arg(language()); // Write the default foreground colour. num = (defColor.red() << 16) | (defColor.green() << 8) | defColor.blue(); @@ -729,3 +729,21 @@ void QsciLexer::setPaper(const QColor &c, int style) emit paperChanged(c, QsciScintillaBase::STYLE_DEFAULT); } } + + +// Encode a QString as bytes. +QByteArray QsciLexer::textAsBytes(const QString &text) const +{ + Q_ASSERT(attached_editor); + + return attached_editor->textAsBytes(text); +} + + +// Decode bytes as a QString. +QString QsciLexer::bytesAsText(const char *bytes, int size) const +{ + Q_ASSERT(attached_editor); + + return attached_editor->bytesAsText(bytes, size); +} diff --git a/libs/qscintilla_2.14.1/Qt5Qt6/qscilexerasm.cpp b/libs/qscintilla_2.14.1/Qt5Qt6/qscilexerasm.cpp new file mode 100644 index 000000000..237564411 --- /dev/null +++ b/libs/qscintilla_2.14.1/Qt5Qt6/qscilexerasm.cpp @@ -0,0 +1,575 @@ +// This module implements the abstract QsciLexerAsm class. +// +// Copyright (c) 2023 Riverbank Computing Limited +// +// This file is part of QScintilla. +// +// This file may be used under the terms of the GNU General Public License +// version 3.0 as published by the Free Software Foundation and appearing in +// the file LICENSE included in the packaging of this file. Please review the +// following information to ensure the GNU General Public License version 3.0 +// requirements will be met: http://www.gnu.org/copyleft/gpl.html. +// +// If you do not wish to use this file under the terms of the GPL version 3.0 +// then you may purchase a commercial license. For more information contact +// info@riverbankcomputing.com. +// +// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + + +#include "Qsci/qscilexerasm.h" + +#include +#include +#include + + +// The ctor. Note that we choose not to support explicit fold points. +QsciLexerAsm::QsciLexerAsm(QObject *parent) + : QsciLexer(parent), + fold_comments(true), fold_compact(true), comment_delimiter('~'), + fold_syntax_based(true) +{ +} + + +// The dtor. +QsciLexerAsm::~QsciLexerAsm() +{ +} + + +// Returns the foreground colour of the text for a style. +QColor QsciLexerAsm::defaultColor(int style) const +{ + switch (style) + { + case Comment: + case BlockComment: + return QColor(0x00, 0x7f, 0x00); + + case Number: + return QColor(0x00, 0x7f, 0x7f); + + case DoubleQuotedString: + case SingleQuotedString: + return QColor(0x7f, 0x00, 0x7f); + + case Operator: + case UnclosedString: + return QColor(0x00, 0x00, 0x00); + + case CPUInstruction: + return QColor(0x00, 0x00, 0x7f); + + case FPUInstruction: + case Directive: + case DirectiveOperand: + return QColor(0x00, 0x00, 0xff); + + case Register: + return QColor(0x46, 0xaa, 0x03); + + case ExtendedInstruction: + return QColor(0xb0, 0x00, 0x40); + + case CommentDirective: + return QColor(0x66, 0xaa, 0x00); + } + + return QsciLexer::defaultColor(style); +} + + +// Returns the end-of-line fill for a style. +bool QsciLexerAsm::defaultEolFill(int style) const +{ + if (style == UnclosedString) + return true; + + return QsciLexer::defaultEolFill(style); +} + + +// Returns the font of the text for a style. +QFont QsciLexerAsm::defaultFont(int style) const +{ + QFont f; + + switch (style) + { + case Operator: + case CPUInstruction: + case Register: + f = QsciLexer::defaultFont(style); + f.setBold(true); + break; + + case Comment: + case BlockComment: +#if defined(Q_OS_WIN) + f = QFont("Comic Sans MS",9); +#elif defined(Q_OS_MAC) + f = QFont("Comic Sans MS", 12); +#else + f = QFont("Bitstream Vera Serif",9); +#endif + break; + + default: + f = QsciLexer::defaultFont(style); + } + + return f; +} + + +// Returns the background colour of the text for a style. +QColor QsciLexerAsm::defaultPaper(int style) const +{ + if (style == UnclosedString) + return QColor(0xe0, 0xc0, 0xe0); + + return QsciLexer::defaultPaper(style); +} + + +// Returns the set of keywords. +const char *QsciLexerAsm::keywords(int set) const +{ + if (set == 1) + return + "aaa aad aam aas daa das " + "ja jae jb jbe jc jcxz je jg jge jl jle jmp jna jnae jnb jnbe jnc " + "jne jng jnge jnl jnle jno jnp jns jnz jo jp jpe jpo js jz jcxz " + "jecxz jrcxz loop loope loopne loopz loopnz call ret " + "add sub adc sbb neg cmp inc dec and or xor not test shl shr sal " + "sar shld shrd rol ror rcl rcr cbw cwd cwde cdq cdqe cqo bsf bsr " + "bt btc btr bts idiv imul div mul bswap nop " + "lea mov movsx movsxd movzx xlatb bound xchg xadd cmpxchg " + "cmpxchg8b cmpxchg16b " + "push pop pushad popad pushf popf pushfd popfd pushfq popfq " + "seta setae setb setbe setc sete setg setge setl setle setna " + "setnae setnb setnbe setnc setne setng setnge setnl setnle setno " + "setnp setns setnz seto setp setpe setpo sets setz salc " + "clc cld stc std cmc lahf sahf " + "cmovo cmovno cmovb cmovc cmovnae cmovae cmovnb cmovnc cmove " + "cmovz cmovne cmovnz cmovbe cmovna cmova cmovnbe cmovs cmovns " + "cmovp cmovpe cmovnp cmovpo cmovl cmovnge cmovge cmovnl cmovle " + "cmovng cmovg cmovnle " + "lock rep repe repz repne repnz " + "cmpsb cmpsw cmpsq movsb movsw movsq scasb scasw scasd scasq " + "stosb stosw stosd stosq " + "cpuid rdtsc rdtscp rdpmc xgetbv " + "llwpcb slwpcb lwpval lwpins " + "crc32 popcnt lzcnt tzcnt movbe pclmulqdq rdrand " + "andn bextr blsi blsmk blsr " + "bzhi mulx pdep pext rorx sarx shlx shrx"; + + if (set == 2) + return + "f2xm1 fabs fadd faddp fbld fbstp fchs fclex fcom fcomp fcompp " + "fdecstp fdisi fdiv fdivp fdivr fdivrp feni ffree fiadd ficom " + "ficomp fidiv fidivr fild fimul fincstp finit fist fistp fisub " + "fisubr fld fld1 fldcw fldenv fldenvw fldl2e fldl2t fldlg2 fldln2 " + "fldpi fldz fmul fmulp fnclex fndisi fneni fninit fnop fnsave " + "fnsavew fnstcw fnstenv fnstenvw fnstsw fpatan fprem fptan " + "frndint frstor frstorw fsave fsavew fscale fsqrt fst fstcw " + "fstenv fstenvw fstp fstsw fsub fsubp fsubr fsubrp ftst fwait " + "fxam fxch fxtract fyl2x fyl2xp1 fsetpm fcos fldenvd fnsaved " + "fnstenvd fprem1 frstord fsaved fsin fsincos fstenvd fucom fucomp " + "fucompp fcomi fcomip fucomi fucomip ffreep fcmovb fcmove fcmovbe " + "fcmovu fcmovnb fcmovne fcmovnbe fcmovnu"; + + if (set == 3) + return + "al ah bl bh cl ch dl dh ax bx cx dx si di bp eax ebx ecx edx esi " + "edi ebx esp st0 st1 st2 st3 st4 st5 st6 st7 mm0 mm1 mm2 mm3 mm4 " + "mm5 mm6 mm7 xmm0 xmm1 xmm2 xmm3 xmm4 xmm5 xmm6 xmm7 ymm0 ymm1 " + "ymm2 ymm3 ymm4 ymm5 ymm6 ymm7 fs " + "sil dil bpl r8b r9b r10b r11b r12b r13b r14b r15b r8w r9w r10w " + "r11w r12w r13w r14w r15w rax rcx rdx rbx rsp rbp rsi rdi r8 r9 " + "r10 r11 r12 r13 r14 r15 xmm8 xmm9 xmm10 xmm11 xmm12 xmm13 xmm14 " + "xmm15 ymm8 ymm9 ymm10 ymm11 ymm12 ymm13 ymm14 ymm15 gs"; + + if (set == 4) + return + "db dw dd dq dt do dy resb resw resd resq rest reso resy incbin " + "equ times safeseh __utf16__ __utf32__ %+ default cpu float start " + "imagebase osabi ..start ..imagebase ..gotpc ..gotoff ..gottpoff " + "..got ..plt ..sym ..tlsie section segment __sect__ group " + "absolute .bss .comment .data .lbss .ldata .lrodata .rdata " + ".rodata .tbss .tdata .text alloc bss code exec data noalloc " + "nobits noexec nowrite progbits rdata tls write private public " + "common stack overlay class extern global common import export " + "%define %idefine %xdefine %ixdefine %assign %undef %? %?? " + "%defstr %idefstr %deftok %ideftok %strcat %strlen %substr %macro " + "%imacro %rmacro %exitmacro %endmacro %unmacro %if %ifn %elif " + "%elifn %else %endif %ifdef %ifndef %elifdef %elifndef %ifmacro " + "%ifnmacro %elifmacro %elifnmacro %ifctx %ifnctx %elifctx " + "%elifnctx %ifidn %ifnidn %elifidn %elifnidn %ifidni %ifnidni " + "%elifidni %elifnidni %ifid %ifnid %elifid %elifnid %ifnum " + "%ifnnum %elifnum %elifnnum %ifstr %ifnstr %elifstr %elifnstr " + "%iftoken %ifntoken %eliftoken %elifntoken %ifempty %elifempty " + "%ifnempty %elifnempty %ifenv %ifnenv %elifenv %elifnenv %rep " + "%exitrep %endrep %while %exitwhile %endwhile %include " + "%pathsearch %depend %use %push %pop %repl %arg %local %stacksize " + "flat flat64 large small %error %warning %fatal %00 .nolist " + "%rotate %line %! %final %clear struc endstruc istruc at iend " + "align alignb sectalign bits use16 use32 use64 __nasm_major__ " + "__nasm_minor__ __nasm_subminor__ ___nasm_patchlevel__ " + "__nasm_version_id__ __nasm_ver__ __file__ __line__ __pass__ " + "__bits__ __output_format__ __date__ __time__ __date_num__ " + "__time_num__ __posix_time__ __utc_date__ __utc_time__ " + "__utc_date_num__ __utc_time_num__ __float_daz__ __float_round__ " + "__float__ __use_altreg__ altreg __use_smartalign__ smartalign " + "__alignmode__ __use_fp__ __infinity__ __nan__ __qnan__ __snan__ " + "__float8__ __float16__ __float32__ __float64__ __float80m__ " + "__float80e__ __float128l__ __float128h__"; + + if (set == 5) + return + "a16 a32 a64 o16 o32 o64 strict byte word dword qword tword oword " + "yword nosplit %0 %1 %2 %3 %4 %5 %6 %7 %8 %9 abs rel $ $$ seg wrt"; + + if (set == 6) + return + "movd movq paddb paddw paddd paddsb paddsw paddusb paddusw psubb " + "psubw psubd psubsb psubsw psubusb psubusw pand pandn por pxor " + "pcmpeqb pcmpeqd pcmpeqw pcmpgtb pcmpgtd pcmpgtw pmaddwd pmulhw " + "pmullw psllw pslld psllq psrlw psrld psrlq psraw psrad packuswb " + "packsswb packssdw punpcklbw punpcklwd punpckldq punpckhbw " + "punpckhwd punpckhdq emms " + "pavgb pavgw pextrw pinsrw pmovmskb pmaxsw pmaxub pminsw pminub " + "pmulhuw psadbw pshufw prefetchnta prefetcht0 prefetcht1 " + "prefetcht2 maskmovq movntq sfence " + "paddsiw psubsiw pmulhrw pmachriw pmulhriw pmagw pdistib paveb " + "pmvzb pmvnzb pmvlzb pmvgezb " + "pfacc pfadd pfsub pfsubr pfmul pfcmpeq pfcmpge pfcmpgt pfmax " + "pfmin pfrcp pfrcpit1 pfrcpit2 pfrsqit1 pfrsqrt pi2fd pf2id " + "pavgusb pmulhrw femms " + "pfnacc pfpnacc pi2fw pf2iw pswapd " + "pfrsqrtv pfrcpv " + "prefetch prefetchw " + "addss addps subss subps mulss mulps divss divps sqrtss sqrtps " + "rcpss rcpps rsqrtss rsqrtps maxss maxps minss minps cmpss comiss " + "ucomiss cmpps cmpeqss cmpltss cmpless cmpunordss cmpneqss " + "cmpnltss cmpnless cmpordss cmpeqps cmpltps cmpleps cmpunordps " + "cmpneqps cmpnltps cmpnleps cmpordps andnps andps orps xorps " + "cvtsi2ss cvtss2si cvttss2si cvtpi2ps cvtps2pi cvttps2pi movss " + "movlps movhps movlhps movhlps movaps movups movntps movmskps " + "shufps unpckhps unpcklps ldmxcsr stmxcsr " + "addpd addsd subpd subsd mulsd mulpd divsd divpd sqrtsd sqrtpd " + "maxsd maxpd minsd minpd cmpsd comisd ucomisd cmppd cmpeqsd " + "cmpltsd cmplesd cmpunordsd cmpneqsd cmpnltsd cmpnlesd cmpordsd " + "cmpeqpd cmpltpd cmplepd cmpunordpd cmpneqpd cmpnltpd cmpnlepd " + "cmpordpd andnpd andpd orpd xorpd cvtsd2ss cvtpd2ps cvtss2sd " + "cvtps2pd cvtdq2ps cvtps2dq cvttps2dq cvtdq2pd cvtpd2dq cvttpd2dq " + "cvtsi2sd cvtsd2si cvttsd2si cvtpi2pd cvtpd2pi cvttpd2pi movsd " + "movlpd movhpd movapd movupd movntpd movmskpd shufpd unpckhpd " + "unpcklpd movnti movdqa movdqu movntdq maskmovdqu movdq2q movq2dq " + "paddq psubq pmuludq pslldq psrldq punpcklqdq punpckhqdq pshufhw " + "pshuflw pshufd lfence mfence " + "addsubps addsubpd haddps haddpd hsubps hsubpd movsldup movshdup " + "movddup lddqu fisttp " + "psignb psignw psignd pabsb pabsw pabsd palignr pshufb pmulhrsw " + "pmaddubsw phaddw phaddd phaddsw phsubw phsubd phsubsw " + "extrq insertq movntsd movntss " + "mpsadbw phminposuw pmuldq pmulld dpps dppd blendps blendpd " + "blendvps blendvpd pblendvb pblendw pmaxsb pmaxuw pmaxsd pmaxud " + "pminsb pminuw pminsd pminud roundps roundss roundpd roundsd " + "insertps pinsrb pinsrd pinsrq extractps pextrb pextrd pextrq " + "pmovsxbw pmovsxbd pmovsxbq pmovsxwd pmovsxwq pmovsxdq pmovzxbw " + "pmovzxbd pmovzxbq pmovzxwd pmovzxwq pmovzxdq ptest pcmpeqq " + "packusdw movntdqa " + "pcmpgtq pcmpestri pcmpestrm pcmpistri pcmpistrm " + "aesenc aesenclast aesdec aesdeclast aeskeygenassist aesimc " + "xcryptcbc xcryptcfb xcryptctr xcryptecb xcryptofb xsha1 xsha256 " + "montmul xstore " + "vaddss vaddps vaddsd vaddpd vsubss vsubps vsubsd vsubpd " + "vaddsubps vaddsubpd vhaddps vhaddpd vhsubps vhsubpd vmulss " + "vmulps vmulsd vmulpd vmaxss vmaxps vmaxsd vmaxpd vminss vminps " + "vminsd vminpd vandps vandpd vandnps vandnpd vorps vorpd vxorps " + "vxorpd vblendps vblendpd vblendvps vblendvpd vcmpss vcomiss " + "vucomiss vcmpsd vcomisd vucomisd vcmpps vcmppd vcmpeqss vcmpltss " + "vcmpless vcmpunordss vcmpneqss vcmpnltss vcmpnless vcmpordss " + "vcmpeq_uqss vcmpngess vcmpngtss vcmpfalsess vcmpneq_oqss " + "vcmpgess vcmpgtss vcmptruess vcmpeq_osss vcmplt_oqss vcmple_oqss " + "vcmpunord_sss vcmpneq_usss vcmpnlt_uqss vcmpnle_uqss vcmpord_sss " + "vcmpeq_usss vcmpnge_uqss vcmpngt_uqss vcmpfalse_osss " + "vcmpneq_osss vcmpge_oqss vcmpgt_oqss vcmptrue_usss vcmpeqps " + "vcmpltps vcmpleps vcmpunordps vcmpneqps vcmpnltps vcmpnleps " + "vcmpordps vcmpeq_uqps vcmpngeps vcmpngtps vcmpfalseps " + "vcmpneq_oqps vcmpgeps vcmpgtps vcmptrueps vcmpeq_osps " + "vcmplt_oqps vcmple_oqps vcmpunord_sps vcmpneq_usps vcmpnlt_uqps " + "vcmpnle_uqps vcmpord_sps vcmpeq_usps vcmpnge_uqps vcmpngt_uqps " + "vcmpfalse_osps vcmpneq_osps vcmpge_oqps vcmpgt_oqps " + "vcmptrue_usps vcmpeqsd vcmpltsd vcmplesd vcmpunordsd vcmpneqsd " + "vcmpnltsd vcmpnlesd vcmpordsd vcmpeq_uqsd vcmpngesd vcmpngtsd " + "vcmpfalsesd vcmpneq_oqsd vcmpgesd vcmpgtsd vcmptruesd " + "vcmpeq_ossd vcmplt_oqsd vcmple_oqsd vcmpunord_ssd vcmpneq_ussd " + "vcmpnlt_uqsd vcmpnle_uqsd vcmpord_ssd vcmpeq_ussd vcmpnge_uqsd " + "vcmpngt_uqsd vcmpfalse_ossd vcmpneq_ossd vcmpge_oqsd vcmpgt_oqsd " + "vcmptrue_ussd vcmpeqpd vcmpltpd vcmplepd vcmpunordpd vcmpneqpd " + "vcmpnltpd vcmpnlepd vcmpordpd vcmpeq_uqpd vcmpngepd vcmpngtpd " + "vcmpfalsepd vcmpneq_oqpd vcmpgepd vcmpgtpd vcmptruepd " + "vcmpeq_ospd vcmplt_oqpd vcmple_oqpd vcmpunord_spd vcmpneq_uspd " + "vcmpnlt_uqpd vcmpnle_uqpd vcmpord_spd vcmpeq_uspd vcmpnge_uqpd " + "vcmpngt_uqpd vcmpfalse_ospd vcmpneq_ospd vcmpge_oqpd vcmpgt_oqpd " + "vcmptrue_uspd vcvtsd2ss vcvtpd2ps vcvtss2sd vcvtps2pd vcvtsi2ss " + "vcvtss2si vcvttss2si vcvtpi2ps vcvtps2pi vcvttps2pi vcvtdq2ps " + "vcvtps2dq vcvttps2dq vcvtdq2pd vcvtpd2dq vcvttpd2dq vcvtsi2sd " + "vcvtsd2si vcvttsd2si vcvtpi2pd vcvtpd2pi vcvttpd2pi vdivss " + "vdivps vdivsd vdivpd vsqrtss vsqrtps vsqrtsd vsqrtpd vdpps vdppd " + "vmaskmovps vmaskmovpd vmovss vmovsd vmovaps vmovapd vmovups " + "vmovupd vmovntps vmovntpd vmovhlps vmovlhps vmovlps vmovlpd " + "vmovhps vmovhpd vmovsldup vmovshdup vmovddup vmovmskps vmovmskpd " + "vroundss vroundps vroundsd vroundpd vrcpss vrcpps vrsqrtss " + "vrsqrtps vunpcklps vunpckhps vunpcklpd vunpckhpd vbroadcastss " + "vbroadcastsd vbroadcastf128 vextractps vinsertps vextractf128 " + "vinsertf128 vshufps vshufpd vpermilps vpermilpd vperm2f128 " + "vtestps vtestpd vpaddb vpaddusb vpaddsb vpaddw vpaddusw vpaddsw " + "vpaddd vpaddq vpsubb vpsubusb vpsubsb vpsubw vpsubusw vpsubsw " + "vpsubd vpsubq vphaddw vphaddsw vphaddd vphsubw vphsubsw vphsubd " + "vpsllw vpslld vpsllq vpsrlw vpsrld vpsrlq vpsraw vpsrad vpand " + "vpandn vpor vpxor vpblendwb vpblendw vpsignb vpsignw vpsignd " + "vpavgb vpavgw vpabsb vpabsw vpabsd vmovd vmovq vmovdqa vmovdqu " + "vlddqu vmovntdq vmovntdqa vmaskmovdqu vpmovsxbw vpmovsxbd " + "vpmovsxbq vpmovsxwd vpmovsxwq vpmovsxdq vpmovzxbw vpmovzxbd " + "vpmovzxbq vpmovzxwd vpmovzxwq vpmovzxdq vpackuswb vpacksswb " + "vpackusdw vpackssdw vpcmpeqb vpcmpeqw vpcmpeqd vpcmpeqq vpcmpgtb " + "vpcmpgtw vpcmpgtd vpcmpgtq vpmaddubsw vpmaddwd vpmullw vpmulhuw " + "vpmulhw vpmulhrsw vpmulld vpmuludq vpmuldq vpmaxub vpmaxsb " + "vpmaxuw vpmaxsw vpmaxud vpmaxsd vpminub vpminsb vpminuw vpminsw " + "vpminud vpminsd vpmovmskb vptest vpunpcklbw vpunpcklwd " + "vpunpckldq vpunpcklqdq vpunpckhbw vpunpckhwd vpunpckhdq " + "vpunpckhqdq vpslldq vpsrldq vpalignr vpshufb vpshuflw vpshufhw " + "vpshufd vpextrb vpextrw vpextrd vpextrq vpinsrb vpinsrw vpinsrd " + "vpinsrq vpsadbw vmpsadbw vphminposuw vpcmpestri vpcmpestrm " + "vpcmpistri vpcmpistrm vpclmulqdq vaesenc vaesenclast vaesdec " + "vaesdeclast vaeskeygenassist vaesimc vldmxcsr vstmxcsr vzeroall " + "vzeroupper " + "vbroadcasti128 vpbroadcastb vpbroadcastw vpbroadcastd " + "vpbroadcastq vpblendd vpermd vpermq vperm2i128 vextracti128 " + "vinserti128 vpmaskmovd vpmaskmovq vpsllvd vpsllvq vpsravd " + "vpsrlvd vpsrldq vpgatherdd vpgatherqd vgatherdq vgatherqq " + "vpermps vpermpd vgatherdpd vgatherqpd vgatherdps vgatherqps " + "vfrczss vfrczps vfrczsd vfrczpd vpermil2ps vperlil2pd vtestps " + "vtestpd vpcomub vpcomb vpcomuw vpcomw vpcomud vpcomd vpcomuq " + "vpcomq vphaddubw vphaddbw vphaddubd vphaddbd vphaddubq vphaddbq " + "vphadduwd vphaddwd vphadduwq vphaddwq vphaddudq vphadddq " + "vphsubbw vphsubwd vphsubdq vpmacsdd vpmacssdd vpmacsdql " + "vpmacssdql vpmacsdqh vpmacssdqh vpmacsww vpmacssww vpmacswd " + "vpmacsswd vpmadcswd vpmadcsswd vpcmov vpperm vprotb vprotw " + "vprotd vprotq vpshab vpshaw vpshad vpshaq vpshlb vpshlw vpshld " + "vpshlq " + "vcvtph2ps vcvtps2ph " + "vfmaddss vfmaddps vfmaddsd vfmaddpd vfmsubss vfmsubps vfmsubsd " + "vfmsubpd vnfmaddss vnfmaddps vnfmaddsd vnfmaddpd vnfmsubss " + "vnfmsubps vnfmsubsd vnfmsubpd vfmaddsubps vfmaddsubpd " + "vfmsubaddps vfmsubaddpd " + "vfmadd132ss vfmadd213ss vfmadd231ss vfmadd132ps vfmadd213ps " + "vfmadd231ps vfmadd132sd vfmadd213sd vfmadd231sd vfmadd132pd " + "vfmadd213pd vfmadd231pd vfmaddsub132ps vfmaddsub213ps " + "vfmaddsub231ps vfmaddsub132pd vfmaddsub213pd vfmaddsub231pd " + "vfmsubadd132ps vfmsubadd213ps vfmsubadd231ps vfmsubadd132pd " + "vfmsubadd213pd vfmsubadd231pd vfmsub132ss vfmsub213ss " + "vfmsub231ss vfmsub132ps vfmsub213ps vfmsub231ps vfmsub132sd " + "vfmsub213sd vfmsub231sd vfmsub132pd vfmsub213pd vfmsub231pd " + "vfnmadd132ss vfnmadd213ss vfnmadd231ss vfnmadd132ps vfnmadd213ps " + "vfnmadd231ps vfnmadd132sd vfnmadd213sd vfnmadd231sd vfnmadd132pd " + "vfnmadd213pd vfnmadd231pd vfnmsub132ss vfnmsub213ss vfnmsub231ss " + "vfnmsub132ps vfnmsub213ps vfnmsub231ps vfnmsub132sd vfnmsub213sd " + "vfnmsub231sd vfnmsub132pd vfnmsub213pd vfnmsub231pd"; + + return 0; +} + + +// Returns the user name of a style. +QString QsciLexerAsm::description(int style) const +{ + switch (style) + { + case Default: + return tr("Default"); + + case Comment: + return tr("Comment"); + + case Number: + return tr("Number"); + + case DoubleQuotedString: + return tr("Double-quoted string"); + + case Operator: + return tr("Operator"); + + case Identifier: + return tr("Identifier"); + + case CPUInstruction: + return tr("CPU instruction"); + + case FPUInstruction: + return tr("FPU instruction"); + + case Register: + return tr("Register"); + + case Directive: + return tr("Directive"); + + case DirectiveOperand: + return tr("Directive operand"); + + case BlockComment: + return tr("Block comment"); + + case SingleQuotedString: + return tr("Single-quoted string"); + + case UnclosedString: + return tr("Unclosed string"); + + case ExtendedInstruction: + return tr("Extended instruction"); + + case CommentDirective: + return tr("Comment directive"); + } + + return QString(); +} + + +// Refresh all properties. +void QsciLexerAsm::refreshProperties() +{ + setCommentProp(); + setCompactProp(); + setCommentDelimiterProp(); + setSyntaxBasedProp(); +} + + +// Read properties from the settings. +bool QsciLexerAsm::readProperties(QSettings &qs,const QString &prefix) +{ + fold_comments = qs.value(prefix + "foldcomments", true).toBool(); + fold_compact = qs.value(prefix + "foldcompact", true).toBool(); + comment_delimiter = qs.value(prefix + "commentdelimiter", + QChar('~')).toChar(); + fold_syntax_based = qs.value(prefix + "foldsyntaxbased", true).toBool(); + + return true; +} + + +// Write properties to the settings. +bool QsciLexerAsm::writeProperties(QSettings &qs,const QString &prefix) const +{ + qs.setValue(prefix + "foldcomments", fold_comments); + qs.setValue(prefix + "foldcompact", fold_compact); + qs.setValue(prefix + "commentdelimiter", comment_delimiter); + qs.setValue(prefix + "foldsyntaxbased", fold_syntax_based); + + return true; +} + + +// Return true if comments can be folded. +bool QsciLexerAsm::foldComments() const +{ + return fold_comments; +} + + +// Set if comments can be folded. +void QsciLexerAsm::setFoldComments(bool fold) +{ + fold_comments = fold; + + setCommentProp(); +} + + +// Set the "fold.asm.comment.multiline" property. +void QsciLexerAsm::setCommentProp() +{ + emit propertyChanged("fold.asm.comment.multiline", + (fold_comments ? "1" : "0")); +} + + +// Return true if folds are compact. +bool QsciLexerAsm::foldCompact() const +{ + return fold_compact; +} + + +// Set if folds are compact. +void QsciLexerAsm::setFoldCompact(bool fold) +{ + fold_compact = fold; + + setCompactProp(); +} + + +// Set the "fold.compact" property. +void QsciLexerAsm::setCompactProp() +{ + emit propertyChanged("fold.compact", (fold_compact ? "1" : "0")); +} + + +// Return the comment delimiter. +QChar QsciLexerAsm::commentDelimiter() const +{ + return comment_delimiter; +} + + +// Set the comment delimiter. +void QsciLexerAsm::setCommentDelimiter(QChar delimiter) +{ + comment_delimiter = delimiter; + + setCommentDelimiterProp(); +} + + +// Set the "lexer.asm.comment.delimiter" property. +void QsciLexerAsm::setCommentDelimiterProp() +{ + emit propertyChanged("lexer.asm.comment.delimiter", + textAsBytes(QString(comment_delimiter)).constData()); +} + + +// Return true if folds are syntax-based. +bool QsciLexerAsm::foldSyntaxBased() const +{ + return fold_syntax_based; +} + + +// Set if folds are syntax-based. +void QsciLexerAsm::setFoldSyntaxBased(bool syntax_based) +{ + fold_syntax_based = syntax_based; + + setSyntaxBasedProp(); +} + + +// Set the "fold.asm.syntax.based" property. +void QsciLexerAsm::setSyntaxBasedProp() +{ + emit propertyChanged("fold.asm.syntax.based", + (fold_syntax_based ? "1" : "0")); +} diff --git a/libs/qscintilla_2.14.1/Qt5Qt6/qscilexeravs.cpp b/libs/qscintilla_2.14.1/Qt5Qt6/qscilexeravs.cpp new file mode 100644 index 000000000..b741b072d --- /dev/null +++ b/libs/qscintilla_2.14.1/Qt5Qt6/qscilexeravs.cpp @@ -0,0 +1,414 @@ +// This module implements the QsciLexerAVS class. +// +// Copyright (c) 2023 Riverbank Computing Limited +// +// This file is part of QScintilla. +// +// This file may be used under the terms of the GNU General Public License +// version 3.0 as published by the Free Software Foundation and appearing in +// the file LICENSE included in the packaging of this file. Please review the +// following information to ensure the GNU General Public License version 3.0 +// requirements will be met: http://www.gnu.org/copyleft/gpl.html. +// +// If you do not wish to use this file under the terms of the GPL version 3.0 +// then you may purchase a commercial license. For more information contact +// info@riverbankcomputing.com. +// +// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + + +#include "Qsci/qscilexeravs.h" + +#include +#include +#include + + +// The ctor. +QsciLexerAVS::QsciLexerAVS(QObject *parent) + : QsciLexer(parent), + fold_comments(false), fold_compact(true) +{ +} + + +// The dtor. +QsciLexerAVS::~QsciLexerAVS() +{ +} + + +// Returns the language name. +const char *QsciLexerAVS::language() const +{ + return "AVS"; +} + + +// Returns the lexer name. +const char *QsciLexerAVS::lexer() const +{ + return "avs"; +} + + +// Return the style used for braces. +int QsciLexerAVS::braceStyle() const +{ + return Operator; +} + + +// Return the string of characters that comprise a word. +const char *QsciLexerAVS::wordCharacters() const +{ + return "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_#"; +} + + +// Returns the foreground colour of the text for a style. +QColor QsciLexerAVS::defaultColor(int style) const +{ + switch (style) + { + case Default: + case Operator: + return QColor(0x00, 0x00, 0x00); + + case BlockComment: + case NestedBlockComment: + case LineComment: + return QColor(0x00, 0x7f, 0x00); + + case Number: + case Function: + return QColor(0x00, 0x7f, 0x7f); + + case String: + case TripleString: + return QColor(0x7f, 0x00, 0x7f); + + case Keyword: + case Filter: + case ClipProperty: + return QColor(0x00, 0x00, 0x7f); + + case Plugin: + return QColor(0x00, 0x80, 0xc0); + + case KeywordSet6: + return QColor(0x80, 0x00, 0xff); + } + + return QsciLexer::defaultColor(style); +} + + +// Returns the font of the text for a style. +QFont QsciLexerAVS::defaultFont(int style) const +{ + QFont f; + + switch (style) + { + case BlockComment: + case NestedBlockComment: + case LineComment: +#if defined(Q_OS_WIN) + f = QFont("Comic Sans MS", 9); +#elif defined(Q_OS_MAC) + f = QFont("Georgia", 13); +#else + f = QFont("Bitstream Vera Serif", 9); +#endif + break; + + case Keyword: + case Filter: + case Plugin: + f = QsciLexer::defaultFont(style); + f.setBold(true); + break; + + default: + f = QsciLexer::defaultFont(style); + } + + return f; +} + + +// Returns the set of keywords. +const char *QsciLexerAVS::keywords(int set) const +{ + if (set == 1) + return "true false return global"; + + if (set == 2) + return + "addborders alignedsplice amplify amplifydb animate applyrange " + "assumebff assumefieldbased assumefps assumeframebased " + "assumesamplerate assumescaledfps assumetff audiodub audiodubex " + "avifilesource avisource bicubicresize bilinearresize " + "blackmanresize blackness blankclip blur bob cache changefps " + "colorbars colorkeymask coloryuv compare complementparity " + "conditionalfilter conditionalreader convertaudio " + "convertaudioto16bit convertaudioto24bit convertaudioto32bit " + "convertaudioto8bit convertaudiotofloat convertbacktoyuy2 " + "convertfps converttobackyuy2 converttomono converttorgb " + "converttorgb24 converttorgb32 converttoy8 converttoyv16 " + "converttoyv24 converttoyv411 converttoyuy2 converttoyv12 crop " + "cropbottom delayaudio deleteframe dissolve distributor " + "doubleweave duplicateframe ensurevbrmp3sync fadein fadein0 " + "fadein2 fadeio fadeio0 fadeio2 fadeout fadeout0 fadeout2 " + "fixbrokenchromaupsampling fixluminance fliphorizontal " + "flipvertical frameevaluate freezeframe gaussresize " + "generalconvolution getchannel getchannels getmtmode getparity " + "grayscale greyscale histogram horizontalreduceby2 imagereader " + "imagesource imagewriter info interleave internalcache " + "internalcachemt invert killaudio killvideo lanczos4resize " + "lanczosresize layer letterbox levels limiter loop mask maskhs " + "max merge mergeargb mergechannels mergechroma mergeluma mergergb " + "messageclip min mixaudio monotostereo normalize null " + "opendmlsource overlay peculiarblend pointresize pulldown " + "reduceby2 resampleaudio resetmask reverse rgbadjust scriptclip " + "segmentedavisource segmenteddirectshowsource selecteven " + "selectevery selectodd selectrangeevery separatefields setmtmode " + "sharpen showalpha showblue showfiveversions showframenumber " + "showgreen showred showsmpte showtime sincresize skewrows " + "spatialsoften spline16resize spline36resize spline64resize ssrc " + "stackhorizontal stackvertical subtitle subtract supereq " + "swapfields swapuv temporalsoften timestretch tone trim turn180 " + "turnleft turnright tweak unalignedsplice utoy utoy8 version " + "verticalreduceby2 vtoy vtoy8 wavsource weave writefile " + "writefileend writefileif writefilestart ytouv"; + + if (set == 3) + return + "addgrain addgrainc agc_hdragc analyzelogo animeivtc asharp " + "audiograph autocrop autoyuy2 avsrecursion awarpsharp " + "bassaudiosource bicublinresize bifrost binarize blendfields " + "blindpp blockbuster bordercontrol cfielddiff cframediff " + "chromashift cnr2 colormatrix combmask contra convolution3d " + "convolution3dyv12 dctfilter ddcc deblendlogo deblock deblock_qed " + "decimate decomb dedup deen deflate degrainmedian depan " + "depanestimate depaninterleave depanscenes depanstabilize " + "descratch despot dfttest dgbob dgsource directshowsource " + "distancefunction dss2 dup dupmc edeen edgemask ediupsizer eedi2 " + "eedi3 eedi3_rpow2 expand faerydust fastbicubicresize " + "fastbilinearresize fastediupsizer dedgemask fdecimate " + "ffaudiosource ffdshow ffindex ffmpegsource ffmpegsource2 " + "fft3dfilter fft3dgpu ffvideosource fielddeinterlace fielddiff " + "fillmargins fity2uv fity2u fity2v fitu2y fitv2y fluxsmooth " + "fluxsmoothst fluxsmootht framediff framenumber frfun3b frfun7 " + "gicocu golddust gradfun2db grapesmoother greedyhma grid " + "guavacomb hqdn3d hybridfupp hysteresymask ibob " + "improvesceneswitch inflate inpand inpaintlogo interframe " + "interlacedresize interlacedwarpedresize interleaved2planar " + "iscombed iscombedt iscombedtivtc kerneldeint leakkernelbob " + "leakkerneldeint limitedsharpen limitedsharpenfaster logic lsfmod " + "lumafilter lumayv12 manalyse maskeddeinterlace maskedmerge " + "maskedmix mblockfps mcompensate mctemporaldenoise " + "mctemporaldenoisepp mdegrain1 mdegrain2 mdegrain3 mdepan " + "medianblur mergehints mflow mflowblur mflowfps mflowinter " + "minblur mipsmooth mmask moderatesharpen monitorfilter motionmask " + "mpasource mpeg2source mrecalculate mscdetection msharpen mshow " + "msmooth msu_fieldshiftfixer msu_frc msuper mt mt_adddiff " + "mt_average mt_binarize mt_circle mt_clamp mt_convolution " + "mt_deflate mt_diamond mt_edge mt_ellipse mt_expand " + "mt_freeellipse mt_freelosange mt_freerectangle mt_hysteresis " + "mt_infix mt_inflate mt_inpand mt_invert mt_logic mt_losange " + "mt_lut mt_lutf mt_luts mt_lutspa mt_lutsx mt_lutxy mt_lutxyz " + "mt_makediff mt_mappedblur mt_merge mt_motion mt_polish " + "mt_rectangle mt_square mti mtsource multidecimate mvanalyse " + "mvblockfps mvchangecompensate mvcompensate mvdegrain1 mvdegrain2 " + "mvdegrain3 mvdenoise mvdepan mvflow mvflowblur mvflowfps " + "mvflowfps2 mvflowinter mvincrease mvmask mvrecalculate " + "mvscdetection mvshow nicac3source nicdtssource niclpcmsource " + "nicmpasource nicmpg123source nnedi nnedi2 nnedi2_rpow2 nnedi3 " + "nnedi3_rpow2 nomosmooth overlaymask peachsmoother pixiedust " + "planar2interleaved qtgmc qtinput rawavsource rawsource " + "reduceflicker reinterpolate411 removedirt removedust removegrain " + "removegrainhd removetemporalgrain repair requestlinear " + "reversefielddominance rgb3dlut rgdeinterlace rgsdeinterlace " + "rgblut rotate sangnom seesaw sharpen2 showchannels " + "showcombedtivtc smartdecimate smartdeinterlace smdegrain " + "smoothdeinterlace smoothuv soothess soxfilter spacedust sshiq " + "ssim ssiq stmedianfilter t3dlut tanisotropic tbilateral tcanny " + "tcomb tcombmask tcpserver tcpsource tdecimate tdeint tedgemask " + "telecide temporalcleaner temporalrepair temporalsmoother " + "tfieldblank tfm tisophote tivtc tmaskblank tmaskedmerge " + "tmaskedmerge3 tmm tmonitor tnlmeans tomsmocomp toon textsub " + "ttempsmooth ttempsmoothf tunsharp unblock uncomb undot unfilter " + "unsharpmask vaguedenoiser variableblur verticalcleaner " + "videoscope vinverse vobsub vqmcalc warpedresize warpsharp " + "xsharpen yadif yadifmod yuy2lut yv12convolution " + "yv12interlacedreduceby2 yv12interlacedselecttopfields yv12layer " + "yv12lut yv12lutxy yv12substract yv12torgb24 yv12toyuy2"; + + if (set == 4) + return + "abs apply assert bool ceil chr clip continueddenominator " + "continuednumerator cos default defined eval averagechromau " + "averagechromav averageluma chromaudifference chromavdifference " + "lumadifference exist exp findstr float floor frac hexvalue " + "import int isbool isclip isfloat isint isstring lcase leftstr " + "load_stdcall_plugin loadcplugin loadplugin loadvfapiplugin " + "loadvirtualdubplugin log midstr muldiv nop opt_allowfloataudio " + "opt_avipadscanlines opt_dwchannelmask opt_usewaveextensible " + "opt_vdubplanarhack pi pow rand revstr rightstr round scriptdir " + "scriptfile scriptname select setmemorymax " + "setplanarlegacyalignment rgbdifference rgbdifferencefromprevious " + "rgbdifferencetonext udifferencefromprevious udifferencetonext " + "setworkingdir sign sin spline sqrt string strlen time ucase " + "undefined value versionnumber versionstring uplanemax " + "uplanemedian uplanemin uplaneminmaxdifference " + "vdifferencefromprevious vdifferencetonext vplanemax vplanemedian " + "vplanemin vplaneminmaxdifference ydifferencefromprevious " + "ydifferencetonext yplanemax yplanemedian yplanemin " + "yplaneminmaxdifference"; + + if (set == 5) + return + "audiobits audiochannels audiolength audiolengthf audiorate " + "framecount framerate frameratedenominator frameratenumerator " + "getleftchannel getrightchannel hasaudio hasvideo height " + "isaudiofloat isaudioint isfieldbased isframebased isinterleaved " + "isplanar isrgb isrgb24 isrgb32 isyuv isyuy2 isyv12 width"; + + return 0; +} + + +// Returns the user name of a style. +QString QsciLexerAVS::description(int style) const +{ + switch (style) + { + case Default: + return tr("Default"); + + case BlockComment: + return tr("Block comment"); + + case NestedBlockComment: + return tr("Nested block comment"); + + case LineComment: + return tr("Line comment"); + + case Number: + return tr("Number"); + + case Operator: + return tr("Operator"); + + case Identifier: + return tr("Identifier"); + + case String: + return tr("Double-quoted string"); + + case TripleString: + return tr("Triple double-quoted string"); + + case Keyword: + return tr("Keyword"); + + case Filter: + return tr("Filter"); + + case Plugin: + return tr("Plugin"); + + case Function: + return tr("Function"); + + case ClipProperty: + return tr("Clip property"); + + case KeywordSet6: + return tr("User defined"); + } + + return QString(); +} + + +// Refresh all properties. +void QsciLexerAVS::refreshProperties() +{ + setCommentProp(); + setCompactProp(); +} + + +// Read properties from the settings. +bool QsciLexerAVS::readProperties(QSettings &qs,const QString &prefix) +{ + int rc = true; + + fold_comments = qs.value(prefix + "foldcomments", false).toBool(); + fold_compact = qs.value(prefix + "foldcompact", true).toBool(); + + return rc; +} + + +// Write properties to the settings. +bool QsciLexerAVS::writeProperties(QSettings &qs,const QString &prefix) const +{ + int rc = true; + + qs.setValue(prefix + "foldcomments", fold_comments); + qs.setValue(prefix + "foldcompact", fold_compact); + + return rc; +} + + +// Return true if comments can be folded. +bool QsciLexerAVS::foldComments() const +{ + return fold_comments; +} + + +// Set if comments can be folded. +void QsciLexerAVS::setFoldComments(bool fold) +{ + fold_comments = fold; + + setCommentProp(); +} + + +// Set the "fold.comment" property. +void QsciLexerAVS::setCommentProp() +{ + emit propertyChanged("fold.comment",(fold_comments ? "1" : "0")); +} + + +// Return true if folds are compact. +bool QsciLexerAVS::foldCompact() const +{ + return fold_compact; +} + + +// Set if folds are compact +void QsciLexerAVS::setFoldCompact(bool fold) +{ + fold_compact = fold; + + setCompactProp(); +} + + +// Set the "fold.compact" property. +void QsciLexerAVS::setCompactProp() +{ + emit propertyChanged("fold.compact",(fold_compact ? "1" : "0")); +} diff --git a/libs/qscintilla_2.14.1/Qt5Qt6/qscilexerbash.cpp b/libs/qscintilla_2.14.1/Qt5Qt6/qscilexerbash.cpp new file mode 100644 index 000000000..8a866c53d --- /dev/null +++ b/libs/qscintilla_2.14.1/Qt5Qt6/qscilexerbash.cpp @@ -0,0 +1,350 @@ +// This module implements the QsciLexerBash class. +// +// Copyright (c) 2023 Riverbank Computing Limited +// +// This file is part of QScintilla. +// +// This file may be used under the terms of the GNU General Public License +// version 3.0 as published by the Free Software Foundation and appearing in +// the file LICENSE included in the packaging of this file. Please review the +// following information to ensure the GNU General Public License version 3.0 +// requirements will be met: http://www.gnu.org/copyleft/gpl.html. +// +// If you do not wish to use this file under the terms of the GPL version 3.0 +// then you may purchase a commercial license. For more information contact +// info@riverbankcomputing.com. +// +// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + + +#include "Qsci/qscilexerbash.h" + +#include +#include +#include + + +// The ctor. +QsciLexerBash::QsciLexerBash(QObject *parent) + : QsciLexer(parent), fold_comments(false), fold_compact(true) +{ +} + + +// The dtor. +QsciLexerBash::~QsciLexerBash() +{ +} + + +// Returns the language name. +const char *QsciLexerBash::language() const +{ + return "Bash"; +} + + +// Returns the lexer name. +const char *QsciLexerBash::lexer() const +{ + return "bash"; +} + + +// Return the style used for braces. +int QsciLexerBash::braceStyle() const +{ + return Operator; +} + + +// Return the string of characters that comprise a word. +const char *QsciLexerBash::wordCharacters() const +{ + return "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_$@%&"; +} + + +// Returns the foreground colour of the text for a style. +QColor QsciLexerBash::defaultColor(int style) const +{ + switch (style) + { + case Default: + return QColor(0x80,0x80,0x80); + + case Error: + case Backticks: + return QColor(0xff,0xff,0x00); + + case Comment: + return QColor(0x00,0x7f,0x00); + + case Number: + return QColor(0x00,0x7f,0x7f); + + case Keyword: + return QColor(0x00,0x00,0x7f); + + case DoubleQuotedString: + case SingleQuotedString: + case SingleQuotedHereDocument: + return QColor(0x7f,0x00,0x7f); + + case Operator: + case Identifier: + case Scalar: + case ParameterExpansion: + case HereDocumentDelimiter: + return QColor(0x00,0x00,0x00); + } + + return QsciLexer::defaultColor(style); +} + + +// Returns the end-of-line fill for a style. +bool QsciLexerBash::defaultEolFill(int style) const +{ + switch (style) + { + case SingleQuotedHereDocument: + return true; + } + + return QsciLexer::defaultEolFill(style); +} + + +// Returns the font of the text for a style. +QFont QsciLexerBash::defaultFont(int style) const +{ + QFont f; + + switch (style) + { + case Comment: +#if defined(Q_OS_WIN) + f = QFont("Comic Sans MS",9); +#elif defined(Q_OS_MAC) + f = QFont("Comic Sans MS", 12); +#else + f = QFont("Bitstream Vera Serif",9); +#endif + break; + + case Keyword: + case Operator: + f = QsciLexer::defaultFont(style); + f.setBold(true); + break; + + case DoubleQuotedString: + case SingleQuotedString: +#if defined(Q_OS_WIN) + f = QFont("Courier New",10); +#elif defined(Q_OS_MAC) + f = QFont("Courier", 12); +#else + f = QFont("Bitstream Vera Sans Mono",9); +#endif + break; + + default: + f = QsciLexer::defaultFont(style); + } + + return f; +} + + +// Returns the set of keywords. +const char *QsciLexerBash::keywords(int set) const +{ + if (set == 1) + return + "alias ar asa awk banner basename bash bc bdiff break " + "bunzip2 bzip2 cal calendar case cat cc cd chmod " + "cksum clear cmp col comm compress continue cp cpio " + "crypt csplit ctags cut date dc dd declare deroff dev " + "df diff diff3 dircmp dirname do done du echo ed " + "egrep elif else env esac eval ex exec exit expand " + "export expr false fc fgrep fi file find fmt fold for " + "function functions getconf getopt getopts grep gres " + "hash head help history iconv id if in integer jobs " + "join kill local lc let line ln logname look ls m4 " + "mail mailx make man mkdir more mt mv newgrp nl nm " + "nohup ntps od pack paste patch pathchk pax pcat perl " + "pg pr print printf ps pwd read readonly red return " + "rev rm rmdir sed select set sh shift size sleep sort " + "spell split start stop strings strip stty sum " + "suspend sync tail tar tee test then time times touch " + "tr trap true tsort tty type typeset ulimit umask " + "unalias uname uncompress unexpand uniq unpack unset " + "until uudecode uuencode vi vim vpax wait wc whence " + "which while who wpaste wstart xargs zcat " + + "chgrp chown chroot dir dircolors factor groups " + "hostid install link md5sum mkfifo mknod nice pinky " + "printenv ptx readlink seq sha1sum shred stat su tac " + "unlink users vdir whoami yes"; + + return 0; +} + + +// Returns the user name of a style. +QString QsciLexerBash::description(int style) const +{ + switch (style) + { + case Default: + return tr("Default"); + + case Error: + return tr("Error"); + + case Comment: + return tr("Comment"); + + case Number: + return tr("Number"); + + case Keyword: + return tr("Keyword"); + + case DoubleQuotedString: + return tr("Double-quoted string"); + + case SingleQuotedString: + return tr("Single-quoted string"); + + case Operator: + return tr("Operator"); + + case Identifier: + return tr("Identifier"); + + case Scalar: + return tr("Scalar"); + + case ParameterExpansion: + return tr("Parameter expansion"); + + case Backticks: + return tr("Backticks"); + + case HereDocumentDelimiter: + return tr("Here document delimiter"); + + case SingleQuotedHereDocument: + return tr("Single-quoted here document"); + } + + return QString(); +} + + +// Returns the background colour of the text for a style. +QColor QsciLexerBash::defaultPaper(int style) const +{ + switch (style) + { + case Error: + return QColor(0xff,0x00,0x00); + + case Scalar: + return QColor(0xff,0xe0,0xe0); + + case ParameterExpansion: + return QColor(0xff,0xff,0xe0); + + case Backticks: + return QColor(0xa0,0x80,0x80); + + case HereDocumentDelimiter: + case SingleQuotedHereDocument: + return QColor(0xdd,0xd0,0xdd); + } + + return QsciLexer::defaultPaper(style); +} + + +// Refresh all properties. +void QsciLexerBash::refreshProperties() +{ + setCommentProp(); + setCompactProp(); +} + + +// Read properties from the settings. +bool QsciLexerBash::readProperties(QSettings &qs, const QString &prefix) +{ + int rc = true; + + fold_comments = qs.value(prefix + "foldcomments", false).toBool(); + fold_compact = qs.value(prefix + "foldcompact", true).toBool(); + + return rc; +} + + +// Write properties to the settings. +bool QsciLexerBash::writeProperties(QSettings &qs, const QString &prefix) const +{ + int rc = true; + + qs.setValue(prefix + "foldcomments", fold_comments); + qs.setValue(prefix + "foldcompact", fold_compact); + + return rc; +} + + +// Return true if comments can be folded. +bool QsciLexerBash::foldComments() const +{ + return fold_comments; +} + + +// Set if comments can be folded. +void QsciLexerBash::setFoldComments(bool fold) +{ + fold_comments = fold; + + setCommentProp(); +} + + +// Set the "fold.comment" property. +void QsciLexerBash::setCommentProp() +{ + emit propertyChanged("fold.comment", (fold_comments ? "1" : "0")); +} + + +// Return true if folds are compact. +bool QsciLexerBash::foldCompact() const +{ + return fold_compact; +} + + +// Set if folds are compact +void QsciLexerBash::setFoldCompact(bool fold) +{ + fold_compact = fold; + + setCompactProp(); +} + + +// Set the "fold.compact" property. +void QsciLexerBash::setCompactProp() +{ + emit propertyChanged("fold.compact", (fold_compact ? "1" : "0")); +} diff --git a/libs/qscintilla_2.14.1/Qt5Qt6/qscilexerbatch.cpp b/libs/qscintilla_2.14.1/Qt5Qt6/qscilexerbatch.cpp new file mode 100644 index 000000000..d722482fc --- /dev/null +++ b/libs/qscintilla_2.14.1/Qt5Qt6/qscilexerbatch.cpp @@ -0,0 +1,212 @@ +// This module implements the QsciLexerBatch class. +// +// Copyright (c) 2023 Riverbank Computing Limited +// +// This file is part of QScintilla. +// +// This file may be used under the terms of the GNU General Public License +// version 3.0 as published by the Free Software Foundation and appearing in +// the file LICENSE included in the packaging of this file. Please review the +// following information to ensure the GNU General Public License version 3.0 +// requirements will be met: http://www.gnu.org/copyleft/gpl.html. +// +// If you do not wish to use this file under the terms of the GPL version 3.0 +// then you may purchase a commercial license. For more information contact +// info@riverbankcomputing.com. +// +// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + + +#include "Qsci/qscilexerbatch.h" + +#include +#include +#include + + +// The ctor. +QsciLexerBatch::QsciLexerBatch(QObject *parent) + : QsciLexer(parent) +{ +} + + +// The dtor. +QsciLexerBatch::~QsciLexerBatch() +{ +} + + +// Returns the language name. +const char *QsciLexerBatch::language() const +{ + return "Batch"; +} + + +// Returns the lexer name. +const char *QsciLexerBatch::lexer() const +{ + return "batch"; +} + + +// Return the string of characters that comprise a word. +const char *QsciLexerBatch::wordCharacters() const +{ + return "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-"; +} + + +// Returns the foreground colour of the text for a style. +QColor QsciLexerBatch::defaultColor(int style) const +{ + switch (style) + { + case Default: + case Operator: + return QColor(0x00,0x00,0x00); + + case Comment: + return QColor(0x00,0x7f,0x00); + + case Keyword: + case ExternalCommand: + return QColor(0x00,0x00,0x7f); + + case Label: + return QColor(0x7f,0x00,0x7f); + + case HideCommandChar: + return QColor(0x7f,0x7f,0x00); + + case Variable: + return QColor(0x80,0x00,0x80); + } + + return QsciLexer::defaultColor(style); +} + + +// Returns the end-of-line fill for a style. +bool QsciLexerBatch::defaultEolFill(int style) const +{ + switch (style) + { + case Label: + return true; + } + + return QsciLexer::defaultEolFill(style); +} + + +// Returns the font of the text for a style. +QFont QsciLexerBatch::defaultFont(int style) const +{ + QFont f; + + switch (style) + { + case Comment: +#if defined(Q_OS_WIN) + f = QFont("Comic Sans MS",9); +#elif defined(Q_OS_MAC) + f = QFont("Comic Sans MS", 12); +#else + f = QFont("Bitstream Vera Serif",9); +#endif + break; + + case Keyword: + f = QsciLexer::defaultFont(style); + f.setBold(true); + break; + + case ExternalCommand: +#if defined(Q_OS_WIN) + f = QFont("Courier New",10); +#elif defined(Q_OS_MAC) + f = QFont("Courier", 12); +#else + f = QFont("Bitstream Vera Sans Mono",9); +#endif + f.setBold(true); + break; + + default: + f = QsciLexer::defaultFont(style); + } + + return f; +} + + +// Returns the set of keywords. +const char *QsciLexerBatch::keywords(int set) const +{ + if (set == 1) + return + "rem set if exist errorlevel for in do break call " + "chcp cd chdir choice cls country ctty date del " + "erase dir echo exit goto loadfix loadhigh mkdir md " + "move path pause prompt rename ren rmdir rd shift " + "time type ver verify vol com con lpt nul"; + + return 0; +} + + +// Return the case sensitivity. +bool QsciLexerBatch::caseSensitive() const +{ + return false; +} + + +// Returns the user name of a style. +QString QsciLexerBatch::description(int style) const +{ + switch (style) + { + case Default: + return tr("Default"); + + case Comment: + return tr("Comment"); + + case Keyword: + return tr("Keyword"); + + case Label: + return tr("Label"); + + case HideCommandChar: + return tr("Hide command character"); + + case ExternalCommand: + return tr("External command"); + + case Variable: + return tr("Variable"); + + case Operator: + return tr("Operator"); + } + + return QString(); +} + + +// Returns the background colour of the text for a style. +QColor QsciLexerBatch::defaultPaper(int style) const +{ + switch (style) + { + case Label: + return QColor(0x60,0x60,0x60); + } + + return QsciLexer::defaultPaper(style); +} diff --git a/libs/qscintilla_2.14.1/Qt5Qt6/qscilexercmake.cpp b/libs/qscintilla_2.14.1/Qt5Qt6/qscilexercmake.cpp new file mode 100644 index 000000000..4dd47f830 --- /dev/null +++ b/libs/qscintilla_2.14.1/Qt5Qt6/qscilexercmake.cpp @@ -0,0 +1,304 @@ +// This module implements the QsciLexerCMake class. +// +// Copyright (c) 2023 Riverbank Computing Limited +// +// This file is part of QScintilla. +// +// This file may be used under the terms of the GNU General Public License +// version 3.0 as published by the Free Software Foundation and appearing in +// the file LICENSE included in the packaging of this file. Please review the +// following information to ensure the GNU General Public License version 3.0 +// requirements will be met: http://www.gnu.org/copyleft/gpl.html. +// +// If you do not wish to use this file under the terms of the GPL version 3.0 +// then you may purchase a commercial license. For more information contact +// info@riverbankcomputing.com. +// +// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + + +#include "Qsci/qscilexercmake.h" + +#include +#include +#include + + +// The ctor. +QsciLexerCMake::QsciLexerCMake(QObject *parent) + : QsciLexer(parent), fold_atelse(false) +{ +} + + +// The dtor. +QsciLexerCMake::~QsciLexerCMake() +{ +} + + +// Returns the language name. +const char *QsciLexerCMake::language() const +{ + return "CMake"; +} + + +// Returns the lexer name. +const char *QsciLexerCMake::lexer() const +{ + return "cmake"; +} + + +// Returns the foreground colour of the text for a style. +QColor QsciLexerCMake::defaultColor(int style) const +{ + switch (style) + { + case Default: + case KeywordSet3: + return QColor(0x00,0x00,0x00); + + case Comment: + return QColor(0x00,0x7f,0x00); + + case String: + case StringLeftQuote: + case StringRightQuote: + return QColor(0x7f,0x00,0x7f); + + case Function: + case BlockWhile: + case BlockForeach: + case BlockIf: + case BlockMacro: + return QColor(0x00,0x00,0x7f); + + case Variable: + return QColor(0x80,0x00,0x00); + + case Label: + case StringVariable: + return QColor(0xcc,0x33,0x00); + + case Number: + return QColor(0x00,0x7f,0x7f); + } + + return QsciLexer::defaultColor(style); +} + + +// Returns the font of the text for a style. +QFont QsciLexerCMake::defaultFont(int style) const +{ + QFont f; + + switch (style) + { + case Comment: +#if defined(Q_OS_WIN) + f = QFont("Comic Sans MS",9); +#elif defined(Q_OS_MAC) + f = QFont("Comic Sans MS", 12); +#else + f = QFont("Bitstream Vera Serif",9); +#endif + break; + + case Function: + case BlockWhile: + case BlockForeach: + case BlockIf: + case BlockMacro: + f = QsciLexer::defaultFont(style); + f.setBold(true); + break; + + default: + f = QsciLexer::defaultFont(style); + } + + return f; +} + + +// Returns the set of keywords. +const char *QsciLexerCMake::keywords(int set) const +{ + if (set == 1) + return + "add_custom_command add_custom_target add_definitions " + "add_dependencies add_executable add_library add_subdirectory " + "add_test aux_source_directory build_command build_name " + "cmake_minimum_required configure_file create_test_sourcelist " + "else elseif enable_language enable_testing endforeach endif " + "endmacro endwhile exec_program execute_process " + "export_library_dependencies file find_file find_library " + "find_package find_path find_program fltk_wrap_ui foreach " + "get_cmake_property get_directory_property get_filename_component " + "get_source_file_property get_target_property get_test_property " + "if include include_directories include_external_msproject " + "include_regular_expression install install_files " + "install_programs install_targets link_directories link_libraries " + "list load_cache load_command macro make_directory " + "mark_as_advanced math message option output_required_files " + "project qt_wrap_cpp qt_wrap_ui remove remove_definitions " + "separate_arguments set set_directory_properties " + "set_source_files_properties set_target_properties " + "set_tests_properties site_name source_group string " + "subdir_depends subdirs target_link_libraries try_compile try_run " + "use_mangled_mesa utility_source variable_requires " + "vtk_make_instantiator vtk_wrap_java vtk_wrap_python vtk_wrap_tcl " + "while write_file"; + + if (set == 2) + return + "ABSOLUTE ABSTRACT ADDITIONAL_MAKE_CLEAN_FILES ALL AND APPEND " + "ARGS ASCII BEFORE CACHE CACHE_VARIABLES CLEAR COMMAND COMMANDS " + "COMMAND_NAME COMMENT COMPARE COMPILE_FLAGS COPYONLY DEFINED " + "DEFINE_SYMBOL DEPENDS DOC EQUAL ESCAPE_QUOTES EXCLUDE " + "EXCLUDE_FROM_ALL EXISTS EXPORT_MACRO EXT EXTRA_INCLUDE " + "FATAL_ERROR FILE FILES FORCE FUNCTION GENERATED GLOB " + "GLOB_RECURSE GREATER GROUP_SIZE HEADER_FILE_ONLY HEADER_LOCATION " + "IMMEDIATE INCLUDES INCLUDE_DIRECTORIES INCLUDE_INTERNALS " + "INCLUDE_REGULAR_EXPRESSION LESS LINK_DIRECTORIES LINK_FLAGS " + "LOCATION MACOSX_BUNDLE MACROS MAIN_DEPENDENCY MAKE_DIRECTORY " + "MATCH MATCHALL MATCHES MODULE NAME NAME_WE NOT NOTEQUAL " + "NO_SYSTEM_PATH OBJECT_DEPENDS OPTIONAL OR OUTPUT OUTPUT_VARIABLE " + "PATH PATHS POST_BUILD POST_INSTALL_SCRIPT PREFIX PREORDER " + "PRE_BUILD PRE_INSTALL_SCRIPT PRE_LINK PROGRAM PROGRAM_ARGS " + "PROPERTIES QUIET RANGE READ REGEX REGULAR_EXPRESSION REPLACE " + "REQUIRED RETURN_VALUE RUNTIME_DIRECTORY SEND_ERROR SHARED " + "SOURCES STATIC STATUS STREQUAL STRGREATER STRLESS SUFFIX TARGET " + "TOLOWER TOUPPER VAR VARIABLES VERSION WIN32 WRAP_EXCLUDE WRITE " + "APPLE MINGW MSYS CYGWIN BORLAND WATCOM MSVC MSVC_IDE MSVC60 " + "MSVC70 MSVC71 MSVC80 CMAKE_COMPILER_2005 OFF ON"; + + return 0; +} + + +// Returns the user name of a style. +QString QsciLexerCMake::description(int style) const +{ + switch (style) + { + case Default: + return tr("Default"); + + case Comment: + return tr("Comment"); + + case String: + return tr("String"); + + case StringLeftQuote: + return tr("Left quoted string"); + + case StringRightQuote: + return tr("Right quoted string"); + + case Function: + return tr("Function"); + + case Variable: + return tr("Variable"); + + case Label: + return tr("Label"); + + case KeywordSet3: + return tr("User defined"); + + case BlockWhile: + return tr("WHILE block"); + + case BlockForeach: + return tr("FOREACH block"); + + case BlockIf: + return tr("IF block"); + + case BlockMacro: + return tr("MACRO block"); + + case StringVariable: + return tr("Variable within a string"); + + case Number: + return tr("Number"); + } + + return QString(); +} + + +// Returns the background colour of the text for a style. +QColor QsciLexerCMake::defaultPaper(int style) const +{ + switch (style) + { + case String: + case StringLeftQuote: + case StringRightQuote: + case StringVariable: + return QColor(0xee,0xee,0xee); + } + + return QsciLexer::defaultPaper(style); +} + + +// Refresh all properties. +void QsciLexerCMake::refreshProperties() +{ + setAtElseProp(); +} + + +// Read properties from the settings. +bool QsciLexerCMake::readProperties(QSettings &qs,const QString &prefix) +{ + int rc = true; + + fold_atelse = qs.value(prefix + "foldatelse", false).toBool(); + + return rc; +} + + +// Write properties to the settings. +bool QsciLexerCMake::writeProperties(QSettings &qs,const QString &prefix) const +{ + int rc = true; + + qs.setValue(prefix + "foldatelse", fold_atelse); + + return rc; +} + + +// Return true if ELSE blocks can be folded. +bool QsciLexerCMake::foldAtElse() const +{ + return fold_atelse; +} + + +// Set if ELSE blocks can be folded. +void QsciLexerCMake::setFoldAtElse(bool fold) +{ + fold_atelse = fold; + + setAtElseProp(); +} + + +// Set the "fold.at.else" property. +void QsciLexerCMake::setAtElseProp() +{ + emit propertyChanged("fold.at.else",(fold_atelse ? "1" : "0")); +} diff --git a/libs/qscintilla_2.14.1/Qt5Qt6/qscilexercoffeescript.cpp b/libs/qscintilla_2.14.1/Qt5Qt6/qscilexercoffeescript.cpp new file mode 100644 index 000000000..637ba62f6 --- /dev/null +++ b/libs/qscintilla_2.14.1/Qt5Qt6/qscilexercoffeescript.cpp @@ -0,0 +1,454 @@ +// This module implements the QsciLexerCoffeeScript class. +// +// Copyright (c) 2023 Riverbank Computing Limited +// +// This file is part of QScintilla. +// +// This file may be used under the terms of the GNU General Public License +// version 3.0 as published by the Free Software Foundation and appearing in +// the file LICENSE included in the packaging of this file. Please review the +// following information to ensure the GNU General Public License version 3.0 +// requirements will be met: http://www.gnu.org/copyleft/gpl.html. +// +// If you do not wish to use this file under the terms of the GPL version 3.0 +// then you may purchase a commercial license. For more information contact +// info@riverbankcomputing.com. +// +// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + + +#include "Qsci/qscilexercoffeescript.h" + +#include +#include +#include + + +// The ctor. +QsciLexerCoffeeScript::QsciLexerCoffeeScript(QObject *parent) + : QsciLexer(parent), + fold_comments(false), fold_compact(true), style_preproc(false), + dollars(true) +{ +} + + +// The dtor. +QsciLexerCoffeeScript::~QsciLexerCoffeeScript() +{ +} + + +// Returns the language name. +const char *QsciLexerCoffeeScript::language() const +{ + return "CoffeeScript"; +} + + +// Returns the lexer name. +const char *QsciLexerCoffeeScript::lexer() const +{ + return "coffeescript"; +} + + +// Return the set of character sequences that can separate auto-completion +// words. +QStringList QsciLexerCoffeeScript::autoCompletionWordSeparators() const +{ + QStringList wl; + + wl << "."; + + return wl; +} + + +// Return the list of keywords that can start a block. +const char *QsciLexerCoffeeScript::blockStartKeyword(int *style) const +{ + if (style) + *style = Keyword; + + return "catch class do else finally for if try until when while"; +} + + +// Return the list of characters that can start a block. +const char *QsciLexerCoffeeScript::blockStart(int *style) const +{ + if (style) + *style = Operator; + + return "{"; +} + + +// Return the list of characters that can end a block. +const char *QsciLexerCoffeeScript::blockEnd(int *style) const +{ + if (style) + *style = Operator; + + return "}"; +} + + +// Return the style used for braces. +int QsciLexerCoffeeScript::braceStyle() const +{ + return Operator; +} + + +// Return the string of characters that comprise a word. +const char *QsciLexerCoffeeScript::wordCharacters() const +{ + return "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_#"; +} + + +// Returns the foreground colour of the text for a style. +QColor QsciLexerCoffeeScript::defaultColor(int style) const +{ + switch (style) + { + case Default: + return QColor(0x80, 0x80, 0x80); + + case Comment: + case CommentLine: + case CommentBlock: + case BlockRegexComment: + return QColor(0x00, 0x7f, 0x00); + + case CommentDoc: + case CommentLineDoc: + return QColor(0x3f, 0x70, 0x3f); + + case Number: + return QColor(0x00, 0x7f, 0x7f); + + case Keyword: + return QColor(0x00, 0x00, 0x7f); + + case DoubleQuotedString: + case SingleQuotedString: + return QColor(0x7f, 0x00, 0x7f); + + case PreProcessor: + return QColor(0x7f, 0x7f, 0x00); + + case Operator: + case UnclosedString: + return QColor(0x00, 0x00, 0x00); + + case VerbatimString: + return QColor(0x00, 0x7f, 0x00); + + case Regex: + case BlockRegex: + return QColor(0x3f, 0x7f, 0x3f); + + case CommentDocKeyword: + return QColor(0x30, 0x60, 0xa0); + + case CommentDocKeywordError: + return QColor(0x80, 0x40, 0x20); + + case InstanceProperty: + return QColor(0xc0, 0x60, 0x00); + } + + return QsciLexer::defaultColor(style); +} + + +// Returns the end-of-line fill for a style. +bool QsciLexerCoffeeScript::defaultEolFill(int style) const +{ + switch (style) + { + case UnclosedString: + case VerbatimString: + case Regex: + return true; + } + + return QsciLexer::defaultEolFill(style); +} + + +// Returns the font of the text for a style. +QFont QsciLexerCoffeeScript::defaultFont(int style) const +{ + QFont f; + + switch (style) + { + case Comment: + case CommentLine: + case CommentDoc: + case CommentLineDoc: + case CommentDocKeyword: + case CommentDocKeywordError: + case CommentBlock: + case BlockRegexComment: +#if defined(Q_OS_WIN) + f = QFont("Comic Sans MS",9); +#elif defined(Q_OS_MAC) + f = QFont("Comic Sans MS", 12); +#else + f = QFont("Bitstream Vera Serif",9); +#endif + break; + + case Keyword: + case Operator: + f = QsciLexer::defaultFont(style); + f.setBold(true); + break; + + case DoubleQuotedString: + case SingleQuotedString: + case UnclosedString: + case VerbatimString: + case Regex: + case BlockRegex: +#if defined(Q_OS_WIN) + f = QFont("Courier New",10); +#elif defined(Q_OS_MAC) + f = QFont("Courier", 12); +#else + f = QFont("Bitstream Vera Sans Mono",9); +#endif + break; + + default: + f = QsciLexer::defaultFont(style); + } + + return f; +} + + +// Returns the set of keywords. +const char *QsciLexerCoffeeScript::keywords(int set) const +{ + if (set == 1) + return + "true false null this new delete typeof in instanceof return " + "throw break continue debugger if else switch for while do try " + "catch finally class extends super " + "undefined then unless until loop of by when and or is isnt not " + "yes no on off"; + + return 0; +} + + +// Returns the user name of a style. +QString QsciLexerCoffeeScript::description(int style) const +{ + switch (style) + { + case Default: + return tr("Default"); + + case Comment: + return tr("C-style comment"); + + case CommentLine: + return tr("C++-style comment"); + + case CommentDoc: + return tr("JavaDoc C-style comment"); + + case Number: + return tr("Number"); + + case Keyword: + return tr("Keyword"); + + case DoubleQuotedString: + return tr("Double-quoted string"); + + case SingleQuotedString: + return tr("Single-quoted string"); + + case UUID: + return tr("IDL UUID"); + + case PreProcessor: + return tr("Pre-processor block"); + + case Operator: + return tr("Operator"); + + case Identifier: + return tr("Identifier"); + + case UnclosedString: + return tr("Unclosed string"); + + case VerbatimString: + return tr("C# verbatim string"); + + case Regex: + return tr("Regular expression"); + + case CommentLineDoc: + return tr("JavaDoc C++-style comment"); + + case KeywordSet2: + return tr("Secondary keywords and identifiers"); + + case CommentDocKeyword: + return tr("JavaDoc keyword"); + + case CommentDocKeywordError: + return tr("JavaDoc keyword error"); + + case GlobalClass: + return tr("Global classes"); + + case CommentBlock: + return tr("Block comment"); + + case BlockRegex: + return tr("Block regular expression"); + + case BlockRegexComment: + return tr("Block regular expression comment"); + + case InstanceProperty: + return tr("Instance property"); + } + + return QString(); +} + + +// Returns the background colour of the text for a style. +QColor QsciLexerCoffeeScript::defaultPaper(int style) const +{ + switch (style) + { + case UnclosedString: + return QColor(0xe0,0xc0,0xe0); + + case VerbatimString: + return QColor(0xe0,0xff,0xe0); + + case Regex: + return QColor(0xe0,0xf0,0xe0); + } + + return QsciLexer::defaultPaper(style); +} + + +// Refresh all properties. +void QsciLexerCoffeeScript::refreshProperties() +{ + setCommentProp(); + setCompactProp(); + setStylePreprocProp(); + setDollarsProp(); +} + + +// Read properties from the settings. +bool QsciLexerCoffeeScript::readProperties(QSettings &qs,const QString &prefix) +{ + int rc = true; + + fold_comments = qs.value(prefix + "foldcomments", false).toBool(); + fold_compact = qs.value(prefix + "foldcompact", true).toBool(); + style_preproc = qs.value(prefix + "stylepreprocessor", false).toBool(); + dollars = qs.value(prefix + "dollars", true).toBool(); + + return rc; +} + + +// Write properties to the settings. +bool QsciLexerCoffeeScript::writeProperties(QSettings &qs,const QString &prefix) const +{ + int rc = true; + + qs.setValue(prefix + "foldcomments", fold_comments); + qs.setValue(prefix + "foldcompact", fold_compact); + qs.setValue(prefix + "stylepreprocessor", style_preproc); + qs.setValue(prefix + "dollars", dollars); + + return rc; +} + + +// Set if comments can be folded. +void QsciLexerCoffeeScript::setFoldComments(bool fold) +{ + fold_comments = fold; + + setCommentProp(); +} + + +// Set the "fold.comment" property. +void QsciLexerCoffeeScript::setCommentProp() +{ + emit propertyChanged("fold.coffeescript.comment", + (fold_comments ? "1" : "0")); +} + + +// Set if folds are compact +void QsciLexerCoffeeScript::setFoldCompact(bool fold) +{ + fold_compact = fold; + + setCompactProp(); +} + + +// Set the "fold.compact" property. +void QsciLexerCoffeeScript::setCompactProp() +{ + emit propertyChanged("fold.compact", (fold_compact ? "1" : "0")); +} + + +// Set if preprocessor lines are styled. +void QsciLexerCoffeeScript::setStylePreprocessor(bool style) +{ + style_preproc = style; + + setStylePreprocProp(); +} + + +// Set the "styling.within.preprocessor" property. +void QsciLexerCoffeeScript::setStylePreprocProp() +{ + emit propertyChanged("styling.within.preprocessor", + (style_preproc ? "1" : "0")); +} + + +// Set if '$' characters are allowed. +void QsciLexerCoffeeScript::setDollarsAllowed(bool allowed) +{ + dollars = allowed; + + setDollarsProp(); +} + + +// Set the "lexer.cpp.allow.dollars" property. +void QsciLexerCoffeeScript::setDollarsProp() +{ + emit propertyChanged("lexer.cpp.allow.dollars", (dollars ? "1" : "0")); +} diff --git a/libs/qscintilla/Qt4Qt5/qscilexercpp.cpp b/libs/qscintilla_2.14.1/Qt5Qt6/qscilexercpp.cpp similarity index 99% rename from libs/qscintilla/Qt4Qt5/qscilexercpp.cpp rename to libs/qscintilla_2.14.1/Qt5Qt6/qscilexercpp.cpp index d43df4d3e..aab85b6eb 100644 --- a/libs/qscintilla/Qt4Qt5/qscilexercpp.cpp +++ b/libs/qscintilla_2.14.1/Qt5Qt6/qscilexercpp.cpp @@ -1,6 +1,6 @@ // This module implements the QsciLexerCPP class. // -// Copyright (c) 2019 Riverbank Computing Limited +// Copyright (c) 2023 Riverbank Computing Limited // // This file is part of QScintilla. // diff --git a/libs/qscintilla_2.14.1/Qt5Qt6/qscilexercsharp.cpp b/libs/qscintilla_2.14.1/Qt5Qt6/qscilexercsharp.cpp new file mode 100644 index 000000000..8d8fd0db6 --- /dev/null +++ b/libs/qscintilla_2.14.1/Qt5Qt6/qscilexercsharp.cpp @@ -0,0 +1,118 @@ +// This module implements the QsciLexerCSharp class. +// +// Copyright (c) 2023 Riverbank Computing Limited +// +// This file is part of QScintilla. +// +// This file may be used under the terms of the GNU General Public License +// version 3.0 as published by the Free Software Foundation and appearing in +// the file LICENSE included in the packaging of this file. Please review the +// following information to ensure the GNU General Public License version 3.0 +// requirements will be met: http://www.gnu.org/copyleft/gpl.html. +// +// If you do not wish to use this file under the terms of the GPL version 3.0 +// then you may purchase a commercial license. For more information contact +// info@riverbankcomputing.com. +// +// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + + +#include "Qsci/qscilexercsharp.h" + +#include +#include + + +// The ctor. +QsciLexerCSharp::QsciLexerCSharp(QObject *parent) + : QsciLexerCPP(parent) +{ +} + + +// The dtor. +QsciLexerCSharp::~QsciLexerCSharp() +{ +} + + +// Returns the language name. +const char *QsciLexerCSharp::language() const +{ + return "C#"; +} + + +// Returns the foreground colour of the text for a style. +QColor QsciLexerCSharp::defaultColor(int style) const +{ + if (style == VerbatimString) + return QColor(0x00,0x7f,0x00); + + return QsciLexerCPP::defaultColor(style); +} + + +// Returns the end-of-line fill for a style. +bool QsciLexerCSharp::defaultEolFill(int style) const +{ + if (style == VerbatimString) + return true; + + return QsciLexerCPP::defaultEolFill(style); +} + + +// Returns the font of the text for a style. +QFont QsciLexerCSharp::defaultFont(int style) const +{ + if (style == VerbatimString) +#if defined(Q_OS_WIN) + return QFont("Courier New",10); +#elif defined(Q_OS_MAC) + return QFont("Courier", 12); +#else + return QFont("Bitstream Vera Sans Mono",9); +#endif + + return QsciLexerCPP::defaultFont(style); +} + + +// Returns the set of keywords. +const char *QsciLexerCSharp::keywords(int set) const +{ + if (set != 1) + return 0; + + return "abstract as base bool break byte case catch char checked " + "class const continue decimal default delegate do double else " + "enum event explicit extern false finally fixed float for " + "foreach goto if implicit in int interface internal is lock " + "long namespace new null object operator out override params " + "private protected public readonly ref return sbyte sealed " + "short sizeof stackalloc static string struct switch this " + "throw true try typeof uint ulong unchecked unsafe ushort " + "using virtual void while"; +} + + +// Returns the user name of a style. +QString QsciLexerCSharp::description(int style) const +{ + if (style == VerbatimString) + return tr("Verbatim string"); + + return QsciLexerCPP::description(style); +} + + +// Returns the background colour of the text for a style. +QColor QsciLexerCSharp::defaultPaper(int style) const +{ + if (style == VerbatimString) + return QColor(0xe0,0xff,0xe0); + + return QsciLexer::defaultPaper(style); +} diff --git a/libs/qscintilla_2.14.1/Qt5Qt6/qscilexercss.cpp b/libs/qscintilla_2.14.1/Qt5Qt6/qscilexercss.cpp new file mode 100644 index 000000000..9d021cab2 --- /dev/null +++ b/libs/qscintilla_2.14.1/Qt5Qt6/qscilexercss.cpp @@ -0,0 +1,440 @@ +// This module implements the QsciLexerCSS class. +// +// Copyright (c) 2023 Riverbank Computing Limited +// +// This file is part of QScintilla. +// +// This file may be used under the terms of the GNU General Public License +// version 3.0 as published by the Free Software Foundation and appearing in +// the file LICENSE included in the packaging of this file. Please review the +// following information to ensure the GNU General Public License version 3.0 +// requirements will be met: http://www.gnu.org/copyleft/gpl.html. +// +// If you do not wish to use this file under the terms of the GPL version 3.0 +// then you may purchase a commercial license. For more information contact +// info@riverbankcomputing.com. +// +// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + + +#include "Qsci/qscilexercss.h" + +#include +#include +#include + + +// The ctor. +QsciLexerCSS::QsciLexerCSS(QObject *parent) + : QsciLexer(parent), + fold_comments(false), fold_compact(true), hss_language(false), + less_language(false), scss_language(false) +{ +} + + +// The dtor. +QsciLexerCSS::~QsciLexerCSS() +{ +} + + +// Returns the language name. +const char *QsciLexerCSS::language() const +{ + return "CSS"; +} + + +// Returns the lexer name. +const char *QsciLexerCSS::lexer() const +{ + return "css"; +} + + +// Return the list of characters that can start a block. +const char *QsciLexerCSS::blockStart(int *style) const +{ + if (style) + *style = Operator; + + return "{"; +} + + +// Return the list of characters that can end a block. +const char *QsciLexerCSS::blockEnd(int *style) const +{ + if (style) + *style = Operator; + + return "}"; +} + + +// Return the string of characters that comprise a word. +const char *QsciLexerCSS::wordCharacters() const +{ + return "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-"; +} + + +// Returns the foreground colour of the text for a style. +QColor QsciLexerCSS::defaultColor(int style) const +{ + switch (style) + { + case Default: + return QColor(0xff,0x00,0x80); + + case Tag: + return QColor(0x00,0x00,0x7f); + + case PseudoClass: + case Attribute: + return QColor(0x80,0x00,0x00); + + case UnknownPseudoClass: + case UnknownProperty: + return QColor(0xff,0x00,0x00); + + case Operator: + return QColor(0x00,0x00,0x00); + + case CSS1Property: + return QColor(0x00,0x40,0xe0); + + case Value: + case DoubleQuotedString: + case SingleQuotedString: + return QColor(0x7f,0x00,0x7f); + + case Comment: + return QColor(0x00,0x7f,0x00); + + case IDSelector: + return QColor(0x00,0x7f,0x7f); + + case Important: + return QColor(0xff,0x80,0x00); + + case AtRule: + case MediaRule: + return QColor(0x7f,0x7f,0x00); + + case CSS2Property: + return QColor(0x00,0xa0,0xe0); + } + + return QsciLexer::defaultColor(style); +} + + +// Returns the font of the text for a style. +QFont QsciLexerCSS::defaultFont(int style) const +{ + QFont f; + + if (style == Comment) +#if defined(Q_OS_WIN) + f = QFont("Comic Sans MS",9); +#elif defined(Q_OS_MAC) + f = QFont("Comic Sans MS", 12); +#else + f = QFont("Bitstream Vera Serif",9); +#endif + else + { + f = QsciLexer::defaultFont(style); + + switch (style) + { + case Tag: + case Important: + case MediaRule: + f.setBold(true); + break; + + case IDSelector: + f.setItalic(true); + break; + } + } + + return f; +} + + +// Returns the set of keywords. +const char *QsciLexerCSS::keywords(int set) const +{ + if (set == 1) + return + "color background-color background-image " + "background-repeat background-attachment " + "background-position background font-family " + "font-style font-variant font-weight font-size font " + "word-spacing letter-spacing text-decoration " + "vertical-align text-transform text-align " + "text-indent line-height margin-top margin-right " + "margin-bottom margin-left margin padding-top " + "padding-right padding-bottom padding-left padding " + "border-top-width border-right-width " + "border-bottom-width border-left-width border-width " + "border-top border-right border-bottom border-left " + "border border-color border-style width height float " + "clear display white-space list-style-type " + "list-style-image list-style-position list-style"; + + if (set == 2) + return + "first-letter first-line link active visited " + "first-child focus hover lang before after left " + "right first"; + + if (set == 3) + return + "border-top-color border-right-color " + "border-bottom-color border-left-color border-color " + "border-top-style border-right-style " + "border-bottom-style border-left-style border-style " + "top right bottom left position z-index direction " + "unicode-bidi min-width max-width min-height " + "max-height overflow clip visibility content quotes " + "counter-reset counter-increment marker-offset size " + "marks page-break-before page-break-after " + "page-break-inside page orphans widows font-stretch " + "font-size-adjust unicode-range units-per-em src " + "panose-1 stemv stemh slope cap-height x-height " + "ascent descent widths bbox definition-src baseline " + "centerline mathline topline text-shadow " + "caption-side table-layout border-collapse " + "border-spacing empty-cells speak-header cursor " + "outline outline-width outline-style outline-color " + "volume speak pause-before pause-after pause " + "cue-before cue-after cue play-during azimuth " + "elevation speech-rate voice-family pitch " + "pitch-range stress richness speak-punctuation " + "speak-numeral"; + + return 0; +} + + +// Returns the user name of a style. +QString QsciLexerCSS::description(int style) const +{ + switch (style) + { + case Default: + return tr("Default"); + + case Tag: + return tr("Tag"); + + case ClassSelector: + return tr("Class selector"); + + case PseudoClass: + return tr("Pseudo-class"); + + case UnknownPseudoClass: + return tr("Unknown pseudo-class"); + + case Operator: + return tr("Operator"); + + case CSS1Property: + return tr("CSS1 property"); + + case UnknownProperty: + return tr("Unknown property"); + + case Value: + return tr("Value"); + + case Comment: + return tr("Comment"); + + case IDSelector: + return tr("ID selector"); + + case Important: + return tr("Important"); + + case AtRule: + return tr("@-rule"); + + case DoubleQuotedString: + return tr("Double-quoted string"); + + case SingleQuotedString: + return tr("Single-quoted string"); + + case CSS2Property: + return tr("CSS2 property"); + + case Attribute: + return tr("Attribute"); + + case CSS3Property: + return tr("CSS3 property"); + + case PseudoElement: + return tr("Pseudo-element"); + + case ExtendedCSSProperty: + return tr("Extended CSS property"); + + case ExtendedPseudoClass: + return tr("Extended pseudo-class"); + + case ExtendedPseudoElement: + return tr("Extended pseudo-element"); + + case MediaRule: + return tr("Media rule"); + + case Variable: + return tr("Variable"); + } + + return QString(); +} + + +// Refresh all properties. +void QsciLexerCSS::refreshProperties() +{ + setCommentProp(); + setCompactProp(); + setHSSProp(); + setLessProp(); + setSCSSProp(); +} + + +// Read properties from the settings. +bool QsciLexerCSS::readProperties(QSettings &qs,const QString &prefix) +{ + int rc = true; + + fold_comments = qs.value(prefix + "foldcomments", false).toBool(); + fold_compact = qs.value(prefix + "foldcompact", true).toBool(); + hss_language = qs.value(prefix + "hsslanguage", false).toBool(); + less_language = qs.value(prefix + "lesslanguage", false).toBool(); + scss_language = qs.value(prefix + "scsslanguage", false).toBool(); + + return rc; +} + + +// Write properties to the settings. +bool QsciLexerCSS::writeProperties(QSettings &qs,const QString &prefix) const +{ + int rc = true; + + qs.setValue(prefix + "foldcomments", fold_comments); + qs.setValue(prefix + "foldcompact", fold_compact); + qs.setValue(prefix + "hsslanguage", hss_language); + qs.setValue(prefix + "lesslanguage", less_language); + qs.setValue(prefix + "scsslanguage", scss_language); + + return rc; +} + + +// Return true if comments can be folded. +bool QsciLexerCSS::foldComments() const +{ + return fold_comments; +} + + +// Set if comments can be folded. +void QsciLexerCSS::setFoldComments(bool fold) +{ + fold_comments = fold; + + setCommentProp(); +} + + +// Set the "fold.comment" property. +void QsciLexerCSS::setCommentProp() +{ + emit propertyChanged("fold.comment",(fold_comments ? "1" : "0")); +} + + +// Return true if folds are compact. +bool QsciLexerCSS::foldCompact() const +{ + return fold_compact; +} + + +// Set if folds are compact +void QsciLexerCSS::setFoldCompact(bool fold) +{ + fold_compact = fold; + + setCompactProp(); +} + + +// Set the "fold.compact" property. +void QsciLexerCSS::setCompactProp() +{ + emit propertyChanged("fold.compact",(fold_compact ? "1" : "0")); +} + + +// Set if HSS is supported. +void QsciLexerCSS::setHSSLanguage(bool enabled) +{ + hss_language = enabled; + + setHSSProp(); +} + + +// Set the "lexer.css.hss.language" property. +void QsciLexerCSS::setHSSProp() +{ + emit propertyChanged("lexer.css.hss.language",(hss_language ? "1" : "0")); +} + + +// Set if Less CSS is supported. +void QsciLexerCSS::setLessLanguage(bool enabled) +{ + less_language = enabled; + + setLessProp(); +} + + +// Set the "lexer.css.less.language" property. +void QsciLexerCSS::setLessProp() +{ + emit propertyChanged("lexer.css.less.language",(less_language ? "1" : "0")); +} + + +// Set if Sassy CSS is supported. +void QsciLexerCSS::setSCSSLanguage(bool enabled) +{ + scss_language = enabled; + + setSCSSProp(); +} + + +// Set the "lexer.css.scss.language" property. +void QsciLexerCSS::setSCSSProp() +{ + emit propertyChanged("lexer.css.scss.language",(scss_language ? "1" : "0")); +} diff --git a/libs/qscintilla/Qt4Qt5/qscilexercustom.cpp b/libs/qscintilla_2.14.1/Qt5Qt6/qscilexercustom.cpp similarity index 97% rename from libs/qscintilla/Qt4Qt5/qscilexercustom.cpp rename to libs/qscintilla_2.14.1/Qt5Qt6/qscilexercustom.cpp index 876c05315..75c600f8c 100644 --- a/libs/qscintilla/Qt4Qt5/qscilexercustom.cpp +++ b/libs/qscintilla_2.14.1/Qt5Qt6/qscilexercustom.cpp @@ -1,6 +1,6 @@ // This module implements the QsciLexerCustom class. // -// Copyright (c) 2019 Riverbank Computing Limited +// Copyright (c) 2023 Riverbank Computing Limited // // This file is part of QScintilla. // diff --git a/libs/qscintilla_2.14.1/Qt5Qt6/qscilexerd.cpp b/libs/qscintilla_2.14.1/Qt5Qt6/qscilexerd.cpp new file mode 100644 index 000000000..126a829ab --- /dev/null +++ b/libs/qscintilla_2.14.1/Qt5Qt6/qscilexerd.cpp @@ -0,0 +1,450 @@ +// This module implements the QsciLexerD class. +// +// Copyright (c) 2023 Riverbank Computing Limited +// +// This file is part of QScintilla. +// +// This file may be used under the terms of the GNU General Public License +// version 3.0 as published by the Free Software Foundation and appearing in +// the file LICENSE included in the packaging of this file. Please review the +// following information to ensure the GNU General Public License version 3.0 +// requirements will be met: http://www.gnu.org/copyleft/gpl.html. +// +// If you do not wish to use this file under the terms of the GPL version 3.0 +// then you may purchase a commercial license. For more information contact +// info@riverbankcomputing.com. +// +// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + + +#include "Qsci/qscilexerd.h" + +#include +#include +#include + + +// The ctor. +QsciLexerD::QsciLexerD(QObject *parent) + : QsciLexer(parent), + fold_atelse(false), fold_comments(false), fold_compact(true) +{ +} + + +// The dtor. +QsciLexerD::~QsciLexerD() +{ +} + + +// Returns the language name. +const char *QsciLexerD::language() const +{ + return "D"; +} + + +// Returns the lexer name. +const char *QsciLexerD::lexer() const +{ + return "d"; +} + + +// Return the set of character sequences that can separate auto-completion +// words. +QStringList QsciLexerD::autoCompletionWordSeparators() const +{ + QStringList wl; + + wl << "."; + + return wl; +} + + +// Return the list of keywords that can start a block. +const char *QsciLexerD::blockStartKeyword(int *style) const +{ + if (style) + *style = Keyword; + + return "case catch class default do else finally for foreach " + "foreach_reverse if private protected public struct try union " + "while"; +} + + +// Return the list of characters that can start a block. +const char *QsciLexerD::blockStart(int *style) const +{ + if (style) + *style = Operator; + + return "{"; +} + + +// Return the list of characters that can end a block. +const char *QsciLexerD::blockEnd(int *style) const +{ + if (style) + *style = Operator; + + return "}"; +} + + +// Return the style used for braces. +int QsciLexerD::braceStyle() const +{ + return Operator; +} + + +// Return the string of characters that comprise a word. +const char *QsciLexerD::wordCharacters() const +{ + return "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_#"; +} + + +// Returns the foreground colour of the text for a style. +QColor QsciLexerD::defaultColor(int style) const +{ + switch (style) + { + case Default: + return QColor(0x80,0x80,0x80); + + case Comment: + case CommentLine: + return QColor(0x00,0x7f,0x00); + + case CommentDoc: + case CommentLineDoc: + return QColor(0x3f,0x70,0x3f); + + case CommentNested: + return QColor(0xa0,0xc0,0xa0); + + case Number: + return QColor(0x00,0x7f,0x7f); + + case Keyword: + case KeywordSecondary: + case KeywordDoc: + case Typedefs: + return QColor(0x00,0x00,0x7f); + + case String: + return QColor(0x7f,0x00,0x7f); + + case Character: + return QColor(0x7f,0x00,0x7f); + + case Operator: + case UnclosedString: + return QColor(0x00,0x00,0x00); + + case Identifier: + break; + + case CommentDocKeyword: + return QColor(0x30,0x60,0xa0); + + case CommentDocKeywordError: + return QColor(0x80,0x40,0x20); + } + + return QsciLexer::defaultColor(style); +} + + +// Returns the end-of-line fill for a style. +bool QsciLexerD::defaultEolFill(int style) const +{ + if (style == UnclosedString) + return true; + + return QsciLexer::defaultEolFill(style); +} + + +// Returns the font of the text for a style. +QFont QsciLexerD::defaultFont(int style) const +{ + QFont f; + + switch (style) + { + case Comment: + case CommentLine: + case CommentDoc: + case CommentNested: + case CommentLineDoc: + case CommentDocKeyword: + case CommentDocKeywordError: +#if defined(Q_OS_WIN) + f = QFont("Comic Sans MS",9); +#elif defined(Q_OS_MAC) + f = QFont("Comic Sans MS", 12); +#else + f = QFont("Bitstream Vera Serif",9); +#endif + break; + + case Keyword: + case KeywordSecondary: + case KeywordDoc: + case Typedefs: + case Operator: + f = QsciLexer::defaultFont(style); + f.setBold(true); + break; + + case String: + case UnclosedString: +#if defined(Q_OS_WIN) + f = QFont("Courier New",10); +#elif defined(Q_OS_MAC) + f = QFont("Courier", 12); +#else + f = QFont("Bitstream Vera Sans Mono",9); +#endif + break; + + default: + f = QsciLexer::defaultFont(style); + } + + return f; +} + + +// Returns the set of keywords. +const char *QsciLexerD::keywords(int set) const +{ + if (set == 1) + return + "abstract alias align asm assert auto body bool break byte case " + "cast catch cdouble cent cfloat char class const continue creal " + "dchar debug default delegate delete deprecated do double else " + "enum export extern false final finally float for foreach " + "foreach_reverse function goto idouble if ifloat import in inout " + "int interface invariant ireal is lazy long mixin module new null " + "out override package pragma private protected public real return " + "scope short static struct super switch synchronized template " + "this throw true try typedef typeid typeof ubyte ucent uint ulong " + "union unittest ushort version void volatile wchar while with"; + + if (set == 3) + return + "a addindex addtogroup anchor arg attention author b brief bug c " + "class code date def defgroup deprecated dontinclude e em endcode " + "endhtmlonly endif endlatexonly endlink endverbatim enum example " + "exception f$ f[ f] file fn hideinitializer htmlinclude htmlonly " + "if image include ingroup internal invariant interface latexonly " + "li line link mainpage name namespace nosubgrouping note overload " + "p page par param post pre ref relates remarks return retval sa " + "section see showinitializer since skip skipline struct " + "subsection test throw todo typedef union until var verbatim " + "verbinclude version warning weakgroup $ @ \\ & < > # { }"; + + return 0; +} + + +// Returns the user name of a style. +QString QsciLexerD::description(int style) const +{ + switch (style) + { + case Default: + return tr("Default"); + + case Comment: + return tr("Block comment"); + + case CommentLine: + return tr("Line comment"); + + case CommentDoc: + return tr("DDoc style block comment"); + + case CommentNested: + return tr("Nesting comment"); + + case Number: + return tr("Number"); + + case Keyword: + return tr("Keyword"); + + case KeywordSecondary: + return tr("Secondary keyword"); + + case KeywordDoc: + return tr("Documentation keyword"); + + case Typedefs: + return tr("Type definition"); + + case String: + return tr("String"); + + case UnclosedString: + return tr("Unclosed string"); + + case Character: + return tr("Character"); + + case Operator: + return tr("Operator"); + + case Identifier: + return tr("Identifier"); + + case CommentLineDoc: + return tr("DDoc style line comment"); + + case CommentDocKeyword: + return tr("DDoc keyword"); + + case CommentDocKeywordError: + return tr("DDoc keyword error"); + + case BackquoteString: + return tr("Backquoted string"); + + case RawString: + return tr("Raw string"); + + case KeywordSet5: + return tr("User defined 1"); + + case KeywordSet6: + return tr("User defined 2"); + + case KeywordSet7: + return tr("User defined 3"); + } + + return QString(); +} + + +// Returns the background colour of the text for a style. +QColor QsciLexerD::defaultPaper(int style) const +{ + if (style == UnclosedString) + return QColor(0xe0,0xc0,0xe0); + + return QsciLexer::defaultPaper(style); +} + + +// Refresh all properties. +void QsciLexerD::refreshProperties() +{ + setAtElseProp(); + setCommentProp(); + setCompactProp(); +} + + +// Read properties from the settings. +bool QsciLexerD::readProperties(QSettings &qs,const QString &prefix) +{ + int rc = true; + + fold_atelse = qs.value(prefix + "foldatelse", false).toBool(); + fold_comments = qs.value(prefix + "foldcomments", false).toBool(); + fold_compact = qs.value(prefix + "foldcompact", true).toBool(); + + return rc; +} + + +// Write properties to the settings. +bool QsciLexerD::writeProperties(QSettings &qs,const QString &prefix) const +{ + int rc = true; + + qs.setValue(prefix + "foldatelse", fold_atelse); + qs.setValue(prefix + "foldcomments", fold_comments); + qs.setValue(prefix + "foldcompact", fold_compact); + + return rc; +} + + +// Return true if else can be folded. +bool QsciLexerD::foldAtElse() const +{ + return fold_atelse; +} + + +// Set if else can be folded. +void QsciLexerD::setFoldAtElse(bool fold) +{ + fold_atelse = fold; + + setAtElseProp(); +} + + +// Set the "fold.at.else" property. +void QsciLexerD::setAtElseProp() +{ + emit propertyChanged("fold.at.else",(fold_atelse ? "1" : "0")); +} + + +// Return true if comments can be folded. +bool QsciLexerD::foldComments() const +{ + return fold_comments; +} + + +// Set if comments can be folded. +void QsciLexerD::setFoldComments(bool fold) +{ + fold_comments = fold; + + setCommentProp(); +} + + +// Set the "fold.comment" property. +void QsciLexerD::setCommentProp() +{ + emit propertyChanged("fold.comment",(fold_comments ? "1" : "0")); +} + + +// Return true if folds are compact. +bool QsciLexerD::foldCompact() const +{ + return fold_compact; +} + + +// Set if folds are compact +void QsciLexerD::setFoldCompact(bool fold) +{ + fold_compact = fold; + + setCompactProp(); +} + + +// Set the "fold.compact" property. +void QsciLexerD::setCompactProp() +{ + emit propertyChanged("fold.compact",(fold_compact ? "1" : "0")); +} diff --git a/libs/qscintilla_2.14.1/Qt5Qt6/qscilexerdiff.cpp b/libs/qscintilla_2.14.1/Qt5Qt6/qscilexerdiff.cpp new file mode 100644 index 000000000..f22f59b52 --- /dev/null +++ b/libs/qscintilla_2.14.1/Qt5Qt6/qscilexerdiff.cpp @@ -0,0 +1,143 @@ +// This module implements the QsciLexerDiff class. +// +// Copyright (c) 2023 Riverbank Computing Limited +// +// This file is part of QScintilla. +// +// This file may be used under the terms of the GNU General Public License +// version 3.0 as published by the Free Software Foundation and appearing in +// the file LICENSE included in the packaging of this file. Please review the +// following information to ensure the GNU General Public License version 3.0 +// requirements will be met: http://www.gnu.org/copyleft/gpl.html. +// +// If you do not wish to use this file under the terms of the GPL version 3.0 +// then you may purchase a commercial license. For more information contact +// info@riverbankcomputing.com. +// +// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + + +#include "Qsci/qscilexerdiff.h" + +#include +#include +#include + + +// The ctor. +QsciLexerDiff::QsciLexerDiff(QObject *parent) + : QsciLexer(parent) +{ +} + + +// The dtor. +QsciLexerDiff::~QsciLexerDiff() +{ +} + + +// Returns the language name. +const char *QsciLexerDiff::language() const +{ + return "Diff"; +} + + +// Returns the lexer name. +const char *QsciLexerDiff::lexer() const +{ + return "diff"; +} + + +// Return the string of characters that comprise a word. +const char *QsciLexerDiff::wordCharacters() const +{ + return "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-"; +} + + +// Returns the foreground colour of the text for a style. +QColor QsciLexerDiff::defaultColor(int style) const +{ + switch (style) + { + case Default: + return QColor(0x00,0x00,0x00); + + case Comment: + return QColor(0x00,0x7f,0x00); + + case Command: + return QColor(0x7f,0x7f,0x00); + + case Header: + return QColor(0x7f,0x00,0x00); + + case Position: + return QColor(0x7f,0x00,0x7f); + + case LineRemoved: + case AddingPatchRemoved: + case RemovingPatchRemoved: + return QColor(0x00,0x7f,0x7f); + + case LineAdded: + case AddingPatchAdded: + case RemovingPatchAdded: + return QColor(0x00,0x00,0x7f); + + case LineChanged: + return QColor(0x7f,0x7f,0x7f); + } + + return QsciLexer::defaultColor(style); +} + + +// Returns the user name of a style. +QString QsciLexerDiff::description(int style) const +{ + switch (style) + { + case Default: + return tr("Default"); + + case Comment: + return tr("Comment"); + + case Command: + return tr("Command"); + + case Header: + return tr("Header"); + + case Position: + return tr("Position"); + + case LineRemoved: + return tr("Removed line"); + + case LineAdded: + return tr("Added line"); + + case LineChanged: + return tr("Changed line"); + + case AddingPatchAdded: + return tr("Added adding patch"); + + case RemovingPatchAdded: + return tr("Removed adding patch"); + + case AddingPatchRemoved: + return tr("Added removing patch"); + + case RemovingPatchRemoved: + return tr("Removed removing patch"); + } + + return QString(); +} diff --git a/libs/qscintilla_2.14.1/Qt5Qt6/qscilexeredifact.cpp b/libs/qscintilla_2.14.1/Qt5Qt6/qscilexeredifact.cpp new file mode 100644 index 000000000..5bf09df8a --- /dev/null +++ b/libs/qscintilla_2.14.1/Qt5Qt6/qscilexeredifact.cpp @@ -0,0 +1,122 @@ +// This module implements the QsciLexerEDIFACT class. +// +// Copyright (c) 2023 Riverbank Computing Limited +// +// This file is part of QScintilla. +// +// This file may be used under the terms of the GNU General Public License +// version 3.0 as published by the Free Software Foundation and appearing in +// the file LICENSE included in the packaging of this file. Please review the +// following information to ensure the GNU General Public License version 3.0 +// requirements will be met: http://www.gnu.org/copyleft/gpl.html. +// +// If you do not wish to use this file under the terms of the GPL version 3.0 +// then you may purchase a commercial license. For more information contact +// info@riverbankcomputing.com. +// +// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + + +#include "Qsci/qscilexeredifact.h" + + +// The ctor. +QsciLexerEDIFACT::QsciLexerEDIFACT(QObject *parent) + : QsciLexer(parent) +{ +} + + +// The dtor. +QsciLexerEDIFACT::~QsciLexerEDIFACT() +{ +} + + +// Returns the language name. +const char *QsciLexerEDIFACT::language() const +{ + return "EDIFACT"; +} + + +// Returns the lexer name. +const char *QsciLexerEDIFACT::lexer() const +{ + return "edifact"; +} + + +// Returns the foreground colour of the text for a style. +QColor QsciLexerEDIFACT::defaultColor(int style) const +{ + switch (style) + { + case Default: + return QColor(0x80, 0x80, 0x80); + + case SegmentStart: + return QColor(0x00, 0x00, 0xcb); + + case SegmentEnd: + return QColor(0xff, 0x8d, 0xb1); + + case ElementSeparator: + return QColor(0xff, 0x8d, 0xb1); + + case CompositeSeparator: + return QColor(0x80, 0x80, 0x00); + + case ReleaseSeparator: + return QColor(0x5e, 0x5e, 0x5e); + + case UNASegmentHeader: + return QColor(0x00, 0x80, 0x00); + + case UNHSegmentHeader: + return QColor(0x2f, 0x8b, 0xbd); + + case BadSegment: + return QColor(0x80, 0x00, 0x00); + } + + return QsciLexer::defaultColor(style); +} + + +// Returns the user name of a style. +QString QsciLexerEDIFACT::description(int style) const +{ + switch (style) + { + case Default: + return tr("Default"); + + case SegmentStart: + return tr("Segment start"); + + case SegmentEnd: + return tr("Segment end"); + + case ElementSeparator: + return tr("Element separator"); + + case CompositeSeparator: + return tr("Composite separator"); + + case ReleaseSeparator: + return tr("Release separator"); + + case UNASegmentHeader: + return tr("UNA segment header"); + + case UNHSegmentHeader: + return tr("UNH segment header"); + + case BadSegment: + return tr("Badly formed segment"); + } + + return QString(); +} diff --git a/libs/qscintilla_2.14.1/Qt5Qt6/qscilexerfortran.cpp b/libs/qscintilla_2.14.1/Qt5Qt6/qscilexerfortran.cpp new file mode 100644 index 000000000..286d8cacc --- /dev/null +++ b/libs/qscintilla_2.14.1/Qt5Qt6/qscilexerfortran.cpp @@ -0,0 +1,109 @@ +// This module implements the QsciLexerFortran class. +// +// Copyright (c) 2023 Riverbank Computing Limited +// +// This file is part of QScintilla. +// +// This file may be used under the terms of the GNU General Public License +// version 3.0 as published by the Free Software Foundation and appearing in +// the file LICENSE included in the packaging of this file. Please review the +// following information to ensure the GNU General Public License version 3.0 +// requirements will be met: http://www.gnu.org/copyleft/gpl.html. +// +// If you do not wish to use this file under the terms of the GPL version 3.0 +// then you may purchase a commercial license. For more information contact +// info@riverbankcomputing.com. +// +// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + + +#include "Qsci/qscilexerfortran.h" + +#include +#include +#include + + +// The ctor. +QsciLexerFortran::QsciLexerFortran(QObject *parent) + : QsciLexerFortran77(parent) +{ +} + + +// The dtor. +QsciLexerFortran::~QsciLexerFortran() +{ +} + + +// Returns the language name. +const char *QsciLexerFortran::language() const +{ + return "Fortran"; +} + + +// Returns the lexer name. +const char *QsciLexerFortran::lexer() const +{ + return "fortran"; +} + + +// Returns the set of keywords. +const char *QsciLexerFortran::keywords(int set) const +{ + if (set == 2) + return + "abs achar acos acosd adjustl adjustr aimag aimax0 aimin0 aint " + "ajmax0 ajmin0 akmax0 akmin0 all allocated alog alog10 amax0 " + "amax1 amin0 amin1 amod anint any asin asind associated atan " + "atan2 atan2d atand bitest bitl bitlr bitrl bjtest bit_size " + "bktest break btest cabs ccos cdabs cdcos cdexp cdlog cdsin " + "cdsqrt ceiling cexp char clog cmplx conjg cos cosd cosh count " + "cpu_time cshift csin csqrt dabs dacos dacosd dasin dasind datan " + "datan2 datan2d datand date date_and_time dble dcmplx dconjg dcos " + "dcosd dcosh dcotan ddim dexp dfloat dflotk dfloti dflotj digits " + "dim dimag dint dlog dlog10 dmax1 dmin1 dmod dnint dot_product " + "dprod dreal dsign dsin dsind dsinh dsqrt dtan dtand dtanh " + "eoshift epsilon errsns exp exponent float floati floatj floatk " + "floor fraction free huge iabs iachar iand ibclr ibits ibset " + "ichar idate idim idint idnint ieor ifix iiabs iiand iibclr " + "iibits iibset iidim iidint iidnnt iieor iifix iint iior iiqint " + "iiqnnt iishft iishftc iisign ilen imax0 imax1 imin0 imin1 imod " + "index inint inot int int1 int2 int4 int8 iqint iqnint ior ishft " + "ishftc isign isnan izext jiand jibclr jibits jibset jidim jidint " + "jidnnt jieor jifix jint jior jiqint jiqnnt jishft jishftc jisign " + "jmax0 jmax1 jmin0 jmin1 jmod jnint jnot jzext kiabs kiand kibclr " + "kibits kibset kidim kidint kidnnt kieor kifix kind kint kior " + "kishft kishftc kisign kmax0 kmax1 kmin0 kmin1 kmod knint knot " + "kzext lbound leadz len len_trim lenlge lge lgt lle llt log log10 " + "logical lshift malloc matmul max max0 max1 maxexponent maxloc " + "maxval merge min min0 min1 minexponent minloc minval mod modulo " + "mvbits nearest nint not nworkers number_of_processors pack " + "popcnt poppar precision present product radix random " + "random_number random_seed range real repeat reshape rrspacing " + "rshift scale scan secnds selected_int_kind selected_real_kind " + "set_exponent shape sign sin sind sinh size sizeof sngl snglq " + "spacing spread sqrt sum system_clock tan tand tanh tiny transfer " + "transpose trim ubound unpack verify"; + + if (set == 3) + return + "cdabs cdcos cdexp cdlog cdsin cdsqrt cotan cotand dcmplx dconjg " + "dcotan dcotand decode dimag dll_export dll_import doublecomplex " + "dreal dvchk encode find flen flush getarg getcharqq getcl getdat " + "getenv gettim hfix ibchng identifier imag int1 int2 int4 intc " + "intrup invalop iostat_msg isha ishc ishl jfix lacfar locking " + "locnear map nargs nbreak ndperr ndpexc offset ovefl peekcharqq " + "precfill prompt qabs qacos qacosd qasin qasind qatan qatand " + "qatan2 qcmplx qconjg qcos qcosd qcosh qdim qexp qext qextd " + "qfloat qimag qlog qlog10 qmax1 qmin1 qmod qreal qsign qsin qsind " + "qsinh qsqrt qtan qtand qtanh ran rand randu rewrite segment " + "setdat settim system timer undfl unlock union val virtual " + "volatile zabs zcos zexp zlog zsin zsqrt"; + + return QsciLexerFortran77::keywords(set); +} diff --git a/libs/qscintilla_2.14.1/Qt5Qt6/qscilexerfortran77.cpp b/libs/qscintilla_2.14.1/Qt5Qt6/qscilexerfortran77.cpp new file mode 100644 index 000000000..df568a8ef --- /dev/null +++ b/libs/qscintilla_2.14.1/Qt5Qt6/qscilexerfortran77.cpp @@ -0,0 +1,296 @@ +// This module implements the QsciLexerFortran77 class. +// +// Copyright (c) 2023 Riverbank Computing Limited +// +// This file is part of QScintilla. +// +// This file may be used under the terms of the GNU General Public License +// version 3.0 as published by the Free Software Foundation and appearing in +// the file LICENSE included in the packaging of this file. Please review the +// following information to ensure the GNU General Public License version 3.0 +// requirements will be met: http://www.gnu.org/copyleft/gpl.html. +// +// If you do not wish to use this file under the terms of the GPL version 3.0 +// then you may purchase a commercial license. For more information contact +// info@riverbankcomputing.com. +// +// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + + +#include "Qsci/qscilexerfortran77.h" + +#include +#include +#include + + +// The ctor. +QsciLexerFortran77::QsciLexerFortran77(QObject *parent) + : QsciLexer(parent), fold_compact(true) +{ +} + + +// The dtor. +QsciLexerFortran77::~QsciLexerFortran77() +{ +} + + +// Returns the language name. +const char *QsciLexerFortran77::language() const +{ + return "Fortran77"; +} + + +// Returns the lexer name. +const char *QsciLexerFortran77::lexer() const +{ + return "f77"; +} + + +// Return the style used for braces. +int QsciLexerFortran77::braceStyle() const +{ + return Default; +} + + +// Returns the foreground colour of the text for a style. +QColor QsciLexerFortran77::defaultColor(int style) const +{ + switch (style) + { + case Default: + return QColor(0x80,0x80,0x80); + + case Comment: + return QColor(0x00,0x7f,0x00); + + case Number: + return QColor(0x00,0x7f,0x7f); + + case SingleQuotedString: + case DoubleQuotedString: + return QColor(0x7f,0x00,0x7f); + + case UnclosedString: + case Operator: + case DottedOperator: + case Continuation: + return QColor(0x00,0x00,0x00); + + case Identifier: + break; + + case Keyword: + return QColor(0x00,0x00,0x7f); + + case IntrinsicFunction: + return QColor(0xb0,0x00,0x40); + + case ExtendedFunction: + return QColor(0xb0,0x40,0x80); + + case PreProcessor: + return QColor(0x7f,0x7f,0x00); + + case Label: + return QColor(0xe0,0xc0,0xe0); + } + + return QsciLexer::defaultColor(style); +} + + +// Returns the end-of-line fill for a style. +bool QsciLexerFortran77::defaultEolFill(int style) const +{ + if (style == UnclosedString) + return true; + + return QsciLexer::defaultEolFill(style); +} + + +// Returns the font of the text for a style. +QFont QsciLexerFortran77::defaultFont(int style) const +{ + QFont f; + + switch (style) + { + case Comment: +#if defined(Q_OS_WIN) + f = QFont("Comic Sans MS",9); +#elif defined(Q_OS_MAC) + f = QFont("Comic Sans MS", 12); +#else + f = QFont("Bitstream Vera Serif",9); +#endif + break; + + case Operator: + case DottedOperator: + f = QsciLexer::defaultFont(style); + f.setBold(true); + break; + + default: + f = QsciLexer::defaultFont(style); + } + + return f; +} + + +// Returns the set of keywords. +const char *QsciLexerFortran77::keywords(int set) const +{ + if (set == 1) + return + "access action advance allocatable allocate apostrophe assign " + "assignment associate asynchronous backspace bind blank blockdata " + "call case character class close common complex contains continue " + "cycle data deallocate decimal delim default dimension direct do " + "dowhile double doubleprecision else elseif elsewhere encoding " + "end endassociate endblockdata enddo endfile endforall " + "endfunction endif endinterface endmodule endprogram endselect " + "endsubroutine endtype endwhere entry eor equivalence err errmsg " + "exist exit external file flush fmt forall form format formatted " + "function go goto id if implicit in include inout integer inquire " + "intent interface intrinsic iomsg iolength iostat kind len " + "logical module name named namelist nextrec nml none nullify " + "number only open opened operator optional out pad parameter pass " + "pause pending pointer pos position precision print private " + "program protected public quote read readwrite real rec recl " + "recursive result return rewind save select selectcase selecttype " + "sequential sign size stat status stop stream subroutine target " + "then to type unformatted unit use value volatile wait where " + "while write"; + + return 0; +} + + +// Returns the user name of a style. +QString QsciLexerFortran77::description(int style) const +{ + switch (style) + { + case Default: + return tr("Default"); + + case Comment: + return tr("Comment"); + + case Number: + return tr("Number"); + + case SingleQuotedString: + return tr("Single-quoted string"); + + case DoubleQuotedString: + return tr("Double-quoted string"); + + case UnclosedString: + return tr("Unclosed string"); + + case Operator: + return tr("Operator"); + + case Identifier: + return tr("Identifier"); + + case Keyword: + return tr("Keyword"); + + case IntrinsicFunction: + return tr("Intrinsic function"); + + case ExtendedFunction: + return tr("Extended function"); + + case PreProcessor: + return tr("Pre-processor block"); + + case DottedOperator: + return tr("Dotted operator"); + + case Label: + return tr("Label"); + + case Continuation: + return tr("Continuation"); + } + + return QString(); +} + + +// Returns the background colour of the text for a style. +QColor QsciLexerFortran77::defaultPaper(int style) const +{ + if (style == UnclosedString) + return QColor(0xe0,0xc0,0xe0); + + if (style == Continuation) + return QColor(0xf0,0xe0,0x80); + + return QsciLexer::defaultPaper(style); +} + + +// Refresh all properties. +void QsciLexerFortran77::refreshProperties() +{ + setCompactProp(); +} + + +// Read properties from the settings. +bool QsciLexerFortran77::readProperties(QSettings &qs, const QString &prefix) +{ + int rc = true; + + fold_compact = qs.value(prefix + "foldcompact", true).toBool(); + + return rc; +} + + +// Write properties to the settings. +bool QsciLexerFortran77::writeProperties(QSettings &qs,const QString &prefix) const +{ + int rc = true; + + qs.setValue(prefix + "foldcompact", fold_compact); + + return rc; +} + + +// Return true if folds are compact. +bool QsciLexerFortran77::foldCompact() const +{ + return fold_compact; +} + + +// Set if folds are compact +void QsciLexerFortran77::setFoldCompact(bool fold) +{ + fold_compact = fold; + + setCompactProp(); +} + + +// Set the "fold.compact" property. +void QsciLexerFortran77::setCompactProp() +{ + emit propertyChanged("fold.compact",(fold_compact ? "1" : "0")); +} diff --git a/libs/qscintilla_2.14.1/Qt5Qt6/qscilexerhex.cpp b/libs/qscintilla_2.14.1/Qt5Qt6/qscilexerhex.cpp new file mode 100644 index 000000000..c71fbeee3 --- /dev/null +++ b/libs/qscintilla_2.14.1/Qt5Qt6/qscilexerhex.cpp @@ -0,0 +1,156 @@ +// This module implements the abstract QsciLexerHex class. +// +// Copyright (c) 2023 Riverbank Computing Limited +// +// This file is part of QScintilla. +// +// This file may be used under the terms of the GNU General Public License +// version 3.0 as published by the Free Software Foundation and appearing in +// the file LICENSE included in the packaging of this file. Please review the +// following information to ensure the GNU General Public License version 3.0 +// requirements will be met: http://www.gnu.org/copyleft/gpl.html. +// +// If you do not wish to use this file under the terms of the GPL version 3.0 +// then you may purchase a commercial license. For more information contact +// info@riverbankcomputing.com. +// +// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + + +#include "Qsci/qscilexerhex.h" + +#include +#include + + +// The ctor. +QsciLexerHex::QsciLexerHex(QObject *parent) + : QsciLexer(parent) +{ +} + + +// The dtor. +QsciLexerHex::~QsciLexerHex() +{ +} + + +// Returns the foreground colour of the text for a style. +QColor QsciLexerHex::defaultColor(int style) const +{ + switch (style) + { + case RecordStart: + case RecordType: + case UnknownRecordType: + return QColor(0x7f, 0x00, 0x00); + + case ByteCount: + return QColor(0x7f, 0x7f, 0x00); + + case IncorrectByteCount: + case IncorrectChecksum: + return QColor(0xff, 0xff, 0x00); + + case NoAddress: + case RecordCount: + return QColor(0x7f, 0x00, 0xff); + + case DataAddress: + case StartAddress: + case ExtendedAddress: + return QColor(0x00, 0x7f, 0xff); + + case Checksum: + return QColor(0x00, 0xbf, 0x00); + } + + return QsciLexer::defaultColor(style); +} + + +// Returns the font of the text for a style. +QFont QsciLexerHex::defaultFont(int style) const +{ + QFont f = QsciLexer::defaultFont(style); + + if (style == UnknownRecordType || style == UnknownData || style == TrailingGarbage) + f.setItalic(true); + else if (style == OddData) + f.setBold(true); + + return f; +} + + +// Returns the background colour of the text for a style. +QColor QsciLexerHex::defaultPaper(int style) const +{ + if (style == IncorrectByteCount || style == IncorrectChecksum) + return QColor(0xff, 0x00, 0x00); + + return QsciLexer::defaultPaper(style); +} + + +// Returns the user name of a style. +QString QsciLexerHex::description(int style) const +{ + switch (style) + { + case Default: + return tr("Default"); + + case RecordStart: + return tr("Record start"); + + case RecordType: + return tr("Record type"); + + case UnknownRecordType: + return tr("Unknown record type"); + + case ByteCount: + return tr("Byte count"); + + case IncorrectByteCount: + return tr("Incorrect byte count"); + + case NoAddress: + return tr("No address"); + + case DataAddress: + return tr("Data address"); + + case RecordCount: + return tr("Record count"); + + case StartAddress: + return tr("Start address"); + + case ExtendedAddress: + return tr("Extended address"); + + case OddData: + return tr("Odd data"); + + case EvenData: + return tr("Even data"); + + case UnknownData: + return tr("Unknown data"); + + case Checksum: + return tr("Checksum"); + + case IncorrectChecksum: + return tr("Incorrect checksum"); + + case TrailingGarbage: + return tr("Trailing garbage after a record"); + } + + return QString(); +} diff --git a/libs/qscintilla/Qt4Qt5/qscilexerhtml.cpp b/libs/qscintilla_2.14.1/Qt5Qt6/qscilexerhtml.cpp similarity index 99% rename from libs/qscintilla/Qt4Qt5/qscilexerhtml.cpp rename to libs/qscintilla_2.14.1/Qt5Qt6/qscilexerhtml.cpp index e54ece5b4..0a554c2ea 100644 --- a/libs/qscintilla/Qt4Qt5/qscilexerhtml.cpp +++ b/libs/qscintilla_2.14.1/Qt5Qt6/qscilexerhtml.cpp @@ -1,6 +1,6 @@ // This module implements the QsciLexerHTML class. // -// Copyright (c) 2019 Riverbank Computing Limited +// Copyright (c) 2023 Riverbank Computing Limited // // This file is part of QScintilla. // diff --git a/libs/qscintilla_2.14.1/Qt5Qt6/qscilexeridl.cpp b/libs/qscintilla_2.14.1/Qt5Qt6/qscilexeridl.cpp new file mode 100644 index 000000000..62558950a --- /dev/null +++ b/libs/qscintilla_2.14.1/Qt5Qt6/qscilexeridl.cpp @@ -0,0 +1,100 @@ +// This module implements the QsciLexerIDL class. +// +// Copyright (c) 2023 Riverbank Computing Limited +// +// This file is part of QScintilla. +// +// This file may be used under the terms of the GNU General Public License +// version 3.0 as published by the Free Software Foundation and appearing in +// the file LICENSE included in the packaging of this file. Please review the +// following information to ensure the GNU General Public License version 3.0 +// requirements will be met: http://www.gnu.org/copyleft/gpl.html. +// +// If you do not wish to use this file under the terms of the GPL version 3.0 +// then you may purchase a commercial license. For more information contact +// info@riverbankcomputing.com. +// +// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + + +#include "Qsci/qscilexeridl.h" + +#include +#include + + +// The ctor. +QsciLexerIDL::QsciLexerIDL(QObject *parent) + : QsciLexerCPP(parent) +{ +} + + +// The dtor. +QsciLexerIDL::~QsciLexerIDL() +{ +} + + +// Returns the language name. +const char *QsciLexerIDL::language() const +{ + return "IDL"; +} + + +// Returns the foreground colour of the text for a style. +QColor QsciLexerIDL::defaultColor(int style) const +{ + if (style == UUID) + return QColor(0x80,0x40,0x80); + + return QsciLexerCPP::defaultColor(style); +} + + +// Returns the set of keywords. +const char *QsciLexerIDL::keywords(int set) const +{ + if (set != 1) + return 0; + + return "aggregatable allocate appobject arrays async async_uuid " + "auto_handle bindable boolean broadcast byte byte_count " + "call_as callback char coclass code comm_status const " + "context_handle context_handle_noserialize " + "context_handle_serialize control cpp_quote custom decode " + "default defaultbind defaultcollelem defaultvalue " + "defaultvtable dispinterface displaybind dllname double dual " + "enable_allocate encode endpoint entry enum error_status_t " + "explicit_handle fault_status first_is float handle_t heap " + "helpcontext helpfile helpstring helpstringcontext " + "helpstringdll hidden hyper id idempotent ignore iid_as iid_is " + "immediatebind implicit_handle import importlib in include " + "in_line int __int64 __int3264 interface last_is lcid " + "length_is library licensed local long max_is maybe message " + "methods midl_pragma midl_user_allocate midl_user_free min_is " + "module ms_union ncacn_at_dsp ncacn_dnet_nsp ncacn_http " + "ncacn_ip_tcp ncacn_nb_ipx ncacn_nb_nb ncacn_nb_tcp ncacn_np " + "ncacn_spx ncacn_vns_spp ncadg_ip_udp ncadg_ipx ncadg_mq " + "ncalrpc nocode nonbrowsable noncreatable nonextensible notify " + "object odl oleautomation optimize optional out out_of_line " + "pipe pointer_default pragma properties propget propput " + "propputref ptr public range readonly ref represent_as " + "requestedit restricted retval shape short signed size_is " + "small source strict_context_handle string struct switch " + "switch_is switch_type transmit_as typedef uidefault union " + "unique unsigned user_marshal usesgetlasterror uuid v1_enum " + "vararg version void wchar_t wire_marshal"; +} + + +// Returns the user name of a style. +QString QsciLexerIDL::description(int style) const +{ + if (style == UUID) + return tr("UUID"); + + return QsciLexerCPP::description(style); +} diff --git a/libs/qscintilla_2.14.1/Qt5Qt6/qscilexerintelhex.cpp b/libs/qscintilla_2.14.1/Qt5Qt6/qscilexerintelhex.cpp new file mode 100644 index 000000000..8eb2b91e9 --- /dev/null +++ b/libs/qscintilla_2.14.1/Qt5Qt6/qscilexerintelhex.cpp @@ -0,0 +1,59 @@ +// This module implements the QsciLexerIntelHex class. +// +// Copyright (c) 2023 Riverbank Computing Limited +// +// This file is part of QScintilla. +// +// This file may be used under the terms of the GNU General Public License +// version 3.0 as published by the Free Software Foundation and appearing in +// the file LICENSE included in the packaging of this file. Please review the +// following information to ensure the GNU General Public License version 3.0 +// requirements will be met: http://www.gnu.org/copyleft/gpl.html. +// +// If you do not wish to use this file under the terms of the GPL version 3.0 +// then you may purchase a commercial license. For more information contact +// info@riverbankcomputing.com. +// +// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + + +#include "Qsci/qscilexerintelhex.h" + + +// The ctor. +QsciLexerIntelHex::QsciLexerIntelHex(QObject *parent) + : QsciLexerHex(parent) +{ +} + + +// The dtor. +QsciLexerIntelHex::~QsciLexerIntelHex() +{ +} + + +// Returns the language name. +const char *QsciLexerIntelHex::language() const +{ + return "Intel-Hex"; +} + + +// Returns the lexer name. +const char *QsciLexerIntelHex::lexer() const +{ + return "ihex"; +} + + +// Returns the user name of a style. +QString QsciLexerIntelHex::description(int style) const +{ + // Handle unsupported styles. + if (style == RecordCount) + return QString(); + + return QsciLexerHex::description(style); +} diff --git a/libs/qscintilla_2.14.1/Qt5Qt6/qscilexerjava.cpp b/libs/qscintilla_2.14.1/Qt5Qt6/qscilexerjava.cpp new file mode 100644 index 000000000..ad3886653 --- /dev/null +++ b/libs/qscintilla_2.14.1/Qt5Qt6/qscilexerjava.cpp @@ -0,0 +1,57 @@ +// This module implements the QsciLexerJava class. +// +// Copyright (c) 2023 Riverbank Computing Limited +// +// This file is part of QScintilla. +// +// This file may be used under the terms of the GNU General Public License +// version 3.0 as published by the Free Software Foundation and appearing in +// the file LICENSE included in the packaging of this file. Please review the +// following information to ensure the GNU General Public License version 3.0 +// requirements will be met: http://www.gnu.org/copyleft/gpl.html. +// +// If you do not wish to use this file under the terms of the GPL version 3.0 +// then you may purchase a commercial license. For more information contact +// info@riverbankcomputing.com. +// +// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + + +#include "Qsci/qscilexerjava.h" + + +// The ctor. +QsciLexerJava::QsciLexerJava(QObject *parent) + : QsciLexerCPP(parent) +{ +} + + +// The dtor. +QsciLexerJava::~QsciLexerJava() +{ +} + + +// Returns the language name. +const char *QsciLexerJava::language() const +{ + return "Java"; +} + + +// Returns the set of keywords. +const char *QsciLexerJava::keywords(int set) const +{ + if (set != 1) + return 0; + + return "abstract assert boolean break byte case catch char class " + "const continue default do double else extends final finally " + "float for future generic goto if implements import inner " + "instanceof int interface long native new null operator outer " + "package private protected public rest return short static " + "super switch synchronized this throw throws transient try var " + "void volatile while"; +} diff --git a/libs/qscintilla/Qt4Qt5/qscilexerjavascript.cpp b/libs/qscintilla_2.14.1/Qt5Qt6/qscilexerjavascript.cpp similarity index 98% rename from libs/qscintilla/Qt4Qt5/qscilexerjavascript.cpp rename to libs/qscintilla_2.14.1/Qt5Qt6/qscilexerjavascript.cpp index e5623ead0..56f8e7752 100644 --- a/libs/qscintilla/Qt4Qt5/qscilexerjavascript.cpp +++ b/libs/qscintilla_2.14.1/Qt5Qt6/qscilexerjavascript.cpp @@ -1,6 +1,6 @@ // This module implements the QsciLexerJavaScript class. // -// Copyright (c) 2019 Riverbank Computing Limited +// Copyright (c) 2023 Riverbank Computing Limited // // This file is part of QScintilla. // diff --git a/libs/qscintilla/Qt4Qt5/qscilexerjson.cpp b/libs/qscintilla_2.14.1/Qt5Qt6/qscilexerjson.cpp similarity index 98% rename from libs/qscintilla/Qt4Qt5/qscilexerjson.cpp rename to libs/qscintilla_2.14.1/Qt5Qt6/qscilexerjson.cpp index c79ed13cf..bf30e5b22 100644 --- a/libs/qscintilla/Qt4Qt5/qscilexerjson.cpp +++ b/libs/qscintilla_2.14.1/Qt5Qt6/qscilexerjson.cpp @@ -1,6 +1,6 @@ // This module implements the QsciLexerJSON class. // -// Copyright (c) 2019 Riverbank Computing Limited +// Copyright (c) 2023 Riverbank Computing Limited // // This file is part of QScintilla. // diff --git a/libs/qscintilla_2.14.1/Qt5Qt6/qscilexerlua.cpp b/libs/qscintilla_2.14.1/Qt5Qt6/qscilexerlua.cpp new file mode 100644 index 000000000..0792f295d --- /dev/null +++ b/libs/qscintilla_2.14.1/Qt5Qt6/qscilexerlua.cpp @@ -0,0 +1,368 @@ +// This module implements the QsciLexerLua class. +// +// Copyright (c) 2023 Riverbank Computing Limited +// +// This file is part of QScintilla. +// +// This file may be used under the terms of the GNU General Public License +// version 3.0 as published by the Free Software Foundation and appearing in +// the file LICENSE included in the packaging of this file. Please review the +// following information to ensure the GNU General Public License version 3.0 +// requirements will be met: http://www.gnu.org/copyleft/gpl.html. +// +// If you do not wish to use this file under the terms of the GPL version 3.0 +// then you may purchase a commercial license. For more information contact +// info@riverbankcomputing.com. +// +// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + + +#include "Qsci/qscilexerlua.h" + +#include +#include +#include + + +// The ctor. +QsciLexerLua::QsciLexerLua(QObject *parent) + : QsciLexer(parent), fold_compact(true) +{ +} + + +// The dtor. +QsciLexerLua::~QsciLexerLua() +{ +} + + +// Returns the language name. +const char *QsciLexerLua::language() const +{ + return "Lua"; +} + + +// Returns the lexer name. +const char *QsciLexerLua::lexer() const +{ + return "lua"; +} + + +// Return the set of character sequences that can separate auto-completion +// words. +QStringList QsciLexerLua::autoCompletionWordSeparators() const +{ + QStringList wl; + + wl << ":" << "."; + + return wl; +} + + +// Return the list of characters that can start a block. +const char *QsciLexerLua::blockStart(int *style) const +{ + if (style) + *style = Operator; + + return ""; +} + + +// Return the style used for braces. +int QsciLexerLua::braceStyle() const +{ + return Operator; +} + + +// Returns the foreground colour of the text for a style. +QColor QsciLexerLua::defaultColor(int style) const +{ + switch (style) + { + case Default: + return QColor(0x00,0x00,0x00); + + case Comment: + case LineComment: + return QColor(0x00,0x7f,0x00); + + case Number: + return QColor(0x00,0x7f,0x7f); + + case Keyword: + case BasicFunctions: + case StringTableMathsFunctions: + case CoroutinesIOSystemFacilities: + return QColor(0x00,0x00,0x7f); + + case String: + case Character: + case LiteralString: + return QColor(0x7f,0x00,0x7f); + + case Preprocessor: + case Label: + return QColor(0x7f,0x7f,0x00); + + case Operator: + case Identifier: + break; + } + + return QsciLexer::defaultColor(style); +} + + +// Returns the end-of-line fill for a style. +bool QsciLexerLua::defaultEolFill(int style) const +{ + if (style == Comment || style == UnclosedString) + return true; + + return QsciLexer::defaultEolFill(style); +} + + +// Returns the font of the text for a style. +QFont QsciLexerLua::defaultFont(int style) const +{ + QFont f; + + switch (style) + { + case Comment: + case LineComment: + case LiteralString: +#if defined(Q_OS_WIN) + f = QFont("Comic Sans MS",9); +#elif defined(Q_OS_MAC) + f = QFont("Comic Sans MS", 12); +#else + f = QFont("Bitstream Vera Serif",9); +#endif + break; + + default: + f = QsciLexer::defaultFont(style); + } + + return f; +} + + +// Returns the set of keywords. +const char *QsciLexerLua::keywords(int set) const +{ + if (set == 1) + // Keywords. + return + "and break do else elseif end false for function if " + "in local nil not or repeat return then true until " + "while"; + + if (set == 2) + // Basic functions. + return + "_ALERT _ERRORMESSAGE _INPUT _PROMPT _OUTPUT _STDERR " + "_STDIN _STDOUT call dostring foreach foreachi getn " + "globals newtype rawget rawset require sort tinsert " + "tremove " + + "G getfenv getmetatable ipairs loadlib next pairs " + "pcall rawegal rawget rawset require setfenv " + "setmetatable xpcall string table math coroutine io " + "os debug"; + + if (set == 3) + // String, table and maths functions. + return + "abs acos asin atan atan2 ceil cos deg exp floor " + "format frexp gsub ldexp log log10 max min mod rad " + "random randomseed sin sqrt strbyte strchar strfind " + "strlen strlower strrep strsub strupper tan " + + "string.byte string.char string.dump string.find " + "string.len string.lower string.rep string.sub " + "string.upper string.format string.gfind string.gsub " + "table.concat table.foreach table.foreachi table.getn " + "table.sort table.insert table.remove table.setn " + "math.abs math.acos math.asin math.atan math.atan2 " + "math.ceil math.cos math.deg math.exp math.floor " + "math.frexp math.ldexp math.log math.log10 math.max " + "math.min math.mod math.pi math.rad math.random " + "math.randomseed math.sin math.sqrt math.tan"; + + if (set == 4) + // Coroutine, I/O and system facilities. + return + "openfile closefile readfrom writeto appendto remove " + "rename flush seek tmpfile tmpname read write clock " + "date difftime execute exit getenv setlocale time " + + "coroutine.create coroutine.resume coroutine.status " + "coroutine.wrap coroutine.yield io.close io.flush " + "io.input io.lines io.open io.output io.read " + "io.tmpfile io.type io.write io.stdin io.stdout " + "io.stderr os.clock os.date os.difftime os.execute " + "os.exit os.getenv os.remove os.rename os.setlocale " + "os.time os.tmpname"; + + return 0; +} + + +// Returns the user name of a style. +QString QsciLexerLua::description(int style) const +{ + switch (style) + { + case Default: + return tr("Default"); + + case Comment: + return tr("Comment"); + + case LineComment: + return tr("Line comment"); + + case Number: + return tr("Number"); + + case Keyword: + return tr("Keyword"); + + case String: + return tr("String"); + + case Character: + return tr("Character"); + + case LiteralString: + return tr("Literal string"); + + case Preprocessor: + return tr("Preprocessor"); + + case Operator: + return tr("Operator"); + + case Identifier: + return tr("Identifier"); + + case UnclosedString: + return tr("Unclosed string"); + + case BasicFunctions: + return tr("Basic functions"); + + case StringTableMathsFunctions: + return tr("String, table and maths functions"); + + case CoroutinesIOSystemFacilities: + return tr("Coroutines, i/o and system facilities"); + + case KeywordSet5: + return tr("User defined 1"); + + case KeywordSet6: + return tr("User defined 2"); + + case KeywordSet7: + return tr("User defined 3"); + + case KeywordSet8: + return tr("User defined 4"); + + case Label: + return tr("Label"); + } + + return QString(); +} + + +// Returns the background colour of the text for a style. +QColor QsciLexerLua::defaultPaper(int style) const +{ + switch (style) + { + case Comment: + return QColor(0xd0,0xf0,0xf0); + + case LiteralString: + return QColor(0xe0,0xff,0xff); + + case UnclosedString: + return QColor(0xe0,0xc0,0xe0); + + case BasicFunctions: + return QColor(0xd0,0xff,0xd0); + + case StringTableMathsFunctions: + return QColor(0xd0,0xd0,0xff); + + case CoroutinesIOSystemFacilities: + return QColor(0xff,0xd0,0xd0); + } + + return QsciLexer::defaultPaper(style); +} + + +// Refresh all properties. +void QsciLexerLua::refreshProperties() +{ + setCompactProp(); +} + + +// Read properties from the settings. +bool QsciLexerLua::readProperties(QSettings &qs,const QString &prefix) +{ + int rc = true; + + fold_compact = qs.value(prefix + "foldcompact", true).toBool(); + + return rc; +} + + +// Write properties to the settings. +bool QsciLexerLua::writeProperties(QSettings &qs,const QString &prefix) const +{ + int rc = true; + + qs.setValue(prefix + "foldcompact", fold_compact); + + return rc; +} + + +// Return true if folds are compact. +bool QsciLexerLua::foldCompact() const +{ + return fold_compact; +} + + +// Set if folds are compact. +void QsciLexerLua::setFoldCompact(bool fold) +{ + fold_compact = fold; + + setCompactProp(); +} + + +// Set the "fold.compact" property. +void QsciLexerLua::setCompactProp() +{ + emit propertyChanged("fold.compact",(fold_compact ? "1" : "0")); +} diff --git a/libs/qscintilla_2.14.1/Qt5Qt6/qscilexermakefile.cpp b/libs/qscintilla_2.14.1/Qt5Qt6/qscilexermakefile.cpp new file mode 100644 index 000000000..7676e8a17 --- /dev/null +++ b/libs/qscintilla_2.14.1/Qt5Qt6/qscilexermakefile.cpp @@ -0,0 +1,158 @@ +// This module implements the QsciLexerMakefile class. +// +// Copyright (c) 2023 Riverbank Computing Limited +// +// This file is part of QScintilla. +// +// This file may be used under the terms of the GNU General Public License +// version 3.0 as published by the Free Software Foundation and appearing in +// the file LICENSE included in the packaging of this file. Please review the +// following information to ensure the GNU General Public License version 3.0 +// requirements will be met: http://www.gnu.org/copyleft/gpl.html. +// +// If you do not wish to use this file under the terms of the GPL version 3.0 +// then you may purchase a commercial license. For more information contact +// info@riverbankcomputing.com. +// +// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + + +#include "Qsci/qscilexermakefile.h" + +#include +#include + + +// The ctor. +QsciLexerMakefile::QsciLexerMakefile(QObject *parent) + : QsciLexer(parent) +{ +} + + +// The dtor. +QsciLexerMakefile::~QsciLexerMakefile() +{ +} + + +// Returns the language name. +const char *QsciLexerMakefile::language() const +{ + return "Makefile"; +} + + +// Returns the lexer name. +const char *QsciLexerMakefile::lexer() const +{ + return "makefile"; +} + + +// Return the string of characters that comprise a word. +const char *QsciLexerMakefile::wordCharacters() const +{ + return "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-"; +} + + +// Returns the foreground colour of the text for a style. +QColor QsciLexerMakefile::defaultColor(int style) const +{ + switch (style) + { + case Default: + case Operator: + return QColor(0x00,0x00,0x00); + + case Comment: + return QColor(0x00,0x7f,0x00); + + case Preprocessor: + return QColor(0x7f,0x7f,0x00); + + case Variable: + return QColor(0x00,0x00,0x80); + + case Target: + return QColor(0xa0,0x00,0x00); + + case Error: + return QColor(0xff,0xff,0x00); + } + + return QsciLexer::defaultColor(style); +} + + +// Returns the end-of-line fill for a style. +bool QsciLexerMakefile::defaultEolFill(int style) const +{ + if (style == Error) + return true; + + return QsciLexer::defaultEolFill(style); +} + + +// Returns the font of the text for a style. +QFont QsciLexerMakefile::defaultFont(int style) const +{ + QFont f; + + if (style == Comment) +#if defined(Q_OS_WIN) + f = QFont("Comic Sans MS",9); +#elif defined(Q_OS_MAC) + f = QFont("Comic Sans MS", 12); +#else + f = QFont("Bitstream Vera Serif",9); +#endif + else + f = QsciLexer::defaultFont(style); + + return f; +} + + +// Returns the user name of a style. +QString QsciLexerMakefile::description(int style) const +{ + switch (style) + { + case Default: + return tr("Default"); + + case Comment: + return tr("Comment"); + + case Preprocessor: + return tr("Preprocessor"); + + case Variable: + return tr("Variable"); + + case Operator: + return tr("Operator"); + + case Target: + return tr("Target"); + + case Error: + return tr("Error"); + } + + return QString(); +} + + +// Returns the background colour of the text for a style. +QColor QsciLexerMakefile::defaultPaper(int style) const +{ + if (style == Error) + return QColor(0xff,0x00,0x00); + + return QsciLexer::defaultPaper(style); +} diff --git a/libs/qscintilla_2.14.1/Qt5Qt6/qscilexermarkdown.cpp b/libs/qscintilla_2.14.1/Qt5Qt6/qscilexermarkdown.cpp new file mode 100644 index 000000000..97a9f24c5 --- /dev/null +++ b/libs/qscintilla_2.14.1/Qt5Qt6/qscilexermarkdown.cpp @@ -0,0 +1,289 @@ +// This module implements the QsciLexerMarkdown class. +// +// Copyright (c) 2023 Riverbank Computing Limited +// +// This file is part of QScintilla. +// +// This file may be used under the terms of the GNU General Public License +// version 3.0 as published by the Free Software Foundation and appearing in +// the file LICENSE included in the packaging of this file. Please review the +// following information to ensure the GNU General Public License version 3.0 +// requirements will be met: http://www.gnu.org/copyleft/gpl.html. +// +// If you do not wish to use this file under the terms of the GPL version 3.0 +// then you may purchase a commercial license. For more information contact +// info@riverbankcomputing.com. +// +// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + + +#include "Qsci/qscilexermarkdown.h" + +#include + + +// The ctor. +QsciLexerMarkdown::QsciLexerMarkdown(QObject *parent) + : QsciLexer(parent) +{ +} + + +// The dtor. +QsciLexerMarkdown::~QsciLexerMarkdown() +{ +} + + +// Returns the language name. +const char *QsciLexerMarkdown::language() const +{ + return "Markdown"; +} + + +// Returns the lexer name. +const char *QsciLexerMarkdown::lexer() const +{ + return "markdown"; +} + + +// Returns the foreground colour of the text for a style. +QColor QsciLexerMarkdown::defaultColor(int style) const +{ + switch (style) + { + case Special: + return QColor(0xcc, 0x00, 0xff); + + case StrongEmphasisAsterisks: + case StrongEmphasisUnderscores: + return QColor(0x22, 0x44, 0x66); + + case EmphasisAsterisks: + case EmphasisUnderscores: + return QColor(0x88, 0x00, 0x88); + + case Header1: + return QColor(0xff, 0x77, 0x00); + + case Header2: + return QColor(0xdd, 0x66, 0x00); + + case Header3: + return QColor(0xbb, 0x55, 0x00); + + case Header4: + return QColor(0x99, 0x44, 0x00); + + case Header5: + return QColor(0x77, 0x33, 0x00); + + case Header6: + return QColor(0x55, 0x22, 0x00); + + case Prechar: + return QColor(0x00, 0x00, 0x00); + + case UnorderedListItem: + return QColor(0x82, 0x5d, 0x00); + + case OrderedListItem: + return QColor(0x00, 0x00, 0x70); + + case BlockQuote: + return QColor(0x00, 0x66, 0x00); + + case StrikeOut: + return QColor(0xdd, 0xdd, 0xdd); + + case HorizontalRule: + return QColor(0x1f, 0x1c, 0x1b); + + case Link: + return QColor(0x00, 0x00, 0xaa); + + case CodeBackticks: + case CodeDoubleBackticks: + return QColor(0x7f, 0x00, 0x7f); + + case CodeBlock: + return QColor(0x00, 0x45, 0x8a); + } + + return QsciLexer::defaultColor(style); +} + + +// Returns the font of the text for a style. +QFont QsciLexerMarkdown::defaultFont(int style) const +{ + QFont f; + + switch (style) + { + case StrongEmphasisAsterisks: + case StrongEmphasisUnderscores: + f = QsciLexer::defaultFont(style); + f.setBold(true); + break; + + case EmphasisAsterisks: + case EmphasisUnderscores: + f = QsciLexer::defaultFont(style); + f.setItalic(true); + break; + + case Header1: + case Header2: + case Header3: + case Header4: + case Header5: + case Header6: +#if defined(Q_OS_WIN) + f = QFont("Courier New", 10); +#elif defined(Q_OS_MAC) + f = QFont("Courier", 12); +#else + f = QFont("Bitstream Vera Sans Mono", 9); +#endif + f.setBold(true); + break; + + case HorizontalRule: + case CodeBackticks: + case CodeDoubleBackticks: + case CodeBlock: +#if defined(Q_OS_WIN) + f = QFont("Courier New", 10); +#elif defined(Q_OS_MAC) + f = QFont("Courier", 12); +#else + f = QFont("Bitstream Vera Sans Mono", 9); +#endif + break; + + case Link: + f = QsciLexer::defaultFont(style); + f.setUnderline(true); + break; + + default: + f = QsciLexer::defaultFont(style); + } + + return f; +} + + +// Returns the background colour of the text for a style. +QColor QsciLexerMarkdown::defaultPaper(int style) const +{ + switch (style) + { + case Prechar: + return QColor(0xee, 0xee, 0xaa); + + case UnorderedListItem: + return QColor(0xde, 0xd8, 0xc3); + + case OrderedListItem: + return QColor(0xb8, 0xc3, 0xe1); + + case BlockQuote: + return QColor(0xcb, 0xdc, 0xcb); + + case StrikeOut: + return QColor(0xaa, 0x00, 0x00); + + case HorizontalRule: + return QColor(0xe7, 0xd1, 0xc9); + + case CodeBackticks: + case CodeDoubleBackticks: + return QColor(0xef, 0xff, 0xef); + + case CodeBlock: + return QColor(0xc5, 0xe0, 0xf5); + } + + return QsciLexer::defaultPaper(style); +} + + +// Returns the user name of a style. +QString QsciLexerMarkdown::description(int style) const +{ + switch (style) + { + case Default: + return tr("Default"); + + case Special: + return tr("Special"); + + case StrongEmphasisAsterisks: + return tr("Strong emphasis using double asterisks"); + + case StrongEmphasisUnderscores: + return tr("Strong emphasis using double underscores"); + + case EmphasisAsterisks: + return tr("Emphasis using single asterisks"); + + case EmphasisUnderscores: + return tr("Emphasis using single underscores"); + + case Header1: + return tr("Level 1 header"); + + case Header2: + return tr("Level 2 header"); + + case Header3: + return tr("Level 3 header"); + + case Header4: + return tr("Level 4 header"); + + case Header5: + return tr("Level 5 header"); + + case Header6: + return tr("Level 6 header"); + + case Prechar: + return tr("Pre-char"); + + case UnorderedListItem: + return tr("Unordered list item"); + + case OrderedListItem: + return tr("Ordered list item"); + + case BlockQuote: + return tr("Block quote"); + + case StrikeOut: + return tr("Strike out"); + + case HorizontalRule: + return tr("Horizontal rule"); + + case Link: + return tr("Link"); + + case CodeBackticks: + return tr("Code between backticks"); + + case CodeDoubleBackticks: + return tr("Code between double backticks"); + + case CodeBlock: + return tr("Code block"); + } + + return QString(); +} diff --git a/libs/qscintilla/Qt4Qt5/SciNamespace.h b/libs/qscintilla_2.14.1/Qt5Qt6/qscilexermasm.cpp similarity index 60% rename from libs/qscintilla/Qt4Qt5/SciNamespace.h rename to libs/qscintilla_2.14.1/Qt5Qt6/qscilexermasm.cpp index 7c9242b96..1bed35ad3 100644 --- a/libs/qscintilla/Qt4Qt5/SciNamespace.h +++ b/libs/qscintilla_2.14.1/Qt5Qt6/qscilexermasm.cpp @@ -1,7 +1,6 @@ -// Support for building the Scintilla code in the Scintilla namespace using the -// -DSCI_NAMESPACE compiler flag. +// This module implements the QsciLexerMASM class. // -// Copyright (c) 2018 Riverbank Computing Limited +// Copyright (c) 2023 Riverbank Computing Limited // // This file is part of QScintilla. // @@ -19,17 +18,31 @@ // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. -#ifndef _SCINAMESPACE_H -#define _SCINAMESPACE_H +#include "Qsci/qscilexermasm.h" -#ifdef SCI_NAMESPACE -#define QSCI_SCI_NAMESPACE(name) Scintilla::name -#define QSCI_BEGIN_SCI_NAMESPACE namespace Scintilla { -#define QSCI_END_SCI_NAMESPACE }; -#else -#define QSCI_SCI_NAMESPACE(name) name -#define QSCI_BEGIN_SCI_NAMESPACE -#define QSCI_END_SCI_NAMESPACE -#endif -#endif +// The ctor. +QsciLexerMASM::QsciLexerMASM(QObject *parent) + : QsciLexerAsm(parent) +{ +} + + +// The dtor. +QsciLexerMASM::~QsciLexerMASM() +{ +} + + +// Returns the language name. +const char *QsciLexerMASM::language() const +{ + return "MASM"; +} + + +// Returns the lexer name. +const char *QsciLexerMASM::lexer() const +{ + return "asm"; +} diff --git a/libs/qscintilla_2.14.1/Qt5Qt6/qscilexermatlab.cpp b/libs/qscintilla_2.14.1/Qt5Qt6/qscilexermatlab.cpp new file mode 100644 index 000000000..dbcf77ffa --- /dev/null +++ b/libs/qscintilla_2.14.1/Qt5Qt6/qscilexermatlab.cpp @@ -0,0 +1,161 @@ +// This module implements the QsciLexerMatlab class. +// +// Copyright (c) 2023 Riverbank Computing Limited +// +// This file is part of QScintilla. +// +// This file may be used under the terms of the GNU General Public License +// version 3.0 as published by the Free Software Foundation and appearing in +// the file LICENSE included in the packaging of this file. Please review the +// following information to ensure the GNU General Public License version 3.0 +// requirements will be met: http://www.gnu.org/copyleft/gpl.html. +// +// If you do not wish to use this file under the terms of the GPL version 3.0 +// then you may purchase a commercial license. For more information contact +// info@riverbankcomputing.com. +// +// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + + +#include "Qsci/qscilexermatlab.h" + +#include +#include + + +// The ctor. +QsciLexerMatlab::QsciLexerMatlab(QObject *parent) + : QsciLexer(parent) +{ +} + + +// The dtor. +QsciLexerMatlab::~QsciLexerMatlab() +{ +} + + +// Returns the language name. +const char *QsciLexerMatlab::language() const +{ + return "Matlab"; +} + + +// Returns the lexer name. +const char *QsciLexerMatlab::lexer() const +{ + return "matlab"; +} + + +// Returns the foreground colour of the text for a style. +QColor QsciLexerMatlab::defaultColor(int style) const +{ + switch (style) + { + case Default: + case Operator: + return QColor(0x00,0x00,0x00); + + case Comment: + return QColor(0x00,0x7f,0x00); + + case Command: + return QColor(0x7f,0x7f,0x00); + + case Number: + return QColor(0x00,0x7f,0x7f); + + case Keyword: + return QColor(0x00,0x00,0x7f); + + case SingleQuotedString: + case DoubleQuotedString: + return QColor(0x7f,0x00,0x7f); + } + + return QsciLexer::defaultColor(style); +} + + +// Returns the font of the text for a style. +QFont QsciLexerMatlab::defaultFont(int style) const +{ + QFont f; + + switch (style) + { + case Comment: +#if defined(Q_OS_WIN) + f = QFont("Comic Sans MS",9); +#elif defined(Q_OS_MAC) + f = QFont("Comic Sans MS", 12); +#else + f = QFont("Bitstream Vera Serif",9); +#endif + break; + + case Keyword: + case Operator: + f = QsciLexer::defaultFont(style); + f.setBold(true); + break; + + default: + f = QsciLexer::defaultFont(style); + } + + return f; +} + + +// Returns the set of keywords. +const char *QsciLexerMatlab::keywords(int set) const +{ + if (set == 1) + return + "break case catch continue else elseif end for function " + "global if otherwise persistent return switch try while"; + + return 0; +} + + +// Returns the user name of a style. +QString QsciLexerMatlab::description(int style) const +{ + switch (style) + { + case Default: + return tr("Default"); + + case Comment: + return tr("Comment"); + + case Command: + return tr("Command"); + + case Number: + return tr("Number"); + + case Keyword: + return tr("Keyword"); + + case SingleQuotedString: + return tr("Single-quoted string"); + + case Operator: + return tr("Operator"); + + case Identifier: + return tr("Identifier"); + + case DoubleQuotedString: + return tr("Double-quoted string"); + } + + return QString(); +} diff --git a/libs/qscintilla_2.14.1/Qt5Qt6/qscilexernasm.cpp b/libs/qscintilla_2.14.1/Qt5Qt6/qscilexernasm.cpp new file mode 100644 index 000000000..054adf1df --- /dev/null +++ b/libs/qscintilla_2.14.1/Qt5Qt6/qscilexernasm.cpp @@ -0,0 +1,48 @@ +// This module implements the QsciLexerNASM class. +// +// Copyright (c) 2023 Riverbank Computing Limited +// +// This file is part of QScintilla. +// +// This file may be used under the terms of the GNU General Public License +// version 3.0 as published by the Free Software Foundation and appearing in +// the file LICENSE included in the packaging of this file. Please review the +// following information to ensure the GNU General Public License version 3.0 +// requirements will be met: http://www.gnu.org/copyleft/gpl.html. +// +// If you do not wish to use this file under the terms of the GPL version 3.0 +// then you may purchase a commercial license. For more information contact +// info@riverbankcomputing.com. +// +// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + + +#include "Qsci/qscilexernasm.h" + + +// The ctor. +QsciLexerNASM::QsciLexerNASM(QObject *parent) + : QsciLexerAsm(parent) +{ +} + + +// The dtor. +QsciLexerNASM::~QsciLexerNASM() +{ +} + + +// Returns the language name. +const char *QsciLexerNASM::language() const +{ + return "NASM"; +} + + +// Returns the lexer name. +const char *QsciLexerNASM::lexer() const +{ + return "as"; +} diff --git a/libs/qscintilla_2.14.1/Qt5Qt6/qscilexeroctave.cpp b/libs/qscintilla_2.14.1/Qt5Qt6/qscilexeroctave.cpp new file mode 100644 index 000000000..192d7e8af --- /dev/null +++ b/libs/qscintilla_2.14.1/Qt5Qt6/qscilexeroctave.cpp @@ -0,0 +1,68 @@ +// This module implements the QsciLexerOctave class. +// +// Copyright (c) 2023 Riverbank Computing Limited +// +// This file is part of QScintilla. +// +// This file may be used under the terms of the GNU General Public License +// version 3.0 as published by the Free Software Foundation and appearing in +// the file LICENSE included in the packaging of this file. Please review the +// following information to ensure the GNU General Public License version 3.0 +// requirements will be met: http://www.gnu.org/copyleft/gpl.html. +// +// If you do not wish to use this file under the terms of the GPL version 3.0 +// then you may purchase a commercial license. For more information contact +// info@riverbankcomputing.com. +// +// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + + +#include "Qsci/qscilexeroctave.h" + +#include +#include + + +// The ctor. +QsciLexerOctave::QsciLexerOctave(QObject *parent) + : QsciLexerMatlab(parent) +{ +} + + +// The dtor. +QsciLexerOctave::~QsciLexerOctave() +{ +} + + +// Returns the language name. +const char *QsciLexerOctave::language() const +{ + return "Octave"; +} + + +// Returns the lexer name. +const char *QsciLexerOctave::lexer() const +{ + return "octave"; +} + + +// Returns the set of keywords. +const char *QsciLexerOctave::keywords(int set) const +{ + if (set == 1) + return + "__FILE__ __LINE__ break case catch classdef continue do else " + "elseif end end_try_catch end_unwind_protect endclassdef " + "endenumeration endevents endfor endfunction endif endmethods " + "endparfor endproperties endswitch endwhile enumeration events " + "for function get global if methods otherwise parfor persistent " + "properties return set static switch try until unwind_protect " + "unwind_protect_cleanup while"; + + return 0; +} diff --git a/libs/qscintilla_2.14.1/Qt5Qt6/qscilexerpascal.cpp b/libs/qscintilla_2.14.1/Qt5Qt6/qscilexerpascal.cpp new file mode 100644 index 000000000..3d7f8162d --- /dev/null +++ b/libs/qscintilla_2.14.1/Qt5Qt6/qscilexerpascal.cpp @@ -0,0 +1,432 @@ +// This module implements the QsciLexerPascal class. +// +// Copyright (c) 2023 Riverbank Computing Limited +// +// This file is part of QScintilla. +// +// This file may be used under the terms of the GNU General Public License +// version 3.0 as published by the Free Software Foundation and appearing in +// the file LICENSE included in the packaging of this file. Please review the +// following information to ensure the GNU General Public License version 3.0 +// requirements will be met: http://www.gnu.org/copyleft/gpl.html. +// +// If you do not wish to use this file under the terms of the GPL version 3.0 +// then you may purchase a commercial license. For more information contact +// info@riverbankcomputing.com. +// +// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + + +#include "Qsci/qscilexerpascal.h" + +#include +#include +#include + + +// The ctor. +QsciLexerPascal::QsciLexerPascal(QObject *parent) + : QsciLexer(parent), + fold_comments(false), fold_compact(true), fold_preproc(false), + smart_highlight(true) +{ +} + + +// The dtor. +QsciLexerPascal::~QsciLexerPascal() +{ +} + + +// Returns the language name. +const char *QsciLexerPascal::language() const +{ + return "Pascal"; +} + + +// Returns the lexer name. +const char *QsciLexerPascal::lexer() const +{ + return "pascal"; +} + + +// Return the set of character sequences that can separate auto-completion +// words. +QStringList QsciLexerPascal::autoCompletionWordSeparators() const +{ + QStringList wl; + + wl << "." << "^"; + + return wl; +} + + +// Return the list of keywords that can start a block. +const char *QsciLexerPascal::blockStartKeyword(int *style) const +{ + if (style) + *style = Keyword; + + return + "case class do else for then private protected public published " + "repeat try while type"; +} + + +// Return the list of characters that can start a block. +const char *QsciLexerPascal::blockStart(int *style) const +{ + if (style) + *style = Operator; + + return "begin"; +} + + +// Return the list of characters that can end a block. +const char *QsciLexerPascal::blockEnd(int *style) const +{ + if (style) + *style = Operator; + + return "end"; +} + + +// Return the style used for braces. +int QsciLexerPascal::braceStyle() const +{ + return Operator; +} + + +// Returns the foreground colour of the text for a style. +QColor QsciLexerPascal::defaultColor(int style) const +{ + switch (style) + { + case Default: + return QColor(0x80,0x80,0x80); + + case Identifier: + break; + + case Comment: + case CommentParenthesis: + case CommentLine: + return QColor(0x00,0x7f,0x00); + + case PreProcessor: + case PreProcessorParenthesis: + return QColor(0x7f,0x7f,0x00); + + case Number: + case HexNumber: + return QColor(0x00,0x7f,0x7f); + + case Keyword: + return QColor(0x00,0x00,0x7f); + + case SingleQuotedString: + case Character: + return QColor(0x7f,0x00,0x7f); + + case UnclosedString: + case Operator: + return QColor(0x00,0x00,0x00); + + case Asm: + return QColor(0x80,0x40,0x80); + } + + return QsciLexer::defaultColor(style); +} + + +// Returns the end-of-line fill for a style. +bool QsciLexerPascal::defaultEolFill(int style) const +{ + if (style == UnclosedString) + return true; + + return QsciLexer::defaultEolFill(style); +} + + +// Returns the font of the text for a style. +QFont QsciLexerPascal::defaultFont(int style) const +{ + QFont f; + + switch (style) + { + case Comment: + case CommentParenthesis: + case CommentLine: +#if defined(Q_OS_WIN) + f = QFont("Comic Sans MS",9); +#elif defined(Q_OS_MAC) + f = QFont("Comic Sans MS", 12); +#else + f = QFont("Bitstream Vera Serif",9); +#endif + break; + + case Keyword: + case Operator: + f = QsciLexer::defaultFont(style); + f.setBold(true); + break; + + case SingleQuotedString: +#if defined(Q_OS_WIN) + f = QFont("Times New Roman", 11); +#elif defined(Q_OS_MAC) + f = QFont("Times New Roman", 12); +#else + f = QFont("Bitstream Charter", 10); +#endif + f.setItalic(true); + break; + + case UnclosedString: +#if defined(Q_OS_WIN) + f = QFont("Courier New", 10); +#elif defined(Q_OS_MAC) + f = QFont("Courier", 12); +#else + f = QFont("Bitstream Vera Sans Mono", 9); +#endif + break; + + default: + f = QsciLexer::defaultFont(style); + } + + return f; +} + + +// Returns the background colour of the text for a style. +QColor QsciLexerPascal::defaultPaper(int style) const +{ + if (style == UnclosedString) + return QColor(0xe0,0xc0,0xe0); + + return QsciLexer::defaultPaper(style); +} + + +// Returns the set of keywords. +const char *QsciLexerPascal::keywords(int set) const +{ + if (set == 1) + return + "absolute abstract and array as asm assembler automated begin " + "case cdecl class const constructor delayed deprecated destructor " + "dispid dispinterface div do downto dynamic else end except " + "experimental export exports external far file final finalization " + "finally for forward function goto helper if implementation in " + "inherited initialization inline interface is label library " + "message mod near nil not object of on operator or out overload " + "override packed pascal platform private procedure program " + "property protected public published raise record reference " + "register reintroduce repeat resourcestring safecall sealed set " + "shl shr static stdcall strict string then threadvar to try type " + "unit unsafe until uses var varargs virtual while winapi with xor" + "add default implements index name nodefault read readonly remove " + "stored write writeonly" + "package contains requires"; + + return 0; +} + + +// Returns the user name of a style. +QString QsciLexerPascal::description(int style) const +{ + switch (style) + { + case Default: + return tr("Default"); + + case Identifier: + return tr("Identifier"); + + case Comment: + return tr("'{ ... }' style comment"); + + case CommentParenthesis: + return tr("'(* ... *)' style comment"); + + case CommentLine: + return tr("Line comment"); + + case PreProcessor: + return tr("'{$ ... }' style pre-processor block"); + + case PreProcessorParenthesis: + return tr("'(*$ ... *)' style pre-processor block"); + + case Number: + return tr("Number"); + + case HexNumber: + return tr("Hexadecimal number"); + + case Keyword: + return tr("Keyword"); + + case SingleQuotedString: + return tr("Single-quoted string"); + + case UnclosedString: + return tr("Unclosed string"); + + case Character: + return tr("Character"); + + case Operator: + return tr("Operator"); + + case Asm: + return tr("Inline asm"); + } + + return QString(); +} + + +// Refresh all properties. +void QsciLexerPascal::refreshProperties() +{ + setCommentProp(); + setCompactProp(); + setPreprocProp(); + setSmartHighlightProp(); +} + + +// Read properties from the settings. +bool QsciLexerPascal::readProperties(QSettings &qs,const QString &prefix) +{ + int rc = true; + + fold_comments = qs.value(prefix + "foldcomments", false).toBool(); + fold_compact = qs.value(prefix + "foldcompact", true).toBool(); + fold_preproc = qs.value(prefix + "foldpreprocessor", true).toBool(); + smart_highlight = qs.value(prefix + "smarthighlight", true).toBool(); + + return rc; +} + + +// Write properties to the settings. +bool QsciLexerPascal::writeProperties(QSettings &qs,const QString &prefix) const +{ + int rc = true; + + qs.setValue(prefix + "foldcomments", fold_comments); + qs.setValue(prefix + "foldcompact", fold_compact); + qs.setValue(prefix + "foldpreprocessor", fold_preproc); + qs.setValue(prefix + "smarthighlight", smart_highlight); + + return rc; +} + + +// Return true if comments can be folded. +bool QsciLexerPascal::foldComments() const +{ + return fold_comments; +} + + +// Set if comments can be folded. +void QsciLexerPascal::setFoldComments(bool fold) +{ + fold_comments = fold; + + setCommentProp(); +} + + +// Set the "fold.comment" property. +void QsciLexerPascal::setCommentProp() +{ + emit propertyChanged("fold.comment",(fold_comments ? "1" : "0")); +} + + +// Return true if folds are compact. +bool QsciLexerPascal::foldCompact() const +{ + return fold_compact; +} + + +// Set if folds are compact +void QsciLexerPascal::setFoldCompact(bool fold) +{ + fold_compact = fold; + + setCompactProp(); +} + + +// Set the "fold.compact" property. +void QsciLexerPascal::setCompactProp() +{ + emit propertyChanged("fold.compact",(fold_compact ? "1" : "0")); +} + + +// Return true if preprocessor blocks can be folded. +bool QsciLexerPascal::foldPreprocessor() const +{ + return fold_preproc; +} + + +// Set if preprocessor blocks can be folded. +void QsciLexerPascal::setFoldPreprocessor(bool fold) +{ + fold_preproc = fold; + + setPreprocProp(); +} + + +// Set the "fold.preprocessor" property. +void QsciLexerPascal::setPreprocProp() +{ + emit propertyChanged("fold.preprocessor",(fold_preproc ? "1" : "0")); +} + + +// Return true if smart highlighting is enabled. +bool QsciLexerPascal::smartHighlighting() const +{ + return smart_highlight; +} + + +// Set if smart highlighting is enabled. +void QsciLexerPascal::setSmartHighlighting(bool enabled) +{ + smart_highlight = enabled; + + setSmartHighlightProp(); +} + + +// Set the "lexer.pascal.smart.highlighting" property. +void QsciLexerPascal::setSmartHighlightProp() +{ + emit propertyChanged("lexer.pascal.smart.highlighting", (smart_highlight ? "1" : "0")); +} diff --git a/libs/qscintilla_2.14.1/Qt5Qt6/qscilexerperl.cpp b/libs/qscintilla_2.14.1/Qt5Qt6/qscilexerperl.cpp new file mode 100644 index 000000000..cce8f31df --- /dev/null +++ b/libs/qscintilla_2.14.1/Qt5Qt6/qscilexerperl.cpp @@ -0,0 +1,658 @@ +// This module implements the QsciLexerPerl class. +// +// Copyright (c) 2023 Riverbank Computing Limited +// +// This file is part of QScintilla. +// +// This file may be used under the terms of the GNU General Public License +// version 3.0 as published by the Free Software Foundation and appearing in +// the file LICENSE included in the packaging of this file. Please review the +// following information to ensure the GNU General Public License version 3.0 +// requirements will be met: http://www.gnu.org/copyleft/gpl.html. +// +// If you do not wish to use this file under the terms of the GPL version 3.0 +// then you may purchase a commercial license. For more information contact +// info@riverbankcomputing.com. +// +// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + + +#include "Qsci/qscilexerperl.h" + +#include +#include +#include + + +// The ctor. +QsciLexerPerl::QsciLexerPerl(QObject *parent) + : QsciLexer(parent), + fold_atelse(false), fold_comments(false), fold_compact(true), + fold_packages(true), fold_pod_blocks(true) +{ +} + + +// The dtor. +QsciLexerPerl::~QsciLexerPerl() +{ +} + + +// Returns the language name. +const char *QsciLexerPerl::language() const +{ + return "Perl"; +} + + +// Returns the lexer name. +const char *QsciLexerPerl::lexer() const +{ + return "perl"; +} + + +// Return the set of character sequences that can separate auto-completion +// words. +QStringList QsciLexerPerl::autoCompletionWordSeparators() const +{ + QStringList wl; + + wl << "::" << "->"; + + return wl; +} + + +// Return the list of characters that can start a block. +const char *QsciLexerPerl::blockStart(int *style) const +{ + if (style) + *style = Operator; + + return "{"; +} + + +// Return the list of characters that can end a block. +const char *QsciLexerPerl::blockEnd(int *style) const +{ + if (style) + *style = Operator; + + return "}"; +} + + +// Return the style used for braces. +int QsciLexerPerl::braceStyle() const +{ + return Operator; +} + + +// Return the string of characters that comprise a word. +const char *QsciLexerPerl::wordCharacters() const +{ + return "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_$@%&"; +} + + +// Returns the foreground colour of the text for a style. +QColor QsciLexerPerl::defaultColor(int style) const +{ + switch (style) + { + case Default: + return QColor(0x80,0x80,0x80); + + case Error: + case Backticks: + case QuotedStringQX: + return QColor(0xff,0xff,0x00); + + case Comment: + return QColor(0x00,0x7f,0x00); + + case POD: + case PODVerbatim: + return QColor(0x00,0x40,0x00); + + case Number: + return QColor(0x00,0x7f,0x7f); + + case Keyword: + return QColor(0x00,0x00,0x7f); + + case DoubleQuotedString: + case SingleQuotedString: + case SingleQuotedHereDocument: + case DoubleQuotedHereDocument: + case BacktickHereDocument: + case QuotedStringQ: + case QuotedStringQQ: + return QColor(0x7f,0x00,0x7f); + + case Operator: + case Identifier: + case Scalar: + case Array: + case Hash: + case SymbolTable: + case Regex: + case Substitution: + case HereDocumentDelimiter: + case QuotedStringQR: + case QuotedStringQW: + case SubroutinePrototype: + case Translation: + return QColor(0x00,0x00,0x00); + + case DataSection: + return QColor(0x60,0x00,0x00); + + case FormatIdentifier: + case FormatBody: + return QColor(0xc0,0x00,0xc0); + + case DoubleQuotedStringVar: + case RegexVar: + case SubstitutionVar: + case BackticksVar: + case DoubleQuotedHereDocumentVar: + case BacktickHereDocumentVar: + case QuotedStringQQVar: + case QuotedStringQXVar: + case QuotedStringQRVar: + return QColor(0xd0, 0x00, 0x00); + } + + return QsciLexer::defaultColor(style); +} + + +// Returns the end-of-line fill for a style. +bool QsciLexerPerl::defaultEolFill(int style) const +{ + switch (style) + { + case POD: + case DataSection: + case SingleQuotedHereDocument: + case DoubleQuotedHereDocument: + case BacktickHereDocument: + case PODVerbatim: + case FormatBody: + case DoubleQuotedHereDocumentVar: + case BacktickHereDocumentVar: + return true; + } + + return QsciLexer::defaultEolFill(style); +} + + +// Returns the font of the text for a style. +QFont QsciLexerPerl::defaultFont(int style) const +{ + QFont f; + + switch (style) + { + case Comment: +#if defined(Q_OS_WIN) + f = QFont("Comic Sans MS",9); +#elif defined(Q_OS_MAC) + f = QFont("Comic Sans MS", 12); +#else + f = QFont("Bitstream Vera Serif",9); +#endif + break; + + case POD: +#if defined(Q_OS_WIN) + f = QFont("Times New Roman",11); +#elif defined(Q_OS_MAC) + f = QFont("Times New Roman", 12); +#else + f = QFont("Bitstream Charter",10); +#endif + break; + + case Keyword: + case Operator: + case DoubleQuotedHereDocument: + case FormatIdentifier: + case RegexVar: + case SubstitutionVar: + case BackticksVar: + case DoubleQuotedHereDocumentVar: + case BacktickHereDocumentVar: + case QuotedStringQXVar: + case QuotedStringQRVar: + f = QsciLexer::defaultFont(style); + f.setBold(true); + break; + + case DoubleQuotedString: + case SingleQuotedString: + case QuotedStringQQ: + case PODVerbatim: +#if defined(Q_OS_WIN) + f = QFont("Courier New",10); +#elif defined(Q_OS_MAC) + f = QFont("Courier", 12); +#else + f = QFont("Bitstream Vera Sans Mono",9); +#endif + break; + + case BacktickHereDocument: + case SubroutinePrototype: + f = QsciLexer::defaultFont(style); + f.setItalic(true); + break; + + case DoubleQuotedStringVar: + case QuotedStringQQVar: +#if defined(Q_OS_WIN) + f = QFont("Courier New",10); +#elif defined(Q_OS_MAC) + f = QFont("Courier", 12); +#else + f = QFont("Bitstream Vera Sans Mono",9); +#endif + f.setBold(true); + break; + + default: + f = QsciLexer::defaultFont(style); + } + + return f; +} + + +// Returns the set of keywords. +const char *QsciLexerPerl::keywords(int set) const +{ + if (set == 1) + return + "NULL __FILE__ __LINE__ __PACKAGE__ __DATA__ __END__ " + "AUTOLOAD BEGIN CORE DESTROY END EQ GE GT INIT LE LT " + "NE CHECK abs accept alarm and atan2 bind binmode " + "bless caller chdir chmod chomp chop chown chr chroot " + "close closedir cmp connect continue cos crypt " + "dbmclose dbmopen defined delete die do dump each " + "else elsif endgrent endhostent endnetent endprotoent " + "endpwent endservent eof eq eval exec exists exit exp " + "fcntl fileno flock for foreach fork format formline " + "ge getc getgrent getgrgid getgrnam gethostbyaddr " + "gethostbyname gethostent getlogin getnetbyaddr " + "getnetbyname getnetent getpeername getpgrp getppid " + "getpriority getprotobyname getprotobynumber " + "getprotoent getpwent getpwnam getpwuid getservbyname " + "getservbyport getservent getsockname getsockopt glob " + "gmtime goto grep gt hex if index int ioctl join keys " + "kill last lc lcfirst le length link listen local " + "localtime lock log lstat lt m map mkdir msgctl " + "msgget msgrcv msgsnd my ne next no not oct open " + "opendir or ord our pack package pipe pop pos print " + "printf prototype push q qq qr quotemeta qu qw qx " + "rand read readdir readline readlink readpipe recv " + "redo ref rename require reset return reverse " + "rewinddir rindex rmdir s scalar seek seekdir select " + "semctl semget semop send setgrent sethostent " + "setnetent setpgrp setpriority setprotoent setpwent " + "setservent setsockopt shift shmctl shmget shmread " + "shmwrite shutdown sin sleep socket socketpair sort " + "splice split sprintf sqrt srand stat study sub " + "substr symlink syscall sysopen sysread sysseek " + "system syswrite tell telldir tie tied time times tr " + "truncate uc ucfirst umask undef unless unlink unpack " + "unshift untie until use utime values vec wait " + "waitpid wantarray warn while write x xor y"; + + return 0; +} + + +// Returns the user name of a style. +QString QsciLexerPerl::description(int style) const +{ + switch (style) + { + case Default: + return tr("Default"); + + case Error: + return tr("Error"); + + case Comment: + return tr("Comment"); + + case POD: + return tr("POD"); + + case Number: + return tr("Number"); + + case Keyword: + return tr("Keyword"); + + case DoubleQuotedString: + return tr("Double-quoted string"); + + case SingleQuotedString: + return tr("Single-quoted string"); + + case Operator: + return tr("Operator"); + + case Identifier: + return tr("Identifier"); + + case Scalar: + return tr("Scalar"); + + case Array: + return tr("Array"); + + case Hash: + return tr("Hash"); + + case SymbolTable: + return tr("Symbol table"); + + case Regex: + return tr("Regular expression"); + + case Substitution: + return tr("Substitution"); + + case Backticks: + return tr("Backticks"); + + case DataSection: + return tr("Data section"); + + case HereDocumentDelimiter: + return tr("Here document delimiter"); + + case SingleQuotedHereDocument: + return tr("Single-quoted here document"); + + case DoubleQuotedHereDocument: + return tr("Double-quoted here document"); + + case BacktickHereDocument: + return tr("Backtick here document"); + + case QuotedStringQ: + return tr("Quoted string (q)"); + + case QuotedStringQQ: + return tr("Quoted string (qq)"); + + case QuotedStringQX: + return tr("Quoted string (qx)"); + + case QuotedStringQR: + return tr("Quoted string (qr)"); + + case QuotedStringQW: + return tr("Quoted string (qw)"); + + case PODVerbatim: + return tr("POD verbatim"); + + case SubroutinePrototype: + return tr("Subroutine prototype"); + + case FormatIdentifier: + return tr("Format identifier"); + + case FormatBody: + return tr("Format body"); + + case DoubleQuotedStringVar: + return tr("Double-quoted string (interpolated variable)"); + + case Translation: + return tr("Translation"); + + case RegexVar: + return tr("Regular expression (interpolated variable)"); + + case SubstitutionVar: + return tr("Substitution (interpolated variable)"); + + case BackticksVar: + return tr("Backticks (interpolated variable)"); + + case DoubleQuotedHereDocumentVar: + return tr("Double-quoted here document (interpolated variable)"); + + case BacktickHereDocumentVar: + return tr("Backtick here document (interpolated variable)"); + + case QuotedStringQQVar: + return tr("Quoted string (qq, interpolated variable)"); + + case QuotedStringQXVar: + return tr("Quoted string (qx, interpolated variable)"); + + case QuotedStringQRVar: + return tr("Quoted string (qr, interpolated variable)"); + } + + return QString(); +} + + +// Returns the background colour of the text for a style. +QColor QsciLexerPerl::defaultPaper(int style) const +{ + switch (style) + { + case Error: + return QColor(0xff,0x00,0x00); + + case POD: + return QColor(0xe0,0xff,0xe0); + + case Scalar: + return QColor(0xff,0xe0,0xe0); + + case Array: + return QColor(0xff,0xff,0xe0); + + case Hash: + return QColor(0xff,0xe0,0xff); + + case SymbolTable: + return QColor(0xe0,0xe0,0xe0); + + case Regex: + return QColor(0xa0,0xff,0xa0); + + case Substitution: + case Translation: + return QColor(0xf0,0xe0,0x80); + + case Backticks: + case BackticksVar: + case QuotedStringQXVar: + return QColor(0xa0,0x80,0x80); + + case DataSection: + return QColor(0xff,0xf0,0xd8); + + case HereDocumentDelimiter: + case SingleQuotedHereDocument: + case DoubleQuotedHereDocument: + case BacktickHereDocument: + case DoubleQuotedHereDocumentVar: + case BacktickHereDocumentVar: + return QColor(0xdd,0xd0,0xdd); + + case PODVerbatim: + return QColor(0xc0,0xff,0xc0); + + case FormatBody: + return QColor(0xff,0xf0,0xff); + } + + return QsciLexer::defaultPaper(style); +} + + +// Refresh all properties. +void QsciLexerPerl::refreshProperties() +{ + setAtElseProp(); + setCommentProp(); + setCompactProp(); + setPackagesProp(); + setPODBlocksProp(); +} + + +// Read properties from the settings. +bool QsciLexerPerl::readProperties(QSettings &qs,const QString &prefix) +{ + int rc = true; + + fold_atelse = qs.value(prefix + "foldatelse", false).toBool(); + fold_comments = qs.value(prefix + "foldcomments", false).toBool(); + fold_compact = qs.value(prefix + "foldcompact", true).toBool(); + fold_packages = qs.value(prefix + "foldpackages", true).toBool(); + fold_pod_blocks = qs.value(prefix + "foldpodblocks", true).toBool(); + + return rc; +} + + +// Write properties to the settings. +bool QsciLexerPerl::writeProperties(QSettings &qs,const QString &prefix) const +{ + int rc = true; + + qs.setValue(prefix + "foldatelse", fold_atelse); + qs.setValue(prefix + "foldcomments", fold_comments); + qs.setValue(prefix + "foldcompact", fold_compact); + qs.setValue(prefix + "foldpackages", fold_packages); + qs.setValue(prefix + "foldpodblocks", fold_pod_blocks); + + return rc; +} + + +// Return true if comments can be folded. +bool QsciLexerPerl::foldComments() const +{ + return fold_comments; +} + + +// Set if comments can be folded. +void QsciLexerPerl::setFoldComments(bool fold) +{ + fold_comments = fold; + + setCommentProp(); +} + + +// Set the "fold.comment" property. +void QsciLexerPerl::setCommentProp() +{ + emit propertyChanged("fold.comment",(fold_comments ? "1" : "0")); +} + + +// Return true if folds are compact. +bool QsciLexerPerl::foldCompact() const +{ + return fold_compact; +} + + +// Set if folds are compact +void QsciLexerPerl::setFoldCompact(bool fold) +{ + fold_compact = fold; + + setCompactProp(); +} + + +// Set the "fold.compact" property. +void QsciLexerPerl::setCompactProp() +{ + emit propertyChanged("fold.compact",(fold_compact ? "1" : "0")); +} + + +// Return true if packages can be folded. +bool QsciLexerPerl::foldPackages() const +{ + return fold_packages; +} + + +// Set if packages can be folded. +void QsciLexerPerl::setFoldPackages(bool fold) +{ + fold_packages = fold; + + setPackagesProp(); +} + + +// Set the "fold.perl.package" property. +void QsciLexerPerl::setPackagesProp() +{ + emit propertyChanged("fold.perl.package",(fold_packages ? "1" : "0")); +} + + +// Return true if POD blocks can be folded. +bool QsciLexerPerl::foldPODBlocks() const +{ + return fold_pod_blocks; +} + + +// Set if POD blocks can be folded. +void QsciLexerPerl::setFoldPODBlocks(bool fold) +{ + fold_pod_blocks = fold; + + setPODBlocksProp(); +} + + +// Set the "fold.perl.pod" property. +void QsciLexerPerl::setPODBlocksProp() +{ + emit propertyChanged("fold.perl.pod",(fold_pod_blocks ? "1" : "0")); +} + + +// Set if else can be folded. +void QsciLexerPerl::setFoldAtElse(bool fold) +{ + fold_atelse = fold; + + setAtElseProp(); +} + + +// Set the "fold.perl.at.else" property. +void QsciLexerPerl::setAtElseProp() +{ + emit propertyChanged("fold.perl.at.else",(fold_atelse ? "1" : "0")); +} diff --git a/libs/qscintilla_2.14.1/Qt5Qt6/qscilexerpo.cpp b/libs/qscintilla_2.14.1/Qt5Qt6/qscilexerpo.cpp new file mode 100644 index 000000000..85192593a --- /dev/null +++ b/libs/qscintilla_2.14.1/Qt5Qt6/qscilexerpo.cpp @@ -0,0 +1,223 @@ +// This module implements the QsciLexerPO class. +// +// Copyright (c) 2023 Riverbank Computing Limited +// +// This file is part of QScintilla. +// +// This file may be used under the terms of the GNU General Public License +// version 3.0 as published by the Free Software Foundation and appearing in +// the file LICENSE included in the packaging of this file. Please review the +// following information to ensure the GNU General Public License version 3.0 +// requirements will be met: http://www.gnu.org/copyleft/gpl.html. +// +// If you do not wish to use this file under the terms of the GPL version 3.0 +// then you may purchase a commercial license. For more information contact +// info@riverbankcomputing.com. +// +// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + + +#include "Qsci/qscilexerpo.h" + +#include +#include +#include + + +// The ctor. +QsciLexerPO::QsciLexerPO(QObject *parent) + : QsciLexer(parent), fold_comments(false), fold_compact(true) +{ +} + + +// The dtor. +QsciLexerPO::~QsciLexerPO() +{ +} + + +// Returns the language name. +const char *QsciLexerPO::language() const +{ + return "PO"; +} + + +// Returns the lexer name. +const char *QsciLexerPO::lexer() const +{ + return "po"; +} + + +// Returns the foreground colour of the text for a style. +QColor QsciLexerPO::defaultColor(int style) const +{ + switch (style) + { + case Comment: + return QColor(0x00, 0x7f, 0x00); + } + + return QsciLexer::defaultColor(style); +} + + +// Returns the font of the text for a style. +QFont QsciLexerPO::defaultFont(int style) const +{ + QFont f; + + switch (style) + { + case Comment: +#if defined(Q_OS_WIN) + f = QFont("Comic Sans MS", 9); +#elif defined(Q_OS_MAC) + f = QFont("Georgia", 13); +#else + f = QFont("Bitstream Vera Serif", 9); +#endif + break; + + default: + f = QsciLexer::defaultFont(style); + } + + return f; +} + + +// Returns the user name of a style. +QString QsciLexerPO::description(int style) const +{ + switch (style) + { + case Default: + return tr("Default"); + + case Comment: + return tr("Comment"); + + case MessageId: + return tr("Message identifier"); + + case MessageIdText: + return tr("Message identifier text"); + + case MessageString: + return tr("Message string"); + + case MessageStringText: + return tr("Message string text"); + + case MessageContext: + return tr("Message context"); + + case MessageContextText: + return tr("Message context text"); + + case Fuzzy: + return tr("Fuzzy flag"); + + case ProgrammerComment: + return tr("Programmer comment"); + + case Reference: + return tr("Reference"); + + case Flags: + return tr("Flags"); + + case MessageIdTextEOL: + return tr("Message identifier text end-of-line"); + + case MessageStringTextEOL: + return tr("Message string text end-of-line"); + + case MessageContextTextEOL: + return tr("Message context text end-of-line"); + } + + return QString(); +} + + +// Refresh all properties. +void QsciLexerPO::refreshProperties() +{ + setCommentProp(); + setCompactProp(); +} + + +// Read properties from the settings. +bool QsciLexerPO::readProperties(QSettings &qs,const QString &prefix) +{ + int rc = true; + + fold_comments = qs.value(prefix + "foldcomments", false).toBool(); + fold_compact = qs.value(prefix + "foldcompact", true).toBool(); + + return rc; +} + + +// Write properties to the settings. +bool QsciLexerPO::writeProperties(QSettings &qs,const QString &prefix) const +{ + int rc = true; + + qs.setValue(prefix + "foldcomments", fold_comments); + qs.setValue(prefix + "foldcompact", fold_compact); + + return rc; +} + + +// Return true if comments can be folded. +bool QsciLexerPO::foldComments() const +{ + return fold_comments; +} + + +// Set if comments can be folded. +void QsciLexerPO::setFoldComments(bool fold) +{ + fold_comments = fold; + + setCommentProp(); +} + + +// Set the "fold.comment" property. +void QsciLexerPO::setCommentProp() +{ + emit propertyChanged("fold.comment",(fold_comments ? "1" : "0")); +} + + +// Return true if folds are compact. +bool QsciLexerPO::foldCompact() const +{ + return fold_compact; +} + + +// Set if folds are compact +void QsciLexerPO::setFoldCompact(bool fold) +{ + fold_compact = fold; + + setCompactProp(); +} + + +// Set the "fold.compact" property. +void QsciLexerPO::setCompactProp() +{ + emit propertyChanged("fold.compact",(fold_compact ? "1" : "0")); +} diff --git a/libs/qscintilla_2.14.1/Qt5Qt6/qscilexerpostscript.cpp b/libs/qscintilla_2.14.1/Qt5Qt6/qscilexerpostscript.cpp new file mode 100644 index 000000000..12c7ed896 --- /dev/null +++ b/libs/qscintilla_2.14.1/Qt5Qt6/qscilexerpostscript.cpp @@ -0,0 +1,448 @@ +// This module implements the QsciLexerPostScript class. +// +// Copyright (c) 2023 Riverbank Computing Limited +// +// This file is part of QScintilla. +// +// This file may be used under the terms of the GNU General Public License +// version 3.0 as published by the Free Software Foundation and appearing in +// the file LICENSE included in the packaging of this file. Please review the +// following information to ensure the GNU General Public License version 3.0 +// requirements will be met: http://www.gnu.org/copyleft/gpl.html. +// +// If you do not wish to use this file under the terms of the GPL version 3.0 +// then you may purchase a commercial license. For more information contact +// info@riverbankcomputing.com. +// +// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + + +#include "Qsci/qscilexerpostscript.h" + +#include +#include +#include + + +// The ctor. +QsciLexerPostScript::QsciLexerPostScript(QObject *parent) + : QsciLexer(parent), + ps_tokenize(false), ps_level(3), fold_compact(true), fold_atelse(false) +{ +} + + +// The dtor. +QsciLexerPostScript::~QsciLexerPostScript() +{ +} + + +// Returns the language name. +const char *QsciLexerPostScript::language() const +{ + return "PostScript"; +} + + +// Returns the lexer name. +const char *QsciLexerPostScript::lexer() const +{ + return "ps"; +} + + +// Return the style used for braces. +int QsciLexerPostScript::braceStyle() const +{ + return ProcedureParenthesis; +} + + +// Returns the foreground colour of the text for a style. +QColor QsciLexerPostScript::defaultColor(int style) const +{ + switch (style) + { + case Comment: + return QColor(0x00,0x7f,0x00); + + case DSCComment: + return QColor(0x3f,0x70,0x3f); + + case DSCCommentValue: + case DictionaryParenthesis: + return QColor(0x30,0x60,0xa0); + + case Number: + return QColor(0x00,0x7f,0x7f); + + case Name: + case ProcedureParenthesis: + return QColor(0x00,0x00,0x00); + + case Keyword: + case ArrayParenthesis: + return QColor(0x00,0x00,0x7f); + + case Literal: + case ImmediateEvalLiteral: + return QColor(0x7f,0x7f,0x00); + + case Text: + case Base85String: + return QColor(0x7f,0x00,0x7f); + + case HexString: + return QColor(0x3f,0x7f,0x3f); + + case BadStringCharacter: + return QColor(0xff,0xff,0x00); + } + + return QsciLexer::defaultColor(style); +} + + +// Returns the font of the text for a style. +QFont QsciLexerPostScript::defaultFont(int style) const +{ + QFont f; + + switch (style) + { + case Comment: + case DSCComment: + case DSCCommentValue: +#if defined(Q_OS_WIN) + f = QFont("Comic Sans MS",9); +#elif defined(Q_OS_MAC) + f = QFont("Comic Sans MS", 12); +#else + f = QFont("Bitstream Vera Serif",9); +#endif + break; + + case Keyword: + case ProcedureParenthesis: + f = QsciLexer::defaultFont(style); + f.setBold(true); + + case Text: +#if defined(Q_OS_WIN) + f = QFont("Times New Roman", 11); +#elif defined(Q_OS_MAC) + f = QFont("Times New Roman", 12); +#else + f = QFont("Bitstream Charter", 10); +#endif + break; + + default: + f = QsciLexer::defaultFont(style); + } + + return f; +} + + +// Returns the set of keywords. +const char *QsciLexerPostScript::keywords(int set) const +{ + if (set == 1) + return + "$error = == FontDirectory StandardEncoding UserObjects abs add " + "aload anchorsearch and arc arcn arcto array ashow astore atan " + "awidthshow begin bind bitshift bytesavailable cachestatus " + "ceiling charpath clear cleardictstack cleartomark clip clippath " + "closefile closepath concat concatmatrix copy copypage cos count " + "countdictstack countexecstack counttomark currentcmykcolor " + "currentcolorspace currentdash currentdict currentfile " + "currentflat currentfont currentgray currenthsbcolor " + "currentlinecap currentlinejoin currentlinewidth currentmatrix " + "currentmiterlimit currentpagedevice currentpoint currentrgbcolor " + "currentscreen currenttransfer cvi cvlit cvn cvr cvrs cvs cvx def " + "defaultmatrix definefont dict dictstack div dtransform dup echo " + "end eoclip eofill eq erasepage errordict exch exec execstack " + "executeonly executive exit exp false file fill findfont " + "flattenpath floor flush flushfile for forall ge get getinterval " + "grestore grestoreall gsave gt idetmatrix idiv idtransform if " + "ifelse image imagemask index initclip initgraphics initmatrix " + "inustroke invertmatrix itransform known kshow le length lineto " + "ln load log loop lt makefont mark matrix maxlength mod moveto " + "mul ne neg newpath noaccess nor not null nulldevice or pathbbox " + "pathforall pop print prompt pstack put putinterval quit rand " + "rcheck rcurveto read readhexstring readline readonly readstring " + "rectstroke repeat resetfile restore reversepath rlineto rmoveto " + "roll rotate round rrand run save scale scalefont search " + "setblackgeneration setcachedevice setcachelimit setcharwidth " + "setcolorscreen setcolortransfer setdash setflat setfont setgray " + "sethsbcolor setlinecap setlinejoin setlinewidth setmatrix " + "setmiterlimit setpagedevice setrgbcolor setscreen settransfer " + "setvmthreshold show showpage sin sqrt srand stack start status " + "statusdict stop stopped store string stringwidth stroke " + "strokepath sub systemdict token token transform translate true " + "truncate type ueofill undefineresource userdict usertime version " + "vmstatus wcheck where widthshow write writehexstring writestring " + "xcheck xor"; + + if (set == 2) + return + "GlobalFontDirectory ISOLatin1Encoding SharedFontDirectory " + "UserObject arct colorimage cshow currentblackgeneration " + "currentcacheparams currentcmykcolor currentcolor " + "currentcolorrendering currentcolorscreen currentcolorspace " + "currentcolortransfer currentdevparams currentglobal " + "currentgstate currenthalftone currentobjectformat " + "currentoverprint currentpacking currentpagedevice currentshared " + "currentstrokeadjust currentsystemparams currentundercolorremoval " + "currentuserparams defineresource defineuserobject deletefile " + "execform execuserobject filenameforall fileposition filter " + "findencoding findresource gcheck globaldict glyphshow gstate " + "ineofill infill instroke inueofill inufill inustroke " + "languagelevel makepattern packedarray printobject product " + "realtime rectclip rectfill rectstroke renamefile resourceforall " + "resourcestatus revision rootfont scheck selectfont serialnumber " + "setbbox setblackgeneration setcachedevice2 setcacheparams " + "setcmykcolor setcolor setcolorrendering setcolorscreen " + "setcolorspace setcolortranfer setdevparams setfileposition " + "setglobal setgstate sethalftone setobjectformat setoverprint " + "setpacking setpagedevice setpattern setshared setstrokeadjust " + "setsystemparams setucacheparams setundercolorremoval " + "setuserparams setvmthreshold shareddict startjob uappend ucache " + "ucachestatus ueofill ufill undef undefinefont undefineresource " + "undefineuserobject upath ustroke ustrokepath vmreclaim " + "writeobject xshow xyshow yshow"; + + if (set == 3) + return + "cliprestore clipsave composefont currentsmoothness " + "findcolorrendering setsmoothness shfill"; + + if (set == 4) + return + ".begintransparencygroup .begintransparencymask .bytestring " + ".charboxpath .currentaccuratecurves .currentblendmode " + ".currentcurvejoin .currentdashadapt .currentdotlength " + ".currentfilladjust2 .currentlimitclamp .currentopacityalpha " + ".currentoverprintmode .currentrasterop .currentshapealpha " + ".currentsourcetransparent .currenttextknockout " + ".currenttexturetransparent .dashpath .dicttomark " + ".discardtransparencygroup .discardtransparencymask " + ".endtransparencygroup .endtransparencymask .execn .filename " + ".filename .fileposition .forceput .forceundef .forgetsave " + ".getbitsrect .getdevice .inittransparencymask .knownget " + ".locksafe .makeoperator .namestring .oserrno .oserrorstring " + ".peekstring .rectappend .runandhide .setaccuratecurves " + ".setblendmode .setcurvejoin .setdashadapt .setdebug " + ".setdefaultmatrix .setdotlength .setfilladjust2 .setlimitclamp " + ".setmaxlength .setopacityalpha .setoverprintmode .setrasterop " + ".setsafe .setshapealpha .setsourcetransparent .settextknockout " + ".settexturetransparent .stringbreak .stringmatch .tempfile " + ".type1decrypt .type1encrypt .type1execchar .unread arccos " + "arcsin copydevice copyscanlines currentdevice finddevice " + "findlibfile findprotodevice flushpage getdeviceprops getenv " + "makeimagedevice makewordimagedevice max min putdeviceprops " + "setdevice"; + + return 0; +} + + +// Returns the user name of a style. +QString QsciLexerPostScript::description(int style) const +{ + switch (style) + { + case Default: + return tr("Default"); + + case Comment: + return tr("Comment"); + + case DSCComment: + return tr("DSC comment"); + + case DSCCommentValue: + return tr("DSC comment value"); + + case Number: + return tr("Number"); + + case Name: + return tr("Name"); + + case Keyword: + return tr("Keyword"); + + case Literal: + return tr("Literal"); + + case ImmediateEvalLiteral: + return tr("Immediately evaluated literal"); + + case ArrayParenthesis: + return tr("Array parenthesis"); + + case DictionaryParenthesis: + return tr("Dictionary parenthesis"); + + case ProcedureParenthesis: + return tr("Procedure parenthesis"); + + case Text: + return tr("Text"); + + case HexString: + return tr("Hexadecimal string"); + + case Base85String: + return tr("Base85 string"); + + case BadStringCharacter: + return tr("Bad string character"); + } + + return QString(); +} + + +// Returns the background colour of the text for a style. +QColor QsciLexerPostScript::defaultPaper(int style) const +{ + if (style == BadStringCharacter) + return QColor(0xff,0x00,0x00); + + return QsciLexer::defaultPaper(style); +} + + +// Refresh all properties. +void QsciLexerPostScript::refreshProperties() +{ + setTokenizeProp(); + setLevelProp(); + setCompactProp(); + setAtElseProp(); +} + + +// Read properties from the settings. +bool QsciLexerPostScript::readProperties(QSettings &qs,const QString &prefix) +{ + int rc = true; + + ps_tokenize = qs.value(prefix + "pstokenize", false).toBool(); + ps_level = qs.value(prefix + "pslevel", 3).toInt(); + fold_compact = qs.value(prefix + "foldcompact", true).toBool(); + fold_atelse = qs.value(prefix + "foldatelse", false).toBool(); + + return rc; +} + + +// Write properties to the settings. +bool QsciLexerPostScript::writeProperties(QSettings &qs,const QString &prefix) const +{ + int rc = true; + + qs.setValue(prefix + "pstokenize", ps_tokenize); + qs.setValue(prefix + "pslevel", ps_level); + qs.setValue(prefix + "foldcompact", fold_compact); + qs.setValue(prefix + "foldatelse", fold_atelse); + + return rc; +} + + +// Return true if tokens are marked. +bool QsciLexerPostScript::tokenize() const +{ + return ps_tokenize; +} + + +// Set if tokens are marked. +void QsciLexerPostScript::setTokenize(bool tokenize) +{ + ps_tokenize = tokenize; + + setTokenizeProp(); +} + + +// Set the "ps.tokenize" property. +void QsciLexerPostScript::setTokenizeProp() +{ + emit propertyChanged("ps.tokenize",(ps_tokenize ? "1" : "0")); +} + + +// Return the PostScript level. +int QsciLexerPostScript::level() const +{ + return ps_level; +} + + +// Set the PostScript level. +void QsciLexerPostScript::setLevel(int level) +{ + ps_level = level; + + setLevelProp(); +} + + +// Set the "ps.level" property. +void QsciLexerPostScript::setLevelProp() +{ + emit propertyChanged("ps.level", QByteArray::number(ps_level)); +} + + +// Return true if folds are compact. +bool QsciLexerPostScript::foldCompact() const +{ + return fold_compact; +} + + +// Set if folds are compact +void QsciLexerPostScript::setFoldCompact(bool fold) +{ + fold_compact = fold; + + setCompactProp(); +} + + +// Set the "fold.compact" property. +void QsciLexerPostScript::setCompactProp() +{ + emit propertyChanged("fold.compact",(fold_compact ? "1" : "0")); +} + + +// Return true if else blocks can be folded. +bool QsciLexerPostScript::foldAtElse() const +{ + return fold_atelse; +} + + +// Set if else blocks can be folded. +void QsciLexerPostScript::setFoldAtElse(bool fold) +{ + fold_atelse = fold; + + setAtElseProp(); +} + + +// Set the "fold.at.else" property. +void QsciLexerPostScript::setAtElseProp() +{ + emit propertyChanged("fold.at.else",(fold_atelse ? "1" : "0")); +} diff --git a/libs/qscintilla_2.14.1/Qt5Qt6/qscilexerpov.cpp b/libs/qscintilla_2.14.1/Qt5Qt6/qscilexerpov.cpp new file mode 100644 index 000000000..c93a4726f --- /dev/null +++ b/libs/qscintilla_2.14.1/Qt5Qt6/qscilexerpov.cpp @@ -0,0 +1,464 @@ +// This module implements the QsciLexerPOV class. +// +// Copyright (c) 2023 Riverbank Computing Limited +// +// This file is part of QScintilla. +// +// This file may be used under the terms of the GNU General Public License +// version 3.0 as published by the Free Software Foundation and appearing in +// the file LICENSE included in the packaging of this file. Please review the +// following information to ensure the GNU General Public License version 3.0 +// requirements will be met: http://www.gnu.org/copyleft/gpl.html. +// +// If you do not wish to use this file under the terms of the GPL version 3.0 +// then you may purchase a commercial license. For more information contact +// info@riverbankcomputing.com. +// +// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + + +#include "Qsci/qscilexerpov.h" + +#include +#include +#include + + +// The ctor. +QsciLexerPOV::QsciLexerPOV(QObject *parent) + : QsciLexer(parent), + fold_comments(false), fold_compact(true), fold_directives(false) +{ +} + + +// The dtor. +QsciLexerPOV::~QsciLexerPOV() +{ +} + + +// Returns the language name. +const char *QsciLexerPOV::language() const +{ + return "POV"; +} + + +// Returns the lexer name. +const char *QsciLexerPOV::lexer() const +{ + return "pov"; +} + + +// Return the style used for braces. +int QsciLexerPOV::braceStyle() const +{ + return Operator; +} + + +// Return the string of characters that comprise a word. +const char *QsciLexerPOV::wordCharacters() const +{ + return "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_#"; +} + + +// Returns the foreground colour of the text for a style. +QColor QsciLexerPOV::defaultColor(int style) const +{ + switch (style) + { + case Default: + return QColor(0xff,0x00,0x80); + + case Comment: + case CommentLine: + return QColor(0x00,0x7f,0x00); + + case Number: + return QColor(0x00,0x7f,0x7f); + + case Operator: + return QColor(0x00,0x00,0x00); + + case String: + return QColor(0x7f,0x00,0x7f); + + case Directive: + return QColor(0x7f,0x7f,0x00); + + case BadDirective: + return QColor(0x80,0x40,0x20); + + case ObjectsCSGAppearance: + case TypesModifiersItems: + case PredefinedIdentifiers: + case PredefinedFunctions: + case KeywordSet6: + case KeywordSet7: + case KeywordSet8: + return QColor(0x00,0x00,0x7f); + } + + return QsciLexer::defaultColor(style); +} + + +// Returns the end-of-line fill for a style. +bool QsciLexerPOV::defaultEolFill(int style) const +{ + if (style == UnclosedString) + return true; + + return QsciLexer::defaultEolFill(style); +} + + +// Returns the font of the text for a style. +QFont QsciLexerPOV::defaultFont(int style) const +{ + QFont f; + + switch (style) + { + case Comment: + case CommentLine: +#if defined(Q_OS_WIN) + f = QFont("Comic Sans MS",9); +#elif defined(Q_OS_MAC) + f = QFont("Comic Sans MS", 12); +#else + f = QFont("Bitstream Vera Serif",9); +#endif + break; + + case UnclosedString: + case PredefinedIdentifiers: + f = QsciLexer::defaultFont(style); + f.setBold(true); + break; + + case BadDirective: +#if defined(Q_OS_WIN) + f = QFont("Comic Sans MS",9); +#elif defined(Q_OS_MAC) + f = QFont("Comic Sans MS", 12); +#else + f = QFont("Bitstream Vera Serif",9); +#endif + f.setItalic(true); + break; + + default: + f = QsciLexer::defaultFont(style); + } + + return f; +} + + +// Returns the set of keywords. +const char *QsciLexerPOV::keywords(int set) const +{ + if (set == 1) + return + "declare local include undef fopen fclose read write " + "default version case range break debug error " + "warning if ifdef ifndef switch while macro else end"; + + if (set == 2) + return + "camera light_source light_group object blob sphere " + "cylinder box cone height_field julia_fractal lathe " + "prism sphere_sweep superellipsoid sor text torus " + "bicubic_patch disc mesh mesh2 polygon triangle " + "smooth_triangle plane poly cubic quartic quadric " + "isosurface parametric union intersection difference " + "merge function array spline vertex_vectors " + "normal_vectors uv_vectors face_indices " + "normal_indices uv_indices texture texture_list " + "interior_texture texture_map material_map image_map " + "color_map colour_map pigment_map normal_map " + "slope_map bump_map density_map pigment normal " + "material interior finish reflection irid slope " + "pigment_pattern image_pattern warp media scattering " + "density background fog sky_sphere rainbow " + "global_settings radiosity photons pattern transform " + "looks_like projected_through contained_by " + "clipped_by bounded_by"; + + if (set == 3) + return + "linear_spline quadratic_spline cubic_spline " + "natural_spline bezier_spline b_spline read write " + "append inverse open perspective orthographic " + "fisheye ultra_wide_angle omnimax panoramic " + "spherical spotlight jitter circular orient " + "media_attenuation media_interaction shadowless " + "parallel refraction collect pass_through " + "global_lights hierarchy sturm smooth gif tga iff " + "pot png pgm ppm jpeg tiff sys ttf quaternion " + "hypercomplex linear_sweep conic_sweep type " + "all_intersections split_union cutaway_textures " + "no_shadow no_image no_reflection double_illuminate " + "hollow uv_mapping all use_index use_color " + "use_colour no_bump_scale conserve_energy fresnel " + "average agate boxed bozo bumps cells crackle " + "cylindrical density_file dents facets granite " + "leopard marble onion planar quilted radial ripples " + "spotted waves wood wrinkles solid use_alpha " + "interpolate magnet noise_generator toroidal " + "ramp_wave triangle_wave sine_wave scallop_wave " + "cubic_wave poly_wave once map_type method fog_type " + "hf_gray_16 charset ascii utf8 rotate scale " + "translate matrix location right up direction sky " + "angle look_at aperture blur_samples focal_point " + "confidence variance radius falloff tightness " + "point_at area_light adaptive fade_distance " + "fade_power threshold strength water_level tolerance " + "max_iteration precision slice u_steps v_steps " + "flatness inside_vector accuracy max_gradient " + "evaluate max_trace precompute target ior dispersion " + "dispersion_samples caustics color colour rgb rgbf " + "rgbt rgbft red green blue filter transmit gray hf " + "fade_color fade_colour quick_color quick_colour " + "brick checker hexagon brick_size mortar bump_size " + "ambient diffuse brilliance crand phong phong_size " + "metallic specular roughness reflection_exponent " + "exponent thickness gradient spiral1 spiral2 " + "agate_turb form metric offset df3 coords size " + "mandel exterior julia control0 control1 altitude " + "turbulence octaves omega lambda repeat flip " + "black-hole orientation dist_exp major_radius " + "frequency phase intervals samples ratio absorption " + "emission aa_threshold aa_level eccentricity " + "extinction distance turb_depth fog_offset fog_alt " + "width arc_angle falloff_angle adc_bailout " + "ambient_light assumed_gamma irid_wavelength " + "number_of_waves always_sample brigthness count " + "error_bound gray_threshold load_file " + "low_error_factor max_sample minimum_reuse " + "nearest_count pretrace_end pretrace_start " + "recursion_limit save_file spacing gather " + "max_trace_level autostop expand_thresholds"; + + if (set == 4) + return + "x y z t u v yes no true false on off clock " + "clock_delta clock_on final_clock final_frame " + "frame_number image_height image_width initial_clock " + "initial_frame pi version"; + + if (set == 5) + return + "abs acos acosh asc asin asinh atan atanh atan2 ceil " + "cos cosh defined degrees dimensions dimension_size " + "div exp file_exists floor inside int ln log max min " + "mod pow prod radians rand seed select sin sinh sqrt " + "strcmp strlen sum tan tanh val vdot vlength " + "min_extent max_extent trace vaxis_rotate vcross " + "vrotate vnormalize vturbulence chr concat str " + "strlwr strupr substr vstr sqr cube reciprocal pwr"; + + return 0; +} + + +// Returns the user name of a style. +QString QsciLexerPOV::description(int style) const +{ + switch (style) + { + case Default: + return tr("Default"); + + case Comment: + return tr("Comment"); + + case CommentLine: + return tr("Comment line"); + + case Number: + return tr("Number"); + + case Operator: + return tr("Operator"); + + case Identifier: + return tr("Identifier"); + + case String: + return tr("String"); + + case UnclosedString: + return tr("Unclosed string"); + + case Directive: + return tr("Directive"); + + case BadDirective: + return tr("Bad directive"); + + case ObjectsCSGAppearance: + return tr("Objects, CSG and appearance"); + + case TypesModifiersItems: + return tr("Types, modifiers and items"); + + case PredefinedIdentifiers: + return tr("Predefined identifiers"); + + case PredefinedFunctions: + return tr("Predefined functions"); + + case KeywordSet6: + return tr("User defined 1"); + + case KeywordSet7: + return tr("User defined 2"); + + case KeywordSet8: + return tr("User defined 3"); + } + + return QString(); +} + + +// Returns the background colour of the text for a style. +QColor QsciLexerPOV::defaultPaper(int style) const +{ + switch (style) + { + case UnclosedString: + return QColor(0xe0,0xc0,0xe0); + + case ObjectsCSGAppearance: + return QColor(0xff,0xd0,0xd0); + + case TypesModifiersItems: + return QColor(0xff,0xff,0xd0); + + case PredefinedFunctions: + return QColor(0xd0,0xd0,0xff); + + case KeywordSet6: + return QColor(0xd0,0xff,0xd0); + + case KeywordSet7: + return QColor(0xd0,0xd0,0xd0); + + case KeywordSet8: + return QColor(0xe0,0xe0,0xe0); + } + + return QsciLexer::defaultPaper(style); +} + + +// Refresh all properties. +void QsciLexerPOV::refreshProperties() +{ + setCommentProp(); + setCompactProp(); + setDirectiveProp(); +} + + +// Read properties from the settings. +bool QsciLexerPOV::readProperties(QSettings &qs,const QString &prefix) +{ + int rc = true; + + fold_comments = qs.value(prefix + "foldcomments", false).toBool(); + fold_compact = qs.value(prefix + "foldcompact", true).toBool(); + fold_directives = qs.value(prefix + "folddirectives", false).toBool(); + + return rc; +} + + +// Write properties to the settings. +bool QsciLexerPOV::writeProperties(QSettings &qs,const QString &prefix) const +{ + int rc = true; + + qs.setValue(prefix + "foldcomments", fold_comments); + qs.setValue(prefix + "foldcompact", fold_compact); + qs.setValue(prefix + "folddirectives", fold_directives); + + return rc; +} + + +// Return true if comments can be folded. +bool QsciLexerPOV::foldComments() const +{ + return fold_comments; +} + + +// Set if comments can be folded. +void QsciLexerPOV::setFoldComments(bool fold) +{ + fold_comments = fold; + + setCommentProp(); +} + + +// Set the "fold.comment" property. +void QsciLexerPOV::setCommentProp() +{ + emit propertyChanged("fold.comment",(fold_comments ? "1" : "0")); +} + + +// Return true if folds are compact. +bool QsciLexerPOV::foldCompact() const +{ + return fold_compact; +} + + +// Set if folds are compact +void QsciLexerPOV::setFoldCompact(bool fold) +{ + fold_compact = fold; + + setCompactProp(); +} + + +// Set the "fold.compact" property. +void QsciLexerPOV::setCompactProp() +{ + emit propertyChanged("fold.compact",(fold_compact ? "1" : "0")); +} + + +// Return true if directives can be folded. +bool QsciLexerPOV::foldDirectives() const +{ + return fold_directives; +} + + +// Set if directives can be folded. +void QsciLexerPOV::setFoldDirectives(bool fold) +{ + fold_directives = fold; + + setDirectiveProp(); +} + + +// Set the "fold.directive" property. +void QsciLexerPOV::setDirectiveProp() +{ + emit propertyChanged("fold.directive",(fold_directives ? "1" : "0")); +} diff --git a/libs/qscintilla_2.14.1/Qt5Qt6/qscilexerproperties.cpp b/libs/qscintilla_2.14.1/Qt5Qt6/qscilexerproperties.cpp new file mode 100644 index 000000000..0c547c94d --- /dev/null +++ b/libs/qscintilla_2.14.1/Qt5Qt6/qscilexerproperties.cpp @@ -0,0 +1,213 @@ +// This module implements the QsciLexerProperties class. +// +// Copyright (c) 2023 Riverbank Computing Limited +// +// This file is part of QScintilla. +// +// This file may be used under the terms of the GNU General Public License +// version 3.0 as published by the Free Software Foundation and appearing in +// the file LICENSE included in the packaging of this file. Please review the +// following information to ensure the GNU General Public License version 3.0 +// requirements will be met: http://www.gnu.org/copyleft/gpl.html. +// +// If you do not wish to use this file under the terms of the GPL version 3.0 +// then you may purchase a commercial license. For more information contact +// info@riverbankcomputing.com. +// +// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + + +#include "Qsci/qscilexerproperties.h" + +#include +#include +#include + + +// The ctor. +QsciLexerProperties::QsciLexerProperties(QObject *parent) + : QsciLexer(parent), fold_compact(true), initial_spaces(true) +{ +} + + +// The dtor. +QsciLexerProperties::~QsciLexerProperties() +{ +} + + +// Returns the language name. +const char *QsciLexerProperties::language() const +{ + return "Properties"; +} + + +// Returns the lexer name. +const char *QsciLexerProperties::lexer() const +{ + return "props"; +} + + +// Return the string of characters that comprise a word. +const char *QsciLexerProperties::wordCharacters() const +{ + return "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-"; +} + + +// Returns the foreground colour of the text for a style. +QColor QsciLexerProperties::defaultColor(int style) const +{ + switch (style) + { + case Comment: + return QColor(0x00,0x7f,0x7f); + + case Section: + return QColor(0x7f,0x00,0x7f); + + case Assignment: + return QColor(0xb0,0x60,0x00); + + case DefaultValue: + return QColor(0x7f,0x7f,0x00); + } + + return QsciLexer::defaultColor(style); +} + + +// Returns the end-of-line fill for a style. +bool QsciLexerProperties::defaultEolFill(int style) const +{ + if (style == Section) + return true; + + return QsciLexer::defaultEolFill(style); +} + + +// Returns the font of the text for a style. +QFont QsciLexerProperties::defaultFont(int style) const +{ + QFont f; + + if (style == Comment) +#if defined(Q_OS_WIN) + f = QFont("Comic Sans MS",9); +#elif defined(Q_OS_MAC) + f = QFont("Comic Sans MS", 12); +#else + f = QFont("Bitstream Vera Serif",9); +#endif + else + f = QsciLexer::defaultFont(style); + + return f; +} + + +// Returns the user name of a style. +QString QsciLexerProperties::description(int style) const +{ + switch (style) + { + case Default: + return tr("Default"); + + case Comment: + return tr("Comment"); + + case Section: + return tr("Section"); + + case Assignment: + return tr("Assignment"); + + case DefaultValue: + return tr("Default value"); + + case Key: + return tr("Key"); + } + + return QString(); +} + + +// Returns the background colour of the text for a style. +QColor QsciLexerProperties::defaultPaper(int style) const +{ + if (style == Section) + return QColor(0xe0,0xf0,0xf0); + + return QsciLexer::defaultPaper(style); +} + + +// Refresh all properties. +void QsciLexerProperties::refreshProperties() +{ + setCompactProp(); + setInitialSpacesProp(); +} + + +// Read properties from the settings. +bool QsciLexerProperties::readProperties(QSettings &qs,const QString &prefix) +{ + int rc = true; + + fold_compact = qs.value(prefix + "foldcompact", true).toBool(); + initial_spaces = qs.value(prefix + "initialspaces", true).toBool(); + + return rc; +} + + +// Write properties to the settings. +bool QsciLexerProperties::writeProperties(QSettings &qs,const QString &prefix) const +{ + int rc = true; + + qs.setValue(prefix + "foldcompact", fold_compact); + qs.setValue(prefix + "initialspaces", initial_spaces); + + return rc; +} + + +// Set if folds are compact +void QsciLexerProperties::setFoldCompact(bool fold) +{ + fold_compact = fold; + + setCompactProp(); +} + + +// Set the "fold.compact" property. +void QsciLexerProperties::setCompactProp() +{ + emit propertyChanged("fold.compact", (fold_compact ? "1" : "0")); +} + + +// Set if initial spaces are allowed. +void QsciLexerProperties::setInitialSpaces(bool enable) +{ + initial_spaces = enable; + + setInitialSpacesProp(); +} + + +// Set the "lexer.props.allow.initial.spaces" property. +void QsciLexerProperties::setInitialSpacesProp() +{ + emit propertyChanged("lexer.props.allow.initial.spaces", (fold_compact ? "1" : "0")); +} diff --git a/libs/qscintilla/Qt4Qt5/qscilexerpython.cpp b/libs/qscintilla_2.14.1/Qt5Qt6/qscilexerpython.cpp similarity index 99% rename from libs/qscintilla/Qt4Qt5/qscilexerpython.cpp rename to libs/qscintilla_2.14.1/Qt5Qt6/qscilexerpython.cpp index a054aaf95..82f86a942 100644 --- a/libs/qscintilla/Qt4Qt5/qscilexerpython.cpp +++ b/libs/qscintilla_2.14.1/Qt5Qt6/qscilexerpython.cpp @@ -1,6 +1,6 @@ // This module implements the QsciLexerPython class. // -// Copyright (c) 2019 Riverbank Computing Limited +// Copyright (c) 2023 Riverbank Computing Limited // // This file is part of QScintilla. // diff --git a/libs/qscintilla_2.14.1/Qt5Qt6/qscilexerruby.cpp b/libs/qscintilla_2.14.1/Qt5Qt6/qscilexerruby.cpp new file mode 100644 index 000000000..6165a710d --- /dev/null +++ b/libs/qscintilla_2.14.1/Qt5Qt6/qscilexerruby.cpp @@ -0,0 +1,445 @@ +// This module implements the QsciLexerRuby class. +// +// Copyright (c) 2023 Riverbank Computing Limited +// +// This file is part of QScintilla. +// +// This file may be used under the terms of the GNU General Public License +// version 3.0 as published by the Free Software Foundation and appearing in +// the file LICENSE included in the packaging of this file. Please review the +// following information to ensure the GNU General Public License version 3.0 +// requirements will be met: http://www.gnu.org/copyleft/gpl.html. +// +// If you do not wish to use this file under the terms of the GPL version 3.0 +// then you may purchase a commercial license. For more information contact +// info@riverbankcomputing.com. +// +// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + + +#include "Qsci/qscilexerruby.h" + +#include +#include +#include + + +// The ctor. +QsciLexerRuby::QsciLexerRuby(QObject *parent) + : QsciLexer(parent), fold_comments(false), fold_compact(true) +{ +} + + +// The dtor. +QsciLexerRuby::~QsciLexerRuby() +{ +} + + +// Returns the language name. +const char *QsciLexerRuby::language() const +{ + return "Ruby"; +} + + +// Returns the lexer name. +const char *QsciLexerRuby::lexer() const +{ + return "ruby"; +} + + +// Return the list of words that can start a block. +const char *QsciLexerRuby::blockStart(int *style) const +{ + if (style) + *style = Keyword; + + return "do"; +} + + +// Return the list of words that can start end a block. +const char *QsciLexerRuby::blockEnd(int *style) const +{ + if (style) + *style = Keyword; + + return "end"; +} + + +// Return the list of words that can start end a block. +const char *QsciLexerRuby::blockStartKeyword(int *style) const +{ + if (style) + *style = Keyword; + + return "def class if do elsif else case while for"; +} + + +// Return the style used for braces. +int QsciLexerRuby::braceStyle() const +{ + return Operator; +} + + +// Returns the foreground colour of the text for a style. +QColor QsciLexerRuby::defaultColor(int style) const +{ + switch (style) + { + case Default: + return QColor(0x80,0x80,0x80); + + case Comment: + return QColor(0x00,0x7f,0x00); + + case POD: + return QColor(0x00,0x40,0x00); + + case Number: + case FunctionMethodName: + return QColor(0x00,0x7f,0x7f); + + case Keyword: + case DemotedKeyword: + return QColor(0x00,0x00,0x7f); + + case DoubleQuotedString: + case SingleQuotedString: + case HereDocument: + case PercentStringq: + case PercentStringQ: + return QColor(0x7f,0x00,0x7f); + + case ClassName: + return QColor(0x00,0x00,0xff); + + case Regex: + case HereDocumentDelimiter: + case PercentStringr: + case PercentStringw: + return QColor(0x00,0x00,0x00); + + case Global: + return QColor(0x80,0x00,0x80); + + case Symbol: + return QColor(0xc0,0xa0,0x30); + + case ModuleName: + return QColor(0xa0,0x00,0xa0); + + case InstanceVariable: + return QColor(0xb0,0x00,0x80); + + case ClassVariable: + return QColor(0x80,0x00,0xb0); + + case Backticks: + case PercentStringx: + return QColor(0xff,0xff,0x00); + + case DataSection: + return QColor(0x60,0x00,0x00); + } + + return QsciLexer::defaultColor(style); +} + + +// Returns the end-of-line fill for a style. +bool QsciLexerRuby::defaultEolFill(int style) const +{ + bool fill; + + switch (style) + { + case POD: + case DataSection: + case HereDocument: + fill = true; + break; + + default: + fill = QsciLexer::defaultEolFill(style); + } + + return fill; +} + + +// Returns the font of the text for a style. +QFont QsciLexerRuby::defaultFont(int style) const +{ + QFont f; + + switch (style) + { + case Comment: +#if defined(Q_OS_WIN) + f = QFont("Comic Sans MS",9); +#elif defined(Q_OS_MAC) + f = QFont("Comic Sans MS", 12); +#else + f = QFont("Bitstream Vera Serif",9); +#endif + break; + + case POD: + case DoubleQuotedString: + case SingleQuotedString: + case PercentStringq: + case PercentStringQ: +#if defined(Q_OS_WIN) + f = QFont("Courier New",10); +#elif defined(Q_OS_MAC) + f = QFont("Courier", 12); +#else + f = QFont("Bitstream Vera Sans Mono",9); +#endif + break; + + case Keyword: + case ClassName: + case FunctionMethodName: + case Operator: + case ModuleName: + case DemotedKeyword: + f = QsciLexer::defaultFont(style); + f.setBold(true); + break; + + default: + f = QsciLexer::defaultFont(style); + } + + return f; +} + + +// Returns the set of keywords. +const char *QsciLexerRuby::keywords(int set) const +{ + if (set == 1) + return + "__FILE__ and def end in or self unless __LINE__ " + "begin defined? ensure module redo super until BEGIN " + "break do false next rescue then when END case else " + "for nil require retry true while alias class elsif " + "if not return undef yield"; + + return 0; +} + + +// Returns the user name of a style. +QString QsciLexerRuby::description(int style) const +{ + switch (style) + { + case Default: + return tr("Default"); + + case Error: + return tr("Error"); + + case Comment: + return tr("Comment"); + + case POD: + return tr("POD"); + + case Number: + return tr("Number"); + + case Keyword: + return tr("Keyword"); + + case DoubleQuotedString: + return tr("Double-quoted string"); + + case SingleQuotedString: + return tr("Single-quoted string"); + + case ClassName: + return tr("Class name"); + + case FunctionMethodName: + return tr("Function or method name"); + + case Operator: + return tr("Operator"); + + case Identifier: + return tr("Identifier"); + + case Regex: + return tr("Regular expression"); + + case Global: + return tr("Global"); + + case Symbol: + return tr("Symbol"); + + case ModuleName: + return tr("Module name"); + + case InstanceVariable: + return tr("Instance variable"); + + case ClassVariable: + return tr("Class variable"); + + case Backticks: + return tr("Backticks"); + + case DataSection: + return tr("Data section"); + + case HereDocumentDelimiter: + return tr("Here document delimiter"); + + case HereDocument: + return tr("Here document"); + + case PercentStringq: + return tr("%q string"); + + case PercentStringQ: + return tr("%Q string"); + + case PercentStringx: + return tr("%x string"); + + case PercentStringr: + return tr("%r string"); + + case PercentStringw: + return tr("%w string"); + + case DemotedKeyword: + return tr("Demoted keyword"); + + case Stdin: + return tr("stdin"); + + case Stdout: + return tr("stdout"); + + case Stderr: + return tr("stderr"); + } + + return QString(); +} + + +// Returns the background colour of the text for a style. +QColor QsciLexerRuby::defaultPaper(int style) const +{ + switch (style) + { + case Error: + return QColor(0xff,0x00,0x00); + + case POD: + return QColor(0xc0,0xff,0xc0); + + case Regex: + case PercentStringr: + return QColor(0xa0,0xff,0xa0); + + case Backticks: + case PercentStringx: + return QColor(0xa0,0x80,0x80); + + case DataSection: + return QColor(0xff,0xf0,0xd8); + + case HereDocumentDelimiter: + case HereDocument: + return QColor(0xdd,0xd0,0xdd); + + case PercentStringw: + return QColor(0xff,0xff,0xe0); + + case Stdin: + case Stdout: + case Stderr: + return QColor(0xff,0x80,0x80); + } + + return QsciLexer::defaultPaper(style); +} + + +// Refresh all properties. +void QsciLexerRuby::refreshProperties() +{ + setCommentProp(); + setCompactProp(); +} + + +// Read properties from the settings. +bool QsciLexerRuby::readProperties(QSettings &qs, const QString &prefix) +{ + int rc = true; + + fold_comments = qs.value(prefix + "foldcomments", false).toBool(); + fold_compact = qs.value(prefix + "foldcompact", true).toBool(); + + return rc; +} + + +// Write properties to the settings. +bool QsciLexerRuby::writeProperties(QSettings &qs, const QString &prefix) const +{ + int rc = true; + + qs.value(prefix + "foldcomments", fold_comments); + qs.value(prefix + "foldcompact", fold_compact); + + return rc; +} + + +// Set if comments can be folded. +void QsciLexerRuby::setFoldComments(bool fold) +{ + fold_comments = fold; + + setCommentProp(); +} + + +// Set the "fold.comment" property. +void QsciLexerRuby::setCommentProp() +{ + emit propertyChanged("fold.comment", (fold_comments ? "1" : "0")); +} + + +// Set if folds are compact +void QsciLexerRuby::setFoldCompact(bool fold) +{ + fold_compact = fold; + + setCompactProp(); +} + + +// Set the "fold.compact" property. +void QsciLexerRuby::setCompactProp() +{ + emit propertyChanged("fold.compact", (fold_compact ? "1" : "0")); +} diff --git a/libs/qscintilla_2.14.1/Qt5Qt6/qscilexerspice.cpp b/libs/qscintilla_2.14.1/Qt5Qt6/qscilexerspice.cpp new file mode 100644 index 000000000..9c2617c05 --- /dev/null +++ b/libs/qscintilla_2.14.1/Qt5Qt6/qscilexerspice.cpp @@ -0,0 +1,194 @@ +// This module implements the QsciLexerSpice class. +// +// Copyright (c) 2023 Riverbank Computing Limited +// +// This file is part of QScintilla. +// +// This file may be used under the terms of the GNU General Public License +// version 3.0 as published by the Free Software Foundation and appearing in +// the file LICENSE included in the packaging of this file. Please review the +// following information to ensure the GNU General Public License version 3.0 +// requirements will be met: http://www.gnu.org/copyleft/gpl.html. +// +// If you do not wish to use this file under the terms of the GPL version 3.0 +// then you may purchase a commercial license. For more information contact +// info@riverbankcomputing.com. +// +// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + + +#include "Qsci/qscilexerspice.h" + +#include +#include + + +// The ctor. +QsciLexerSpice::QsciLexerSpice(QObject *parent) + : QsciLexer(parent) +{ +} + + +// The dtor. +QsciLexerSpice::~QsciLexerSpice() +{ +} + + +// Returns the language name. +const char *QsciLexerSpice::language() const +{ + return "Spice"; +} + + +// Returns the lexer name. +const char *QsciLexerSpice::lexer() const +{ + return "spice"; +} + + +// Return the style used for braces. +int QsciLexerSpice::braceStyle() const +{ + return Parameter; +} + + +// Returns the set of keywords. +const char *QsciLexerSpice::keywords(int set) const +{ + if (set == 1) + return + "ac alias alter alterparam append askvalues assertvalid " + "autoscale break compose copy copytodoc dc delete destroy " + "destroyvec diff display disto dowhile echo else end errorstop " + "fftinit filter foreach fourier freqtotime function " + "functionundef goto homecursors if isdisplayed label let " + "linearize listing load loadaccumulator makelabel movelabel " + "makesmithplot movecursorleft movecursorright msgbox nameplot " + "newplot nextparam noise nopoints op plot plotf plotref poly " + "print printcursors printevent printname printplot printstatus " + "printtext printtol printunits printval printvector pwl pz quit " + "removesmithplot rename repeat resume rotate runs rusage save " + "sendplot sendscript sens set setcursor setdoc setlabel " + "setlabeltype setmargins setnthtrigger setunits setvec setparam " + "setplot setquery setscaletype settracecolor settracestyle " + "setsource settrigger setvec setxlimits setylimits show showmod " + "sort status step stop switch tf timetofreq timetowave tran " + "unalias unlet unset unalterparam update version view wavefilter " + "wavetotime where while write"; + + if (set == 2) + return + "abs askvalue atan average ceil cos db differentiate " + "differentiatex exp finalvalue floor getcursorx getcursory " + "getcursory0 getcursory1 getparam im ln initialvalue integrate " + "integratex interpolate isdef isdisplayed j log length mag max " + "maxscale mean meanpts min minscale nextplot nextvector norm " + "operatingpoint ph phase phaseextend pk_pk pos pulse re rms " + "rmspts rnd sameplot sin sqrt stddev stddevpts tan tfall " + "tolerance trise unitvec vector"; + + if (set == 3) + return "param nodeset include options dcconv subckt ends model"; + + return 0; +} + + +// Returns the foreground colour of the text for a style. +QColor QsciLexerSpice::defaultColor(int style) const +{ + switch (style) + { + case Default: + return QColor(0x80,0x80,0x80); + + case Command: + case Function: + return QColor(0x00,0x00,0x7f); + + case Parameter: + return QColor(0x00,0x40,0xe0); + + case Number: + return QColor(0x00,0x7f,0x7f); + + case Delimiter: + return QColor(0x00,0x00,0x00); + + case Value: + return QColor(0x7f,0x00,0x7f); + + case Comment: + return QColor(0x00,0x7f,0x00); + } + + return QsciLexer::defaultColor(style); +} + + +// Returns the font of the text for a style. +QFont QsciLexerSpice::defaultFont(int style) const +{ + QFont f; + + if (style == Comment) +#if defined(Q_OS_WIN) + f = QFont("Comic Sans MS",9); +#elif defined(Q_OS_MAC) + f = QFont("Comic Sans MS", 12); +#else + f = QFont("Bitstream Vera Serif",9); +#endif + else + { + f = QsciLexer::defaultFont(style); + + if (style == Function || style == Delimiter) + f.setBold(true); + } + + return f; +} + + +// Returns the user name of a style. +QString QsciLexerSpice::description(int style) const +{ + switch (style) + { + case Default: + return tr("Default"); + + case Identifier: + return tr("Identifier"); + + case Command: + return tr("Command"); + + case Function: + return tr("Function"); + + case Parameter: + return tr("Parameter"); + + case Number: + return tr("Number"); + + case Delimiter: + return tr("Delimiter"); + + case Value: + return tr("Value"); + + case Comment: + return tr("Comment"); + } + + return QString(); +} diff --git a/libs/qscintilla/Qt4Qt5/qscilexersql.cpp b/libs/qscintilla_2.14.1/Qt5Qt6/qscilexersql.cpp similarity index 99% rename from libs/qscintilla/Qt4Qt5/qscilexersql.cpp rename to libs/qscintilla_2.14.1/Qt5Qt6/qscilexersql.cpp index b8313d6fc..99df5b2ad 100644 --- a/libs/qscintilla/Qt4Qt5/qscilexersql.cpp +++ b/libs/qscintilla_2.14.1/Qt5Qt6/qscilexersql.cpp @@ -1,6 +1,6 @@ // This module implements the QsciLexerSQL class. // -// Copyright (c) 2019 Riverbank Computing Limited +// Copyright (c) 2023 Riverbank Computing Limited // // This file is part of QScintilla. // diff --git a/libs/qscintilla_2.14.1/Qt5Qt6/qscilexersrec.cpp b/libs/qscintilla_2.14.1/Qt5Qt6/qscilexersrec.cpp new file mode 100644 index 000000000..06fa235dd --- /dev/null +++ b/libs/qscintilla_2.14.1/Qt5Qt6/qscilexersrec.cpp @@ -0,0 +1,62 @@ +// This module implements the QsciLexerSRec class. +// +// Copyright (c) 2023 Riverbank Computing Limited +// +// This file is part of QScintilla. +// +// This file may be used under the terms of the GNU General Public License +// version 3.0 as published by the Free Software Foundation and appearing in +// the file LICENSE included in the packaging of this file. Please review the +// following information to ensure the GNU General Public License version 3.0 +// requirements will be met: http://www.gnu.org/copyleft/gpl.html. +// +// If you do not wish to use this file under the terms of the GPL version 3.0 +// then you may purchase a commercial license. For more information contact +// info@riverbankcomputing.com. +// +// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + + +#include "Qsci/qscilexersrec.h" + +#include +#include + + +// The ctor. +QsciLexerSRec::QsciLexerSRec(QObject *parent) + : QsciLexerHex(parent) +{ +} + + +// The dtor. +QsciLexerSRec::~QsciLexerSRec() +{ +} + + +// Returns the language name. +const char *QsciLexerSRec::language() const +{ + return "S-Record"; +} + + +// Returns the lexer name. +const char *QsciLexerSRec::lexer() const +{ + return "srec"; +} + + +// Returns the user name of a style. +QString QsciLexerSRec::description(int style) const +{ + // Handle unsupported styles. + if (style == ExtendedAddress) + return QString(); + + return QsciLexerHex::description(style); +} diff --git a/libs/qscintilla_2.14.1/Qt5Qt6/qscilexertcl.cpp b/libs/qscintilla_2.14.1/Qt5Qt6/qscilexertcl.cpp new file mode 100644 index 000000000..070a1ac7f --- /dev/null +++ b/libs/qscintilla_2.14.1/Qt5Qt6/qscilexertcl.cpp @@ -0,0 +1,438 @@ +// This module implements the QsciLexerTCL class. +// +// Copyright (c) 2023 Riverbank Computing Limited +// +// This file is part of QScintilla. +// +// This file may be used under the terms of the GNU General Public License +// version 3.0 as published by the Free Software Foundation and appearing in +// the file LICENSE included in the packaging of this file. Please review the +// following information to ensure the GNU General Public License version 3.0 +// requirements will be met: http://www.gnu.org/copyleft/gpl.html. +// +// If you do not wish to use this file under the terms of the GPL version 3.0 +// then you may purchase a commercial license. For more information contact +// info@riverbankcomputing.com. +// +// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + + +#include "Qsci/qscilexertcl.h" + +#include +#include +#include + + +// The ctor. +QsciLexerTCL::QsciLexerTCL(QObject *parent) + : QsciLexer(parent), fold_comments(false) +{ +} + + +// The dtor. +QsciLexerTCL::~QsciLexerTCL() +{ +} + + +// Returns the language name. +const char *QsciLexerTCL::language() const +{ + return "TCL"; +} + + +// Returns the lexer name. +const char *QsciLexerTCL::lexer() const +{ + return "tcl"; +} + + +// Return the style used for braces. +int QsciLexerTCL::braceStyle() const +{ + return Operator; +} + + +// Returns the foreground colour of the text for a style. +QColor QsciLexerTCL::defaultColor(int style) const +{ + switch (style) + { + case Default: + return QColor(0x80,0x80,0x80); + + case Comment: + case CommentLine: + case CommentBox: + return QColor(0x00,0x7f,0x00); + + case Number: + return QColor(0x00,0x7f,0x7f); + + case QuotedKeyword: + case QuotedString: + case Modifier: + return QColor(0x7f,0x00,0x7f); + + case Operator: + return QColor(0x00,0x00,0x00); + + case Identifier: + case ExpandKeyword: + case TCLKeyword: + case TkKeyword: + case ITCLKeyword: + case TkCommand: + case KeywordSet6: + case KeywordSet7: + case KeywordSet8: + case KeywordSet9: + return QColor(0x00,0x00,0x7f); + + case Substitution: + case SubstitutionBrace: + return QColor(0x7f,0x7f,0x00); + } + + return QsciLexer::defaultColor(style); +} + + +// Returns the end-of-line fill for a style. +bool QsciLexerTCL::defaultEolFill(int style) const +{ + switch (style) + { + case QuotedString: + case CommentBox: + return true; + } + + return QsciLexer::defaultEolFill(style); +} + + +// Returns the font of the text for a style. +QFont QsciLexerTCL::defaultFont(int style) const +{ + QFont f; + + switch (style) + { + case Comment: + case CommentLine: + case CommentBox: +#if defined(Q_OS_WIN) + f = QFont("Comic Sans MS", 9); +#elif defined(Q_OS_MAC) + f = QFont("Comic Sans MS", 12); +#else + f = QFont("Bitstream Vera Serif", 9); +#endif + break; + + case QuotedKeyword: + case Operator: + case ExpandKeyword: + case TCLKeyword: + case TkKeyword: + case ITCLKeyword: + case TkCommand: + f = QsciLexer::defaultFont(style); + f.setBold(true); + break; + + case CommentBlock: +#if defined(Q_OS_WIN) + f = QFont("Comic Sans MS", 8); +#elif defined(Q_OS_MAC) + f = QFont("Comic Sans MS", 11); +#else + f = QFont("Serif", 9); +#endif + break; + + default: + f = QsciLexer::defaultFont(style); + } + + return f; +} + + +// Returns the set of keywords. +const char *QsciLexerTCL::keywords(int set) const +{ + if (set == 1) + return + "after append array auto_execok auto_import auto_load " + "auto_load_index auto_qualify beep bgerror binary break case " + "catch cd clock close concat continue dde default echo else " + "elseif encoding eof error eval exec exit expr fblocked " + "fconfigure fcopy file fileevent flush for foreach format gets " + "glob global history http if incr info interp join lappend lindex " + "linsert list llength load loadTk lrange lreplace lsearch lset " + "lsort memory msgcat namespace open package pid pkg::create " + "pkg_mkIndex Platform-specific proc puts pwd re_syntax read " + "regexp registry regsub rename resource return scan seek set " + "socket source split string subst switch tclLog tclMacPkgSearch " + "tclPkgSetup tclPkgUnknown tell time trace unknown unset update " + "uplevel upvar variable vwait while"; + + if (set == 2) + return + "bell bind bindtags bitmap button canvas checkbutton clipboard " + "colors console cursors destroy entry event focus font frame grab " + "grid image Inter-client keysyms label labelframe listbox lower " + "menu menubutton message option options pack panedwindow photo " + "place radiobutton raise scale scrollbar selection send spinbox " + "text tk tk_chooseColor tk_chooseDirectory tk_dialog tk_focusNext " + "tk_getOpenFile tk_messageBox tk_optionMenu tk_popup " + "tk_setPalette tkerror tkvars tkwait toplevel winfo wish wm"; + + if (set == 3) + return + "@scope body class code common component configbody constructor " + "define destructor hull import inherit itcl itk itk_component " + "itk_initialize itk_interior itk_option iwidgets keep method " + "private protected public"; + + if (set == 4) + return + "tk_bisque tk_chooseColor tk_dialog tk_focusFollowsMouse " + "tk_focusNext tk_focusPrev tk_getOpenFile tk_getSaveFile " + "tk_messageBox tk_optionMenu tk_popup tk_setPalette tk_textCopy " + "tk_textCut tk_textPaste tkButtonAutoInvoke tkButtonDown " + "tkButtonEnter tkButtonInvoke tkButtonLeave tkButtonUp " + "tkCancelRepeat tkCheckRadioDown tkCheckRadioEnter " + "tkCheckRadioInvoke tkColorDialog tkColorDialog_BuildDialog " + "tkColorDialog_CancelCmd tkColorDialog_Config " + "tkColorDialog_CreateSelector tkColorDialog_DrawColorScale " + "tkColorDialog_EnterColorBar tkColorDialog_HandleRGB Entry " + "tkColorDialog_HandleSelEntry tkColorDialog_InitValues " + "tkColorDialog_LeaveColorBar tkColorDialog_MoveSelector " + "tkColorDialog_OkCmd tkColorDialog_RedrawColorBars " + "tkColorDialog_RedrawFinalColor tkColorDialog_ReleaseMouse " + "tkColorDialog_ResizeColorBars tkColorDialog_RgbToX " + "tkColorDialog_SetRGBValue tkColorDialog_StartMove " + "tkColorDialog_XToRgb tkConsoleAbout tkConsoleBind tkConsoleExit " + "tkConsoleHistory tkConsoleInit tkConsoleInsert tkConsoleInvoke " + "tkConsoleOutput tkConsolePrompt tkConsoleSource tkDarken " + "tkEntryAutoScan tkEntryBackspace tkEntryButton1 " + "tkEntryClosestGap tkEntryGetSelection tkEntryInsert " + "tkEntryKeySelect tkEntryMouseSelect tkEntryNextWord tkEntryPaste " + "tkEntryPreviousWord tkEntrySeeInsert tkEntrySetCursor " + "tkEntryTranspose tkEventMotifBindings tkFDGetFileTypes " + "tkFirstMenu tkFocusGroup_BindIn tkFocusGroup_BindOut " + "tkFocusGroup_Create tkFocusGroup_Destroy tkFocusGroup_In " + "tkFocusGroup_Out tkFocusOK tkGenerateMenuSelect tkIconList " + "tkIconList_Add tkIconList_Arrange tkIconList_AutoScan " + "tkIconList_Btn1 tkIconList_Config tkIconList_Create " + "tkIconList_CtrlBtn1 tkIconList_Curselection tkIconList_DeleteAll " + "tkIconList_Double1 tkIconList_DrawSelection tkIconList_FocusIn " + "tkIconList_FocusOut tkIconList_Get tkIconList_Goto " + "tkIconList_Index tkIconList_Invoke tkIconList_KeyPress " + "tkIconList_Leave1 tkIconList_LeftRight tkIconList_Motion1 " + "tkIconList_Reset tkIconList_ReturnKey tkIconList_See " + "tkIconList_Select tkIconList_Selection tkIconList_ShiftBtn1 " + "tkIconList_UpDown tkListbox tkListboxAutoScan " + "tkListboxBeginExtend tkListboxBeginSelect tkListboxBeginToggle " + "tkListboxCancel tkListboxDataExtend tkListboxExtendUpDown " + "tkListboxKeyAccel_Goto tkListboxKeyAccel_Key " + "tkListboxKeyAccel_Reset tkListboxKeyAccel_Set " + "tkListboxKeyAccel_Unset tkListboxMotion tkListboxSelectAll " + "tkListboxUpDown tkMbButtonUp tkMbEnter tkMbLeave tkMbMotion " + "tkMbPost tkMenuButtonDown tkMenuDownArrow tkMenuDup tkMenuEscape " + "tkMenuFind tkMenuFindName tkMenuFirstEntry tkMenuInvoke " + "tkMenuLeave tkMenuLeftArrow tkMenuMotion tkMenuNextEntry " + "tkMenuNextMenu tkMenuRightArrow tkMenuUnpost tkMenuUpArrow " + "tkMessageBox tkMotifFDialog tkMotifFDialog_ActivateDList " + "tkMotifFDialog_ActivateFEnt tkMotifFDialog_ActivateFList " + "tkMotifFDialog_ActivateSEnt tkMotifFDialog_BrowseDList " + "tkMotifFDialog_BrowseFList tkMotifFDialog_BuildUI " + "tkMotifFDialog_CancelCmd tkMotifFDialog_Config " + "tkMotifFDialog_Create tkMotifFDialog_FileTypes " + "tkMotifFDialog_FilterCmd tkMotifFDialog_InterpFilter " + "tkMotifFDialog_LoadFiles tkMotifFDialog_MakeSList " + "tkMotifFDialog_OkCmd tkMotifFDialog_SetFilter " + "tkMotifFDialog_SetListMode tkMotifFDialog_Update tkPostOverPoint " + "tkRecolorTree tkRestoreOldGrab tkSaveGrabInfo tkScaleActivate " + "tkScaleButton2Down tkScaleButtonDown tkScaleControlPress " + "tkScaleDrag tkScaleEndDrag tkScaleIncrement tkScreenChanged " + "tkScrollButton2Down tkScrollButtonDown tkScrollButtonDrag " + "tkScrollButtonUp tkScrollByPages tkScrollByUnits tkScrollDrag " + "tkScrollEndDrag tkScrollSelect tkScrollStartDrag " + "tkScrollTopBottom tkScrollToPos tkTabToWindow tkTearOffMenu " + "tkTextAutoScan tkTextButton1 tkTextClosestGap tkTextInsert " + "tkTextKeyExtend tkTextKeySelect tkTextNextPara tkTextNextPos " + "tkTextNextWord tkTextPaste tkTextPrevPara tkTextPrevPos " + "tkTextPrevWord tkTextResetAnchor tkTextScrollPages " + "tkTextSelectTo tkTextSetCursor tkTextTranspose tkTextUpDownLine " + "tkTraverseToMenu tkTraverseWithinMenu"; + + if (set == 5) + return "expand"; + + return 0; +} + + +// Returns the user name of a style. +QString QsciLexerTCL::description(int style) const +{ + switch (style) + { + case Default: + return tr("Default"); + + case Comment: + return tr("Comment"); + + case CommentLine: + return tr("Comment line"); + + case Number: + return tr("Number"); + + case QuotedKeyword: + return tr("Quoted keyword"); + + case QuotedString: + return tr("Quoted string"); + + case Operator: + return tr("Operator"); + + case Identifier: + return tr("Identifier"); + + case Substitution: + return tr("Substitution"); + + case SubstitutionBrace: + return tr("Brace substitution"); + + case Modifier: + return tr("Modifier"); + + case ExpandKeyword: + return tr("Expand keyword"); + + case TCLKeyword: + return tr("TCL keyword"); + + case TkKeyword: + return tr("Tk keyword"); + + case ITCLKeyword: + return tr("iTCL keyword"); + + case TkCommand: + return tr("Tk command"); + + case KeywordSet6: + return tr("User defined 1"); + + case KeywordSet7: + return tr("User defined 2"); + + case KeywordSet8: + return tr("User defined 3"); + + case KeywordSet9: + return tr("User defined 4"); + + case CommentBox: + return tr("Comment box"); + + case CommentBlock: + return tr("Comment block"); + } + + return QString(); +} + + +// Returns the background colour of the text for a style. +QColor QsciLexerTCL::defaultPaper(int style) const +{ + switch (style) + { + case Comment: + return QColor(0xf0,0xff,0xe0); + + case QuotedKeyword: + case QuotedString: + case ITCLKeyword: + return QColor(0xff,0xf0,0xf0); + + case Substitution: + return QColor(0xef,0xff,0xf0); + + case ExpandKeyword: + return QColor(0xff,0xff,0x80); + + case TkKeyword: + return QColor(0xe0,0xff,0xf0); + + case TkCommand: + return QColor(0xff,0xd0,0xd0); + + case CommentBox: + case CommentBlock: + return QColor(0xf0,0xff,0xf0); + } + + return QsciLexer::defaultPaper(style); +} + + +// Refresh all properties. +void QsciLexerTCL::refreshProperties() +{ + setCommentProp(); +} + + +// Read properties from the settings. +bool QsciLexerTCL::readProperties(QSettings &qs, const QString &prefix) +{ + int rc = true; + + fold_comments = qs.value(prefix + "foldcomments", false).toBool(); + + return rc; +} + + +// Write properties to the settings. +bool QsciLexerTCL::writeProperties(QSettings &qs, const QString &prefix) const +{ + int rc = true; + + qs.setValue(prefix + "foldcomments", fold_comments); + + return rc; +} + + +// Set if comments can be folded. +void QsciLexerTCL::setFoldComments(bool fold) +{ + fold_comments = fold; + + setCommentProp(); +} + + +// Set the "fold.comment" property. +void QsciLexerTCL::setCommentProp() +{ + emit propertyChanged("fold.comment", (fold_comments ? "1" : "0")); +} diff --git a/libs/qscintilla_2.14.1/Qt5Qt6/qscilexertekhex.cpp b/libs/qscintilla_2.14.1/Qt5Qt6/qscilexertekhex.cpp new file mode 100644 index 000000000..ae6d2bddc --- /dev/null +++ b/libs/qscintilla_2.14.1/Qt5Qt6/qscilexertekhex.cpp @@ -0,0 +1,59 @@ +// This module implements the QsciLexerTekHex class. +// +// Copyright (c) 2023 Riverbank Computing Limited +// +// This file is part of QScintilla. +// +// This file may be used under the terms of the GNU General Public License +// version 3.0 as published by the Free Software Foundation and appearing in +// the file LICENSE included in the packaging of this file. Please review the +// following information to ensure the GNU General Public License version 3.0 +// requirements will be met: http://www.gnu.org/copyleft/gpl.html. +// +// If you do not wish to use this file under the terms of the GPL version 3.0 +// then you may purchase a commercial license. For more information contact +// info@riverbankcomputing.com. +// +// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + + +#include "Qsci/qscilexertekhex.h" + + +// The ctor. +QsciLexerTekHex::QsciLexerTekHex(QObject *parent) + : QsciLexerHex(parent) +{ +} + + +// The dtor. +QsciLexerTekHex::~QsciLexerTekHex() +{ +} + + +// Returns the language name. +const char *QsciLexerTekHex::language() const +{ + return "Tektronix-Hex"; +} + + +// Returns the lexer name. +const char *QsciLexerTekHex::lexer() const +{ + return "tehex"; +} + + +// Returns the user name of a style. +QString QsciLexerTekHex::description(int style) const +{ + // Handle unsupported styles. + if (style == NoAddress || style == RecordCount || style == ExtendedAddress || style == UnknownData) + return QString(); + + return QsciLexerHex::description(style); +} diff --git a/libs/qscintilla_2.14.1/Qt5Qt6/qscilexertex.cpp b/libs/qscintilla_2.14.1/Qt5Qt6/qscilexertex.cpp new file mode 100644 index 000000000..fc33ba5b9 --- /dev/null +++ b/libs/qscintilla_2.14.1/Qt5Qt6/qscilexertex.cpp @@ -0,0 +1,308 @@ +// This module implements the QsciLexerTeX class. +// +// Copyright (c) 2023 Riverbank Computing Limited +// +// This file is part of QScintilla. +// +// This file may be used under the terms of the GNU General Public License +// version 3.0 as published by the Free Software Foundation and appearing in +// the file LICENSE included in the packaging of this file. Please review the +// following information to ensure the GNU General Public License version 3.0 +// requirements will be met: http://www.gnu.org/copyleft/gpl.html. +// +// If you do not wish to use this file under the terms of the GPL version 3.0 +// then you may purchase a commercial license. For more information contact +// info@riverbankcomputing.com. +// +// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + + +#include "Qsci/qscilexertex.h" + +#include +#include +#include + + +// The ctor. +QsciLexerTeX::QsciLexerTeX(QObject *parent) + : QsciLexer(parent), + fold_comments(false), fold_compact(true), process_comments(false), + process_if(true) +{ +} + + +// The dtor. +QsciLexerTeX::~QsciLexerTeX() +{ +} + + +// Returns the language name. +const char *QsciLexerTeX::language() const +{ + return "TeX"; +} + + +// Returns the lexer name. +const char *QsciLexerTeX::lexer() const +{ + return "tex"; +} + + +// Return the string of characters that comprise a word. +const char *QsciLexerTeX::wordCharacters() const +{ + return "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\\@"; +} + + +// Returns the foreground colour of the text for a style. +QColor QsciLexerTeX::defaultColor(int style) const +{ + switch (style) + { + case Default: + return QColor(0x3f,0x3f,0x3f); + + case Special: + return QColor(0x00,0x7f,0x7f); + + case Group: + return QColor(0x7f,0x00,0x00); + + case Symbol: + return QColor(0x7f,0x7f,0x00); + + case Command: + return QColor(0x00,0x7f,0x00); + } + + return QsciLexer::defaultColor(style); +} + + +// Returns the set of keywords. +const char *QsciLexerTeX::keywords(int set) const +{ + if (set == 1) + return + "above abovedisplayshortskip abovedisplayskip " + "abovewithdelims accent adjdemerits advance " + "afterassignment aftergroup atop atopwithdelims " + "badness baselineskip batchmode begingroup " + "belowdisplayshortskip belowdisplayskip binoppenalty " + "botmark box boxmaxdepth brokenpenalty catcode char " + "chardef cleaders closein closeout clubpenalty copy " + "count countdef cr crcr csname day deadcycles def " + "defaulthyphenchar defaultskewchar delcode delimiter " + "delimiterfactor delimeters delimitershortfall " + "delimeters dimen dimendef discretionary " + "displayindent displaylimits displaystyle " + "displaywidowpenalty displaywidth divide " + "doublehyphendemerits dp dump edef else " + "emergencystretch end endcsname endgroup endinput " + "endlinechar eqno errhelp errmessage " + "errorcontextlines errorstopmode escapechar everycr " + "everydisplay everyhbox everyjob everymath everypar " + "everyvbox exhyphenpenalty expandafter fam fi " + "finalhyphendemerits firstmark floatingpenalty font " + "fontdimen fontname futurelet gdef global group " + "globaldefs halign hangafter hangindent hbadness " + "hbox hfil horizontal hfill horizontal hfilneg hfuzz " + "hoffset holdinginserts hrule hsize hskip hss " + "horizontal ht hyphenation hyphenchar hyphenpenalty " + "hyphen if ifcase ifcat ifdim ifeof iffalse ifhbox " + "ifhmode ifinner ifmmode ifnum ifodd iftrue ifvbox " + "ifvmode ifvoid ifx ignorespaces immediate indent " + "input inputlineno input insert insertpenalties " + "interlinepenalty jobname kern language lastbox " + "lastkern lastpenalty lastskip lccode leaders left " + "lefthyphenmin leftskip leqno let limits linepenalty " + "line lineskip lineskiplimit long looseness lower " + "lowercase mag mark mathaccent mathbin mathchar " + "mathchardef mathchoice mathclose mathcode mathinner " + "mathop mathopen mathord mathpunct mathrel " + "mathsurround maxdeadcycles maxdepth meaning " + "medmuskip message mkern month moveleft moveright " + "mskip multiply muskip muskipdef newlinechar noalign " + "noboundary noexpand noindent nolimits nonscript " + "scriptscript nonstopmode nulldelimiterspace " + "nullfont number omit openin openout or outer output " + "outputpenalty over overfullrule overline " + "overwithdelims pagedepth pagefilllstretch " + "pagefillstretch pagefilstretch pagegoal pageshrink " + "pagestretch pagetotal par parfillskip parindent " + "parshape parskip patterns pausing penalty " + "postdisplaypenalty predisplaypenalty predisplaysize " + "pretolerance prevdepth prevgraf radical raise read " + "relax relpenalty right righthyphenmin rightskip " + "romannumeral scriptfont scriptscriptfont " + "scriptscriptstyle scriptspace scriptstyle " + "scrollmode setbox setlanguage sfcode shipout show " + "showbox showboxbreadth showboxdepth showlists " + "showthe skewchar skip skipdef spacefactor spaceskip " + "span special splitbotmark splitfirstmark " + "splitmaxdepth splittopskip string tabskip textfont " + "textstyle the thickmuskip thinmuskip time toks " + "toksdef tolerance topmark topskip tracingcommands " + "tracinglostchars tracingmacros tracingonline " + "tracingoutput tracingpages tracingparagraphs " + "tracingrestores tracingstats uccode uchyph " + "underline unhbox unhcopy unkern unpenalty unskip " + "unvbox unvcopy uppercase vadjust valign vbadness " + "vbox vcenter vfil vfill vfilneg vfuzz voffset vrule " + "vsize vskip vsplit vss vtop wd widowpenalty write " + "xdef xleaders xspaceskip year " + "TeX bgroup egroup endgraf space empty null newcount " + "newdimen newskip newmuskip newbox newtoks newhelp " + "newread newwrite newfam newlanguage newinsert newif " + "maxdimen magstephalf magstep frenchspacing " + "nonfrenchspacing normalbaselines obeylines " + "obeyspaces raggedr ight ttraggedright thinspace " + "negthinspace enspace enskip quad qquad smallskip " + "medskip bigskip removelastskip topglue vglue hglue " + "break nobreak allowbreak filbreak goodbreak " + "smallbreak medbreak bigbreak line leftline " + "rightline centerline rlap llap underbar strutbox " + "strut cases matrix pmatrix bordermatrix eqalign " + "displaylines eqalignno leqalignno pageno folio " + "tracingall showhyphens fmtname fmtversion hphantom " + "vphantom phantom smash"; + + return 0; +} + + +// Returns the user name of a style. +QString QsciLexerTeX::description(int style) const +{ + switch (style) + { + case Default: + return tr("Default"); + + case Special: + return tr("Special"); + + case Group: + return tr("Group"); + + case Symbol: + return tr("Symbol"); + + case Command: + return tr("Command"); + + case Text: + return tr("Text"); + } + + return QString(); +} + + +// Refresh all properties. +void QsciLexerTeX::refreshProperties() +{ + setCommentProp(); + setCompactProp(); + setProcessCommentsProp(); + setAutoIfProp(); +} + + +// Read properties from the settings. +bool QsciLexerTeX::readProperties(QSettings &qs, const QString &prefix) +{ + int rc = true; + + fold_comments = qs.value(prefix + "foldcomments", false).toBool(); + fold_compact = qs.value(prefix + "foldcompact", true).toBool(); + process_comments = qs.value(prefix + "processcomments", false).toBool(); + process_if = qs.value(prefix + "processif", true).toBool(); + + return rc; +} + + +// Write properties to the settings. +bool QsciLexerTeX::writeProperties(QSettings &qs, const QString &prefix) const +{ + int rc = true; + + qs.value(prefix + "foldcomments", fold_comments); + qs.value(prefix + "foldcompact", fold_compact); + qs.value(prefix + "processcomments", process_comments); + qs.value(prefix + "processif", process_if); + + return rc; +} + + +// Set if comments can be folded. +void QsciLexerTeX::setFoldComments(bool fold) +{ + fold_comments = fold; + + setCommentProp(); +} + + +// Set the "fold.comment" property. +void QsciLexerTeX::setCommentProp() +{ + emit propertyChanged("fold.comment", (fold_comments ? "1" : "0")); +} + + +// Set if folds are compact. +void QsciLexerTeX::setFoldCompact(bool fold) +{ + fold_compact = fold; + + setCompactProp(); +} + + +// Set the "fold.compact" property. +void QsciLexerTeX::setCompactProp() +{ + emit propertyChanged("fold.compact", (fold_compact ? "1" : "0")); +} + + +// Set if comments are processed +void QsciLexerTeX::setProcessComments(bool enable) +{ + process_comments = enable; + + setProcessCommentsProp(); +} + + +// Set the "lexer.tex.comment.process" property. +void QsciLexerTeX::setProcessCommentsProp() +{ + emit propertyChanged("lexer.tex.comment.process", (process_comments ? "1" : "0")); +} + + +// Set if \if is processed +void QsciLexerTeX::setProcessIf(bool enable) +{ + process_if = enable; + + setAutoIfProp(); +} + + +// Set the "lexer.tex.auto.if" property. +void QsciLexerTeX::setAutoIfProp() +{ + emit propertyChanged("lexer.tex.auto.if", (process_if ? "1" : "0")); +} diff --git a/libs/qscintilla_2.14.1/Qt5Qt6/qscilexerverilog.cpp b/libs/qscintilla_2.14.1/Qt5Qt6/qscilexerverilog.cpp new file mode 100644 index 000000000..676a9fe74 --- /dev/null +++ b/libs/qscintilla_2.14.1/Qt5Qt6/qscilexerverilog.cpp @@ -0,0 +1,572 @@ +// This module implements the QsciLexerVerilog class. +// +// Copyright (c) 2023 Riverbank Computing Limited +// +// This file is part of QScintilla. +// +// This file may be used under the terms of the GNU General Public License +// version 3.0 as published by the Free Software Foundation and appearing in +// the file LICENSE included in the packaging of this file. Please review the +// following information to ensure the GNU General Public License version 3.0 +// requirements will be met: http://www.gnu.org/copyleft/gpl.html. +// +// If you do not wish to use this file under the terms of the GPL version 3.0 +// then you may purchase a commercial license. For more information contact +// info@riverbankcomputing.com. +// +// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + + +#include "Qsci/qscilexerverilog.h" + +#include +#include +#include + + +// The ctor. +QsciLexerVerilog::QsciLexerVerilog(QObject *parent) + : QsciLexer(parent), + fold_atelse(false), fold_comments(false), fold_compact(true), + fold_preproc(false), fold_atmodule(false) +{ +} + + +// The dtor. +QsciLexerVerilog::~QsciLexerVerilog() +{ +} + + +// Returns the language name. +const char *QsciLexerVerilog::language() const +{ + return "Verilog"; +} + + +// Returns the lexer name. +const char *QsciLexerVerilog::lexer() const +{ + return "verilog"; +} + + +// Return the style used for braces. +int QsciLexerVerilog::braceStyle() const +{ + return Operator; +} + + +// Returns the set of keywords. +const char *QsciLexerVerilog::keywords(int set) const +{ + if (set == 1) + return + "always and assign automatic begin buf bufif0 bufif1 case casex " + "casez cell cmos config deassign default defparam design disable " + "edge else end endcase endconfig endfunction endgenerate " + "endmodule endprimitiveendspecify endtable endtask event for " + "force forever fork function generate genvar highz0 highz1 if " + "ifnone incdir include initial inout input instance integer join " + "large liblist library localparam macromodule medium module nand " + "negedge nmos nor noshowcancelled not notif0 notif1 or output " + "parameter pmos posedge primitive pull0 pull1 pulldown pullup " + "pulsestyle_ondetect pulsestyle_onevent rcmos real realtime reg " + "release repeat rnmos rpmos rtran rtranif0 rtranif1 scalared " + "showcancelled signed small specify specparam strong0 strong1 " + "supply0 supply1 table task time tran tranif0 tranif1 tri tri0 " + "tri1 triand trior trireg unsigned use vectored wait wand weak0 " + "weak1 while wire wor xnor xor"; + + if (set == 3) + return + "$async$and$array $async$and$plane $async$nand$array " + "$async$nand$plane $async$nor$array $async$nor$plane " + "$async$or$array $async$or$plane $bitstoreal $countdrivers " + "$display $displayb $displayh $displayo $dist_chi_square " + "$dist_erlang $dist_exponential $dist_normal $dist_poisson " + "$dist_t $dist_uniform $dumpall $dumpfile $dumpflush $dumplimit " + "$dumpoff $dumpon $dumpportsall $dumpportsflush $dumpportslimit " + "$dumpportsoff $dumpportson $dumpvars $fclose $fdisplayh " + "$fdisplay $fdisplayf $fdisplayb $ferror $fflush $fgetc $fgets " + "$finish $fmonitorb $fmonitor $fmonitorf $fmonitorh $fopen " + "$fread $fscanf $fseek $fsscanf $fstrobe $fstrobebb $fstrobef " + "$fstrobeh $ftel $fullskew $fwriteb $fwritef $fwriteh $fwrite " + "$getpattern $history $hold $incsave $input $itor $key $list " + "$log $monitorb $monitorh $monitoroff $monitoron $monitor " + "$monitoro $nochange $nokey $nolog $period $printtimescale " + "$q_add $q_exam $q_full $q_initialize $q_remove $random " + "$readmemb $readmemh $readmemh $realtime $realtobits $recovery " + "$recrem $removal $reset_count $reset $reset_value $restart " + "$rewind $rtoi $save $scale $scope $sdf_annotate $setup " + "$setuphold $sformat $showscopes $showvariables $showvars " + "$signed $skew $sreadmemb $sreadmemh $stime $stop $strobeb " + "$strobe $strobeh $strobeo $swriteb $swriteh $swriteo $swrite " + "$sync$and$array $sync$and$plane $sync$nand$array " + "$sync$nand$plane $sync$nor$array $sync$nor$plane $sync$or$array " + "$sync$or$plane $test$plusargs $time $timeformat $timeskew " + "$ungetc $unsigned $value$plusargs $width $writeb $writeh $write " + "$writeo"; + + return 0; +} + + +// Return the string of characters that comprise a word. +const char *QsciLexerVerilog::wordCharacters() const +{ + return "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_$"; +} + + +// Returns the foreground colour of the text for a style. +QColor QsciLexerVerilog::defaultColor(int style) const +{ + switch (style) + { + case Default: + case InactiveComment: + case InactiveCommentLine: + case InactiveCommentBang: + case InactiveNumber: + case InactiveKeyword: + case InactiveString: + case InactiveKeywordSet2: + case InactiveSystemTask: + case InactivePreprocessor: + case InactiveOperator: + case InactiveIdentifier: + case InactiveUnclosedString: + case InactiveUserKeywordSet: + case InactiveCommentKeyword: + case InactiveDeclareInputPort: + case InactiveDeclareOutputPort: + case InactiveDeclareInputOutputPort: + case InactivePortConnection: + return QColor(0x80, 0x80, 0x80); + + case Comment: + case CommentLine: + return QColor(0x00, 0x7f, 0x00); + + case CommentBang: + return QColor(0x3f, 0x7f, 0x3f); + + case Number: + case KeywordSet2: + return QColor(0x00, 0x7f, 0x7f); + + case Keyword: + case DeclareOutputPort: + return QColor(0x00, 0x00, 0x7f); + + case String: + return QColor(0x7f, 0x00, 0x7f); + + case SystemTask: + return QColor(0x80, 0x40, 0x20); + + case Preprocessor: + return QColor(0x7f, 0x7f, 0x00); + + case Operator: + return QColor(0x00, 0x70, 0x70); + + case UnclosedString: + return QColor(0x00, 0x00, 0x00); + + case UserKeywordSet: + case CommentKeyword: + return QColor(0x2a, 0x00, 0xff); + + case DeclareInputPort: + return QColor(0x7f, 0x00, 0x00); + + case DeclareInputOutputPort: + return QColor(0x00, 0x00, 0xff); + + case PortConnection: + return QColor(0x00, 0x50, 0x32); + } + + return QsciLexer::defaultColor(style); +} + + +// Returns the end-of-line fill for a style. +bool QsciLexerVerilog::defaultEolFill(int style) const +{ + switch (style) + { + case CommentBang: + case UnclosedString: + case InactiveDefault: + case InactiveComment: + case InactiveCommentLine: + case InactiveCommentBang: + case InactiveNumber: + case InactiveKeyword: + case InactiveString: + case InactiveKeywordSet2: + case InactiveSystemTask: + case InactivePreprocessor: + case InactiveOperator: + case InactiveIdentifier: + case InactiveUnclosedString: + case InactiveUserKeywordSet: + case InactiveCommentKeyword: + case InactiveDeclareInputPort: + case InactiveDeclareOutputPort: + case InactiveDeclareInputOutputPort: + case InactivePortConnection: + return true; + } + + return QsciLexer::defaultEolFill(style); +} + + +// Returns the font of the text for a style. +QFont QsciLexerVerilog::defaultFont(int style) const +{ + QFont f; + + switch (style) + { + case Comment: + case CommentLine: + case CommentBang: + case UserKeywordSet: +#if defined(Q_OS_WIN) + f = QFont("Comic Sans MS",9); +#elif defined(Q_OS_MAC) + f = QFont("Comic Sans MS", 12); +#else + f = QFont("Bitstream Vera Serif",9); +#endif + break; + + case Keyword: + case PortConnection: + f = QsciLexer::defaultFont(style); + f.setBold(true); + break; + + case InactiveDefault: + case InactiveComment: + case InactiveCommentLine: + case InactiveCommentBang: + case InactiveNumber: + case InactiveKeyword: + case InactiveString: + case InactiveKeywordSet2: + case InactiveSystemTask: + case InactivePreprocessor: + case InactiveOperator: + case InactiveIdentifier: + case InactiveUnclosedString: + case InactiveUserKeywordSet: + case InactiveCommentKeyword: + case InactiveDeclareInputPort: + case InactiveDeclareOutputPort: + case InactiveDeclareInputOutputPort: + case InactivePortConnection: + f = QsciLexer::defaultFont(style); + f.setItalic(true); + break; + + default: + f = QsciLexer::defaultFont(style); + } + + return f; +} + + +// Returns the user name of a style. +QString QsciLexerVerilog::description(int style) const +{ + switch (style) + { + case Default: + return tr("Default"); + + case InactiveDefault: + return tr("Inactive default"); + + case Comment: + return tr("Comment"); + + case InactiveComment: + return tr("Inactive comment"); + + case CommentLine: + return tr("Line comment"); + + case InactiveCommentLine: + return tr("Inactive line comment"); + + case CommentBang: + return tr("Bang comment"); + + case InactiveCommentBang: + return tr("Inactive bang comment"); + + case Number: + return tr("Number"); + + case InactiveNumber: + return tr("Inactive number"); + + case Keyword: + return tr("Primary keywords and identifiers"); + + case InactiveKeyword: + return tr("Inactive primary keywords and identifiers"); + + case String: + return tr("String"); + + case InactiveString: + return tr("Inactive string"); + + case KeywordSet2: + return tr("Secondary keywords and identifiers"); + + case InactiveKeywordSet2: + return tr("Inactive secondary keywords and identifiers"); + + case SystemTask: + return tr("System task"); + + case InactiveSystemTask: + return tr("Inactive system task"); + + case Preprocessor: + return tr("Preprocessor block"); + + case InactivePreprocessor: + return tr("Inactive preprocessor block"); + + case Operator: + return tr("Operator"); + + case InactiveOperator: + return tr("Inactive operator"); + + case Identifier: + return tr("Identifier"); + + case InactiveIdentifier: + return tr("Inactive identifier"); + + case UnclosedString: + return tr("Unclosed string"); + + case InactiveUnclosedString: + return tr("Inactive unclosed string"); + + case UserKeywordSet: + return tr("User defined tasks and identifiers"); + + case InactiveUserKeywordSet: + return tr("Inactive user defined tasks and identifiers"); + + case CommentKeyword: + return tr("Keyword comment"); + + case InactiveCommentKeyword: + return tr("Inactive keyword comment"); + + case DeclareInputPort: + return tr("Input port declaration"); + + case InactiveDeclareInputPort: + return tr("Inactive input port declaration"); + + case DeclareOutputPort: + return tr("Output port declaration"); + + case InactiveDeclareOutputPort: + return tr("Inactive output port declaration"); + + case DeclareInputOutputPort: + return tr("Input/output port declaration"); + + case InactiveDeclareInputOutputPort: + return tr("Inactive input/output port declaration"); + + case PortConnection: + return tr("Port connection"); + + case InactivePortConnection: + return tr("Inactive port connection"); + } + + return QString(); +} + + +// Returns the background colour of the text for a style. +QColor QsciLexerVerilog::defaultPaper(int style) const +{ + switch (style) + { + case CommentBang: + return QColor(0xe0, 0xf0, 0xff); + + case UnclosedString: + return QColor(0xe0, 0xc0, 0xe0); + + case InactiveDefault: + case InactiveComment: + case InactiveCommentLine: + case InactiveCommentBang: + case InactiveNumber: + case InactiveKeyword: + case InactiveString: + case InactiveKeywordSet2: + case InactiveSystemTask: + case InactivePreprocessor: + case InactiveOperator: + case InactiveIdentifier: + case InactiveUnclosedString: + case InactiveUserKeywordSet: + case InactiveCommentKeyword: + case InactiveDeclareInputPort: + case InactiveDeclareOutputPort: + case InactiveDeclareInputOutputPort: + case InactivePortConnection: + return QColor(0xe0, 0xe0, 0xe0); + } + + return QsciLexer::defaultPaper(style); +} + + +// Refresh all properties. +void QsciLexerVerilog::refreshProperties() +{ + setAtElseProp(); + setCommentProp(); + setCompactProp(); + setPreprocProp(); + setAtModuleProp(); + + // We don't provide options for these as there doesn't seem much point in + // disabling them. + emit propertyChanged("lexer.verilog.track.preprocessor", "1"); + emit propertyChanged("lexer.verilog.update.preprocessor", "1"); + emit propertyChanged("lexer.verilog.portstyling", "1"); + emit propertyChanged("lexer.verilog.allupperkeywords", "1"); +} + + +// Read properties from the settings. +bool QsciLexerVerilog::readProperties(QSettings &qs,const QString &prefix) +{ + fold_atelse = qs.value(prefix + "foldatelse", false).toBool(); + fold_comments = qs.value(prefix + "foldcomments", false).toBool(); + fold_compact = qs.value(prefix + "foldcompact", true).toBool(); + fold_preproc = qs.value(prefix + "foldpreprocessor", false).toBool(); + fold_atmodule = qs.value(prefix + "foldverilogflags", false).toBool(); + + return true; +} + + +// Write properties to the settings. +bool QsciLexerVerilog::writeProperties(QSettings &qs,const QString &prefix) const +{ + qs.setValue(prefix + "foldatelse", fold_atelse); + qs.setValue(prefix + "foldcomments", fold_comments); + qs.setValue(prefix + "foldcompact", fold_compact); + qs.setValue(prefix + "foldpreprocessor", fold_preproc); + qs.setValue(prefix + "foldverilogflags", fold_atmodule); + + return true; +} + + +// Set if else can be folded. +void QsciLexerVerilog::setFoldAtElse(bool fold) +{ + fold_atelse = fold; + + setAtElseProp(); +} + + +// Set the "fold.at.else" property. +void QsciLexerVerilog::setAtElseProp() +{ + emit propertyChanged("fold.at.else", (fold_atelse ? "1" : "0")); +} + + +// Set if comments can be folded. +void QsciLexerVerilog::setFoldComments(bool fold) +{ + fold_comments = fold; + + setCommentProp(); +} + + +// Set the "fold.comment" property. +void QsciLexerVerilog::setCommentProp() +{ + emit propertyChanged("fold.comment", (fold_comments ? "1" : "0")); +} + + +// Set if folds are compact +void QsciLexerVerilog::setFoldCompact(bool fold) +{ + fold_compact = fold; + + setCompactProp(); +} + + +// Set the "fold.compact" property. +void QsciLexerVerilog::setCompactProp() +{ + emit propertyChanged("fold.compact", (fold_compact ? "1" : "0")); +} + + +// Set if preprocessor blocks can be folded. +void QsciLexerVerilog::setFoldPreprocessor(bool fold) +{ + fold_preproc = fold; + + setPreprocProp(); +} + + +// Set the "fold.preprocessor" property. +void QsciLexerVerilog::setPreprocProp() +{ + emit propertyChanged("fold.preprocessor", (fold_preproc ? "1" : "0")); +} + + +// Set if modules can be folded. +void QsciLexerVerilog::setFoldAtModule(bool fold) +{ + fold_atmodule = fold; + + setAtModuleProp(); +} + + +// Set the "fold.verilog.flags" property. +void QsciLexerVerilog::setAtModuleProp() +{ + emit propertyChanged("fold.verilog.flags", (fold_atmodule ? "1" : "0")); +} diff --git a/libs/qscintilla_2.14.1/Qt5Qt6/qscilexervhdl.cpp b/libs/qscintilla_2.14.1/Qt5Qt6/qscilexervhdl.cpp new file mode 100644 index 000000000..f1806b9e9 --- /dev/null +++ b/libs/qscintilla_2.14.1/Qt5Qt6/qscilexervhdl.cpp @@ -0,0 +1,418 @@ +// This module implements the QsciLexerVHDL class. +// +// Copyright (c) 2023 Riverbank Computing Limited +// +// This file is part of QScintilla. +// +// This file may be used under the terms of the GNU General Public License +// version 3.0 as published by the Free Software Foundation and appearing in +// the file LICENSE included in the packaging of this file. Please review the +// following information to ensure the GNU General Public License version 3.0 +// requirements will be met: http://www.gnu.org/copyleft/gpl.html. +// +// If you do not wish to use this file under the terms of the GPL version 3.0 +// then you may purchase a commercial license. For more information contact +// info@riverbankcomputing.com. +// +// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + + +#include "Qsci/qscilexervhdl.h" + +#include +#include +#include + + +// The ctor. +QsciLexerVHDL::QsciLexerVHDL(QObject *parent) + : QsciLexer(parent), + fold_comments(true), fold_compact(true), fold_atelse(true), + fold_atbegin(true), fold_atparenth(true) +{ +} + + +// The dtor. +QsciLexerVHDL::~QsciLexerVHDL() +{ +} + + +// Returns the language name. +const char *QsciLexerVHDL::language() const +{ + return "VHDL"; +} + + +// Returns the lexer name. +const char *QsciLexerVHDL::lexer() const +{ + return "vhdl"; +} + + +// Return the style used for braces. +int QsciLexerVHDL::braceStyle() const +{ + return Attribute; +} + + +// Returns the foreground colour of the text for a style. +QColor QsciLexerVHDL::defaultColor(int style) const +{ + switch (style) + { + case Default: + return QColor(0x80,0x00,0x80); + + case Comment: + return QColor(0x00,0x7f,0x00); + + case CommentLine: + return QColor(0x3f,0x7f,0x3f); + + case Number: + case StandardOperator: + return QColor(0x00,0x7f,0x7f); + + case String: + return QColor(0x7f,0x00,0x7f); + + case UnclosedString: + return QColor(0x00,0x00,0x00); + + case Keyword: + return QColor(0x00,0x00,0x7f); + + case Attribute: + return QColor(0x80,0x40,0x20); + + case StandardFunction: + return QColor(0x80,0x80,0x20); + + case StandardPackage: + return QColor(0x20,0x80,0x20); + + case StandardType: + return QColor(0x20,0x80,0x80); + + case KeywordSet7: + return QColor(0x80,0x40,0x20); + } + + return QsciLexer::defaultColor(style); +} + + +// Returns the end-of-line fill for a style. +bool QsciLexerVHDL::defaultEolFill(int style) const +{ + if (style == UnclosedString) + return true; + + return QsciLexer::defaultEolFill(style); +} + + +// Returns the font of the text for a style. +QFont QsciLexerVHDL::defaultFont(int style) const +{ + QFont f; + + switch (style) + { + case Comment: + case CommentLine: + case KeywordSet7: +#if defined(Q_OS_WIN) + f = QFont("Comic Sans MS",9); +#elif defined(Q_OS_MAC) + f = QFont("Comic Sans MS", 12); +#else + f = QFont("Bitstream Vera Serif",9); +#endif + break; + + default: + f = QsciLexer::defaultFont(style); + } + + return f; +} + + +// Returns the set of keywords. +const char *QsciLexerVHDL::keywords(int set) const +{ + if (set == 1) + return + "access after alias all architecture array assert attribute begin " + "block body buffer bus case component configuration constant " + "disconnect downto else elsif end entity exit file for function " + "generate generic group guarded if impure in inertial inout is " + "label library linkage literal loop map new next null of on open " + "others out package port postponed procedure process pure range " + "record register reject report return select severity shared " + "signal subtype then to transport type unaffected units until use " + "variable wait when while with"; + + if (set == 2) + return + "abs and mod nand nor not or rem rol ror sla sll sra srl xnor xor"; + + if (set == 3) + return + "left right low high ascending image value pos val succ pred " + "leftof rightof base range reverse_range length delayed stable " + "quiet transaction event active last_event last_active last_value " + "driving driving_value simple_name path_name instance_name"; + + if (set == 4) + return + "now readline read writeline write endfile resolved to_bit " + "to_bitvector to_stdulogic to_stdlogicvector to_stdulogicvector " + "to_x01 to_x01z to_UX01 rising_edge falling_edge is_x shift_left " + "shift_right rotate_left rotate_right resize to_integer " + "to_unsigned to_signed std_match to_01"; + + if (set == 5) + return + "std ieee work standard textio std_logic_1164 std_logic_arith " + "std_logic_misc std_logic_signed std_logic_textio " + "std_logic_unsigned numeric_bit numeric_std math_complex " + "math_real vital_primitives vital_timing"; + + if (set == 6) + return + "boolean bit character severity_level integer real time " + "delay_length natural positive string bit_vector file_open_kind " + "file_open_status line text side width std_ulogic " + "std_ulogic_vector std_logic std_logic_vector X01 X01Z UX01 UX01Z " + "unsigned signed"; + + return 0; +} + + +// Returns the user name of a style. +QString QsciLexerVHDL::description(int style) const +{ + switch (style) + { + case Default: + return tr("Default"); + + case Comment: + return tr("Comment"); + + case CommentLine: + return tr("Comment line"); + + case Number: + return tr("Number"); + + case String: + return tr("String"); + + case Operator: + return tr("Operator"); + + case Identifier: + return tr("Identifier"); + + case UnclosedString: + return tr("Unclosed string"); + + case Keyword: + return tr("Keyword"); + + case StandardOperator: + return tr("Standard operator"); + + case Attribute: + return tr("Attribute"); + + case StandardFunction: + return tr("Standard function"); + + case StandardPackage: + return tr("Standard package"); + + case StandardType: + return tr("Standard type"); + + case KeywordSet7: + return tr("User defined"); + + case CommentBlock: + return tr("Comment block"); + } + + return QString(); +} + + +// Returns the background colour of the text for a style. +QColor QsciLexerVHDL::defaultPaper(int style) const +{ + if (style == UnclosedString) + return QColor(0xe0,0xc0,0xe0); + + return QsciLexer::defaultPaper(style); +} + + +// Refresh all properties. +void QsciLexerVHDL::refreshProperties() +{ + setCommentProp(); + setCompactProp(); + setAtElseProp(); + setAtBeginProp(); + setAtParenthProp(); +} + + +// Read properties from the settings. +bool QsciLexerVHDL::readProperties(QSettings &qs,const QString &prefix) +{ + fold_comments = qs.value(prefix + "foldcomments", true).toBool(); + fold_compact = qs.value(prefix + "foldcompact", true).toBool(); + fold_atelse = qs.value(prefix + "foldatelse", true).toBool(); + fold_atbegin = qs.value(prefix + "foldatbegin", true).toBool(); + fold_atparenth = qs.value(prefix + "foldatparenthesis", true).toBool(); + + return true; +} + + +// Write properties to the settings. +bool QsciLexerVHDL::writeProperties(QSettings &qs,const QString &prefix) const +{ + qs.setValue(prefix + "foldcomments", fold_comments); + qs.setValue(prefix + "foldcompact", fold_compact); + qs.setValue(prefix + "foldatelse", fold_atelse); + qs.setValue(prefix + "foldatbegin", fold_atbegin); + qs.setValue(prefix + "foldatparenthesis", fold_atparenth); + + return true; +} + + +// Return true if comments can be folded. +bool QsciLexerVHDL::foldComments() const +{ + return fold_comments; +} + + +// Set if comments can be folded. +void QsciLexerVHDL::setFoldComments(bool fold) +{ + fold_comments = fold; + + setCommentProp(); +} + + +// Set the "fold.comment" property. +void QsciLexerVHDL::setCommentProp() +{ + emit propertyChanged("fold.comment",(fold_comments ? "1" : "0")); +} + + +// Return true if folds are compact. +bool QsciLexerVHDL::foldCompact() const +{ + return fold_compact; +} + + +// Set if folds are compact +void QsciLexerVHDL::setFoldCompact(bool fold) +{ + fold_compact = fold; + + setCompactProp(); +} + + +// Set the "fold.compact" property. +void QsciLexerVHDL::setCompactProp() +{ + emit propertyChanged("fold.compact",(fold_compact ? "1" : "0")); +} + + +// Return true if else blocks can be folded. +bool QsciLexerVHDL::foldAtElse() const +{ + return fold_atelse; +} + + +// Set if else blocks can be folded. +void QsciLexerVHDL::setFoldAtElse(bool fold) +{ + fold_atelse = fold; + + setAtElseProp(); +} + + +// Set the "fold.at.else" property. +void QsciLexerVHDL::setAtElseProp() +{ + emit propertyChanged("fold.at.else",(fold_atelse ? "1" : "0")); +} + + +// Return true if begin blocks can be folded. +bool QsciLexerVHDL::foldAtBegin() const +{ + return fold_atbegin; +} + + +// Set if begin blocks can be folded. +void QsciLexerVHDL::setFoldAtBegin(bool fold) +{ + fold_atbegin = fold; + + setAtBeginProp(); +} + + +// Set the "fold.at.Begin" property. +void QsciLexerVHDL::setAtBeginProp() +{ + emit propertyChanged("fold.at.Begin",(fold_atelse ? "1" : "0")); +} + + +// Return true if blocks can be folded at a parenthesis. +bool QsciLexerVHDL::foldAtParenthesis() const +{ + return fold_atparenth; +} + + +// Set if blocks can be folded at a parenthesis. +void QsciLexerVHDL::setFoldAtParenthesis(bool fold) +{ + fold_atparenth = fold; + + setAtParenthProp(); +} + + +// Set the "fold.at.Parenthese" property. +void QsciLexerVHDL::setAtParenthProp() +{ + emit propertyChanged("fold.at.Parenthese",(fold_atparenth ? "1" : "0")); +} diff --git a/libs/qscintilla/Qt4Qt5/qscilexerxml.cpp b/libs/qscintilla_2.14.1/Qt5Qt6/qscilexerxml.cpp similarity index 98% rename from libs/qscintilla/Qt4Qt5/qscilexerxml.cpp rename to libs/qscintilla_2.14.1/Qt5Qt6/qscilexerxml.cpp index 16e0a909e..478eb4587 100644 --- a/libs/qscintilla/Qt4Qt5/qscilexerxml.cpp +++ b/libs/qscintilla_2.14.1/Qt5Qt6/qscilexerxml.cpp @@ -1,6 +1,6 @@ // This module implements the QsciLexerXML class. // -// Copyright (c) 2019 Riverbank Computing Limited +// Copyright (c) 2023 Riverbank Computing Limited // // This file is part of QScintilla. // diff --git a/libs/qscintilla_2.14.1/Qt5Qt6/qscilexeryaml.cpp b/libs/qscintilla_2.14.1/Qt5Qt6/qscilexeryaml.cpp new file mode 100644 index 000000000..4a672f265 --- /dev/null +++ b/libs/qscintilla_2.14.1/Qt5Qt6/qscilexeryaml.cpp @@ -0,0 +1,269 @@ +// This module implements the QsciLexerYAML class. +// +// Copyright (c) 2023 Riverbank Computing Limited +// +// This file is part of QScintilla. +// +// This file may be used under the terms of the GNU General Public License +// version 3.0 as published by the Free Software Foundation and appearing in +// the file LICENSE included in the packaging of this file. Please review the +// following information to ensure the GNU General Public License version 3.0 +// requirements will be met: http://www.gnu.org/copyleft/gpl.html. +// +// If you do not wish to use this file under the terms of the GPL version 3.0 +// then you may purchase a commercial license. For more information contact +// info@riverbankcomputing.com. +// +// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + + +#include "Qsci/qscilexeryaml.h" + +#include +#include +#include + + +// The ctor. +QsciLexerYAML::QsciLexerYAML(QObject *parent) + : QsciLexer(parent), fold_comments(false) +{ +} + + +// The dtor. +QsciLexerYAML::~QsciLexerYAML() +{ +} + + +// Returns the language name. +const char *QsciLexerYAML::language() const +{ + return "YAML"; +} + + +// Returns the lexer name. +const char *QsciLexerYAML::lexer() const +{ + return "yaml"; +} + + +// Returns the foreground colour of the text for a style. +QColor QsciLexerYAML::defaultColor(int style) const +{ + switch (style) + { + case Default: + return QColor(0x00,0x00,0x00); + + case Comment: + return QColor(0x00,0x88,0x00); + + case Identifier: + return QColor(0x00,0x00,0x88); + + case Keyword: + return QColor(0x88,0x00,0x88); + + case Number: + return QColor(0x88,0x00,0x00); + + case Reference: + return QColor(0x00,0x88,0x88); + + case DocumentDelimiter: + case SyntaxErrorMarker: + return QColor(0xff,0xff,0xff); + + case TextBlockMarker: + return QColor(0x33,0x33,0x66); + } + + return QsciLexer::defaultColor(style); +} + + +// Returns the end-of-line fill for a style. +bool QsciLexerYAML::defaultEolFill(int style) const +{ + if (style == DocumentDelimiter || style == SyntaxErrorMarker) + return true; + + return QsciLexer::defaultEolFill(style); +} + + +// Returns the font of the text for a style. +QFont QsciLexerYAML::defaultFont(int style) const +{ + QFont f; + + switch (style) + { + case Default: + case TextBlockMarker: +#if defined(Q_OS_WIN) + f = QFont("Times New Roman", 11); +#elif defined(Q_OS_MAC) + f = QFont("Times New Roman", 12); +#else + f = QFont("Bitstream Charter", 10); +#endif + break; + + case Identifier: + f = QsciLexer::defaultFont(style); + f.setBold(true); + break; + + case DocumentDelimiter: +#if defined(Q_OS_WIN) + f = QFont("Comic Sans MS",9); +#elif defined(Q_OS_MAC) + f = QFont("Comic Sans MS", 12); +#else + f = QFont("Bitstream Vera Serif",9); +#endif + f.setBold(true); + break; + + case SyntaxErrorMarker: +#if defined(Q_OS_WIN) + f = QFont("Times New Roman", 11); +#elif defined(Q_OS_MAC) + f = QFont("Times New Roman", 12); +#else + f = QFont("Bitstream Charter", 10); +#endif + f.setBold(true); + f.setItalic(true); + break; + + default: + f = QsciLexer::defaultFont(style); + } + + return f; +} + + +// Returns the set of keywords. +const char *QsciLexerYAML::keywords(int set) const +{ + if (set == 1) + return "true false yes no"; + + return 0; +} + + +// Returns the user name of a style. +QString QsciLexerYAML::description(int style) const +{ + switch (style) + { + case Default: + return tr("Default"); + + case Comment: + return tr("Comment"); + + case Identifier: + return tr("Identifier"); + + case Keyword: + return tr("Keyword"); + + case Number: + return tr("Number"); + + case Reference: + return tr("Reference"); + + case DocumentDelimiter: + return tr("Document delimiter"); + + case TextBlockMarker: + return tr("Text block marker"); + + case SyntaxErrorMarker: + return tr("Syntax error marker"); + + case Operator: + return tr("Operator"); + } + + return QString(); +} + + +// Returns the background colour of the text for a style. +QColor QsciLexerYAML::defaultPaper(int style) const +{ + switch (style) + { + case DocumentDelimiter: + return QColor(0x00,0x00,0x88); + + case SyntaxErrorMarker: + return QColor(0xff,0x00,0x00); + } + + return QsciLexer::defaultPaper(style); +} + + +// Refresh all properties. +void QsciLexerYAML::refreshProperties() +{ + setCommentProp(); +} + + +// Read properties from the settings. +bool QsciLexerYAML::readProperties(QSettings &qs,const QString &prefix) +{ + int rc = true; + + fold_comments = qs.value(prefix + "foldcomments", false).toBool(); + + return rc; +} + + +// Write properties to the settings. +bool QsciLexerYAML::writeProperties(QSettings &qs,const QString &prefix) const +{ + int rc = true; + + qs.setValue(prefix + "foldcomments", fold_comments); + + return rc; +} + + +// Return true if comments can be folded. +bool QsciLexerYAML::foldComments() const +{ + return fold_comments; +} + + +// Set if comments can be folded. +void QsciLexerYAML::setFoldComments(bool fold) +{ + fold_comments = fold; + + setCommentProp(); +} + + +// Set the "fold.comment.yaml" property. +void QsciLexerYAML::setCommentProp() +{ + emit propertyChanged("fold.comment.yaml",(fold_comments ? "1" : "0")); +} diff --git a/libs/qscintilla/Qt4Qt5/qscimacro.cpp b/libs/qscintilla_2.14.1/Qt5Qt6/qscimacro.cpp similarity index 95% rename from libs/qscintilla/Qt4Qt5/qscimacro.cpp rename to libs/qscintilla_2.14.1/Qt5Qt6/qscimacro.cpp index 405a123bb..c216caeef 100644 --- a/libs/qscintilla/Qt4Qt5/qscimacro.cpp +++ b/libs/qscintilla_2.14.1/Qt5Qt6/qscimacro.cpp @@ -1,6 +1,6 @@ // This module implements the QsciMacro class. // -// Copyright (c) 2019 Riverbank Computing Limited +// Copyright (c) 2023 Riverbank Computing Limited // // This file is part of QScintilla. // @@ -183,9 +183,8 @@ QString QsciMacro::save() const ms += ' '; unsigned len = (*it).text.size(); - QString m; - ms += m.sprintf("%u %lu %u", (*it).msg, (*it).wParam, len); + ms += QString("%1 %2 %3").arg((*it).msg).arg((*it).wParam).arg(len); if (len) { @@ -209,13 +208,10 @@ QString QsciMacro::save() const unsigned char ch = *cp++; if (ch == '\\' || ch == '"' || ch <= ' ' || ch >= 0x7f) - { - QString buf; - - ms += buf.sprintf("\\%02x", ch); - } + ms += QString("\\%1").arg(static_cast(ch), 2, 16, + QLatin1Char('0')); else - ms += ch; + ms += static_cast(ch); } } } diff --git a/libs/qscintilla_2.14.1/Qt5Qt6/qscintilla.pro b/libs/qscintilla_2.14.1/Qt5Qt6/qscintilla.pro new file mode 100644 index 000000000..c6f143afc --- /dev/null +++ b/libs/qscintilla_2.14.1/Qt5Qt6/qscintilla.pro @@ -0,0 +1,445 @@ +# The project file for the QScintilla library. +# +# Copyright (c) 2023 Riverbank Computing Limited +# +# This file is part of QScintilla. +# +# This file may be used under the terms of the GNU General Public License +# version 3.0 as published by the Free Software Foundation and appearing in +# the file LICENSE included in the packaging of this file. Please review the +# following information to ensure the GNU General Public License version 3.0 +# requirements will be met: http://www.gnu.org/copyleft/gpl.html. +# +# If you do not wish to use this file under the terms of the GPL version 3.0 +# then you may purchase a commercial license. For more information contact +# info@riverbankcomputing.com. +# +# This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +# WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + + +!win32:VERSION = 15.2.1 + +TEMPLATE = lib +CONFIG += qt warn_off thread exceptions hide_symbols + +CONFIG(debug, debug|release) { + mac: { + TARGET = qscintilla2_qt$${QT_MAJOR_VERSION}_debug + } else { + win32: { + TARGET = qscintilla2_qt$${QT_MAJOR_VERSION}d + } else { + TARGET = qscintilla2_qt$${QT_MAJOR_VERSION} + } + } +} else { + TARGET = qscintilla2_qt$${QT_MAJOR_VERSION} +} + +macx:!CONFIG(staticlib) { + QMAKE_POST_LINK += install_name_tool -id @rpath/$(TARGET1) $(TARGET) +} + +INCLUDEPATH += . ../scintilla/include ../scintilla/lexlib ../scintilla/src + +!CONFIG(staticlib) { + DEFINES += QSCINTILLA_MAKE_DLL + + # Comment this in to build a dynamic library supporting multiple + # architectures on macOS. + #QMAKE_APPLE_DEVICE_ARCHS = x86_64 arm64 +} +DEFINES += SCINTILLA_QT SCI_LEXER INCLUDE_DEPRECATED_FEATURES + +QT += widgets +!ios:QT += printsupport +macx:lessThan(QT_MAJOR_VERSION, 6) { + QT += macextras +} + +# Work around QTBUG-39300. +CONFIG -= android_install + +# For old versions of GCC. +unix:!macx { + CONFIG += c++11 +} + +# Comment this in if you want the internal Scintilla classes to be placed in a +# Scintilla namespace rather than pollute the global namespace. +#DEFINES += SCI_NAMESPACE + +target.path = $$[QT_INSTALL_LIBS] +INSTALLS += target + +header.path = $$[QT_INSTALL_HEADERS] +header.files = Qsci +INSTALLS += header + +trans.path = $$[QT_INSTALL_TRANSLATIONS] +trans.files = qscintilla_*.qm +INSTALLS += trans + +qsci.path = $$[QT_INSTALL_DATA] +qsci.files = ../qsci +INSTALLS += qsci + +features.path = $$[QT_HOST_DATA]/mkspecs/features +CONFIG(staticlib) { + features.files = $$PWD/features_staticlib/qscintilla2.prf +} else { + features.files = $$PWD/features/qscintilla2.prf +} +INSTALLS += features + +HEADERS = \ + ./Qsci/qsciglobal.h \ + ./Qsci/qsciscintilla.h \ + ./Qsci/qsciscintillabase.h \ + ./Qsci/qsciabstractapis.h \ + ./Qsci/qsciapis.h \ + ./Qsci/qscicommand.h \ + ./Qsci/qscicommandset.h \ + ./Qsci/qscidocument.h \ + ./Qsci/qscilexer.h \ + ./Qsci/qscilexerasm.h \ + ./Qsci/qscilexeravs.h \ + ./Qsci/qscilexerbash.h \ + ./Qsci/qscilexerbatch.h \ + ./Qsci/qscilexercmake.h \ + ./Qsci/qscilexercoffeescript.h \ + ./Qsci/qscilexercpp.h \ + ./Qsci/qscilexercsharp.h \ + ./Qsci/qscilexercss.h \ + ./Qsci/qscilexercustom.h \ + ./Qsci/qscilexerd.h \ + ./Qsci/qscilexerdiff.h \ + ./Qsci/qscilexeredifact.h \ + ./Qsci/qscilexerfortran.h \ + ./Qsci/qscilexerfortran77.h \ + ./Qsci/qscilexerhex.h \ + ./Qsci/qscilexerhtml.h \ + ./Qsci/qscilexeridl.h \ + ./Qsci/qscilexerintelhex.h \ + ./Qsci/qscilexerjava.h \ + ./Qsci/qscilexerjavascript.h \ + ./Qsci/qscilexerjson.h \ + ./Qsci/qscilexerlua.h \ + ./Qsci/qscilexermakefile.h \ + ./Qsci/qscilexermarkdown.h \ + ./Qsci/qscilexermasm.h \ + ./Qsci/qscilexermatlab.h \ + ./Qsci/qscilexernasm.h \ + ./Qsci/qscilexeroctave.h \ + ./Qsci/qscilexerpascal.h \ + ./Qsci/qscilexerperl.h \ + ./Qsci/qscilexerpostscript.h \ + ./Qsci/qscilexerpo.h \ + ./Qsci/qscilexerpov.h \ + ./Qsci/qscilexerproperties.h \ + ./Qsci/qscilexerpython.h \ + ./Qsci/qscilexerruby.h \ + ./Qsci/qscilexerspice.h \ + ./Qsci/qscilexersql.h \ + ./Qsci/qscilexersrec.h \ + ./Qsci/qscilexertcl.h \ + ./Qsci/qscilexertekhex.h \ + ./Qsci/qscilexertex.h \ + ./Qsci/qscilexerverilog.h \ + ./Qsci/qscilexervhdl.h \ + ./Qsci/qscilexerxml.h \ + ./Qsci/qscilexeryaml.h \ + ./Qsci/qscimacro.h \ + ./Qsci/qscistyle.h \ + ./Qsci/qscistyledtext.h \ + ListBoxQt.h \ + SciAccessibility.h \ + SciClasses.h \ + ScintillaQt.h \ + ../scintilla/include/ILexer.h \ + ../scintilla/include/ILoader.h \ + ../scintilla/include/Platform.h \ + ../scintilla/include/Sci_Position.h \ + ../scintilla/include/SciLexer.h \ + ../scintilla/include/Scintilla.h \ + ../scintilla/include/ScintillaWidget.h \ + ../scintilla/lexlib/Accessor.h \ + ../scintilla/lexlib/CharacterCategory.h \ + ../scintilla/lexlib/CharacterSet.h \ + ../scintilla/lexlib/DefaultLexer.h \ + ../scintilla/lexlib/LexAccessor.h \ + ../scintilla/lexlib/LexerBase.h \ + ../scintilla/lexlib/LexerModule.h \ + ../scintilla/lexlib/LexerNoExceptions.h \ + ../scintilla/lexlib/LexerSimple.h \ + ../scintilla/lexlib/OptionSet.h \ + ../scintilla/lexlib/PropSetSimple.h \ + ../scintilla/lexlib/SparseState.h \ + ../scintilla/lexlib/StringCopy.h \ + ../scintilla/lexlib/StyleContext.h \ + ../scintilla/lexlib/SubStyles.h \ + ../scintilla/lexlib/WordList.h \ + ../scintilla/src/AutoComplete.h \ + ../scintilla/src/CallTip.h \ + ../scintilla/src/CaseConvert.h \ + ../scintilla/src/CaseFolder.h \ + ../scintilla/src/Catalogue.h \ + ../scintilla/src/CellBuffer.h \ + ../scintilla/src/CharClassify.h \ + ../scintilla/src/ContractionState.h \ + ../scintilla/src/DBCS.h \ + ../scintilla/src/Decoration.h \ + ../scintilla/src/Document.h \ + ../scintilla/src/EditModel.h \ + ../scintilla/src/Editor.h \ + ../scintilla/src/EditView.h \ + ../scintilla/src/ElapsedPeriod.h \ + ../scintilla/src/ExternalLexer.h \ + ../scintilla/src/FontQuality.h \ + ../scintilla/src/Indicator.h \ + ../scintilla/src/IntegerRectangle.h \ + ../scintilla/src/KeyMap.h \ + ../scintilla/src/LineMarker.h \ + ../scintilla/src/MarginView.h \ + ../scintilla/src/Partitioning.h \ + ../scintilla/src/PerLine.h \ + ../scintilla/src/Position.h \ + ../scintilla/src/PositionCache.h \ + ../scintilla/src/RESearch.h \ + ../scintilla/src/RunStyles.h \ + ../scintilla/src/ScintillaBase.h \ + ../scintilla/src/Selection.h \ + ../scintilla/src/SparseVector.h \ + ../scintilla/src/SplitVector.h \ + ../scintilla/src/Style.h \ + ../scintilla/src/UniConversion.h \ + ../scintilla/src/UniqueString.h \ + ../scintilla/src/ViewStyle.h \ + ../scintilla/src/XPM.h + +!ios:HEADERS += ./Qsci/qsciprinter.h + +SOURCES = \ + qsciscintilla.cpp \ + qsciscintillabase.cpp \ + qsciabstractapis.cpp \ + qsciapis.cpp \ + qscicommand.cpp \ + qscicommandset.cpp \ + qscidocument.cpp \ + qscilexer.cpp \ + qscilexerasm.cpp \ + qscilexeravs.cpp \ + qscilexerbash.cpp \ + qscilexerbatch.cpp \ + qscilexercmake.cpp \ + qscilexercoffeescript.cpp \ + qscilexercpp.cpp \ + qscilexercsharp.cpp \ + qscilexercss.cpp \ + qscilexercustom.cpp \ + qscilexerd.cpp \ + qscilexerdiff.cpp \ + qscilexeredifact.cpp \ + qscilexerfortran.cpp \ + qscilexerfortran77.cpp \ + qscilexerhex.cpp \ + qscilexerhtml.cpp \ + qscilexeridl.cpp \ + qscilexerintelhex.cpp \ + qscilexerjava.cpp \ + qscilexerjavascript.cpp \ + qscilexerjson.cpp \ + qscilexerlua.cpp \ + qscilexermakefile.cpp \ + qscilexermarkdown.cpp \ + qscilexermasm.cpp \ + qscilexermatlab.cpp \ + qscilexernasm.cpp \ + qscilexeroctave.cpp \ + qscilexerpascal.cpp \ + qscilexerperl.cpp \ + qscilexerpostscript.cpp \ + qscilexerpo.cpp \ + qscilexerpov.cpp \ + qscilexerproperties.cpp \ + qscilexerpython.cpp \ + qscilexerruby.cpp \ + qscilexerspice.cpp \ + qscilexersql.cpp \ + qscilexersrec.cpp \ + qscilexertcl.cpp \ + qscilexertekhex.cpp \ + qscilexertex.cpp \ + qscilexerverilog.cpp \ + qscilexervhdl.cpp \ + qscilexerxml.cpp \ + qscilexeryaml.cpp \ + qscimacro.cpp \ + qscistyle.cpp \ + qscistyledtext.cpp \ + InputMethod.cpp \ + ListBoxQt.cpp \ + MacPasteboardMime.cpp \ + PlatQt.cpp \ + SciAccessibility.cpp \ + SciClasses.cpp \ + ScintillaQt.cpp \ + ../scintilla/lexers/LexA68k.cpp \ + ../scintilla/lexers/LexAPDL.cpp \ + ../scintilla/lexers/LexASY.cpp \ + ../scintilla/lexers/LexAU3.cpp \ + ../scintilla/lexers/LexAVE.cpp \ + ../scintilla/lexers/LexAVS.cpp \ + ../scintilla/lexers/LexAbaqus.cpp \ + ../scintilla/lexers/LexAda.cpp \ + ../scintilla/lexers/LexAsm.cpp \ + ../scintilla/lexers/LexAsn1.cpp \ + ../scintilla/lexers/LexBaan.cpp \ + ../scintilla/lexers/LexBash.cpp \ + ../scintilla/lexers/LexBasic.cpp \ + ../scintilla/lexers/LexBatch.cpp \ + ../scintilla/lexers/LexBibTeX.cpp \ + ../scintilla/lexers/LexBullant.cpp \ + ../scintilla/lexers/LexCLW.cpp \ + ../scintilla/lexers/LexCOBOL.cpp \ + ../scintilla/lexers/LexCPP.cpp \ + ../scintilla/lexers/LexCSS.cpp \ + ../scintilla/lexers/LexCaml.cpp \ + ../scintilla/lexers/LexCmake.cpp \ + ../scintilla/lexers/LexCoffeeScript.cpp \ + ../scintilla/lexers/LexConf.cpp \ + ../scintilla/lexers/LexCrontab.cpp \ + ../scintilla/lexers/LexCsound.cpp \ + ../scintilla/lexers/LexD.cpp \ + ../scintilla/lexers/LexDMAP.cpp \ + ../scintilla/lexers/LexDMIS.cpp \ + ../scintilla/lexers/LexDiff.cpp \ + ../scintilla/lexers/LexECL.cpp \ + ../scintilla/lexers/LexEDIFACT.cpp \ + ../scintilla/lexers/LexEScript.cpp \ + ../scintilla/lexers/LexEiffel.cpp \ + ../scintilla/lexers/LexErlang.cpp \ + ../scintilla/lexers/LexErrorList.cpp \ + ../scintilla/lexers/LexFlagship.cpp \ + ../scintilla/lexers/LexForth.cpp \ + ../scintilla/lexers/LexFortran.cpp \ + ../scintilla/lexers/LexGAP.cpp \ + ../scintilla/lexers/LexGui4Cli.cpp \ + ../scintilla/lexers/LexHTML.cpp \ + ../scintilla/lexers/LexHaskell.cpp \ + ../scintilla/lexers/LexHex.cpp \ + ../scintilla/lexers/LexIndent.cpp \ + ../scintilla/lexers/LexInno.cpp \ + ../scintilla/lexers/LexJSON.cpp \ + ../scintilla/lexers/LexKVIrc.cpp \ + ../scintilla/lexers/LexKix.cpp \ + ../scintilla/lexers/LexLaTeX.cpp \ + ../scintilla/lexers/LexLisp.cpp \ + ../scintilla/lexers/LexLout.cpp \ + ../scintilla/lexers/LexLua.cpp \ + ../scintilla/lexers/LexMMIXAL.cpp \ + ../scintilla/lexers/LexMPT.cpp \ + ../scintilla/lexers/LexMSSQL.cpp \ + ../scintilla/lexers/LexMagik.cpp \ + ../scintilla/lexers/LexMake.cpp \ + ../scintilla/lexers/LexMarkdown.cpp \ + ../scintilla/lexers/LexMatlab.cpp \ + ../scintilla/lexers/LexMaxima.cpp \ + ../scintilla/lexers/LexMetapost.cpp \ + ../scintilla/lexers/LexModula.cpp \ + ../scintilla/lexers/LexMySQL.cpp \ + ../scintilla/lexers/LexNimrod.cpp \ + ../scintilla/lexers/LexNsis.cpp \ + ../scintilla/lexers/LexNull.cpp \ + ../scintilla/lexers/LexOScript.cpp \ + ../scintilla/lexers/LexOpal.cpp \ + ../scintilla/lexers/LexPB.cpp \ + ../scintilla/lexers/LexPLM.cpp \ + ../scintilla/lexers/LexPO.cpp \ + ../scintilla/lexers/LexPOV.cpp \ + ../scintilla/lexers/LexPS.cpp \ + ../scintilla/lexers/LexPascal.cpp \ + ../scintilla/lexers/LexPerl.cpp \ + ../scintilla/lexers/LexPowerPro.cpp \ + ../scintilla/lexers/LexPowerShell.cpp \ + ../scintilla/lexers/LexProgress.cpp \ + ../scintilla/lexers/LexProps.cpp \ + ../scintilla/lexers/LexPython.cpp \ + ../scintilla/lexers/LexR.cpp \ + ../scintilla/lexers/LexRebol.cpp \ + ../scintilla/lexers/LexRegistry.cpp \ + ../scintilla/lexers/LexRuby.cpp \ + ../scintilla/lexers/LexRust.cpp \ + ../scintilla/lexers/LexSAS.cpp \ + ../scintilla/lexers/LexSML.cpp \ + ../scintilla/lexers/LexSQL.cpp \ + ../scintilla/lexers/LexSTTXT.cpp \ + ../scintilla/lexers/LexScriptol.cpp \ + ../scintilla/lexers/LexSmalltalk.cpp \ + ../scintilla/lexers/LexSorcus.cpp \ + ../scintilla/lexers/LexSpecman.cpp \ + ../scintilla/lexers/LexSpice.cpp \ + ../scintilla/lexers/LexStata.cpp \ + ../scintilla/lexers/LexTACL.cpp \ + ../scintilla/lexers/LexTADS3.cpp \ + ../scintilla/lexers/LexTAL.cpp \ + ../scintilla/lexers/LexTCL.cpp \ + ../scintilla/lexers/LexTCMD.cpp \ + ../scintilla/lexers/LexTeX.cpp \ + ../scintilla/lexers/LexTxt2tags.cpp \ + ../scintilla/lexers/LexVB.cpp \ + ../scintilla/lexers/LexVHDL.cpp \ + ../scintilla/lexers/LexVerilog.cpp \ + ../scintilla/lexers/LexVisualProlog.cpp \ + ../scintilla/lexers/LexYAML.cpp \ + ../scintilla/lexlib/Accessor.cpp \ + ../scintilla/lexlib/CharacterCategory.cpp \ + ../scintilla/lexlib/CharacterSet.cpp \ + ../scintilla/lexlib/DefaultLexer.cpp \ + ../scintilla/lexlib/LexerBase.cpp \ + ../scintilla/lexlib/LexerModule.cpp \ + ../scintilla/lexlib/LexerNoExceptions.cpp \ + ../scintilla/lexlib/LexerSimple.cpp \ + ../scintilla/lexlib/PropSetSimple.cpp \ + ../scintilla/lexlib/StyleContext.cpp \ + ../scintilla/lexlib/WordList.cpp \ + ../scintilla/src/AutoComplete.cpp \ + ../scintilla/src/CallTip.cpp \ + ../scintilla/src/CaseConvert.cpp \ + ../scintilla/src/CaseFolder.cpp \ + ../scintilla/src/Catalogue.cpp \ + ../scintilla/src/CellBuffer.cpp \ + ../scintilla/src/CharClassify.cpp \ + ../scintilla/src/ContractionState.cpp \ + ../scintilla/src/DBCS.cpp \ + ../scintilla/src/Decoration.cpp \ + ../scintilla/src/Document.cpp \ + ../scintilla/src/EditModel.cpp \ + ../scintilla/src/Editor.cpp \ + ../scintilla/src/EditView.cpp \ + ../scintilla/src/ExternalLexer.cpp \ + ../scintilla/src/Indicator.cpp \ + ../scintilla/src/KeyMap.cpp \ + ../scintilla/src/LineMarker.cpp \ + ../scintilla/src/MarginView.cpp \ + ../scintilla/src/PerLine.cpp \ + ../scintilla/src/PositionCache.cpp \ + ../scintilla/src/RESearch.cpp \ + ../scintilla/src/RunStyles.cpp \ + ../scintilla/src/ScintillaBase.cpp \ + ../scintilla/src/Selection.cpp \ + ../scintilla/src/Style.cpp \ + ../scintilla/src/UniConversion.cpp \ + ../scintilla/src/ViewStyle.cpp \ + ../scintilla/src/XPM.cpp + +!ios:SOURCES += qsciprinter.cpp + +TRANSLATIONS = \ + qscintilla_cs.ts \ + qscintilla_de.ts \ + qscintilla_es.ts \ + qscintilla_fr.ts \ + qscintilla_pt_br.ts diff --git a/libs/qscintilla/Qt4Qt5/qscintilla_cs.qm b/libs/qscintilla_2.14.1/Qt5Qt6/qscintilla_cs.qm similarity index 100% rename from libs/qscintilla/Qt4Qt5/qscintilla_cs.qm rename to libs/qscintilla_2.14.1/Qt5Qt6/qscintilla_cs.qm diff --git a/libs/qscintilla/Qt4Qt5/qscintilla_cs.ts b/libs/qscintilla_2.14.1/Qt5Qt6/qscintilla_cs.ts similarity index 85% rename from libs/qscintilla/Qt4Qt5/qscintilla_cs.ts rename to libs/qscintilla_2.14.1/Qt5Qt6/qscintilla_cs.ts index 18eace667..570c5fd50 100644 --- a/libs/qscintilla/Qt4Qt5/qscintilla_cs.ts +++ b/libs/qscintilla_2.14.1/Qt5Qt6/qscintilla_cs.ts @@ -4,493 +4,493 @@ QsciCommand - + Move down one line Posun o jednu řádku dolů - + Extend selection down one line Rozšířit výběr o jednu řádku dolů - + Scroll view down one line Rolovat pohled o jednu řádku dolů - + Extend rectangular selection down one line Rozšířit obdélníkový výběr o jednu řádku dolů - + Move up one line Posun o jednu řádku nahoru - + Extend selection up one line Rozšířit výběr o jednu řádku nahoru - + Scroll view up one line Rolovat pohled o jednu řádku nahoru - + Extend rectangular selection up one line Rozšířit obdélníkový výběr o jednu řádku nahoru - + Move up one paragraph Posun o jeden odstavec nahoru - + Extend selection up one paragraph Rozšířit výběr o jeden odstavec nahoru - + Move down one paragraph Posun o jeden odstavec dolů - + Scroll to start of document - + Scroll to end of document - + Scroll vertically to centre current line - + Extend selection down one paragraph Rozšířit výběr o jeden odstavec dolů - + Move left one character Posun o jedno písmeno doleva - + Extend selection left one character Rozšířit výběr o jedno písmeno doleva - + Move left one word Posun o jedno slovo vlevo - + Extend selection left one word Rozšířit výběr o jedno slovo doleva - + Extend rectangular selection left one character Rozšířit obdélníkový výběr o jedno písmeno doleva - + Move right one character Posun o jedno písmeno doprava - + Extend selection right one character Rozšířit výběr o jedno písmeno doprava - + Move right one word Posun o jedno slovo doprava - + Extend selection right one word Rozšířit výběr o jedno slovo doprava - + Extend rectangular selection right one character Rozšířit obdélníkový výběr o jedno písmeno doprava - + Move to end of previous word - + Extend selection to end of previous word - + Move to end of next word - + Extend selection to end of next word - + Move left one word part Posun o část slova doleva - + Extend selection left one word part Rozšířit výběr o část slova doleva - + Move right one word part Posun o část slova doprava - + Extend selection right one word part Rozšířit výběr o část slova doprava - + Move up one page Posun na předchozí stranu - + Extend selection up one page Rozšířit výběr na předchozí stranu - + Extend rectangular selection up one page Rozšířit obdélníkový výběr na předchozí stranu - + Move down one page Posun na další stranu - + Extend selection down one page Rozšířit výběr na další stranu - + Extend rectangular selection down one page Rozšířit obdélníkový výběr na další stranu - + Delete current character Smazat aktuální znak - + Cut selection Vyjmout výběr - + Delete word to right Smazat slovo doprava - + Move to start of document line - + Extend selection to start of document line - + Extend rectangular selection to start of document line - + Move to start of display line - + Extend selection to start of display line - + Move to start of display or document line - + Extend selection to start of display or document line - + Move to first visible character in document line - + Extend selection to first visible character in document line - + Extend rectangular selection to first visible character in document line - + Move to first visible character of display in document line - + Extend selection to first visible character in display or document line - + Move to end of document line - + Extend selection to end of document line - + Extend rectangular selection to end of document line - + Move to end of display line - + Extend selection to end of display line - + Move to end of display or document line - + Extend selection to end of display or document line - + Move to start of document - + Extend selection to start of document - + Move to end of document - + Extend selection to end of document - + Stuttered move up one page - + Stuttered extend selection up one page - + Stuttered move down one page - + Stuttered extend selection down one page - + Delete previous character if not at start of line - + Delete right to end of next word - + Delete line to right Smazat řádku doprava - + Transpose current and previous lines - + Duplicate the current line - + Select all Select document - + Move selected lines up one line - + Move selected lines down one line - + Toggle insert/overtype Přepnout vkládání/přepisování - + Paste Vložit - + Copy selection Kopírovat výběr - + Insert newline - + De-indent one level - + Cancel Zrušit - + Delete previous character Smazat předchozí znak - + Delete word to left Smazat slovo doleva - + Delete line to left Smazat řádku doleva - + Undo last command - + Redo last command Znovu použít poslední příkaz - + Indent one level Odsadit o jednu úroveň - + Zoom in Zvětšit - + Zoom out Zmenšit - + Formfeed Vysunout - + Cut current line Vyjmout aktuální řádku - + Delete current line Smazat aktuální řádku - + Copy current line Kopírovat aktuální řádku - + Convert selection to lower case Vybraný text převést na malá písmena - + Convert selection to upper case Vybraný text převést na velká písmena - + Duplicate selection Duplikovat výběr @@ -498,150 +498,233 @@ QsciLexerAVS - + Default Default - + Block comment - + Nested block comment - + Line comment Jednořádkový komentář - + Number Číslo - + Operator Operátor - + Identifier Identifikátor - + Double-quoted string String ve dvojitých uvozovkách - + Triple double-quoted string String ve třech dvojitých uvozovkách - + Keyword Klíčové slovo - + Filter - + Plugin - + Function - + Clip property - + User defined + + QsciLexerAsm + + + Default + Default + + + + Comment + Komentář + + + + Number + Číslo + + + + Double-quoted string + String ve dvojitých uvozovkách + + + + Operator + Operátor + + + + Identifier + Identifikátor + + + + CPU instruction + + + + + FPU instruction + + + + + Register + + + + + Directive + Direktiva + + + + Directive operand + + + + + Block comment + + + + + Single-quoted string + String v jednoduchých uvozovkách + + + + Unclosed string + Neuzavřený string + + + + Extended instruction + + + + + Comment directive + + + QsciLexerBash - + Default Default - + Error Chyba - + Comment Komentář - + Number Číslo - + Keyword Klíčové slovo - + Double-quoted string String ve dvojitých uvozovkách - + Single-quoted string String v jednoduchých uvozovkách - + Operator Operátor - + Identifier Identifikátor - + Scalar Skalár - + Parameter expansion Rozklad parametru - + Backticks Zpětný chod - + Here document delimiter Zde je oddělovač dokumentu - + Single-quoted here document Jednoduché uvozovky zde v dokumentu @@ -649,42 +732,42 @@ QsciLexerBatch - + Default Default - + Comment Komentář - + Keyword Klíčové slovo - + Label Nadpis - + Hide command character Skrýt písmeno příkazu - + External command Externí příkaz - + Variable Proměnná - + Operator Operátor @@ -692,77 +775,77 @@ QsciLexerCMake - + Default Default - + Comment Komentář - + String - + Left quoted string - + Right quoted string - + Function - + Variable Proměnná - + Label Nadpis - + User defined - + WHILE block - + FOREACH block - + IF block - + MACRO block - + Variable within a string - + Number Číslo @@ -770,282 +853,282 @@ QsciLexerCPP - + Default Default - + Inactive default - + C comment C komentář - + Inactive C comment - + C++ comment C++ komentář - + Inactive C++ comment - + JavaDoc style C comment JavaDoc styl C komentáře - + Inactive JavaDoc style C comment - + Number Číslo - + Inactive number - + Keyword Klíčové slovo - + Inactive keyword - + Double-quoted string String ve dvojitých uvozovkách - + Inactive double-quoted string - + Single-quoted string String v jednoduchých uvozovkách - + Inactive single-quoted string - + IDL UUID - + Inactive IDL UUID - + Pre-processor block Pre-procesor blok - + Inactive pre-processor block - + Operator Operátor - + Inactive operator - + Identifier Identifikátor - + Inactive identifier - + Unclosed string Neuzavřený string - + Inactive unclosed string - + C# verbatim string - + Inactive C# verbatim string - + JavaScript regular expression JavaSript regulární výraz - + Inactive JavaScript regular expression - + JavaDoc style C++ comment JavaDoc styl C++ komentáře - + Inactive JavaDoc style C++ comment - + Secondary keywords and identifiers Sekundární klíčová slova a identifikátory - + Inactive secondary keywords and identifiers - + JavaDoc keyword JavaDoc klíčové slovo - + Inactive JavaDoc keyword - + JavaDoc keyword error JavaDoc klíčové slovo chyby - + Inactive JavaDoc keyword error - + Global classes and typedefs Globální třídy a definice typů - + Inactive global classes and typedefs - + C++ raw string - + Inactive C++ raw string - + Vala triple-quoted verbatim string - + Inactive Vala triple-quoted verbatim string - + Pike hash-quoted string - + Inactive Pike hash-quoted string - + Pre-processor C comment - + Inactive pre-processor C comment - + JavaDoc style pre-processor comment - + Inactive JavaDoc style pre-processor comment - + User-defined literal - + Inactive user-defined literal - + Task marker - + Inactive task marker - + Escape sequence - + Inactive escape sequence @@ -1053,117 +1136,122 @@ QsciLexerCSS - + Default Default - + Tag Tag - + Class selector Selektor třídy - + Pseudo-class Pseudotřída - + Unknown pseudo-class Nedefinovaná pseudotřída - + Operator Operátor - + CSS1 property CSS1 vlastnost - + Unknown property Nedefinovaná vlastnost - + Value Hodnota - + + Comment + Komentář + + + ID selector ID selektor - + Important Important - + @-rule @-pravidlo - + Double-quoted string String ve dvojitých uvozovkách - + Single-quoted string String v jednoduchých uvozovkách - + CSS2 property CSS2 vlastnost - + Attribute Atribut - + CSS3 property CSS2 vlastnost {3 ?} - + Pseudo-element - + Extended CSS property - + Extended pseudo-class - + Extended pseudo-element - + Media rule - + Variable Proměnná @@ -1171,7 +1259,7 @@ QsciLexerCSharp - + Verbatim string @@ -1179,122 +1267,122 @@ QsciLexerCoffeeScript - + Default Default - + C-style comment - + C++-style comment - + JavaDoc C-style comment - + Number Číslo - + Keyword Klíčové slovo - + Double-quoted string String ve dvojitých uvozovkách - + Single-quoted string String v jednoduchých uvozovkách - + IDL UUID - + Pre-processor block Pre-procesor blok - + Operator Operátor - + Identifier Identifikátor - + Unclosed string Neuzavřený string - + C# verbatim string - + Regular expression Regulární výraz - + JavaDoc C++-style comment - + Secondary keywords and identifiers Sekundární klíčová slova a identifikátory - + JavaDoc keyword JavaDoc klíčové slovo - + JavaDoc keyword error JavaDoc klíčové slovo chyby - + Global classes - + Block comment - + Block regular expression - + Block regular expression comment - + Instance property @@ -1302,117 +1390,117 @@ QsciLexerD - + Default Default - + Block comment - + Line comment Jednořádkový komentář - + DDoc style block comment - + Nesting comment - + Number Číslo - + Keyword Klíčové slovo - + Secondary keyword - + Documentation keyword - + Type definition - + String - + Unclosed string Neuzavřený string - + Character Znak - + Operator Operátor - + Identifier Identifikátor - + DDoc style line comment - + DDoc keyword - + DDoc keyword error - + Backquoted string - + Raw string - + User defined 1 Definováno uživatelem 1 - + User defined 2 Definováno uživatelem 2 - + User defined 3 Definováno uživatelem 3 @@ -1420,62 +1508,62 @@ QsciLexerDiff - + Default Default - + Comment Komentář - + Command Příkaz - + Header Hlavička - + Position Pozice - + Removed line Odebraná řádka - + Added line Přidaná řádka - + Changed line - + Added adding patch - + Removed adding patch - + Added removing patch - + Removed removing patch @@ -1483,47 +1571,47 @@ QsciLexerEDIFACT - + Default Default - + Segment start - + Segment end - + Element separator - + Composite separator - + Release separator - + UNA segment header - + UNH segment header - + Badly formed segment @@ -1531,77 +1619,77 @@ QsciLexerFortran77 - + Default Default - + Comment Komentář - + Number Číslo - + Single-quoted string String v jednoduchých uvozovkách - + Double-quoted string String ve dvojitých uvozovkách - + Unclosed string Neuzavřený string - + Operator Operátor - + Identifier Identifikátor - + Keyword Klíčové slovo - + Intrinsic function - + Extended function - + Pre-processor block Pre-procesor blok - + Dotted operator - + Label Nadpis - + Continuation @@ -1609,555 +1697,643 @@ QsciLexerHTML - + HTML default - + Tag - + Unknown tag Nedefinovaný tag - + Attribute Atribut - + Unknown attribute Nedefinovaný atribut - + HTML number HTML číslo - + HTML double-quoted string HTML string ve dojtých uvozovkách - + HTML single-quoted string HTML string v jednoduchých uvozovkách - + Other text in a tag Další text v tagu - + HTML comment HTML komentář - + Entity Entita - + End of a tag Konec tagu - + Start of an XML fragment Začátek XML části - + End of an XML fragment Konec XML části - + Script tag Tag skriptu - + Start of an ASP fragment with @ Začátek ASP kódu s @ - + Start of an ASP fragment Začátek ASP kódu - + CDATA - + Start of a PHP fragment Začátek PHP kódu - + Unquoted HTML value HTML hodnota bez uvozovek - + ASP X-Code comment ASP X-Code komentář - + SGML default - + SGML command SGML příkaz - + First parameter of an SGML command První parametr v SGML příkazu - + SGML double-quoted string SGML string ve dvojitých uvozovkách - + SGML single-quoted string SGML string v jednoduchých uvozovkách - + SGML error SGML chyba - + SGML special entity SGML speciální entita - + SGML comment SGML komentář - + First parameter comment of an SGML command Komentář prvního parametru SGML příkazu - + SGML block default SGML defaultní blok - + Start of a JavaScript fragment Začátek JavaScript kódu - + JavaScript default - + JavaScript comment JavaScript komentář - + JavaScript line comment JavaScript jednořádkový komentář - + JavaDoc style JavaScript comment JavaDoc styl JavaScript komentáře - + JavaScript number JavaScript číslo - + JavaScript word JavaSript slovo - + JavaScript keyword JavaSript klíčové slovo - + JavaScript double-quoted string JavaSript string ve dvojitých uvozovkách - + JavaScript single-quoted string JavaSript string v jednoduchých uvozovkách - + JavaScript symbol - + JavaScript unclosed string JavaSript neuzavřený string - + JavaScript regular expression JavaSript regulární výraz - + Start of an ASP JavaScript fragment Začátek ASP JavaScript kódu - + ASP JavaScript default - + ASP JavaScript comment ASP JavaScript komentář - + ASP JavaScript line comment ASP JavaScript jednořádkový komenář - + JavaDoc style ASP JavaScript comment JavaDoc styl ASP JavaScript komentář - + ASP JavaScript number ASP JavaScript číslo - + ASP JavaScript word ASP JavaScript slovo - + ASP JavaScript keyword ASP JavaScript klíčové slovo - + ASP JavaScript double-quoted string ASP JavaScript string ve dvojitých uvozovkách - + ASP JavaScript single-quoted string ASP JavaScript v jednoduchých uvozovkách - + ASP JavaScript symbol - + ASP JavaScript unclosed string ASP JavaScript neuzavřený string - + ASP JavaScript regular expression ASP JavaScript regulární výraz - + Start of a VBScript fragment Začátek VBScript kódu - + VBScript default - + VBScript comment VBScript komentář - + VBScript number VBScript číslo - + VBScript keyword VBScript klíčové slovo - + VBScript string - + VBScript identifier VBScript identifikátor - + VBScript unclosed string VBScript neuzavřený string - + Start of an ASP VBScript fragment Začátek ASP VBScript kódu - + ASP VBScript default - + ASP VBScript comment ASP VBScript komentář - + ASP VBScript number ASP VBScript číslo - + ASP VBScript keyword ASP VBScript klíčové slovo - + ASP VBScript string - + ASP VBScript identifier ASP VBScript identifikátor - + ASP VBScript unclosed string ASP VBScript neuzavřený string - + Start of a Python fragment Začátek Python kódu - + Python default - + Python comment Python komentář - + Python number Python číslo - + Python double-quoted string Python string ve dojtých uvozovkách - + Python single-quoted string Python string v jednoduchých uvozovkách - + Python keyword Python klíčové slovo - + Python triple double-quoted string Python string ve třech dvojitých uvozovkách - + Python triple single-quoted string Python ve třech jednoduchých uvozovkách - + Python class name Python jméno třídy - + Python function or method name Python jméno funkce nebo metody - + Python operator Python operátor - + Python identifier Python identifikátor - + Start of an ASP Python fragment Začátek ASP Python kódu - + ASP Python default - + ASP Python comment ASP Python komentář - + ASP Python number ASP Python číslo - + ASP Python double-quoted string ASP Python string ve dvojitých uvozovkách - + ASP Python single-quoted string ASP Python v jednoduchých uvozovkách - + ASP Python keyword ASP Python klíčové slovo - + ASP Python triple double-quoted string ASP Python ve třech dvojitých uvozovkách - + ASP Python triple single-quoted string ASP Python ve třech jednoduchých uvozovkách - + ASP Python class name ASP Python jméno třídy - + ASP Python function or method name ASP Python jméno funkce nebo metody - + ASP Python operator ASP Python operátor - + ASP Python identifier ASP Python identifikátor - + PHP default - + PHP double-quoted string PHP string ve dvojitých uvozovkách - + PHP single-quoted string PHP v jednoduchých uvozovkách - + PHP keyword PHP klíčové slovo - + PHP number PHP číslo - + PHP variable PHP proměnná - + PHP comment PHP komentář - + PHP line comment PHP jednořádkový komentář - + PHP double-quoted variable PHP proměnná ve dvojitých uvozovkách - + PHP operator PHP operátor + + QsciLexerHex + + + Default + Default + + + + Record start + + + + + Record type + + + + + Unknown record type + + + + + Byte count + + + + + Incorrect byte count + + + + + No address + + + + + Data address + + + + + Record count + + + + + Start address + + + + + Extended address + + + + + Odd data + + + + + Even data + + + + + Unknown data + + + + + Checksum + + + + + Incorrect checksum + + + + + Trailing garbage after a record + + + QsciLexerIDL - + UUID @@ -2165,72 +2341,72 @@ QsciLexerJSON - + Default Default - + Number Číslo - + String - + Unclosed string Neuzavřený string - + Property - + Escape sequence - + Line comment Jednořádkový komentář - + Block comment - + Operator Operátor - + IRI - + JSON-LD compact IRI - + JSON keyword - + JSON-LD keyword - + Parsing error @@ -2238,7 +2414,7 @@ QsciLexerJavaScript - + Regular expression Regulární výraz @@ -2246,102 +2422,102 @@ QsciLexerLua - + Default - + Comment Komentář - + Line comment Jednořádkový komentář - + Number Číslo - + Keyword Klíčové slovo - + String - + Character Znak - + Literal string - + Preprocessor - + Operator Operátor - + Identifier Identifikátor - + Unclosed string Neuzavřený string - + Basic functions Základní funkce - + String, table and maths functions String, tabulka a matematické funkce - + Coroutines, i/o and system facilities - + User defined 1 Definováno uživatelem 1 - + User defined 2 Definováno uživatelem 2 - + User defined 3 Definováno uživatelem 3 - + User defined 4 Definováno uživatelem 4 - + Label Nadpis @@ -2349,37 +2525,37 @@ QsciLexerMakefile - + Default - + Comment Komentář - + Preprocessor - + Variable Proměnná - + Operator Operátor - + Target Cíl - + Error Chyba @@ -2387,112 +2563,112 @@ QsciLexerMarkdown - + Default Default - + Special - + Strong emphasis using double asterisks - + Strong emphasis using double underscores - + Emphasis using single asterisks - + Emphasis using single underscores - + Level 1 header - + Level 2 header - + Level 3 header - + Level 4 header - + Level 5 header - + Level 6 header - + Pre-char - + Unordered list item - + Ordered list item - + Block quote - + Strike out - + Horizontal rule - + Link - + Code between backticks - + Code between double backticks - + Code block @@ -2500,47 +2676,47 @@ QsciLexerMatlab - + Default Default - + Comment Komentář - + Command Příkaz - + Number Číslo - + Keyword Klíčové slovo - + Single-quoted string String v jednoduchých uvozovkách - + Operator Operátor - + Identifier Identifikátor - + Double-quoted string String ve dvojitých uvozovkách @@ -2548,77 +2724,77 @@ QsciLexerPO - + Default Default - + Comment Komentář - + Message identifier - + Message identifier text - + Message string - + Message string text - + Message context - + Message context text - + Fuzzy flag - + Programmer comment - + Reference - + Flags - + Message identifier text end-of-line - + Message string text end-of-line - + Message context text end-of-line @@ -2626,87 +2802,87 @@ QsciLexerPOV - + Default - + Comment Komentář - + Comment line Jednořádkový komentář - + Number Číslo - + Operator Operátor - + Identifier Identifikátor - + String - + Unclosed string Neuzavřený string - + Directive Direktiva - + Bad directive - + Objects, CSG and appearance - + Types, modifiers and items - + Predefined identifiers - + Predefined functions - + User defined 1 - + User defined 2 - + User defined 3 @@ -2714,77 +2890,77 @@ QsciLexerPascal - + Default Default - + Line comment Jednořádkový komentář - + Number Číslo - + Keyword Klíčové slovo - + Single-quoted string String v jednoduchých uvozovkách - + Operator Operátor - + Identifier Identifikátor - + '{ ... }' style comment - + '(* ... *)' style comment - + '{$ ... }' style pre-processor block - + '(*$ ... *)' style pre-processor block - + Hexadecimal number - + Unclosed string Neuzavřený string - + Character Znak - + Inline asm @@ -2792,207 +2968,207 @@ QsciLexerPerl - + Default - + Error Chyba - + Comment Komentář - + POD - + Number Číslo - + Keyword Klíčové slovo - + Double-quoted string String ve dvojitých uvozovkách - + Single-quoted string String v jednoduchých uvozovkách - + Operator Operátor - + Identifier Identifikátor - + Scalar Skalár - + Array Pole - + Hash - + Symbol table - + Regular expression Regulární výraz - + Substitution - + Backticks - + Data section - + Here document delimiter Zde je oddělovač dokumentu - + Single-quoted here document Zde je dokument v jednoduchých uvozovkách - + Double-quoted here document Zde je dokument ve dvojitých uvozovkách - + Backtick here document - + Quoted string (q) - + Quoted string (qq) - + Quoted string (qx) - + Quoted string (qr) - + Quoted string (qw) - + POD verbatim - + Subroutine prototype - + Format identifier - + Format body - + Double-quoted string (interpolated variable) - + Translation - + Regular expression (interpolated variable) - + Substitution (interpolated variable) - + Backticks (interpolated variable) - + Double-quoted here document (interpolated variable) - + Backtick here document (interpolated variable) - + Quoted string (qq, interpolated variable) - + Quoted string (qx, interpolated variable) - + Quoted string (qr, interpolated variable) @@ -3000,82 +3176,82 @@ QsciLexerPostScript - + Default Default - + Comment Komentář - + DSC comment - + DSC comment value - + Number Číslo - + Name - + Keyword Klíčové slovo - + Literal - + Immediately evaluated literal - + Array parenthesis - + Dictionary parenthesis - + Procedure parenthesis - + Text - + Hexadecimal string - + Base85 string - + Bad string character @@ -3083,32 +3259,32 @@ QsciLexerProperties - + Default - + Comment - + Section - + Assignment - + Default value - + Key @@ -3116,102 +3292,102 @@ QsciLexerPython - + Default - + Comment Komentář - + Number Číslo - + Double-quoted string String ve dvojitých uvozovkách - + Single-quoted string String v jednoduchých uvozovkách - + Keyword Klíčové slovo - + Triple single-quoted string String ve třech jednoduchých uvozovkách - + Triple double-quoted string String ve třech dvojitých uvozovkách - + Class name Jméno třídy - + Function or method name Jméno funkce nebo metody - + Operator Operátor - + Identifier Identifikátor - + Comment block Blok komentáře - + Unclosed string Neuzavřený string - + Highlighted identifier Zvýrazněný identifikátor - + Decorator Dekorátor - + Double-quoted f-string - + Single-quoted f-string - + Triple single-quoted f-string - + Triple double-quoted f-string @@ -3219,157 +3395,157 @@ QsciLexerRuby - + Default - + Comment Komentář - + Number Číslo - + Double-quoted string String ve dvojitých uvozovkách - + Single-quoted string String v jednoduchých uvozovkách - + Keyword Klíčové slovo - + Class name Jméno třídy - + Function or method name Jméno funkce nebo metody - + Operator Operátor - + Identifier Identifikátor - + Error Chyba - + POD POD - + Regular expression Regulární výraz - + Global - + Symbol - + Module name Jméno modulu - + Instance variable Proměnná instance - + Class variable Proměnná třídy - + Backticks - + Data section Datová sekce - + Here document delimiter Zde je oddělovač dokumentu - + Here document Zde je dokument - + %q string - + %Q string - + %x string - + %r string - + %w string - + Demoted keyword - + stdin - + stdout - + stderr @@ -3377,112 +3553,112 @@ QsciLexerSQL - + Default - + Comment Komentář - + Number Číslo - + Keyword Klíčové slovo - + Single-quoted string String v jednoduchých uvozovkách - + Operator Operátor - + Identifier Identifikátor - + Comment line Jednořádkový komentář - + JavaDoc style comment JavaDoc styl komentář - + Double-quoted string String ve dvojitých uvozovkách - + SQL*Plus keyword SQL*Plus klíčové slovo - + SQL*Plus prompt - + SQL*Plus comment SQL*Plus komentář - + # comment line # jednořádkový komentář - + JavaDoc keyword JavaDoc klíčové slovo - + JavaDoc keyword error JavaDoc klíčové slovo chyby - + User defined 1 Definováno uživatelem 1 - + User defined 2 Definováno uživatelem 2 - + User defined 3 Definováno uživatelem 3 - + User defined 4 Definováno uživatelem 4 - + Quoted identifier - + Quoted operator @@ -3490,47 +3666,47 @@ QsciLexerSpice - + Default Default - + Identifier Identifikátor - + Command Příkaz - + Function - + Parameter - + Number Číslo - + Delimiter - + Value Hodnota - + Comment Komentář @@ -3538,112 +3714,112 @@ QsciLexerTCL - + Default Default - + Comment Komentář - + Comment line Jednořádkový komentář - + Number Číslo - + Quoted keyword - + Quoted string - + Operator Operátor - + Identifier Identifikátor - + Substitution - + Brace substitution - + Modifier - + Expand keyword - + TCL keyword - + Tk keyword - + iTCL keyword - + Tk command - + User defined 1 Definováno uživatelem 1 - + User defined 2 Definováno uživatelem 2 - + User defined 3 Definováno uživatelem 3 - + User defined 4 Definováno uživatelem 4 - + Comment box - + Comment block Blok komentáře @@ -3651,32 +3827,32 @@ QsciLexerTeX - + Default - + Special - + Group Skupina - + Symbol - + Command Příkaz - + Text @@ -3684,82 +3860,82 @@ QsciLexerVHDL - + Default Default - + Comment Komentář - + Comment line Jednořádkový komentář - + Number Číslo - + String - + Operator Operátor - + Identifier Identifikátor - + Unclosed string Neuzavřený string - + Keyword Klíčové slovo - + Standard operator - + Attribute Atribut - + Standard function - + Standard package - + Standard type - + User defined - + Comment block Blok komentáře @@ -3767,192 +3943,192 @@ QsciLexerVerilog - + Default Default - + Inactive default - + Comment Komentář - + Inactive comment - + Line comment Jednořádkový komentář - + Inactive line comment - + Bang comment - + Inactive bang comment - + Number Číslo - + Inactive number - + Primary keywords and identifiers - + Inactive primary keywords and identifiers - + String - + Inactive string - + Secondary keywords and identifiers Sekundární klíčová slova a identifikátory - + Inactive secondary keywords and identifiers - + System task - + Inactive system task - + Preprocessor block - + Inactive preprocessor block - + Operator Operátor - + Inactive operator - + Identifier Identifikátor - + Inactive identifier - + Unclosed string Neuzavřený string - + Inactive unclosed string - + User defined tasks and identifiers - + Inactive user defined tasks and identifiers - + Keyword comment - + Inactive keyword comment - + Input port declaration - + Inactive input port declaration - + Output port declaration - + Inactive output port declaration - + Input/output port declaration - + Inactive input/output port declaration - + Port connection - + Inactive port connection @@ -3960,52 +4136,52 @@ QsciLexerYAML - + Default Default - + Comment Komentář - + Identifier Identifikátor - + Keyword Klíčové slovo - + Number Číslo - + Reference - + Document delimiter - + Text block marker - + Syntax error marker - + Operator Operátor @@ -4013,37 +4189,37 @@ QsciScintilla - + &Undo - + &Redo - + Cu&t - + &Copy - + &Paste - + Delete - + Select All diff --git a/libs/qscintilla/Qt4Qt5/qscintilla_de.qm b/libs/qscintilla_2.14.1/Qt5Qt6/qscintilla_de.qm similarity index 71% rename from libs/qscintilla/Qt4Qt5/qscintilla_de.qm rename to libs/qscintilla_2.14.1/Qt5Qt6/qscintilla_de.qm index 0fea7ff86..e13236cc2 100644 Binary files a/libs/qscintilla/Qt4Qt5/qscintilla_de.qm and b/libs/qscintilla_2.14.1/Qt5Qt6/qscintilla_de.qm differ diff --git a/libs/qscintilla/Qt4Qt5/qscintilla_de.ts b/libs/qscintilla_2.14.1/Qt5Qt6/qscintilla_de.ts similarity index 85% rename from libs/qscintilla/Qt4Qt5/qscintilla_de.ts rename to libs/qscintilla_2.14.1/Qt5Qt6/qscintilla_de.ts index 18ed80ffc..783e39a95 100644 --- a/libs/qscintilla/Qt4Qt5/qscintilla_de.ts +++ b/libs/qscintilla_2.14.1/Qt5Qt6/qscintilla_de.ts @@ -4,493 +4,493 @@ QsciCommand - + Move left one character Ein Zeichen nach links - + Move right one character Ein Zeichen nach rechts - + Move up one line Eine Zeile nach oben - + Move down one line Eine Zeile nach unten - + Move left one word part Ein Wortteil nach links - + Move right one word part Ein Wortteil nach rechts - + Move left one word Ein Wort nach links - + Move right one word Ein Wort nach rechts - + Scroll view down one line Eine Zeile nach unten rollen - + Scroll view up one line Eine Zeile nach oben rollen - + Move up one page Eine Seite hoch - + Move down one page Eine Seite nach unten - + Indent one level Eine Ebene einrücken - + Extend selection left one character Auswahl um ein Zeichen nach links erweitern - + Extend selection right one character Auswahl um ein Zeichen nach rechts erweitern - + Extend selection up one line Auswahl um eine Zeile nach oben erweitern - + Extend selection down one line Auswahl um eine Zeile nach unten erweitern - + Extend selection left one word part Auswahl um einen Wortteil nach links erweitern - + Extend selection right one word part Auswahl um einen Wortteil nach rechts erweitern - + Extend selection left one word Auswahl um ein Wort nach links erweitern - + Extend selection right one word Auswahl um ein Wort nach rechts erweitern - + Extend selection up one page Auswahl um eine Seite nach oben erweitern - + Extend selection down one page Auswahl um eine Seite nach unten erweitern - + Delete previous character Zeichen links löschen - + Delete current character Aktuelles Zeichen löschen - + Delete word to left Wort links löschen - + Delete word to right Wort rechts löschen - + Delete line to left Zeile links löschen - + Delete line to right Zeile rechts löschen - + Delete current line Aktuelle Zeile löschen - + Cut current line Aktuelle Zeile ausschneiden - + Cut selection Auswahl ausschneiden - + Copy selection Auswahl kopieren - + Paste Einfügen - + Redo last command Letzten Befehl wiederholen - + Cancel Abbrechen - + Toggle insert/overtype Einfügen/Überschreiben umschalten - + Scroll to start of document Zum Dokumentenanfang rollen - + Scroll to end of document Zum Dokumentenende rollen - + Scroll vertically to centre current line Vertical rollen, um aktuelle Zeile zu zentrieren - + Move to end of previous word Zum Ende des vorigen Wortes springen - + Extend selection to end of previous word Auswahl bis zum Ende des vorigen Wortes erweitern - + Move to end of next word Zum Ende des nächsten Wortes springen - + Extend selection to end of next word Auswahl bis zum Ende des nächsten Wortes erweitern - + Move to start of document line Zum Beginn der Dokumentenzeile springen - + Extend selection to start of document line Auswahl zum Beginn der Dokumentenzeile erweitern - + Extend rectangular selection to start of document line Rechteckige Auswahl zum Beginn der Dokumentenzeile erweitern - + Move to start of display line Zum Beginn der Anzeigezeile springen - + Extend selection to start of display line Auswahl zum Beginn der Anzeigezeile erweitern - + Move to start of display or document line Zum Beginn der Dokumenten- oder Anzeigezeile springen - + Extend selection to start of display or document line Rechteckige Auswahl zum Beginn der Dokumenten- oder Anzeigezeile erweitern - + Move to first visible character in document line Zum ersten sichtbaren Zeichen der Dokumentzeile springen - + Extend selection to first visible character in document line Auswahl zum ersten sichtbaren Zeichen der Dokumentzeile erweitern - + Extend rectangular selection to first visible character in document line Rechteckige Auswahl zum ersten sichtbaren Zeichen der Dokumentzeile erweitern - + Move to first visible character of display in document line Zum ersten angezeigten Zeichen der Dokumentzeile springen - + Extend selection to first visible character in display or document line Auswahl zum ersten sichtbaren Zeichen der Dokument- oder Anzeigezeile erweitern - + Move to end of document line Zum Ende der Dokumentzeile springen - + Extend selection to end of document line Auswahl zum Ende der Dokumentenzeile erweitern - + Extend rectangular selection to end of document line Rechteckige Auswahl zum Ende der Dokumentenzeile erweitern - + Move to end of display line Zum Ende der Anzeigezeile springen - + Extend selection to end of display line Auswahl zum Ende der Anzeigezeile erweitern - + Move to end of display or document line Zum Ende der Dokumenten- oder Anzeigezeile springen - + Extend selection to end of display or document line Rechteckige Auswahl zum Ende der Dokumenten- oder Anzeigezeile erweitern - + Move to start of document Zum Dokumentenanfang springen - + Extend selection to start of document Auswahl zum Dokumentenanfang erweitern - + Move to end of document Zum Dokumentenende springen - + Extend selection to end of document Auswahl zum Dokumentenende erweitern - + Stuttered move up one page "Stotternd" um eine Seite nach oben - + Stuttered extend selection up one page Auswahl "stotternd" um eine Seite nach oben erweitern - + Stuttered move down one page "Stotternd" um eine Seite nach unten - + Stuttered extend selection down one page Auswahl "stotternd" um eine Seite nach unten erweitern - + Delete previous character if not at start of line Zeichen links löschen, wenn nicht am Zeilenanfang - + Delete right to end of next word Rechts bis zum Ende des nächsten Wortes löschen - + Transpose current and previous lines Aktuelle und vorherige Zeile tauschen - + Duplicate the current line Aktuelle Zeile duplizieren - + Select all Select document Alle auswählen - + Move selected lines up one line Ausgewählte Zeilen um eine Zeile nach oben - + Move selected lines down one line Ausgewählte Zeilen um eine Zeile nach unten - + Convert selection to lower case Auswahl in Kleinbuchstaben umwandeln - + Convert selection to upper case Auswahl in Großbuchstaben umwandeln - + Insert newline Neue Zeile einfügen - + De-indent one level Eine Ebene ausrücken - + Undo last command Letzten Befehl rückgängig machen - + Zoom in Vergrößern - + Zoom out Verkleinern - + Move up one paragraph Einen Absatz nach oben - + Move down one paragraph Einen Absatz nach unten - + Extend selection up one paragraph Auswahl um einen Absatz nach oben erweitern - + Extend selection down one paragraph Auswahl um einen Absatz nach unten erweitern - + Copy current line Aktuelle Zeile kopieren - + Extend rectangular selection down one line Rechteckige Auswahl um eine Zeile nach unten erweitern - + Extend rectangular selection up one line Rechteckige Auswahl um eine Zeile nach oben erweitern - + Extend rectangular selection left one character Rechteckige Auswahl um ein Zeichen nach links erweitern - + Extend rectangular selection right one character Rechteckige Auswahl um ein Zeichen nach rechts erweitern - + Extend rectangular selection up one page Rechteckige Auswahl um eine Seite nach oben erweitern - + Extend rectangular selection down one page Rechteckige Auswahl um eine Seite nach unten erweitern - + Formfeed Seitenumbruch - + Duplicate selection Auswahl duplizieren @@ -498,150 +498,233 @@ QsciLexerAVS - + Default Standard - + Block comment Blockkommentar - + Nested block comment Verschachtelter Blockkommentar - + Line comment Zeilenkommentar - + Number Zahl - + Operator Operator - + Identifier Bezeichner - + Double-quoted string Zeichenkette in Anführungszeichen - + Triple double-quoted string Zeichenkette in dreifachen Anführungszeichen - + Keyword Schlüsselwort - + Filter Filter - + Plugin Plugin - + Function Funktion - + Clip property Clip Eigenschaft - + User defined Nutzer definiert + + QsciLexerAsm + + + Default + Standard + + + + Comment + Kommentar + + + + Number + Zahl + + + + Double-quoted string + Zeichenkette in Anführungszeichen + + + + Operator + Operator + + + + Identifier + Bezeichner + + + + CPU instruction + CPU Instruktion + + + + FPU instruction + FPU Instruktion + + + + Register + Register + + + + Directive + Direktive + + + + Directive operand + Richtlinienoperand + + + + Block comment + Blockkommentar + + + + Single-quoted string + Zeichenkette in Hochkommata + + + + Unclosed string + Unbeendete Zeichenkette + + + + Extended instruction + Erweitere Instruktion + + + + Comment directive + Richtlinienkommentar + + QsciLexerBash - + Default Standard - + Error Fehler - + Comment Kommentar - + Number Zahl - + Keyword Schlüsselwort - + Double-quoted string Zeichenkette in Anführungszeichen - + Single-quoted string Zeichenkette in Hochkommata - + Operator Operator - + Identifier Bezeichner - + Scalar Skalar - + Parameter expansion Parametererweiterung - + Backticks Backticks - + Here document delimiter Here Dokument-Begrenzer - + Single-quoted here document Here Dokument in Hochkommata @@ -649,42 +732,42 @@ QsciLexerBatch - + Default Standard - + Comment Kommentar - + Keyword Schlüsselwort - + Label Marke - + Variable Variable - + Operator Operator - + Hide command character "Befehl verbergen" Zeichen - + External command Externer Befehl @@ -692,77 +775,77 @@ QsciLexerCMake - + Default Standard - + Comment Kommentar - + String Zeichenkette - + Left quoted string Links quotierte Zeichenkette - + Right quoted string Rechts quotierte Zeichenkette - + Function Funktion - + Variable Variable - + Label Marke - + User defined Nutzer definiert - + WHILE block WHILE Block - + FOREACH block FOREACH Block - + IF block IF Block - + MACRO block MACRO Block - + Variable within a string Variable in einer Zeichenkette - + Number Zahl @@ -770,282 +853,282 @@ QsciLexerCPP - + Number Zahl - + Keyword Schlüsselwort - + Double-quoted string Zeichenkette in Anführungszeichen - + Single-quoted string Zeichenkette in Hochkommata - + IDL UUID IDL UUID - + Pre-processor block Präprozessorblock - + Operator Operator - + Identifier Bezeichner - + Unclosed string Unbeendete Zeichenkette - + Default Standard - + Inactive default Inaktiver Standard - + C comment C Kommentar - + Inactive C comment Inaktiver C Kommentar - + C++ comment C++ Kommentar - + Inactive C++ comment Inaktiver C++ Kommentar - + JavaDoc style C comment JavaDoc C Kommentar - + Inactive JavaDoc style C comment Inaktiver JavaDoc C Kommentar - + Inactive number Inaktive Zahl - + Inactive keyword Inaktives Schlüsselwort - + Inactive double-quoted string Inaktive Zeichenkette in Anführungszeichen - + Inactive single-quoted string Inaktive Zeichenkette in Hochkommata - + Inactive IDL UUID Inaktive IDL UUID - + Inactive pre-processor block Inaktiver Präprozessorblock - + Inactive operator Inaktiver Operator - + Inactive identifier Inaktiver Bezeichner - + Inactive unclosed string Inaktive unbeendete Zeichenkette - + C# verbatim string Uninterpretierte C# Zeichenkette - + Inactive C# verbatim string Inaktive, Uninterpretierte C# Zeichenkette - + JavaScript regular expression JavaScript Regulärer Ausdruck - + Inactive JavaScript regular expression JavaScript Inaktiver Regulärer Ausdruck - + JavaDoc style C++ comment JavaDoc C++ Kommentar - + Inactive JavaDoc style C++ comment Inaktiver JavaDoc C++ Kommentar - + Inactive secondary keywords and identifiers Inaktive sekundäre Schlusselwörter und Bezeichner - + JavaDoc keyword JavaDoc Schlüsselwort - + Inactive JavaDoc keyword Inaktives JavaDoc Schlüsselwort - + JavaDoc keyword error JavaDoc Schlüsselwortfehler - + Inactive global classes and typedefs Inaktive globale Klassen und Typdefinitionen - + C++ raw string Rohe C++ Zeichenkette - + Inactive C++ raw string Inaktive rohe C++ Zeichenkette - + Vala triple-quoted verbatim string Vala Zeichenkette in dreifachen Hochkommata - + Inactive Vala triple-quoted verbatim string Inaktive Vala Zeichenkette in dreifachen Hochkommata - + Pike hash-quoted string Pike Zeichenkette in '#-Anführungszeichen' - + Inactive Pike hash-quoted string Inaktive Pike Zeichenkette in '#-Anführungszeichen' - + Pre-processor C comment C Präprozessorkommentar - + Inactive pre-processor C comment Inaktiver C Präprozessorkommentar - + JavaDoc style pre-processor comment JavaDoc Präprozessorkommentar - + Inactive JavaDoc style pre-processor comment Inaktiver JavaDoc Präprozessorkommentar - + User-defined literal Nutzer definiertes Literal - + Inactive user-defined literal Inaktives Nutzer definiertes Literal - + Task marker Aufgabenmarkierung - + Inactive task marker Inaktive Aufgabenmarkierung - + Escape sequence Escape-Sequenz - + Inactive escape sequence Inaktive Escape-Sequenz - + Secondary keywords and identifiers Sekundäre Schlusselwörter und Bezeichner - + Inactive JavaDoc keyword error Inaktiver JavaDoc Schlüsselwortfehler - + Global classes and typedefs Globale Klassen und Typdefinitionen @@ -1053,117 +1136,122 @@ QsciLexerCSS - + Default Standard - + Tag Tag - + Class selector Klassenselektor - + Pseudo-class Pseudoklasse - + Unknown pseudo-class Unbekannte Pseudoklasse - + Operator Operator - + CSS1 property CSS1 Eigenschaft - + Unknown property Unbekannte Eigenschaft - + Value Wert - + + Comment + Kommentar + + + ID selector ID-Selektor - + Important Wichtig - + @-rule @-Regel - + Double-quoted string Zeichenkette in Anführungszeichen - + Single-quoted string Zeichenkette in Hochkommata - + CSS2 property CSS2 Eigenschaft - + Attribute Attribut - + CSS3 property CSS3 Eigenschaft - + Pseudo-element Pseudoelement - + Extended CSS property Erweiterte CSS Eigenschaft - + Extended pseudo-class Erweiterte Pseudoklasse - + Extended pseudo-element Erweitertes Pseudoelement - + Media rule Medienregel - + Variable Variable @@ -1171,7 +1259,7 @@ QsciLexerCSharp - + Verbatim string Uninterpretierte Zeichenkette @@ -1179,122 +1267,122 @@ QsciLexerCoffeeScript - + Default Standard - + C-style comment C Kommentar - + C++-style comment C++ Kommentar - + JavaDoc C-style comment JavaDoc C Kommentar - + Number Zahl - + Keyword Schlüsselwort - + Double-quoted string Zeichenkette in Anführungszeichen - + Single-quoted string Zeichenkette in Hochkommata - + IDL UUID IDL UUID - + Pre-processor block Präprozessorblock - + Operator Operator - + Identifier Bezeichner - + Unclosed string Unbeendete Zeichenkette - + C# verbatim string Uninterpretierte C# Zeichenkette - + Regular expression Regulärer Ausdruck - + JavaDoc C++-style comment JavaDoc C++ Kommentar - + Secondary keywords and identifiers Sekundäre Schlusselwörter und Bezeichner - + JavaDoc keyword JavaDoc Schlüsselwort - + JavaDoc keyword error JavaDoc Schlüsselwortfehler - + Global classes Globale Klassen - + Block comment Blockkommentar - + Block regular expression Regulärer Ausdrucksblock - + Block regular expression comment Regulärer Ausdrucksblockkommentar - + Instance property Instanz-Eigenschaft @@ -1302,117 +1390,117 @@ QsciLexerD - + Default Standard - + Block comment Blockkommentar - + Line comment Zeilenkommentar - + DDoc style block comment DDoc Blockkommentar - + Nesting comment schachtelbarer Kommentar - + Number Zahl - + Keyword Schlüsselwort - + Secondary keyword Sekundäres Schlüsselwort - + Documentation keyword Dokumentationsschlüsselwort - + Type definition Typdefinition - + String Zeichenkette - + Unclosed string Unbeendete Zeichenkette - + Character Zeichen - + Operator Operator - + Identifier Bezeichner - + DDoc style line comment DDoc Zeilenkommentar - + DDoc keyword DDoc Schlüsselwort - + DDoc keyword error DDoc Schlüsselwortfehler - + Backquoted string Zeichenkette in Rückwärtsstrichen - + Raw string Rohe Zeichenkette - + User defined 1 Nutzer definiert 1 - + User defined 2 Nutzer definiert 2 - + User defined 3 Nutzer definiert 3 @@ -1420,62 +1508,62 @@ QsciLexerDiff - + Default Standard - + Comment Kommentar - + Command Befehl - + Header Kopfzeilen - + Position Position - + Removed line Entfernte Zeile - + Added line Hinzugefügte Zeile - + Changed line Geänderte Zeile - + Added adding patch Hinzugefügter Ergänzungspatch - + Removed adding patch Entfernter Ergänzungspatch - + Added removing patch Hinzugefügter Entfernungspatch - + Removed removing patch Entfernter Entfernungspatch @@ -1483,47 +1571,47 @@ QsciLexerEDIFACT - + Default Standard - + Segment start Segmentstart - + Segment end Segmentende - + Element separator Elementtrenner - + Composite separator Zusammengesetzter Trenner - + Release separator Freigabetrenner - + UNA segment header UNA Segmentkopf - + UNH segment header UNH Segmentkopf - + Badly formed segment Schlecht geformtes Segment @@ -1531,77 +1619,77 @@ QsciLexerFortran77 - + Default Standard - + Comment Kommentar - + Number Zahl - + Single-quoted string Zeichenkette in Hochkommata - + Double-quoted string Zeichenkette in Anführungszeichen - + Unclosed string Unbeendete Zeichenkette - + Operator Operator - + Identifier Bezeichner - + Keyword Schlüsselwort - + Intrinsic function Intrinsic-Funktion - + Extended function Erweiterte Funktion - + Pre-processor block Präprozessorblock - + Dotted operator Dotted Operator - + Label Marke - + Continuation Fortsetzung @@ -1609,555 +1697,643 @@ QsciLexerHTML - + HTML default HTML Standard - + Tag Tag - + Unknown tag Unbekanntes Tag - + Attribute Attribut - + Unknown attribute Unbekanntes Attribut - + HTML number HTML Zahl - + HTML double-quoted string HTML Zeichenkette in Anführungszeichen - + HTML single-quoted string HTML Zeichenkette in Hochkommata - + Other text in a tag Anderer Text in einem Tag - + HTML comment HTML Kommentar - + Entity Entität - + End of a tag Tagende - + Start of an XML fragment Beginn eines XML Fragmentes - + End of an XML fragment Ende eines XML Fragmentes - + Script tag Skript Tag - + Start of an ASP fragment with @ Beginn eines ASP Fragmentes mit @ - + Start of an ASP fragment Beginn eines ASP Fragmentes - + CDATA CDATA - + Start of a PHP fragment Beginn eines PHP Fragmentes - + Unquoted HTML value HTML Wert ohne Anführungszeichen - + ASP X-Code comment ASP X-Code Kommentar - + SGML default SGML Standard - + SGML command SGML Befehl - + First parameter of an SGML command Erster Parameter eines SGML Befehls - + SGML double-quoted string SGML Zeichenkette in Anführungszeichen - + SGML single-quoted string SGML Zeichenkette in Hochkommata - + SGML error SGML Fehler - + SGML special entity SGML Spezielle Entität - + SGML comment SGML Kommentar - + First parameter comment of an SGML command Kommentar des ersten Parameters eines SGML Befehls - + SGML block default SGML Standardblock - + Start of a JavaScript fragment Beginn eines JavaScript Fragmentes - + JavaScript default JavaScript Standard - + JavaScript comment JavaScript Kommentar - + JavaScript line comment JavaScript Zeilenkommentar - + JavaDoc style JavaScript comment JavaDoc JavaScript Kommentar - + JavaScript number JavaScript Zahl - + JavaScript word JavaScript Wort - + JavaScript keyword JavaScript Schlüsselwort - + JavaScript double-quoted string JavaScript Zeichenkette in Anführungszeichen - + JavaScript single-quoted string JavaScript Zeichenkette in Hochkommata - + JavaScript symbol JavaScript Symbol - + JavaScript unclosed string JavaScript Unbeendete Zeichenkette - + JavaScript regular expression JavaScript Regulärer Ausdruck - + Start of an ASP JavaScript fragment Beginn eines ASP JavaScript Fragmentes - + ASP JavaScript default ASP JavaScript Standard - + ASP JavaScript comment ASP JavaScript Kommentar - + ASP JavaScript line comment ASP JavaScript Zeilenkommentar - + JavaDoc style ASP JavaScript comment JavaDoc ASP JavaScript Kommentar - + ASP JavaScript number ASP JavaScript Zahl - + ASP JavaScript word ASP JavaScript Wort - + ASP JavaScript keyword ASP JavaScript Schlüsselwort - + ASP JavaScript double-quoted string ASP JavaScript Zeichenkette in Anführungszeichen - + ASP JavaScript single-quoted string ASP JavaScript Zeichenkette in Hochkommata - + ASP JavaScript symbol ASP JavaScript Symbol - + ASP JavaScript unclosed string ASP JavaScript Unbeendete Zeichenkette - + ASP JavaScript regular expression ASP JavaScript Regulärer Ausdruck - + Start of a VBScript fragment Beginn eines VBScript Fragmentes - + VBScript default VBScript Standard - + VBScript comment VBScript Kommentar - + VBScript number VBScript Zahl - + VBScript keyword VBScript Schlüsselwort - + VBScript string VBScript Zeichenkette - + VBScript identifier VBScript Bezeichner - + VBScript unclosed string VBScript Unbeendete Zeichenkette - + Start of an ASP VBScript fragment Beginn eines ASP VBScript Fragmentes - + ASP VBScript default ASP VBScript Standard - + ASP VBScript comment ASP VBScript Kommentar - + ASP VBScript number ASP VBScript Zahl - + ASP VBScript keyword ASP VBScript Schlüsselwort - + ASP VBScript string ASP VBScript Zeichenkette - + ASP VBScript identifier ASP VBScript Bezeichner - + ASP VBScript unclosed string ASP VBScript Unbeendete Zeichenkette - + Start of a Python fragment Beginn eines Python Fragmentes - + Python default Python Standard - + Python comment Python Kommentar - + Python number Python Zahl - + Python double-quoted string Python Zeichenkette in Anführungszeichen - + Python single-quoted string Python Zeichenkette in Hochkommata - + Python keyword Python Schlüsselwort - + Python triple double-quoted string Python Zeichenkette in dreifachen Anführungszeichen - + Python triple single-quoted string Python Zeichenkette in dreifachen Hochkommata - + Python class name Python Klassenname - + Python function or method name Python Funktions- oder Methodenname - + Python operator Python Operator - + Python identifier Python Bezeichner - + Start of an ASP Python fragment Beginn eines ASP Python Fragmentes - + ASP Python default ASP Python Standard - + ASP Python comment ASP Python Kommentar - + ASP Python number ASP Python Zahl - + ASP Python double-quoted string ASP Python Zeichenkette in Anführungszeichen - + ASP Python single-quoted string ASP Python Zeichenkette in Hochkommata - + ASP Python keyword ASP Python Schlüsselwort - + ASP Python triple double-quoted string ASP Python Zeichenkette in dreifachen Anführungszeichen - + ASP Python triple single-quoted string ASP Python Zeichenkette in dreifachen Hochkommata - + ASP Python class name ASP Python Klassenname - + ASP Python function or method name ASP Python Funktions- oder Methodenname - + ASP Python operator ASP Python Operator - + ASP Python identifier ASP Python Bezeichner - + PHP default PHP Standard - + PHP double-quoted string PHP Zeichenkette in Anführungszeichen - + PHP single-quoted string PHP Zeichenkette in Hochkommata - + PHP keyword PHP Schlüsselwort - + PHP number PHP Zahl - + PHP comment PHP Kommentar - + PHP line comment PHP Zeilenkommentar - + PHP double-quoted variable PHP Variable in Anführungszeichen - + PHP operator PHP Operator - + PHP variable PHP Variable + + QsciLexerHex + + + Default + Standard + + + + Record start + Datensatzanfang + + + + Record type + Datensatzende + + + + Unknown record type + Unbekanter Datensatztyp + + + + Byte count + Anzahl Bytes + + + + Incorrect byte count + Anzahl inkorrekter Bytes + + + + No address + keine Adresse + + + + Data address + Datenadresse + + + + Record count + Anzahl Datensätze + + + + Start address + Startadresse + + + + Extended address + Erweiterte Adresse + + + + Odd data + Ungerade Daten + + + + Even data + Gerade Daten + + + + Unknown data + Unbekannte Daten + + + + Checksum + Checksumme + + + + Incorrect checksum + Inkorrekte Checksumme + + + + Trailing garbage after a record + Müll nach einem Datensatz + + QsciLexerIDL - + UUID UUID @@ -2165,72 +2341,72 @@ QsciLexerJSON - + Default Standard - + Number Zahl - + String Zeichenkette - + Unclosed string Unbeendete Zeichenkette - + Property Eigenschaft - + Escape sequence Escape-Sequenz - + Line comment Zeilenkommentar - + Block comment Blockkommentar - + Operator Operator - + IRI IRI - + JSON-LD compact IRI JSON-LD kompaktes IRI - + JSON keyword JSON Schlüsselwort - + JSON-LD keyword JSON-LD Schlüsselwort - + Parsing error Analysefehler @@ -2238,7 +2414,7 @@ QsciLexerJavaScript - + Regular expression Regulärer Ausdruck @@ -2246,102 +2422,102 @@ QsciLexerLua - + Default Standard - + Comment Kommentar - + Line comment Zeilenkommentar - + Number Zahl - + Keyword Schlüsselwort - + String Zeichenkette - + Character Zeichen - + Literal string Uninterpretierte Zeichenkette - + Preprocessor Präprozessor - + Operator Operator - + Identifier Bezeichner - + Unclosed string Unbeendete Zeichenkette - + Basic functions Basisfunktionen - + String, table and maths functions Zeichenketten-, Tabelle- und mathematische Funktionen - + Coroutines, i/o and system facilities Koroutinen, I/O- und Systemfunktionen - + User defined 1 Nutzer definiert 1 - + User defined 2 Nutzer definiert 2 - + User defined 3 Nutzer definiert 3 - + User defined 4 Nutzer definiert 4 - + Label Marke @@ -2349,37 +2525,37 @@ QsciLexerMakefile - + Default Standard - + Comment Kommentar - + Preprocessor Präprozessor - + Variable Variable - + Operator Operator - + Target Ziel - + Error Fehler @@ -2387,112 +2563,112 @@ QsciLexerMarkdown - + Default Standard - + Special Spezial - + Strong emphasis using double asterisks Fettschrift mit doppelten Sternen - + Strong emphasis using double underscores Fettschrift mit doppelten Unterstrichen - + Emphasis using single asterisks Kursive Schrift mit einfachen Sternen - + Emphasis using single underscores Kursive Schrift mit einfachen Unterstrichen - + Level 1 header Überschrift Ebene 1 - + Level 2 header Überschrift Ebene 2 - + Level 3 header Überschrift Ebene 3 - + Level 4 header Überschrift Ebene 4 - + Level 5 header Überschrift Ebene 5 - + Level 6 header Überschrift Ebene 6 - + Pre-char Einleitungszeichen - + Unordered list item Nicht nummeriertes Listenelement - + Ordered list item Nummeriertes Listenelement - + Block quote Blockzitat - + Strike out Durchgestrichen - + Horizontal rule Horizontale Linie - + Link Hyperlink - + Code between backticks Code zwischen Backticks - + Code between double backticks Code zwischen doppelten Backticks - + Code block Codeblock @@ -2500,47 +2676,47 @@ QsciLexerMatlab - + Default Standard - + Comment Kommentar - + Command Befehl - + Number Zahl - + Keyword Schlüsselwort - + Single-quoted string Zeichenkette in Hochkommata - + Operator Operator - + Identifier Bezeichner - + Double-quoted string Zeichenkette in Anführungszeichen @@ -2548,77 +2724,77 @@ QsciLexerPO - + Default Standard - + Comment Kommentar - + Message identifier Meldungsbezeichner - + Message identifier text Meldungsbezeichnertext - + Message string Meldungszeichenkette - + Message string text Meldungszeichenkettentext - + Message context Meldungskontext - + Message context text Meldungskontexttext - + Fuzzy flag Unschrfmarkierung - + Programmer comment Programmiererkommentar - + Reference Referenz - + Flags Markierung - + Message identifier text end-of-line Meldungsbezeichnertext Zeilenende - + Message string text end-of-line Meldungszeichenkettentext Zeilenende - + Message context text end-of-line Meldungskontexttext Zeilenende @@ -2626,87 +2802,87 @@ QsciLexerPOV - + Default Standard - + Comment Kommentar - + Comment line Kommentarzeile - + Number Zahl - + Operator Operator - + Identifier Bezeichner - + String Zeichenkette - + Unclosed string Unbeendete Zeichenkette - + Directive Direktive - + Bad directive Ungültige Direktive - + Objects, CSG and appearance Objekte, CSG und Erscheinung - + Types, modifiers and items Typen, Modifizierer und Items - + Predefined identifiers Vordefinierter Bezeichner - + Predefined functions Vordefinierte Funktion - + User defined 1 Nutzer definiert 1 - + User defined 2 Nutzer definiert 2 - + User defined 3 Nutzer definiert 3 @@ -2714,77 +2890,77 @@ QsciLexerPascal - + Default Standard - + Line comment Zeilenkommentar - + Number Zahl - + Keyword Schlüsselwort - + Single-quoted string Zeichenkette in Hochkommata - + Operator Operator - + Identifier Bezeichner - + '{ ... }' style comment '{ ... }' Kommentar - + '(* ... *)' style comment '(* ... *)' Kommentar - + '{$ ... }' style pre-processor block '{$ ... }' Präprozessorblock - + '(*$ ... *)' style pre-processor block '(*$ ... *)' Präprozessorblock - + Hexadecimal number Hexadezimale Zahl - + Unclosed string Unbeendete Zeichenkette - + Character Zeichen - + Inline asm Inline Assembler @@ -2792,207 +2968,207 @@ QsciLexerPerl - + Default Standard - + Error Fehler - + Comment Kommentar - + POD POD - + Number Zahl - + Keyword Schlüsselwort - + Double-quoted string Zeichenkette in Anführungszeichen - + Single-quoted string Zeichenkette in Hochkommata - + Operator Operator - + Identifier Bezeichner - + Scalar Skalar - + Array Feld - + Hash Hash - + Symbol table Symboltabelle - + Regular expression Regulärer Ausdruck - + Substitution Ersetzung - + Backticks Backticks - + Data section Datensektion - + Here document delimiter Here Dokument-Begrenzer - + Single-quoted here document Here Dokument in Hochkommata - + Double-quoted here document Here Dokument in Anführungszeichen - + Backtick here document Here Dokument in Backticks - + Quoted string (q) Zeichenkette (q) - + Quoted string (qq) Zeichenkette (qq) - + Quoted string (qx) Zeichenkette (qx) - + Quoted string (qr) Zeichenkette (qr) - + Quoted string (qw) Zeichenkette (qw) - + POD verbatim POD wörtlich - + Subroutine prototype Subroutinen Prototyp - + Format identifier Formatidentifikator - + Format body Formatzweig - + Double-quoted string (interpolated variable) Zeichenkette in Anführungszeichen (interpolierte Variable) - + Translation Übersetzung - + Regular expression (interpolated variable) Regulärer Ausdruck (interpolierte Variable) - + Substitution (interpolated variable) Ersetzung (interpolierte Variable) - + Backticks (interpolated variable) Backticks (interpolierte Variable) - + Double-quoted here document (interpolated variable) Here Dokument in Anführungszeichen (interpolierte Variable) - + Backtick here document (interpolated variable) Here Dokument in Backticks (interpolierte Variable) - + Quoted string (qq, interpolated variable) Zeichenkette (qq, interpolierte Variable) - + Quoted string (qx, interpolated variable) Zeichenkette (qx, interpolierte Variable) - + Quoted string (qr, interpolated variable) Zeichenkette (qr, interpolierte Variable) @@ -3000,82 +3176,82 @@ QsciLexerPostScript - + Default Standard - + Comment Kommentar - + DSC comment DSC Kommentar - + DSC comment value DSC Kommentarwert - + Number Zahl - + Name Name - + Keyword Schlüsselwort - + Literal Literal - + Immediately evaluated literal Direkt ausgeführtes Literal - + Array parenthesis Feldklammern - + Dictionary parenthesis Dictionary-Klammern - + Procedure parenthesis Prozedurklammern - + Text Text - + Hexadecimal string Hexadezimale Zeichenkette - + Base85 string Base85 Zeichenkette - + Bad string character Ungültiges Zeichen für Zeichenkette @@ -3083,32 +3259,32 @@ QsciLexerProperties - + Default Standard - + Comment Kommentar - + Section Abschnitt - + Assignment Zuweisung - + Default value Standardwert - + Key Schlüssel @@ -3116,102 +3292,102 @@ QsciLexerPython - + Comment Kommentar - + Number Zahl - + Double-quoted string Zeichenkette in Anführungszeichen - + Single-quoted string Zeichenkette in Hochkommata - + Keyword Schlüsselwort - + Triple single-quoted string Zeichenkette in dreifachen Hochkommata - + Triple double-quoted string Zeichenkette in dreifachen Anführungszeichen - + Class name Klassenname - + Function or method name Funktions- oder Methodenname - + Operator Operator - + Identifier Bezeichner - + Comment block Kommentarblock - + Unclosed string Unbeendete Zeichenkette - + Double-quoted f-string F-Zeichenkette in Anführungszeichen - + Single-quoted f-string F-Zeichenkette in Hochkommata - + Triple single-quoted f-string F-Zeichenkette in dreifachen Hochkommata - + Triple double-quoted f-string F-Zeichenkette in dreifachen Anführungszeichen - + Default Standard - + Highlighted identifier Hervorgehobener Bezeichner - + Decorator Dekorator @@ -3219,157 +3395,157 @@ QsciLexerRuby - + Default Standard - + Comment Kommentar - + Number Zahl - + Double-quoted string Zeichenkette in Anführungszeichen - + Single-quoted string Zeichenkette in Hochkommata - + Keyword Schlüsselwort - + Class name Klassenname - + Function or method name Funktions- oder Methodenname - + Operator Operator - + Identifier Bezeichner - + Error Fehler - + POD POD - + Regular expression Regulärer Ausdruck - + Global Global - + Symbol Symbol - + Module name Modulname - + Instance variable Instanzvariable - + Class variable Klassenvariable - + Backticks Backticks - + Data section Datensektion - + Here document delimiter Here Dokument-Begrenzer - + Here document Here Dokument - + %q string %q Zeichenkette - + %Q string %Q Zeichenkette - + %x string %x Zeichenkette - + %r string %r Zeichenkette - + %w string %w Zeichenkette - + Demoted keyword zurückgestuftes Schlüsselwort - + stdin Stdin - + stdout Stdout - + stderr Stderr @@ -3377,112 +3553,112 @@ QsciLexerSQL - + Default Standard - + Comment Kommentar - + Number Zahl - + Keyword Schlüsselwort - + Single-quoted string Zeichenkette in Hochkommata - + Operator Operator - + Identifier Bezeichner - + Comment line Kommentarzeile - + JavaDoc style comment JavaDoc Kommentar - + Double-quoted string Zeichenkette in Anführungszeichen - + SQL*Plus keyword SQL*Plus Schlüsselwort - + SQL*Plus prompt SQL*Plus Eingabe - + SQL*Plus comment SQL*Plus Kommentar - + # comment line # Kommentarzeile - + JavaDoc keyword JavaDoc Schlüsselwort - + JavaDoc keyword error JavaDoc Schlüsselwortfehler - + User defined 1 Nutzer definiert 1 - + User defined 2 Nutzer definiert 2 - + User defined 3 Nutzer definiert 3 - + User defined 4 Nutzer definiert 4 - + Quoted identifier Bezeichner in Anführungszeichen - + Quoted operator Operator in Anführungszeichen @@ -3490,47 +3666,47 @@ QsciLexerSpice - + Default Standard - + Identifier Bezeichner - + Command Befehl - + Function Funktion - + Parameter Parameter - + Number Zahl - + Delimiter Delimiter - + Value Wert - + Comment Kommentar @@ -3538,112 +3714,112 @@ QsciLexerTCL - + Default Standard - + Comment Kommentar - + Comment line Kommentarzeile - + Number Zahl - + Quoted keyword angeführtes Schlüsselwort - + Quoted string Zeichenkette - + Operator Operator - + Identifier Bezeichner - + Substitution Ersetzung - + Brace substitution Klammerersetzung - + Modifier Modifizierer - + Expand keyword Erweiterungsschlüsselwort - + TCL keyword TCL Schlüsselwort - + Tk keyword Tk Schlüsselwort - + iTCL keyword iTCL Schlüsselwort - + Tk command Tk Befehl - + User defined 1 Nutzer definiert 1 - + User defined 2 Nutzer definiert 2 - + User defined 3 Nutzer definiert 3 - + User defined 4 Nutzer definiert 4 - + Comment box Kommentarbox - + Comment block Kommentarblock @@ -3651,32 +3827,32 @@ QsciLexerTeX - + Default Standard - + Special Spezial - + Group Gruppe - + Symbol Symbol - + Command Befehl - + Text Text @@ -3684,82 +3860,82 @@ QsciLexerVHDL - + Default Standard - + Comment Kommentar - + Comment line Kommentarzeile - + Number Zahl - + String Zeichenkette - + Operator Operator - + Identifier Bezeichner - + Unclosed string Unbeendete Zeichenkette - + Keyword Schlüsselwort - + Standard operator Standardoperator - + Attribute Attribut - + Standard function Standardfunktion - + Standard package Standardpaket - + Standard type Standardtyp - + User defined Nutzer definiert - + Comment block Kommentarblock @@ -3767,192 +3943,192 @@ QsciLexerVerilog - + Default Standard - + Inactive default Inaktiver Standard - + Comment Kommentar - + Inactive comment Inaktiver Kommentar - + Line comment Zeilenkommentar - + Inactive line comment Inaktiver Zeilenkommentar - + Bang comment Bang Kommentar - + Inactive bang comment Inaktiver Bang Kommentar - + Number Zahl - + Inactive number Inaktive Zahl - + Primary keywords and identifiers Primäre Schlusselwörter und Bezeichner - + Inactive primary keywords and identifiers Inaktive primäre Schlusselwörter und Bezeichner - + String Zeichenkette - + Inactive string Inaktive Zeichenkette - + Secondary keywords and identifiers Sekundäre Schlusselwörter und Bezeichner - + Inactive secondary keywords and identifiers Inaktive sekundäre Schlusselwörter und Bezeichner - + System task Systemtask - + Inactive system task Inaktiver Systemtask - + Preprocessor block Präprozessorblock - + Inactive preprocessor block Inaktiver Präprozessorblock - + Operator Operator - + Inactive operator Inaktiver Operator - + Identifier Bezeichner - + Inactive identifier Inaktiver Bezeichner - + Unclosed string Unbeendete Zeichenkette - + Inactive unclosed string Inaktive unbeendete Zeichenkette - + User defined tasks and identifiers Nutzerdefinierte Tasks und Bezeichner - + Inactive user defined tasks and identifiers Inaktive nutzerdefinierte Tasks und Bezeichner - + Keyword comment Schlüsselwortkommentar - + Inactive keyword comment Inaktiver Schlüsselwortkommentar - + Input port declaration Eingabeportdefinition - + Inactive input port declaration Inaktive Eingabeportdefinition - + Output port declaration Ausgabeportdefinition - + Inactive output port declaration Inaktive Ausgabeportdefinition - + Input/output port declaration Ein-/Ausgabeportdefinition - + Inactive input/output port declaration Inaktive Ein-/Ausgabeportdefinition - + Port connection Portverbindung - + Inactive port connection Inaktive Portverbindung @@ -3960,52 +4136,52 @@ QsciLexerYAML - + Default Standard - + Comment Kommentar - + Identifier Bezeichner - + Keyword Schlüsselwort - + Number Zahl - + Reference Referenz - + Document delimiter Dokumentbegrenzer - + Text block marker Textblock Markierung - + Syntax error marker Syntaxfehler Markierung - + Operator Operator @@ -4013,37 +4189,37 @@ QsciScintilla - + &Undo &Rückgängig - + &Redo Wieder&herstellen - + Cu&t &Ausschneiden - + &Copy &Kopieren - + &Paste Ein&fügen - + Delete Löschen - + Select All Alle auswählen diff --git a/libs/qscintilla/Qt4Qt5/qscintilla_es.qm b/libs/qscintilla_2.14.1/Qt5Qt6/qscintilla_es.qm similarity index 100% rename from libs/qscintilla/Qt4Qt5/qscintilla_es.qm rename to libs/qscintilla_2.14.1/Qt5Qt6/qscintilla_es.qm diff --git a/libs/qscintilla/Qt4Qt5/qscintilla_es.ts b/libs/qscintilla_2.14.1/Qt5Qt6/qscintilla_es.ts similarity index 85% rename from libs/qscintilla/Qt4Qt5/qscintilla_es.ts rename to libs/qscintilla_2.14.1/Qt5Qt6/qscintilla_es.ts index b401b6a2c..7232c5173 100644 --- a/libs/qscintilla/Qt4Qt5/qscintilla_es.ts +++ b/libs/qscintilla_2.14.1/Qt5Qt6/qscintilla_es.ts @@ -4,493 +4,493 @@ QsciCommand - + Move down one line Desplazar una línea hacia abajo - + Extend selection down one line Extender la selección una línea hacia abajo - + Scroll view down one line Desplazar la vista una línea hacia abajo - + Extend rectangular selection down one line Extender la selección rectangular una línea hacia abajo - + Move up one line Desplazar una línea hacia arriba - + Extend selection up one line Extender la selección una línea hacia arriba - + Scroll view up one line Desplazar la vista una línea hacia arriba - + Extend rectangular selection up one line Extender la selección rectangular una línea hacia arriba - + Move up one paragraph Desplazar un párrafo hacia arriba - + Extend selection up one paragraph Extender la selección un párrafo hacia arriba - + Move down one paragraph Desplazar un párrafo hacia abajo - + Scroll to start of document Desplazar al principio del documento - + Scroll to end of document Desplazar al final del documento - + Scroll vertically to centre current line Desplazar verticalmente al centro de la línea actual - + Extend selection down one paragraph Extender la selección un párrafo hacia abajo - + Move left one character Mover un carácter hacia la izquierda - + Extend selection left one character Extender la selección un carácter hacia la izquierda - + Move left one word Mover una palabra hacia la izquierda - + Extend selection left one word Extender la selección una palabra a la izquierda - + Extend rectangular selection left one character Extender la selección rectangular un carácter hacia la izquierda - + Move right one character Mover un carácter hacia la derecha - + Extend selection right one character Extender la selección un carácter hacia la derecha - + Move right one word Mover una palabra hacia la derecha - + Extend selection right one word Extender la selección una palabra a la derecha - + Extend rectangular selection right one character Extender la selección rectangular un carácter hacia la derecha - + Move to end of previous word Mover al final de palabra anterior - + Extend selection to end of previous word Extender selección al final de la palabra anterior - + Move to end of next word Mover al final de la palabra siguiente - + Extend selection to end of next word Extender la selección hasta el final de la palabra siguiente - + Move left one word part Mover parte de una palabra hacia la izquierda - + Extend selection left one word part Extender la selección parte de una palabra a la izquierda - + Move right one word part Mover parte de una palabra hacia la derecha - + Extend selection right one word part Extender la selección parte de una palabra a la derecha - + Move up one page Mover hacia arriba una página - + Extend selection up one page Extender la selección hacia arriba una página - + Extend rectangular selection up one page Extender la selección rectangular hacia arriba una página - + Move down one page Mover hacia abajo una página - + Extend selection down one page Extender la selección hacia abajo una página - + Extend rectangular selection down one page Extender la selección rectangular una página hacia abajo - + Delete current character Borrar el carácter actual - + Cut selection Cortar selección - + Delete word to right Borrar palabra hacia la derecha - + Move to start of document line Mover al principio de la línea del documento - + Extend selection to start of document line Extender selección al principio de la línea del documento - + Extend rectangular selection to start of document line Extender selección rectangular al principio de la línea del documento - + Move to start of display line Mover al principio de la línea visualizada - + Extend selection to start of display line Extender selección al principio de la línea visualizada - + Move to start of display or document line Mover al principio de la línea visualizada o del documento - + Extend selection to start of display or document line Extender selección al principio de la línea visualizada o del documento - + Move to first visible character in document line Mover al primer carácter visible en la línea del documento - + Extend selection to first visible character in document line Extender selección al primer carácter visible en la línea del documento - + Extend rectangular selection to first visible character in document line Extender selección rectangular al primer carácter visible en la línea del documento - + Move to first visible character of display in document line Extender selección al primer carácter visualizado en la línea del documento - + Extend selection to first visible character in display or document line Extender selección al primer carácter de línea visualizada o del documento - + Move to end of document line Mover al final de la línea del documento - + Extend selection to end of document line Extender selección al final de la línea del documento - + Extend rectangular selection to end of document line Extender selección rectangular al final de la línea del documento - + Move to end of display line Mover al final de la línea visualizada - + Extend selection to end of display line Extender selección al final de la línea visualizada - + Move to end of display or document line Mover al final de la línea visualizada o del documento - + Extend selection to end of display or document line Extender selección al final de la línea visualizada o del documento - + Move to start of document Mover al principio del documento - + Extend selection to start of document Extender selección al principio del documento - + Move to end of document Mover al final del documento - + Extend selection to end of document Extender selección al final del documento - + Stuttered move up one page Mover progresivamente una página hacia arriba - + Stuttered extend selection up one page Extender progresivamente selección hacia arriba una página - + Stuttered move down one page Mover progresivamente una página hacia abajo - + Stuttered extend selection down one page Extender progresivamente selección hacia abajo una página - + Delete previous character if not at start of line Borrar carácter anterior si no está al principio de una línea - + Delete right to end of next word Borrar a la derecha hasta el final de la siguiente palabra - + Delete line to right Borrar línea hacia la derecha - + Transpose current and previous lines Transponer líneas actual y anterior - + Duplicate the current line Duplicar línea actual - + Select all Select document Seleccionar todo - + Move selected lines up one line Mover las líneas seleccionadas una línea hacia arriba - + Move selected lines down one line Mover las líneas seleccionadas una línea hacia abajo - + Toggle insert/overtype Conmutar insertar/sobreescribir - + Paste Pegar - + Copy selection Copiar selección - + Insert newline Insertar carácter de nueva línea - + De-indent one level Deshacer un nivel de indentado - + Cancel Cancelar - + Delete previous character Borrar carácter anterior - + Delete word to left Borrar palabra hacia la izquierda - + Delete line to left Borrar línea hacia la izquierda - + Undo last command Deshacer último comando - + Redo last command Rehacer último comando - + Indent one level Indentar un nivel - + Zoom in Aumentar zoom - + Zoom out Disminuir zoom - + Formfeed Carga de la página - + Cut current line Cortar línea actual - + Delete current line Borrar línea actual - + Copy current line Copiar línea actual - + Convert selection to lower case Convertir selección a minúsculas - + Convert selection to upper case Convertir selección a mayúsculas - + Duplicate selection Duplicar selección @@ -498,150 +498,233 @@ QsciLexerAVS - + Default Por defecto - + Block comment Comentario de bloque - + Nested block comment Comentario de bloque anidado - + Line comment Comentario de línea - + Number Número - + Operator Operador - + Identifier Identificador - + Double-quoted string Cadena con comillas dobles - + Triple double-quoted string Cadena con triple comilla doble - + Keyword Palabra clave - + Filter Filtro - + Plugin Plugin - + Function Función - + Clip property Propiedad de recorte - + User defined Definido por el usuario + + QsciLexerAsm + + + Default + Por defecto + + + + Comment + Comentario + + + + Number + Número + + + + Double-quoted string + Cadena con comillas dobles + + + + Operator + Operador + + + + Identifier + Identificador + + + + CPU instruction + + + + + FPU instruction + + + + + Register + + + + + Directive + Directiva + + + + Directive operand + + + + + Block comment + Comentario de bloque + + + + Single-quoted string + + + + + Unclosed string + Cadena sin cerrar + + + + Extended instruction + + + + + Comment directive + + + QsciLexerBash - + Default Por defecto - + Error Error - + Comment Comentario - + Number Número - + Keyword Palabra clave - + Double-quoted string Cadena con comillas dobles - + Single-quoted string Cadena con comillas simples - + Operator Operador - + Identifier Identificador - + Scalar Escalar - + Parameter expansion Expansión de parámetros - + Backticks Comilla inversa - + Here document delimiter Delimitador de documento integrado (here document) - + Single-quoted here document Documento integrado (here document) con comilla simple @@ -649,42 +732,42 @@ QsciLexerBatch - + Default Por defecto - + Comment Comentario - + Keyword Palabra clave - + Label Etiqueta - + Hide command character Ocultar caracteres de comando - + External command Comando externo - + Variable Variable - + Operator Operador @@ -692,77 +775,77 @@ QsciLexerCMake - + Default Por defecto - + Comment Comentario - + String Cadena de caracteres - + Left quoted string Cadena con comillas a la izquierda - + Right quoted string Cadena con comillas a la derecha - + Function Función - + Variable Variable - + Label Etiqueta - + User defined Definido por el usuario - + WHILE block Bloque WHILE - + FOREACH block Bloque FOREACH - + IF block Bloque IF - + MACRO block Bloque MACRO - + Variable within a string Variable en una cadena - + Number Número @@ -770,282 +853,282 @@ QsciLexerCPP - + Default Por defecto - + Inactive default Por defecto inactivo - + C comment Comentario C - + Inactive C comment Comentario C inactivo - + C++ comment Comentario C++ - + Inactive C++ comment Comentario C++ inactivo - + JavaDoc style C comment Comentario C de estilo JavaDoc - + Inactive JavaDoc style C comment Comentario C estilo JavaDoc inactivo - + Number Número - + Inactive number Número inactivo - + Keyword Palabra clave - + Inactive keyword Palabra clave inactiva - + Double-quoted string Cadena con comillas dobles - + Inactive double-quoted string Cadena con doble comilla inactiva - + Single-quoted string Cadena con comillas simples - + Inactive single-quoted string Cadena con comilla simple inactiva - + IDL UUID IDL UUID - + Inactive IDL UUID IDL UUID inactivo - + Pre-processor block Bloque de preprocesador - + Inactive pre-processor block Bloque de preprocesador inactivo - + Operator Operador - + Inactive operator Operador inactivo - + Identifier Identificador - + Inactive identifier Identificador inactivo - + Unclosed string Cadena sin cerrar - + Inactive unclosed string Cadena sin cerrar inactiva - + C# verbatim string Cadena C# textual - + Inactive C# verbatim string Cadena C# textual inactiva - + JavaScript regular expression Expresión regular JavaScript - + Inactive JavaScript regular expression Expresión regular JavaScript inactiva - + JavaDoc style C++ comment Comentario C++ de estilo JavaDoc - + Inactive JavaDoc style C++ comment Comentario C++ estilo JavaDoc inactivo - + Secondary keywords and identifiers Identificadores y palabras clave secundarios - + Inactive secondary keywords and identifiers Identificadores y palabras clave secundarios inactivos - + JavaDoc keyword Palabra clave de Javadoc - + Inactive JavaDoc keyword Palabra clave de JavaDoc inactiva - + JavaDoc keyword error Error en palabra clave de Javadoc - + Inactive JavaDoc keyword error Error en palabra clave de Javadoc inactivo - + Global classes and typedefs Clases globales y typedefs - + Inactive global classes and typedefs Clases globales y typedefs inactivos - + C++ raw string Cadena en bruto C++ - + Inactive C++ raw string Cadena inactiva C++ - + Vala triple-quoted verbatim string Cadena Vala con triple comilla textual - + Inactive Vala triple-quoted verbatim string Cadena Vala con triple comilla textual inactiva - + Pike hash-quoted string Cadena Pike con hash entrecomillado - + Inactive Pike hash-quoted string Cadena Pike con hash entrecomillado inactiva - + Pre-processor C comment Comentario C de preprocesador - + Inactive pre-processor C comment Comentario C de preprocesador inactivo - + JavaDoc style pre-processor comment Comentario de preprocesador estilo JavaDoc - + Inactive JavaDoc style pre-processor comment Comentario de preprocesador estilo JavaDoc inactivo - + User-defined literal Literal definido por el usuario - + Inactive user-defined literal Literal inactivo definido por el usuario - + Task marker Marcador de tarea - + Inactive task marker Marcador de tarea inactivo - + Escape sequence Secuencia de escape - + Inactive escape sequence Secuencia de escape inactiva @@ -1053,117 +1136,122 @@ QsciLexerCSS - + Default Por defecto - + Tag Etiqueta - + Class selector Selector de clase - + Pseudo-class Pseudoclase - + Unknown pseudo-class Pseudoclase desconocida - + Operator Operador - + CSS1 property Propiedad CSS1 - + Unknown property Propiedad desconocida - + Value Valor - + + Comment + Comentario + + + ID selector Selector de ID - + Important Importante - + @-rule Regla-@ - + Double-quoted string Cadena con comillas dobles - + Single-quoted string Cadena con comillas simples - + CSS2 property Propiedad CSS2 - + Attribute Atributo - + CSS3 property Propiedad CSS3 - + Pseudo-element Pseudoelemento - + Extended CSS property Propiedad CSS extendida - + Extended pseudo-class Pseudoclase extendida - + Extended pseudo-element Pseudoelemento extendido - + Media rule Regla de '@media' - + Variable Variable @@ -1171,7 +1259,7 @@ QsciLexerCSharp - + Verbatim string Cadena textual @@ -1179,122 +1267,122 @@ QsciLexerCoffeeScript - + Default Por defecto - + C-style comment Comentario de estilo C - + C++-style comment Comentario de estilo C++ - + JavaDoc C-style comment Comentario de estilo JavaDoc C - + Number Número - + Keyword Palabra clave - + Double-quoted string Cadena con comillas dobles - + Single-quoted string Cadena con comilla simple - + IDL UUID IDL UUID - + Pre-processor block Bloque de preprocesador - + Operator Operador - + Identifier Identificador - + Unclosed string Cadena sin cerrar - + C# verbatim string Cadena C# textual - + Regular expression Expresión regular - + JavaDoc C++-style comment Comentario de estilo JavaDoc C++ - + Secondary keywords and identifiers Identificadores y palabras clave secundarios - + JavaDoc keyword Palabra clave de JavaDoc - + JavaDoc keyword error Error en palabra clave de JavaDoc - + Global classes Clases globales - + Block comment Comentario de bloque - + Block regular expression Expresión regular de bloque - + Block regular expression comment Comentario de expresión regular de bloque - + Instance property Propiedad de instancia @@ -1302,117 +1390,117 @@ QsciLexerD - + Default Por defecto - + Block comment Comentario de bloque - + Line comment Comentario de línea - + DDoc style block comment Comentario de bloque estilo DDoc - + Nesting comment Comentario anidado - + Number Número - + Keyword Palabra clave - + Secondary keyword Palabra clave secundaria - + Documentation keyword Palabra clave de documentación - + Type definition Definición de tipo - + String Cadena de caracteres - + Unclosed string Cadena sin cerrar - + Character Carácter - + Operator Operador - + Identifier Identificador - + DDoc style line comment Comentario de línea estilo DDoc - + DDoc keyword Palabra clave DDoc - + DDoc keyword error Error en palabra clave DDOC - + Backquoted string Cadena con comillas hacia atrás - + Raw string Cadena en bruto - + User defined 1 Definido por el usuario 1 - + User defined 2 Definido por el usuario 2 - + User defined 3 Definido por el usuario 3 @@ -1420,62 +1508,62 @@ QsciLexerDiff - + Default Por defecto - + Comment Comentario - + Command Comando - + Header Encabezado - + Position Posición - + Removed line Línea eliminada - + Added line Línea añadida - + Changed line Línea modificada - + Added adding patch - + Removed adding patch - + Added removing patch - + Removed removing patch @@ -1483,47 +1571,47 @@ QsciLexerEDIFACT - + Default Por defecto - + Segment start Inicio de Segmento - + Segment end Final de Segmento - + Element separator Separador de elemento - + Composite separator Separador compuesto - + Release separator Separador de release - + UNA segment header Encabezamiento de segmento UNA - + UNH segment header Encabezamiento de segmento UNH - + Badly formed segment Segmento mal formado @@ -1531,77 +1619,77 @@ QsciLexerFortran77 - + Default Por defecto - + Comment Comentario - + Number Número - + Single-quoted string Cadena con comillas simples - + Double-quoted string Cadena con comillas dobles - + Unclosed string Cadena sin cerrar - + Operator Operador - + Identifier Identificador - + Keyword Palabra clave - + Intrinsic function Función intrínseca - + Extended function Función extendida - + Pre-processor block Bloque de preprocesador - + Dotted operator Operador punteado - + Label Etiqueta - + Continuation Continuación @@ -1609,555 +1697,643 @@ QsciLexerHTML - + HTML default HTML por defecto - + Tag Etiqueta - + Unknown tag Etiqueta desconocida - + Attribute Atributo - + Unknown attribute Atributo desconocido - + HTML number Número HTML - + HTML double-quoted string Cadena HTML con comillas dobles - + HTML single-quoted string Cadena HTML con comillas simples - + Other text in a tag Otro texto en una etiqueta - + HTML comment Comentario HTML - + Entity Entidad - + End of a tag Final de una etiqueta - + Start of an XML fragment Inicio de un fragmento XML - + End of an XML fragment Fin de un fragmento XML - + Script tag Etiqueta de script - + Start of an ASP fragment with @ Inicio de un fragmento ASP con @ - + Start of an ASP fragment Inicio de un fragmento ASP - + CDATA CDATA - + Start of a PHP fragment Inicio de un fragmento PHP - + Unquoted HTML value Valor HTML sin comillas - + ASP X-Code comment Comentario ASP X-Code - + SGML default SGML por defecto - + SGML command Comando SGML - + First parameter of an SGML command Primer parametro de un comando SGML - + SGML double-quoted string Cadena SGML con comillas dobles - + SGML single-quoted string Cadena SGML con comillas simples - + SGML error Error SGML - + SGML special entity Entidad SGML especial - + SGML comment Comentario SGML - + First parameter comment of an SGML command Comentario de primer parametro de un comando SGML - + SGML block default Bloque SGML por defecto - + Start of a JavaScript fragment Inicio de un fragmento JavaScript - + JavaScript default JavaScript por defecto - + JavaScript comment Comentario JavaScript - + JavaScript line comment Comentario de línea de JavaScript - + JavaDoc style JavaScript comment Comentario JavaScript de estilo JavaDoc - + JavaScript number Número JavaScript - + JavaScript word Palabra JavaScript - + JavaScript keyword Palabra clave JavaScript - + JavaScript double-quoted string Cadena JavaScript con comillas dobles - + JavaScript single-quoted string Cadena JavaScript con comillas simples - + JavaScript symbol Símbolo JavaScript - + JavaScript unclosed string Cadena JavaScript sin cerrar - + JavaScript regular expression Expresión regular JavaScript - + Start of an ASP JavaScript fragment Inicio de un fragmento de ASP JavaScript - + ASP JavaScript default ASP JavaScript por defecto - + ASP JavaScript comment Comentario de ASP JavaScript - + ASP JavaScript line comment Comentario de línea de ASP JavaScript - + JavaDoc style ASP JavaScript comment Comentario ASP JavaScript de estilo JavaDoc - + ASP JavaScript number Número ASP JavaScript - + ASP JavaScript word Palabra ASP JavaScript - + ASP JavaScript keyword Palabra clave ASP JavaScript - + ASP JavaScript double-quoted string Cadena ASP JavaScript con comillas dobles - + ASP JavaScript single-quoted string Cadena ASP JavaScript con comillas simples - + ASP JavaScript symbol Símbolo ASP JavaScript - + ASP JavaScript unclosed string Cadena ASP JavaScript sin cerrar - + ASP JavaScript regular expression Expresión regular ASP JavaScript - + Start of a VBScript fragment Inicio de un fragmento VBScript - + VBScript default VBScript por defecto - + VBScript comment Comentario VBScript - + VBScript number Número VBScript - + VBScript keyword Palabra clave VBScript - + VBScript string Cadena de caracteres VBScript - + VBScript identifier Identificador VBScript - + VBScript unclosed string Cadena VBScript sin cerrar - + Start of an ASP VBScript fragment Inicio de un fragmento de ASP VBScript - + ASP VBScript default ASP VBScript por defecto - + ASP VBScript comment Comentario de ASP VBScript - + ASP VBScript number Número ASP VBScript - + ASP VBScript keyword Palabra clave ASP VBScript - + ASP VBScript string Cadena de caracteres ASP VBScript - + ASP VBScript identifier Identificador ASP VBScript - + ASP VBScript unclosed string Cadena ASP VBScript sin cerrar - + Start of a Python fragment Inicio de un fragmento Python - + Python default Python por defecto - + Python comment Comentario Python - + Python number Número Python - + Python double-quoted string Cadena Python con comillas dobles - + Python single-quoted string Cadena Python con comillas simples - + Python keyword Palabra clave de Python - + Python triple double-quoted string Cadena Python con triple comilla doble - + Python triple single-quoted string Cadena Python con triple comilla simple - + Python class name Nombre de clase Python - + Python function or method name Nombre de método o función Python - + Python operator Operador Python - + Python identifier Identificador Python - + Start of an ASP Python fragment Inicio de un fragmento ASP Python - + ASP Python default ASP Python por defecto - + ASP Python comment Comentario ASP Python - + ASP Python number Número ASP Python - + ASP Python double-quoted string Cadena ASP Python con comillas dobles - + ASP Python single-quoted string Cadena ASP Python con comillas simples - + ASP Python keyword Palabra clave de ASP Python - + ASP Python triple double-quoted string Cadena ASP Python con triple comilla doble - + ASP Python triple single-quoted string Cadena ASP Python con triple comilla simple - + ASP Python class name Nombre de clase ASP Python - + ASP Python function or method name Nombre de método o función ASP Python - + ASP Python operator Operador ASP Python - + ASP Python identifier Identificador ASP Python - + PHP default PHP por defecto - + PHP double-quoted string Cadena PHP con comillas dobles - + PHP single-quoted string Cadena PHP con comillas simples - + PHP keyword Palabra clave PHP - + PHP number Número PHP - + PHP variable Variable PHP - + PHP comment Comentario PHP - + PHP line comment Comentario de línea PHP - + PHP double-quoted variable Variable PHP con comillas dobles - + PHP operator Operador PHP + + QsciLexerHex + + + Default + Por defecto + + + + Record start + + + + + Record type + + + + + Unknown record type + + + + + Byte count + + + + + Incorrect byte count + + + + + No address + + + + + Data address + + + + + Record count + + + + + Start address + + + + + Extended address + + + + + Odd data + + + + + Even data + + + + + Unknown data + + + + + Checksum + + + + + Incorrect checksum + + + + + Trailing garbage after a record + + + QsciLexerIDL - + UUID UUID @@ -2165,72 +2341,72 @@ QsciLexerJSON - + Default Por defecto - + Number Número - + String Cadena - + Unclosed string Cadena sin cerrar - + Property Propiedad - + Escape sequence Secuencia de escape - + Line comment Comentario de línea - + Block comment Comentario de bloque - + Operator Operador - + IRI IRI - + JSON-LD compact IRI JSON-LD compact IRI - + JSON keyword Palabra clave JSON - + JSON-LD keyword Palabra clave JSON-LD - + Parsing error Error de intérprete @@ -2238,7 +2414,7 @@ QsciLexerJavaScript - + Regular expression Expresión regular @@ -2246,102 +2422,102 @@ QsciLexerLua - + Default Por defecto - + Comment Comentario - + Line comment Comentario de línea - + Number Número - + Keyword Palabra clave - + String Cadena de caracteres - + Character Carácter - + Literal string Cadena literal - + Preprocessor Preprocesador - + Operator Operador - + Identifier Identificador - + Unclosed string Cadena sin cerrar - + Basic functions Funciones basicas - + String, table and maths functions Funcines de cadena, tabla y matemáticas - + Coroutines, i/o and system facilities Co-rutinas, e/s y funciones del sistema - + User defined 1 Definido por el usuario 1 - + User defined 2 Definido por el usuario 2 - + User defined 3 Definido por el usuario 3 - + User defined 4 Definido por el usuario 4 - + Label Etiqueta @@ -2349,37 +2525,37 @@ QsciLexerMakefile - + Default Por defecto - + Comment Comentario - + Preprocessor Preprocesador - + Variable Variable - + Operator Operador - + Target Objetivo - + Error Error @@ -2387,112 +2563,112 @@ QsciLexerMarkdown - + Default Por defecto - + Special Especial - + Strong emphasis using double asterisks Énfasis fuerte usando doble asterisco - + Strong emphasis using double underscores Énfasis fuerte usando doble guión bajo - + Emphasis using single asterisks Énfasis usando asterisco sencillo - + Emphasis using single underscores Énfasis usando guión bajo sencillo - + Level 1 header Encabezado de nivel 1 - + Level 2 header Encabezado de nivel 2 - + Level 3 header Encabezado de nivel 3 - + Level 4 header Encabezado de nivel 4 - + Level 5 header Encabezado de nivel 5 - + Level 6 header Encabezado de nivel 6 - + Pre-char Pre-char - + Unordered list item Elemento de lista sin ordenar - + Ordered list item Elemento de lista ordenada - + Block quote Bloque de cita - + Strike out Tachar - + Horizontal rule Regla horizontal - + Link Enlace - + Code between backticks Código entre comillas hacia atrás - + Code between double backticks Código entre comillas hacia atrás dobles - + Code block Bloque de código @@ -2500,47 +2676,47 @@ QsciLexerMatlab - + Default Por defecto - + Comment Comentario - + Command Comando - + Number Número - + Keyword Palabra clave - + Single-quoted string Cadena con comillas simples - + Operator Operador - + Identifier Identificador - + Double-quoted string Cadena con comillas dobles @@ -2548,77 +2724,77 @@ QsciLexerPO - + Default Por defecto - + Comment Comentario - + Message identifier Identificador de mensaje - + Message identifier text Texto identificador de mensaje - + Message string Cadena de mensaje - + Message string text Texto de cadena de mensaje - + Message context Contexto de mensaje - + Message context text Texto de contexto de mensaje - + Fuzzy flag Señalador difuso - + Programmer comment Comentario de programador - + Reference Referencia - + Flags Señaladores - + Message identifier text end-of-line Fin de línea de texto identificador de mensaje - + Message string text end-of-line Fin de línea de texto de cadena de mensaje - + Message context text end-of-line Fin de línea de texto de contexto de mensaje @@ -2626,87 +2802,87 @@ QsciLexerPOV - + Default Por defecto - + Comment Comentario - + Comment line Línea de comentario - + Number Número - + Operator Operador - + Identifier Identificador - + String Cadena de caracteres - + Unclosed string Cadena sin cerrar - + Directive Directiva - + Bad directive Mala directiva - + Objects, CSG and appearance Objetos, CSG y apariencia - + Types, modifiers and items Tipos, modificadores y elementos - + Predefined identifiers Identificadores predefinidos - + Predefined functions Funciones predefinidas - + User defined 1 Definido por el usuario 1 - + User defined 2 Definido por el usuario 2 - + User defined 3 Definido por el usuario 3 @@ -2714,77 +2890,77 @@ QsciLexerPascal - + Default Por defecto - + Line comment Comentario de línea - + Number Número - + Keyword Palabra clave - + Single-quoted string Cadena con comillas simples - + Operator Operador - + Identifier Identificador - + '{ ... }' style comment Comentario de estilo '{ ... }' - + '(* ... *)' style comment Comentario de estilo '(* ... *)' - + '{$ ... }' style pre-processor block Bloque de preprocesador de estilo '{$ ... }' - + '(*$ ... *)' style pre-processor block Bloque de preprocesador de estilo '(*$ ... *)' - + Hexadecimal number Número hexadecimal - + Unclosed string Cadena sin cerrar - + Character Carácter - + Inline asm asm inline @@ -2792,207 +2968,207 @@ QsciLexerPerl - + Default Por defecto - + Error Error - + Comment Comentario - + POD POD - + Number Número - + Keyword Palabra clave - + Double-quoted string Cadena con comillas dobles - + Single-quoted string Cadena con comillas simples - + Operator Operador - + Identifier Identificador - + Scalar Escalar - + Array Array - + Hash Hash - + Symbol table Tabla de símbolos - + Regular expression Expresión regular - + Substitution Sustitución - + Backticks Comilla inversa - + Data section Sección de datos - + Here document delimiter Delimitador de documento integrado (here document) - + Single-quoted here document Documento integrado (here document) con comilla simple - + Double-quoted here document Documento integrado (here document) con comilla doble - + Backtick here document Documento integrado (here document) con comilla inversa - + Quoted string (q) Cadena con comillas (q) - + Quoted string (qq) Cadena con comillas (qq) - + Quoted string (qx) Cadena con comillas (qx) - + Quoted string (qr) Cadena con comillas (qr) - + Quoted string (qw) Cadena con comillas (qw) - + POD verbatim POD textual - + Subroutine prototype Prototipo de subrutina - + Format identifier Identificador de formato - + Format body Cuerpo de formato - + Double-quoted string (interpolated variable) Cadena con doble comilla (variable interpolada) - + Translation Traducción - + Regular expression (interpolated variable) Expresión regular (variable interpolada) - + Substitution (interpolated variable) Substitución (variable interpolada) - + Backticks (interpolated variable) Comilla hacia atrás (variable interpolada) - + Double-quoted here document (interpolated variable) Here document con comilla doble (variable interpolada) - + Backtick here document (interpolated variable) Here document con comilla hacia atrás (variable interpolada) - + Quoted string (qq, interpolated variable) Cadena entrecomillada (qq, variable interpolada) - + Quoted string (qx, interpolated variable) Cadena entrecomillada (qx, variable interpolada) - + Quoted string (qr, interpolated variable) Cadena entrecomillada (qr, variable interpolada) @@ -3000,82 +3176,82 @@ QsciLexerPostScript - + Default Por defecto - + Comment Comentario - + DSC comment Comentario DSC - + DSC comment value Valor de comentario DSC - + Number Número - + Name Nombre - + Keyword Palabra clave - + Literal Literal - + Immediately evaluated literal Literal de evaluación inmediata - + Array parenthesis Paréntesis de array - + Dictionary parenthesis Paréntesis de diccionario - + Procedure parenthesis Paréntesis de procedimiento - + Text Texto - + Hexadecimal string Cadena hexadecimal - + Base85 string Cadena Base85 - + Bad string character Carácter de cadena mala @@ -3083,32 +3259,32 @@ QsciLexerProperties - + Default Por defecto - + Comment Comentario - + Section Sección - + Assignment Asignación - + Default value Valor por defecto - + Key Clave @@ -3116,102 +3292,102 @@ QsciLexerPython - + Default Por defecto - + Comment Comentario - + Number Número - + Double-quoted string Cadena con comillas dobles - + Single-quoted string Cadena con comillas simples - + Keyword Palabra clave - + Triple single-quoted string Cadena con triple comilla simple - + Triple double-quoted string Cadena con triple comilla doble - + Class name Nombre de clase - + Function or method name Nombre de método o función - + Operator Operador - + Identifier Identificador - + Comment block Bloque de comentario - + Unclosed string Cadena sin cerrar - + Highlighted identifier Identificador resaltado - + Decorator Decorador - + Double-quoted f-string - + Single-quoted f-string - + Triple single-quoted f-string - + Triple double-quoted f-string @@ -3219,157 +3395,157 @@ QsciLexerRuby - + Default Por defecto - + Comment Comentario - + Number Número - + Double-quoted string Cadena con comillas dobles - + Single-quoted string Cadena con comillas simples - + Keyword Palabra clave - + Class name Nombre de clase - + Function or method name Nombre de método o función - + Operator Operador - + Identifier Identificador - + Error Error - + POD POD - + Regular expression Expresión regular - + Global Global - + Symbol Símbolo - + Module name Nombre de módulo - + Instance variable Variable de instancia - + Class variable Variable de clase - + Backticks Comilla inversa - + Data section Sección de datos - + Here document delimiter Delimitador de documento integrado (here document) - + Here document Documento integrado (here document) - + %q string Cadena %q - + %Q string Cadena %Q - + %x string Cadena %x - + %r string Cadena %r - + %w string Cadena %w - + Demoted keyword Palabra clave degradada - + stdin stdin - + stdout stdout - + stderr stderr @@ -3377,112 +3553,112 @@ QsciLexerSQL - + Default Por defecto - + Comment Comentario - + Number Número - + Keyword Palabra clave - + Single-quoted string Cadena con comillas simples - + Operator Operador - + Identifier Identificador - + Comment line Línea de comentario - + JavaDoc style comment Comentario de estilo JavaDoc - + Double-quoted string Cadena con comillas dobles - + SQL*Plus keyword Palabra clave SQL*Plus - + SQL*Plus prompt Prompt SQL*Plus - + SQL*Plus comment Comentario SQL*Plus - + # comment line # línea de comentario - + JavaDoc keyword Palabra clave de Javadoc - + JavaDoc keyword error Error en palabra clave de Javadoc - + User defined 1 Definido por el usuario 1 - + User defined 2 Definido por el usuario 2 - + User defined 3 Definido por el usuario 3 - + User defined 4 Definido por el usuario 4 - + Quoted identifier Identificador entrecomillado - + Quoted operator Operador entrecomillado @@ -3490,47 +3666,47 @@ QsciLexerSpice - + Default Por defecto - + Identifier Identificador - + Command Comando - + Function Función - + Parameter Parámetro - + Number Número - + Delimiter Delimitador - + Value Valor - + Comment Comentario @@ -3538,112 +3714,112 @@ QsciLexerTCL - + Default Por defecto - + Comment Comentario - + Comment line Línea de comentario - + Number Número - + Quoted keyword Palabra clave entrecomillada - + Quoted string Cadena entrecomillada - + Operator Operador - + Identifier Identificador - + Substitution Sustitución - + Brace substitution Sustitución de corchetes - + Modifier Modificador - + Expand keyword Expandir palabra clave - + TCL keyword Palabra clave TCL - + Tk keyword Palabra clave Tk - + iTCL keyword Palabra clave iTCL - + Tk command Comando Tk - + User defined 1 Definido por el usuario 1 - + User defined 2 Definido por el usuario 2 - + User defined 3 Definido por el usuario 3 - + User defined 4 Definido por el usuario 4 - + Comment box Caja de comentario - + Comment block Bloque de comentario @@ -3651,32 +3827,32 @@ QsciLexerTeX - + Default Por defecto - + Special Especial - + Group Grupo - + Symbol Símbolo - + Command Comando - + Text Texto @@ -3684,82 +3860,82 @@ QsciLexerVHDL - + Default Por defecto - + Comment Comentario - + Comment line Línea de comentario - + Number Número - + String Cadena de caracteres - + Operator Operador - + Identifier Identificador - + Unclosed string Cadena sin cerrar - + Keyword Palabra clave - + Standard operator Operador estándar - + Attribute Atributo - + Standard function Función estándar - + Standard package Paquete estándar - + Standard type Tipo estándar - + User defined Definido por el usuario - + Comment block Bloque de comentario @@ -3767,192 +3943,192 @@ QsciLexerVerilog - + Default Por defecto - + Inactive default Inactivo por defecto - + Comment Comentario - + Inactive comment - + Line comment Comentario de línea - + Inactive line comment Línea de comentario inactiva - + Bang comment Comentario Bang - + Inactive bang comment Comentario Bang inactivo - + Number - + Inactive number Número inactivo - + Primary keywords and identifiers Identificadores y palabras clave primarios - + Inactive primary keywords and identifiers Palabras clave primarias e identificadores inactivos - + String Cadena - + Inactive string Cadena inactiva - + Secondary keywords and identifiers Palabras clave e identificadores secundarios - + Inactive secondary keywords and identifiers Identificadores y palabras clave secundarios inactivos - + System task Tarea de sistema - + Inactive system task Tarea de sistema inactiva - + Preprocessor block Bloque de preprocesador - + Inactive preprocessor block - + Operator Operador - + Inactive operator Operador inactivo - + Identifier Identificador - + Inactive identifier Identificador inactivo - + Unclosed string Cadena sin cerrar - + Inactive unclosed string Cadena sin cerrar inactiva - + User defined tasks and identifiers Tareas definidas por el usuario e identificadores - + Inactive user defined tasks and identifiers Tareas definidas por el usuario e identificadores inactivos - + Keyword comment Comentario de palabra clave - + Inactive keyword comment Comentario de palabra clave inactiva - + Input port declaration Declaración de puerto de input - + Inactive input port declaration Declaración de puerto de input inactivo - + Output port declaration Declaración de puerto de output - + Inactive output port declaration Declaración de puerto de output inactivo - + Input/output port declaration Declaración de puerto de input/output inactivo - + Inactive input/output port declaration Declaración de puerto de input/output inactivo - + Port connection Conexión de puerto - + Inactive port connection Conexión inactiva de puerto @@ -3960,52 +4136,52 @@ QsciLexerYAML - + Default Por defecto - + Comment Comentario - + Identifier Identificador - + Keyword Palabra clave - + Number Número - + Reference Referencia - + Document delimiter Delimitador de documento - + Text block marker Marcador de bloque de texto - + Syntax error marker Marcador de error de sintaxis - + Operator Operador @@ -4013,37 +4189,37 @@ QsciScintilla - + &Undo &Deshacer - + &Redo &Rehacer - + Cu&t Cor&tar - + &Copy &Copiar - + &Paste &Pegar - + Delete Borrar - + Select All Seleccionar todo diff --git a/libs/qscintilla/Qt4Qt5/qscintilla_fr.qm b/libs/qscintilla_2.14.1/Qt5Qt6/qscintilla_fr.qm similarity index 100% rename from libs/qscintilla/Qt4Qt5/qscintilla_fr.qm rename to libs/qscintilla_2.14.1/Qt5Qt6/qscintilla_fr.qm diff --git a/libs/qscintilla/Qt4Qt5/qscintilla_fr.ts b/libs/qscintilla_2.14.1/Qt5Qt6/qscintilla_fr.ts similarity index 85% rename from libs/qscintilla/Qt4Qt5/qscintilla_fr.ts rename to libs/qscintilla_2.14.1/Qt5Qt6/qscintilla_fr.ts index 36c751561..0c115c7d4 100644 --- a/libs/qscintilla/Qt4Qt5/qscintilla_fr.ts +++ b/libs/qscintilla_2.14.1/Qt5Qt6/qscintilla_fr.ts @@ -4,493 +4,493 @@ QsciCommand - + Move down one line Déplacement d'une ligne vers le bas - + Extend selection down one line Extension de la sélection d'une ligne vers le bas - + Scroll view down one line Decendre la vue d'une ligne - + Extend rectangular selection down one line Extension de la sélection rectangulaire d'une ligne vers le bas - + Move up one line Déplacement d'une ligne vers le haut - + Extend selection up one line Extension de la sélection d'une ligne vers le haut - + Scroll view up one line Remonter la vue d'une ligne - + Extend rectangular selection up one line Extension de la sélection rectangulaire d'une ligne vers le haut - + Move up one paragraph Déplacement d'un paragraphe vers le haut - + Extend selection up one paragraph Extension de la sélection d'un paragraphe vers le haut - + Move down one paragraph Déplacement d'un paragraphe vers le bas - + Scroll to start of document Remonter au début du document - + Scroll to end of document Descendre à la fin du document - + Scroll vertically to centre current line Défiler verticalement pour centrer la ligne courante - + Extend selection down one paragraph Extension de la sélection d'un paragraphe vers le bas - + Move left one character Déplacement d'un caractère vers la gauche - + Extend selection left one character Extension de la sélection d'un caractère vers la gauche - + Move left one word Déplacement d'un mot vers la gauche - + Extend selection left one word Extension de la sélection d'un mot vers la gauche - + Extend rectangular selection left one character Extension de la sélection rectangulaire d'un caractère vers la gauche - + Move right one character Déplacement d'un caractère vers la droite - + Extend selection right one character Extension de la sélection d'un caractère vers la droite - + Move right one word Déplacement d'un mot vers la droite - + Extend selection right one word Extension de la sélection d'un mot vers la droite - + Extend rectangular selection right one character Extension de la sélection rectangulaire d'un caractère vers la droite - + Move to end of previous word Déplacement vers fin du mot précédent - + Extend selection to end of previous word Extension de la sélection vers fin du mot précédent - + Move to end of next word Déplacement vers fin du mot suivant - + Extend selection to end of next word Extension de la sélection vers fin du mot suivant - + Move left one word part Déplacement d'une part de mot vers la gauche - + Extend selection left one word part Extension de la sélection d'une part de mot vers la gauche - + Move right one word part Déplacement d'une part de mot vers la droite - + Extend selection right one word part Extension de la sélection d'une part de mot vers la droite - + Move up one page Déplacement d'une page vers le haut - + Extend selection up one page Extension de la sélection d'une page vers le haut - + Extend rectangular selection up one page Extension de la sélection rectangulaire d'une page vers le haut - + Move down one page Déplacement d'une page vers le bas - + Extend selection down one page Extension de la sélection d'une page vers le bas - + Extend rectangular selection down one page Extension de la sélection rectangulaire d'une page vers le bas - + Delete current character Effacement du caractère courant - + Cut selection Couper la sélection - + Delete word to right Suppression du mot de droite - + Move to start of document line Déplacement vers début de ligne du document - + Extend selection to start of document line Extension de la sélection vers début de ligne du document - + Extend rectangular selection to start of document line - + Move to start of display line - + Extend selection to start of display line - + Move to start of display or document line - + Extend selection to start of display or document line - + Move to first visible character in document line - + Extend selection to first visible character in document line - + Extend rectangular selection to first visible character in document line - + Move to first visible character of display in document line - + Extend selection to first visible character in display or document line - + Move to end of document line - + Extend selection to end of document line - + Extend rectangular selection to end of document line - + Move to end of display line - + Extend selection to end of display line - + Move to end of display or document line - + Extend selection to end of display or document line - + Move to start of document - + Extend selection to start of document - + Move to end of document - + Extend selection to end of document - + Stuttered move up one page - + Stuttered extend selection up one page - + Stuttered move down one page - + Stuttered extend selection down one page - + Delete previous character if not at start of line - + Delete right to end of next word - + Delete line to right Suppression de la partie droite de la ligne - + Transpose current and previous lines - + Duplicate the current line - + Select all Select document - + Move selected lines up one line - + Move selected lines down one line - + Toggle insert/overtype Basculement Insertion /Ecrasement - + Paste Coller - + Copy selection Copier la sélection - + Insert newline - + De-indent one level - + Cancel Annuler - + Delete previous character Suppression du dernier caractère - + Delete word to left Suppression du mot de gauche - + Delete line to left Effacer la partie gauche de la ligne - + Undo last command - + Redo last command Refaire la dernière commande - + Indent one level Indentation d'un niveau - + Zoom in Zoom avant - + Zoom out Zoom arrière - + Formfeed Chargement de la page - + Cut current line Couper la ligne courante - + Delete current line Suppression de la ligne courante - + Copy current line Copier la ligne courante - + Convert selection to lower case Conversion de la ligne courante en minuscules - + Convert selection to upper case Conversion de la ligne courante en majuscules - + Duplicate selection @@ -498,150 +498,233 @@ QsciLexerAVS - + Default Par défaut - + Block comment Block de commentaires - + Nested block comment - + Line comment Commentaire de ligne - + Number Nombre - + Operator Opérateur - + Identifier Identificateur - + Double-quoted string Chaine de caractères (guillemets doubles) - + Triple double-quoted string Chaine de caractères HTML (guillemets simples) - + Keyword Mot-clé - + Filter Filtre - + Plugin Extension - + Function Fonction - + Clip property - + User defined Définition utilisateur + + QsciLexerAsm + + + Default + Par défaut + + + + Comment + Commentaire + + + + Number + Nombre + + + + Double-quoted string + Chaine de caractères (guillemets doubles) + + + + Operator + Opérateur + + + + Identifier + Identificateur + + + + CPU instruction + + + + + FPU instruction + + + + + Register + + + + + Directive + Directive + + + + Directive operand + + + + + Block comment + Block de commentaires + + + + Single-quoted string + Chaine de caractères (guillemets simples) + + + + Unclosed string + Chaine de caractères non refermée + + + + Extended instruction + + + + + Comment directive + + + QsciLexerBash - + Default Par défaut - + Error Erreur - + Comment Commentaire - + Number Nombre - + Keyword Mot-clé - + Double-quoted string Chaine de caractères (guillemets doubles) - + Single-quoted string Chaine de caractères (guillemets simples) - + Operator Opérateur - + Identifier Identificateur - + Scalar Scalaire - + Parameter expansion Extension de paramètre - + Backticks Quotes inverses - + Here document delimiter Ici délimiteur de document - + Single-quoted here document Document intégré guillemets simples @@ -649,42 +732,42 @@ QsciLexerBatch - + Default Par défaut - + Comment Commentaire - + Keyword Mot-clé - + Label Titre - + Hide command character Cacher le caratère de commande - + External command Commande externe - + Variable Variable - + Operator Opérateur @@ -692,77 +775,77 @@ QsciLexerCMake - + Default Par défaut - + Comment Commentaire - + String Chaîne de caractères - + Left quoted string - + Right quoted string - + Function Fonction - + Variable Variable - + Label Titre - + User defined Définition utilisateur - + WHILE block - + FOREACH block - + IF block - + MACRO block - + Variable within a string - + Number Nombre @@ -770,282 +853,282 @@ QsciLexerCPP - + Default Par défaut - + Inactive default - + C comment Commentaire C - + Inactive C comment - + C++ comment Commentaire C++ - + Inactive C++ comment - + JavaDoc style C comment Commentaire C de style JavaDoc - + Inactive JavaDoc style C comment - + Number Nombre - + Inactive number - + Keyword Mot-clé - + Inactive keyword - + Double-quoted string Chaine de caractères (guillemets doubles) - + Inactive double-quoted string - + Single-quoted string Chaine de caractères (guillemets simples) - + Inactive single-quoted string - + IDL UUID - + Inactive IDL UUID - + Pre-processor block Instructions de pré-processing - + Inactive pre-processor block - + Operator Opérateur - + Inactive operator - + Identifier Identificateur - + Inactive identifier - + Unclosed string Chaine de caractères non refermée - + Inactive unclosed string - + C# verbatim string - + Inactive C# verbatim string - + JavaScript regular expression Expression régulière JavaScript - + Inactive JavaScript regular expression - + JavaDoc style C++ comment Commentaire C++ de style JavaDoc - + Inactive JavaDoc style C++ comment - + Secondary keywords and identifiers Seconds mots-clés et identificateurs - + Inactive secondary keywords and identifiers - + JavaDoc keyword Mot-clé JavaDoc - + Inactive JavaDoc keyword - + JavaDoc keyword error Erreur de mot-clé JavaDoc - + Inactive JavaDoc keyword error - + Global classes and typedefs Classes globales et définitions de types - + Inactive global classes and typedefs - + C++ raw string - + Inactive C++ raw string - + Vala triple-quoted verbatim string - + Inactive Vala triple-quoted verbatim string - + Pike hash-quoted string - + Inactive Pike hash-quoted string - + Pre-processor C comment - + Inactive pre-processor C comment - + JavaDoc style pre-processor comment - + Inactive JavaDoc style pre-processor comment - + User-defined literal - + Inactive user-defined literal - + Task marker - + Inactive task marker - + Escape sequence Séquence d'échappement - + Inactive escape sequence @@ -1053,117 +1136,122 @@ QsciLexerCSS - + Default Par défaut - + Tag Balise - + Class selector Classe - + Pseudo-class Pseudo-classe - + Unknown pseudo-class Peudo-classe inconnue - + Operator Opérateur - + CSS1 property Propriété CSS1 - + Unknown property Propriété inconnue - + Value Valeur - + + Comment + Commentaire + + + ID selector ID - + Important Important - + @-rule règle-@ - + Double-quoted string Chaine de caractères (guillemets doubles) - + Single-quoted string Chaine de caractères (guillemets simples) - + CSS2 property Propriété CSS2 - + Attribute Attribut - + CSS3 property Propriété CSS3 - + Pseudo-element - + Extended CSS property - + Extended pseudo-class - + Extended pseudo-element - + Media rule - + Variable Variable @@ -1171,7 +1259,7 @@ QsciLexerCSharp - + Verbatim string Chaine verbatim @@ -1179,122 +1267,122 @@ QsciLexerCoffeeScript - + Default Par défaut - + C-style comment - + C++-style comment - + JavaDoc C-style comment - + Number Nombre - + Keyword Mot-clé - + Double-quoted string Chaine de caractères (guillemets doubles) - + Single-quoted string Chaine de caractères (guillemets simples) - + IDL UUID - + Pre-processor block Instructions de pré-processing - + Operator Opérateur - + Identifier Identificateur - + Unclosed string Chaine de caractères non refermée - + C# verbatim string - + Regular expression Expression régulière - + JavaDoc C++-style comment - + Secondary keywords and identifiers Seconds mots-clés et identificateurs - + JavaDoc keyword Mot-clé JavaDoc - + JavaDoc keyword error Erreur de mot-clé JavaDoc - + Global classes - + Block comment Block de commentaires - + Block regular expression - + Block regular expression comment - + Instance property @@ -1302,117 +1390,117 @@ QsciLexerD - + Default Par défaut - + Block comment Block de commentaires - + Line comment Commentaire de ligne - + DDoc style block comment - + Nesting comment - + Number Nombre - + Keyword Mot-clé - + Secondary keyword - + Documentation keyword - + Type definition - + String Chaîne de caractères - + Unclosed string Chaine de caractères non refermée - + Character Caractère - + Operator Opérateur - + Identifier Identificateur - + DDoc style line comment - + DDoc keyword Mot-clé DDoc - + DDoc keyword error Erreur de mot-clé DDoc - + Backquoted string - + Raw string - + User defined 1 Définition utilisateur 1 - + User defined 2 Définition utilisateur 2 - + User defined 3 Définition utilisateur 3 @@ -1420,62 +1508,62 @@ QsciLexerDiff - + Default Par défaut - + Comment Commentaire - + Command Commande - + Header En-tête - + Position Position - + Removed line Ligne supprimée - + Added line Ligne ajoutée - + Changed line Ligne changée - + Added adding patch - + Removed adding patch - + Added removing patch - + Removed removing patch @@ -1483,47 +1571,47 @@ QsciLexerEDIFACT - + Default Par défaut - + Segment start - + Segment end - + Element separator - + Composite separator - + Release separator - + UNA segment header - + UNH segment header - + Badly formed segment @@ -1531,77 +1619,77 @@ QsciLexerFortran77 - + Default Par défaut - + Comment Commentaire - + Number Nombre - + Single-quoted string Chaine de caractères (guillemets simples) - + Double-quoted string Chaine de caractères (guillemets doubles) - + Unclosed string Chaine de caractères non refermée - + Operator Opérateur - + Identifier Identificateur - + Keyword Mot-clé - + Intrinsic function Fonction intrinsèque - + Extended function Fonction étendue - + Pre-processor block Instructions de pré-processing - + Dotted operator - + Label Titre - + Continuation @@ -1609,555 +1697,643 @@ QsciLexerHTML - + HTML default HTML par défaut - + Tag Balise - + Unknown tag Balise inconnue - + Attribute Attribut - + Unknown attribute Attribut inconnu - + HTML number Nombre HTML - + HTML double-quoted string Chaine de caractères HTML (guillemets doubles) - + HTML single-quoted string Chaine de caractères HTML (guillemets simples) - + Other text in a tag Autre texte dans les balises - + HTML comment Commentaire HTML - + Entity Entité - + End of a tag Balise fermante - + Start of an XML fragment Début de block XML - + End of an XML fragment Fin de block XML - + Script tag Balise de script - + Start of an ASP fragment with @ Début de block ASP avec @ - + Start of an ASP fragment Début de block ASP - + CDATA CDATA - + Start of a PHP fragment Début de block PHP - + Unquoted HTML value Valeur HTML sans guillemets - + ASP X-Code comment Commentaire X-Code ASP - + SGML default SGML par défaut - + SGML command Commande SGML - + First parameter of an SGML command Premier paramètre de commande SGML - + SGML double-quoted string Chaine de caractères SGML (guillemets doubles) - + SGML single-quoted string Chaine de caractères SGML (guillemets simples) - + SGML error Erreur SGML - + SGML special entity Entité SGML spéciale - + SGML comment Commentaire SGML - + First parameter comment of an SGML command Premier paramètre de commentaire de commande SGML - + SGML block default Block SGML par défaut - + Start of a JavaScript fragment Début de block JavaScript - + JavaScript default JavaScript par défaut - + JavaScript comment Commentaire JavaScript - + JavaScript line comment Commentaire de ligne JavaScript - + JavaDoc style JavaScript comment Commentaire JavaScript de style JavaDoc - + JavaScript number Nombre JavaScript - + JavaScript word Mot JavaScript - + JavaScript keyword Mot-clé JavaScript - + JavaScript double-quoted string Chaine de caractères JavaScript (guillemets doubles) - + JavaScript single-quoted string Chaine de caractères JavaScript (guillemets simples) - + JavaScript symbol Symbole JavaScript - + JavaScript unclosed string Chaine de caractères JavaScript non refermée - + JavaScript regular expression Expression régulière JavaScript - + Start of an ASP JavaScript fragment Début de block JavaScript ASP - + ASP JavaScript default JavaScript ASP par défaut - + ASP JavaScript comment Commentaire JavaScript ASP - + ASP JavaScript line comment Commentaire de ligne JavaScript ASP - + JavaDoc style ASP JavaScript comment Commentaire JavaScript ASP de style JavaDoc - + ASP JavaScript number Nombre JavaScript ASP - + ASP JavaScript word Mot JavaScript ASP - + ASP JavaScript keyword Mot-clé JavaScript ASP - + ASP JavaScript double-quoted string Chaine de caractères JavaScript ASP (guillemets doubles) - + ASP JavaScript single-quoted string Chaine de caractères JavaScript ASP (guillemets simples) - + ASP JavaScript symbol Symbole JavaScript ASP - + ASP JavaScript unclosed string Chaine de caractères JavaScript ASP non refermée - + ASP JavaScript regular expression Expression régulière JavaScript ASP - + Start of a VBScript fragment Début de block VBScript - + VBScript default VBScript par défaut - + VBScript comment Commentaire VBScript - + VBScript number Nombre VBScript - + VBScript keyword Mot-clé VBScript - + VBScript string Chaine de caractères VBScript - + VBScript identifier Identificateur VBScript - + VBScript unclosed string Chaine de caractères VBScript non refermée - + Start of an ASP VBScript fragment Début de block VBScript ASP - + ASP VBScript default VBScript ASP par défaut - + ASP VBScript comment Commentaire VBScript ASP - + ASP VBScript number Nombre VBScript ASP - + ASP VBScript keyword Mot-clé VBScript ASP - + ASP VBScript string Chaine de caractères VBScript ASP - + ASP VBScript identifier Identificateur VBScript ASP - + ASP VBScript unclosed string Chaine de caractères VBScript ASP non refermée - + Start of a Python fragment Début de block Python - + Python default Python par défaut - + Python comment Commentaire Python - + Python number Nombre Python - + Python double-quoted string Chaine de caractères Python (guillemets doubles) - + Python single-quoted string Chaine de caractères Python (guillemets simples) - + Python keyword Mot-clé Python - + Python triple double-quoted string Chaine de caractères Python (triples guillemets doubles) - + Python triple single-quoted string Chaine de caractères Python (triples guillemets simples) - + Python class name Nom de classe Python - + Python function or method name Méthode ou fonction Python - + Python operator Opérateur Python - + Python identifier Identificateur Python - + Start of an ASP Python fragment Début de block Python ASP - + ASP Python default Python ASP par défaut - + ASP Python comment Commentaire Python ASP - + ASP Python number Nombre Python ASP - + ASP Python double-quoted string Chaine de caractères Python ASP (guillemets doubles) - + ASP Python single-quoted string Chaine de caractères Python ASP (guillemets simples) - + ASP Python keyword Mot-clé Python ASP - + ASP Python triple double-quoted string Chaine de caractères Python ASP (triples guillemets doubles) - + ASP Python triple single-quoted string Chaine de caractères Python ASP (triples guillemets simples) - + ASP Python class name Nom de classe Python ASP - + ASP Python function or method name Méthode ou fonction Python ASP - + ASP Python operator Opérateur Python ASP - + ASP Python identifier Identificateur Python ASP - + PHP default PHP par défaut - + PHP double-quoted string Chaine de caractères PHP (guillemets doubles) - + PHP single-quoted string Chaine de caractères PHP (guillemets simples) - + PHP keyword Mot-clé PHP - + PHP number Nombre PHP - + PHP variable Variable PHP - + PHP comment Commentaire PHP - + PHP line comment Commentaire de ligne PHP - + PHP double-quoted variable Variable PHP (guillemets doubles) - + PHP operator Opérateur PHP + + QsciLexerHex + + + Default + Par défaut + + + + Record start + + + + + Record type + + + + + Unknown record type + + + + + Byte count + + + + + Incorrect byte count + + + + + No address + + + + + Data address + + + + + Record count + + + + + Start address + + + + + Extended address + + + + + Odd data + + + + + Even data + + + + + Unknown data + + + + + Checksum + + + + + Incorrect checksum + + + + + Trailing garbage after a record + + + QsciLexerIDL - + UUID UUID @@ -2165,72 +2341,72 @@ QsciLexerJSON - + Default Par défaut - + Number Nombre - + String Chaîne de caractères - + Unclosed string Chaine de caractères non refermée - + Property Propriété - + Escape sequence Séquence d'échappement - + Line comment Commentaire de ligne - + Block comment Block de commentaires - + Operator Opérateur - + IRI - + JSON-LD compact IRI - + JSON keyword Mot-clé JSON - + JSON-LD keyword Mot-clé JSON-LD - + Parsing error Erreur d'analyse @@ -2238,7 +2414,7 @@ QsciLexerJavaScript - + Regular expression Expression régulière @@ -2246,102 +2422,102 @@ QsciLexerLua - + Default Par défaut - + Comment Commentaire - + Line comment Commentaire de ligne - + Number Nombre - + Keyword Mot-clé - + String Chaîne de caractères - + Character Caractère - + Literal string Chaîne littérale - + Preprocessor Préprocessing - + Operator Opérateur - + Identifier Identificateur - + Unclosed string Chaine de caractères non refermée - + Basic functions Fonctions de base - + String, table and maths functions Fonctions sur les chaines, tables et fonctions math - + Coroutines, i/o and system facilities Coroutines, i/o et fonctions système - + User defined 1 Définition utilisateur 1 - + User defined 2 Définition utilisateur 2 - + User defined 3 Définition utilisateur 3 - + User defined 4 Définition utilisateur 4 - + Label Titre @@ -2349,37 +2525,37 @@ QsciLexerMakefile - + Default Par défaut - + Comment Commentaire - + Preprocessor Préprocessing - + Variable Variable - + Operator Opérateur - + Target Cible - + Error Erreur @@ -2387,112 +2563,112 @@ QsciLexerMarkdown - + Default Par défaut - + Special Spécial - + Strong emphasis using double asterisks - + Strong emphasis using double underscores - + Emphasis using single asterisks - + Emphasis using single underscores - + Level 1 header - + Level 2 header - + Level 3 header - + Level 4 header - + Level 5 header - + Level 6 header - + Pre-char - + Unordered list item - + Ordered list item - + Block quote - + Strike out - + Horizontal rule - + Link - + Code between backticks - + Code between double backticks - + Code block @@ -2500,47 +2676,47 @@ QsciLexerMatlab - + Default Par défaut - + Comment Commentaire - + Command Commande - + Number Nombre - + Keyword Mot-clé - + Single-quoted string Chaine de caractères (guillemets simples) - + Operator Opérateur - + Identifier Identificateur - + Double-quoted string Chaine de caractères (guillemets doubles) @@ -2548,77 +2724,77 @@ QsciLexerPO - + Default Par défaut - + Comment Commentaire - + Message identifier - + Message identifier text - + Message string - + Message string text - + Message context - + Message context text - + Fuzzy flag - + Programmer comment - + Reference Référence - + Flags - + Message identifier text end-of-line - + Message string text end-of-line - + Message context text end-of-line @@ -2626,87 +2802,87 @@ QsciLexerPOV - + Default Par défaut - + Comment Commentaire - + Comment line Ligne commentée - + Number Nombre - + Operator Opérateur - + Identifier Identificateur - + String Chaîne de caractères - + Unclosed string Chaine de caractères non refermée - + Directive Directive - + Bad directive Mauvaise directive - + Objects, CSG and appearance Objets, CSG et apparence - + Types, modifiers and items Types, modifieurs et éléments - + Predefined identifiers Identifiants prédéfinis - + Predefined functions Fonctions prédéfinies - + User defined 1 Définition utilisateur 1 - + User defined 2 Définition utilisateur 2 - + User defined 3 Définition utilisateur 3 @@ -2714,77 +2890,77 @@ QsciLexerPascal - + Default Par défaut - + Line comment Commentaire de ligne - + Number Nombre - + Keyword Mot-clé - + Single-quoted string Chaine de caractères (guillemets simples) - + Operator Opérateur - + Identifier Identificateur - + '{ ... }' style comment - + '(* ... *)' style comment - + '{$ ... }' style pre-processor block - + '(*$ ... *)' style pre-processor block - + Hexadecimal number Nombre hexadécimal - + Unclosed string Chaine de caractères non refermée - + Character Caractère - + Inline asm Asm en ligne @@ -2792,207 +2968,207 @@ QsciLexerPerl - + Default Par défaut - + Error Erreur - + Comment Commentaire - + POD POD - + Number Nombre - + Keyword Mot-clé - + Double-quoted string Chaine de caractères (guillemets doubles) - + Single-quoted string Chaine de caractères (guillemets simples) - + Operator Opérateur - + Identifier Identificateur - + Scalar Scalaire - + Array Tableau - + Hash Hashage - + Symbol table Table de symboles - + Regular expression Expression régulière - + Substitution Substitution - + Backticks Quotes inverses - + Data section Section de données - + Here document delimiter Ici délimiteur de document - + Single-quoted here document Document intégré guillemets simples - + Double-quoted here document Document intégré guillemets doubles - + Backtick here document Document intégré quotes inverses - + Quoted string (q) Chaine quotée (q) - + Quoted string (qq) Chaine quotée (qq) - + Quoted string (qx) Chaine quotée (qx) - + Quoted string (qr) Chaine quotée (qr) - + Quoted string (qw) Chaine quotée (qw) - + POD verbatim POD verbatim - + Subroutine prototype - + Format identifier - + Format body - + Double-quoted string (interpolated variable) - + Translation Traduction - + Regular expression (interpolated variable) - + Substitution (interpolated variable) - + Backticks (interpolated variable) - + Double-quoted here document (interpolated variable) - + Backtick here document (interpolated variable) - + Quoted string (qq, interpolated variable) - + Quoted string (qx, interpolated variable) - + Quoted string (qr, interpolated variable) @@ -3000,82 +3176,82 @@ QsciLexerPostScript - + Default Par défaut - + Comment Commentaire - + DSC comment Commentaire DSC - + DSC comment value - + Number Nombre - + Name Nom - + Keyword Mot-clé - + Literal - + Immediately evaluated literal - + Array parenthesis - + Dictionary parenthesis - + Procedure parenthesis - + Text Texte - + Hexadecimal string - + Base85 string - + Bad string character @@ -3083,32 +3259,32 @@ QsciLexerProperties - + Default Par défaut - + Comment Commentaire - + Section Section - + Assignment Affectation - + Default value Valeur par défaut - + Key Clé @@ -3116,102 +3292,102 @@ QsciLexerPython - + Default Par défaut - + Comment Commentaire - + Number Nombre - + Double-quoted string Chaine de caractères (guillemets doubles) - + Single-quoted string Chaine de caractères (guillemets simples) - + Keyword Mot-clé - + Triple single-quoted string Chaine de caractères HTML (guillemets simples) - + Triple double-quoted string Chaine de caractères HTML (guillemets simples) - + Class name Nom de classe - + Function or method name Nom de méthode ou de fonction - + Operator Opérateur - + Identifier Identificateur - + Comment block Block de commentaires - + Unclosed string Chaine de caractères non refermée - + Highlighted identifier - + Decorator - + Double-quoted f-string - + Single-quoted f-string - + Triple single-quoted f-string - + Triple double-quoted f-string @@ -3219,157 +3395,157 @@ QsciLexerRuby - + Default Par défaut - + Comment Commentaire - + Number Nombre - + Double-quoted string Chaine de caractères (guillemets doubles) - + Single-quoted string Chaine de caractères (guillemets simples) - + Keyword Mot-clé - + Class name Nom de classe - + Function or method name Nom de méthode ou de fonction - + Operator Opérateur - + Identifier Identificateur - + Error Erreur - + POD POD - + Regular expression Expression régulière - + Global Global - + Symbol Symbole - + Module name Nom de module - + Instance variable - + Class variable - + Backticks Quotes inverses - + Data section Section de données - + Here document delimiter Ici délimiteur de document - + Here document Ici document - + %q string - + %Q string - + %x string - + %r string - + %w string - + Demoted keyword - + stdin - + stdout - + stderr @@ -3377,112 +3553,112 @@ QsciLexerSQL - + Default Par défaut - + Comment Commentaire - + Number Nombre - + Keyword Mot-clé - + Single-quoted string Chaine de caractères (guillemets simples) - + Operator Opérateur - + Identifier Identificateur - + Comment line Ligne commentée - + JavaDoc style comment Commentaire style JavaDoc - + Double-quoted string Chaine de caractères (guillemets doubles) - + SQL*Plus keyword Mot-clé SQL*Plus - + SQL*Plus prompt Prompt SQL*Plus - + SQL*Plus comment Commentaire SQL*Plus - + # comment line # Ligne commentée - + JavaDoc keyword Mot-clé JavaDoc - + JavaDoc keyword error Erreur de mot-clé JavaDoc - + User defined 1 Définition utilisateur 1 - + User defined 2 Définition utilisateur 2 - + User defined 3 Définition utilisateur 3 - + User defined 4 Définition utilisateur 4 - + Quoted identifier - + Quoted operator @@ -3490,47 +3666,47 @@ QsciLexerSpice - + Default Par défaut - + Identifier Identificateur - + Command Commande - + Function Fonction - + Parameter Paramètre - + Number Nombre - + Delimiter Délimiteur - + Value Valeur - + Comment Commentaire @@ -3538,112 +3714,112 @@ QsciLexerTCL - + Default Par défaut - + Comment Commentaire - + Comment line Ligne commentée - + Number Nombre - + Quoted keyword - + Quoted string - + Operator Opérateur - + Identifier Identificateur - + Substitution Substitution - + Brace substitution - + Modifier - + Expand keyword - + TCL keyword - + Tk keyword - + iTCL keyword - + Tk command - + User defined 1 Définition utilisateur 1 - + User defined 2 Définition utilisateur 2 - + User defined 3 Définition utilisateur 3 - + User defined 4 Définition utilisateur 4 - + Comment box - + Comment block Block de commentaires @@ -3651,32 +3827,32 @@ QsciLexerTeX - + Default Par défaut - + Special Spécial - + Group Groupe - + Symbol Symbole - + Command Commande - + Text Texte @@ -3684,82 +3860,82 @@ QsciLexerVHDL - + Default Par défaut - + Comment Commentaire - + Comment line Ligne commentée - + Number Nombre - + String Chaîne de caractères - + Operator Opérateur - + Identifier Identificateur - + Unclosed string Chaine de caractères non refermée - + Keyword Mot-clé - + Standard operator - + Attribute Attribut - + Standard function - + Standard package - + Standard type - + User defined Définition utilisateur - + Comment block Block de commentaires @@ -3767,192 +3943,192 @@ QsciLexerVerilog - + Default Par défaut - + Inactive default - + Comment Commentaire - + Inactive comment - + Line comment Commentaire de ligne - + Inactive line comment - + Bang comment - + Inactive bang comment - + Number Nombre - + Inactive number - + Primary keywords and identifiers - + Inactive primary keywords and identifiers - + String Chaîne de caractères - + Inactive string - + Secondary keywords and identifiers Seconds mots-clés et identificateurs - + Inactive secondary keywords and identifiers - + System task - + Inactive system task - + Preprocessor block - + Inactive preprocessor block - + Operator Opérateur - + Inactive operator - + Identifier Identificateur - + Inactive identifier - + Unclosed string Chaine de caractères non refermée - + Inactive unclosed string - + User defined tasks and identifiers - + Inactive user defined tasks and identifiers - + Keyword comment - + Inactive keyword comment - + Input port declaration - + Inactive input port declaration - + Output port declaration - + Inactive output port declaration - + Input/output port declaration - + Inactive input/output port declaration - + Port connection - + Inactive port connection @@ -3960,52 +4136,52 @@ QsciLexerYAML - + Default Par défaut - + Comment Commentaire - + Identifier Identificateur - + Keyword Mot-clé - + Number Nombre - + Reference Référence - + Document delimiter Délimiteur de document - + Text block marker - + Syntax error marker - + Operator Opérateur @@ -4013,37 +4189,37 @@ QsciScintilla - + &Undo - + &Redo - + Cu&t - + &Copy - + &Paste - + Delete - + Select All diff --git a/libs/qscintilla/Qt4Qt5/qscintilla_pt_br.qm b/libs/qscintilla_2.14.1/Qt5Qt6/qscintilla_pt_br.qm similarity index 100% rename from libs/qscintilla/Qt4Qt5/qscintilla_pt_br.qm rename to libs/qscintilla_2.14.1/Qt5Qt6/qscintilla_pt_br.qm diff --git a/libs/qscintilla/Qt4Qt5/qscintilla_pt_br.ts b/libs/qscintilla_2.14.1/Qt5Qt6/qscintilla_pt_br.ts similarity index 85% rename from libs/qscintilla/Qt4Qt5/qscintilla_pt_br.ts rename to libs/qscintilla_2.14.1/Qt5Qt6/qscintilla_pt_br.ts index 35a8df40b..a649350be 100644 --- a/libs/qscintilla/Qt4Qt5/qscintilla_pt_br.ts +++ b/libs/qscintilla_2.14.1/Qt5Qt6/qscintilla_pt_br.ts @@ -1,496 +1,496 @@ - + QsciCommand - + Move down one line Mover uma linha para baixo - + Extend selection down one line Extender a seleção uma linha para baixo - + Scroll view down one line Descer a visão uma linha para baixo - + Extend rectangular selection down one line Extender a seleção retangular uma linha para baixo - + Move up one line Mover uma linha para cima - + Extend selection up one line Extender a seleção uma linha para cima - + Scroll view up one line Subir a visão uma linha para cima - + Extend rectangular selection up one line Extender a seleção retangular uma linha para cima - + Move up one paragraph Mover um paragrafo para cima - + Extend selection up one paragraph Extender a seleção um paragrafo para cima - + Move down one paragraph Mover um paragrafo para baixo - + Scroll to start of document - + Scroll to end of document - + Scroll vertically to centre current line - + Extend selection down one paragraph Extender a seleção um paragrafo para baixo - + Move left one character Mover um caractere para a esquerda - + Extend selection left one character Extender a seleção um caractere para esquerda - + Move left one word Mover uma palavra para esquerda - + Extend selection left one word Extender a seleção uma palavra para esquerda - + Extend rectangular selection left one character Extender a seleção retangular um caractere para esquerda - + Move right one character Mover um caractere para direita - + Extend selection right one character Extender a seleção um caractere para direita - + Move right one word Mover uma palavra para direita - + Extend selection right one word Extender a seleção uma palavra para direita - + Extend rectangular selection right one character Extender a seleção retangular um caractere para direita - + Move to end of previous word - + Extend selection to end of previous word - + Move to end of next word - + Extend selection to end of next word - + Move left one word part Mover uma parte da palavra para esquerda - + Extend selection left one word part Extender a seleção uma parte de palavra para esquerda - + Move right one word part Mover uma parte da palavra para direita - + Extend selection right one word part Extender a seleção uma parte de palavra para direita - + Move up one page Mover uma página para cima - + Extend selection up one page Extender a seleção uma página para cima - + Extend rectangular selection up one page Extender a seleção retangular uma página para cima - + Move down one page Mover uma página para baixo - + Extend selection down one page Extender a seleção uma página para baixo - + Extend rectangular selection down one page Extender a seleção retangular uma página para baixo - + Delete current character Excluir caractere atual - + Cut selection Recortar seleção - + Delete word to right Excluir palavra para direita - + Move to start of document line - + Extend selection to start of document line - + Extend rectangular selection to start of document line - + Move to start of display line - + Extend selection to start of display line - + Move to start of display or document line - + Extend selection to start of display or document line - + Move to first visible character in document line - + Extend selection to first visible character in document line - + Extend rectangular selection to first visible character in document line - + Move to first visible character of display in document line - + Extend selection to first visible character in display or document line - + Move to end of document line - + Extend selection to end of document line - + Extend rectangular selection to end of document line - + Move to end of display line - + Extend selection to end of display line - + Move to end of display or document line - + Extend selection to end of display or document line - + Move to start of document - + Extend selection to start of document - + Move to end of document - + Extend selection to end of document - + Stuttered move up one page - + Stuttered extend selection up one page - + Stuttered move down one page - + Stuttered extend selection down one page - + Delete previous character if not at start of line - + Delete right to end of next word - + Delete line to right Excluir linha para direita - + Transpose current and previous lines - + Duplicate the current line - + Select all Select document - + Move selected lines up one line - + Move selected lines down one line - + Toggle insert/overtype Alternar entre modo de inserir/sobreescrever - + Paste Copiar - + Copy selection Copiar seleção - + Insert newline - + De-indent one level - + Cancel Cancelar - + Delete previous character Excluir caractere anterior - + Delete word to left Excluir palavra a esquerda - + Delete line to left Excluir linha a esquerda - + Undo last command - + Redo last command Refazer último comando - + Indent one level Indentar um nível - + Zoom in Aumentar zoom - + Zoom out Diminuir zoom - + Formfeed Alimentação da Página - + Cut current line Configurar linha atual - + Delete current line Excluir linha atual - + Copy current line Copiar linha atual - + Convert selection to lower case Converter a seleção para minúscula - + Convert selection to upper case Converter a seleção para maiúscula - + Duplicate selection @@ -498,150 +498,233 @@ QsciLexerAVS - + Default Padrão - + Block comment - + Nested block comment - + Line comment Comentar Linha - + Number Número - + Operator Operador - + Identifier Identificador - + Double-quoted string Cadeia de caracteres envolvida por aspas duplas - + Triple double-quoted string Cadeia de caracteres envolvida por três aspas duplas - + Keyword Palavra Chave - + Filter - + Plugin - + Function - + Clip property - + User defined + + QsciLexerAsm + + + Default + Padrão + + + + Comment + Comentário + + + + Number + Número + + + + Double-quoted string + Cadeia de caracteres envolvida por aspas duplas + + + + Operator + Operador + + + + Identifier + Identificador + + + + CPU instruction + + + + + FPU instruction + + + + + Register + + + + + Directive + Diretiva + + + + Directive operand + + + + + Block comment + + + + + Single-quoted string + Cadeia de caracteres envolvida por aspas simples + + + + Unclosed string + Cadeia de caracteres não fechada + + + + Extended instruction + + + + + Comment directive + + + QsciLexerBash - + Default Padrão - + Error Número - + Comment Comentário - + Number Número - + Keyword Palavra Chave - + Double-quoted string Cadeia de caracteres envolvida por aspas duplas - + Single-quoted string Cadeia de caracteres envolvida por aspas simples - + Operator Operador - + Identifier Identificador - + Scalar Escalar - + Parameter expansion Parâmetro de Expansão - + Backticks Aspas Invertidas - + Here document delimiter Delimitador de "here documents" - + Single-quoted here document "here document" envolvido por aspas simples @@ -649,42 +732,42 @@ QsciLexerBatch - + Default Padrão - + Comment Comentário - + Keyword Palavra Chave - + Label Rótulo - + Hide command character Esconder caractere de comando - + External command Comando externo - + Variable Variável - + Operator Operador @@ -692,77 +775,77 @@ QsciLexerCMake - + Default Padrão - + Comment Comentário - + String Cadeia de Caracteres - + Left quoted string - + Right quoted string - + Function - + Variable Variável - + Label Rótulo - + User defined - + WHILE block - + FOREACH block - + IF block - + MACRO block - + Variable within a string - + Number Número @@ -770,282 +853,282 @@ QsciLexerCPP - + Default Padrão - + Inactive default - + C comment Comentário C - + Inactive C comment - + C++ comment Comentário C++ - + Inactive C++ comment - + JavaDoc style C comment Comentário JavaDoc estilo C - + Inactive JavaDoc style C comment - + Number Número - + Inactive number - + Keyword Palavra Chave - + Inactive keyword - + Double-quoted string Cadeia de caracteres envolvida por aspas duplas - + Inactive double-quoted string - + Single-quoted string Cadeia de caracteres envolvida por aspas simples - + Inactive single-quoted string - + IDL UUID - + Inactive IDL UUID - + Pre-processor block Instruções de pré-processamento - + Inactive pre-processor block - + Operator Operador - + Inactive operator - + Identifier Identificador - + Inactive identifier - + Unclosed string Cadeia de caracteres não fechada - + Inactive unclosed string - + C# verbatim string - + Inactive C# verbatim string - + JavaScript regular expression Expressão regular JavaScript - + Inactive JavaScript regular expression - + JavaDoc style C++ comment Comentário JavaDoc estilo C++ - + Inactive JavaDoc style C++ comment - + Secondary keywords and identifiers Identificadores e palavras chave secundárias - + Inactive secondary keywords and identifiers - + JavaDoc keyword Palavra chave JavaDoc - + Inactive JavaDoc keyword - + JavaDoc keyword error Erro de palavra chave do JavaDoc - + Inactive JavaDoc keyword error - + Global classes and typedefs Classes e definições de tipo globais - + Inactive global classes and typedefs - + C++ raw string - + Inactive C++ raw string - + Vala triple-quoted verbatim string - + Inactive Vala triple-quoted verbatim string - + Pike hash-quoted string - + Inactive Pike hash-quoted string - + Pre-processor C comment - + Inactive pre-processor C comment - + JavaDoc style pre-processor comment - + Inactive JavaDoc style pre-processor comment - + User-defined literal - + Inactive user-defined literal - + Task marker - + Inactive task marker - + Escape sequence - + Inactive escape sequence @@ -1053,117 +1136,122 @@ QsciLexerCSS - + Default Padrão - + Tag Marcador - + Class selector Seletor de classe - + Pseudo-class Pseudo-classe - + Unknown pseudo-class Pseudo-classe desconhecida - + Operator Operador - + CSS1 property Propriedade CSS1 - + Unknown property Propriedade desconhecida - + Value Valor - + + Comment + Comentário + + + ID selector Seletor de ID - + Important Importante - + @-rule regra-@ - + Double-quoted string Cadeia de caracteres envolvida por aspas duplas - + Single-quoted string Cadeia de caracteres envolvida por aspas simples - + CSS2 property Propriedade CSS2 - + Attribute Atributo - + CSS3 property Propriedade CSS2 {3 ?} - + Pseudo-element - + Extended CSS property - + Extended pseudo-class - + Extended pseudo-element - + Media rule - + Variable Variável @@ -1171,7 +1259,7 @@ QsciLexerCSharp - + Verbatim string Cadeia de caracteres no formato verbatim @@ -1179,122 +1267,122 @@ QsciLexerCoffeeScript - + Default Padrão - + C-style comment - + C++-style comment - + JavaDoc C-style comment - + Number Número - + Keyword Palavra Chave - + Double-quoted string Cadeia de caracteres envolvida por aspas duplas - + Single-quoted string Cadeia de caracteres envolvida por aspas simples - + IDL UUID - + Pre-processor block Instruções de pré-processamento - + Operator Operador - + Identifier Identificador - + Unclosed string Cadeia de caracteres não fechada - + C# verbatim string - + Regular expression Expressão Regular - + JavaDoc C++-style comment - + Secondary keywords and identifiers Identificadores e palavras chave secundárias - + JavaDoc keyword Palavra chave JavaDoc - + JavaDoc keyword error Erro de palavra chave do JavaDoc - + Global classes - + Block comment - + Block regular expression - + Block regular expression comment - + Instance property @@ -1302,117 +1390,117 @@ QsciLexerD - + Default Padrão - + Block comment - + Line comment Comentar Linha - + DDoc style block comment - + Nesting comment - + Number Número - + Keyword Palavra Chave - + Secondary keyword - + Documentation keyword - + Type definition - + String Cadeia de Caracteres - + Unclosed string Cadeia de caracteres não fechada - + Character Caractere - + Operator Operador - + Identifier Identificador - + DDoc style line comment - + DDoc keyword Palavra chave JavaDoc - + DDoc keyword error Erro de palavra chave do JavaDoc - + Backquoted string - + Raw string - + User defined 1 Definição de usuário 1 - + User defined 2 Definição de usuário 2 - + User defined 3 Definição de usuário 3 @@ -1420,62 +1508,62 @@ QsciLexerDiff - + Default Padrão - + Comment Comentário - + Command Comando - + Header Cabeçalho - + Position Posição - + Removed line Linha Removida - + Added line Linha Adicionada - + Changed line - + Added adding patch - + Removed adding patch - + Added removing patch - + Removed removing patch @@ -1483,47 +1571,47 @@ QsciLexerEDIFACT - + Default Padrão - + Segment start - + Segment end - + Element separator - + Composite separator - + Release separator - + UNA segment header - + UNH segment header - + Badly formed segment @@ -1531,77 +1619,77 @@ QsciLexerFortran77 - + Default Padrão - + Comment Comentário - + Number Número - + Single-quoted string Cadeia de caracteres envolvida por aspas simples - + Double-quoted string Cadeia de caracteres envolvida por aspas duplas - + Unclosed string Cadeia de caracteres não fechada - + Operator Operador - + Identifier Identificador - + Keyword Palavra Chave - + Intrinsic function - + Extended function - + Pre-processor block Instruções de pré-processamento - + Dotted operator - + Label Rótulo - + Continuation @@ -1609,555 +1697,643 @@ QsciLexerHTML - + HTML default HTML por padrão - + Tag Marcador - + Unknown tag Marcador desconhecido - + Attribute Atributo - + Unknown attribute Atributo desconhecido - + HTML number Número HTML - + HTML double-quoted string Cadeia de caracteres HTML envolvida por aspas duplas - + HTML single-quoted string Cadeia de caracteres HTML envolvida por aspas simples - + Other text in a tag Outro texto em um marcador - + HTML comment Comentário HTML - + Entity Entidade - + End of a tag Final de um marcador - + Start of an XML fragment Início de um bloco XML - + End of an XML fragment Final de um bloco XML - + Script tag Marcador de script - + Start of an ASP fragment with @ Início de um bloco ASP com @ - + Start of an ASP fragment Início de um bloco ASP - + CDATA CDATA - + Start of a PHP fragment Início de um bloco PHP - + Unquoted HTML value Valor HTML não envolvido por aspas - + ASP X-Code comment Comentário ASP X-Code - + SGML default SGML por padrão - + SGML command Comando SGML - + First parameter of an SGML command Primeiro parâmetro em um comando SGML - + SGML double-quoted string Cadeia de caracteres SGML envolvida por aspas duplas - + SGML single-quoted string Cadeia de caracteres SGML envolvida por aspas simples - + SGML error Erro SGML - + SGML special entity Entidade especial SGML - + SGML comment Comando SGML - + First parameter comment of an SGML command Primeiro comentário de parâmetro de uma comando SGML - + SGML block default Bloco SGML por padrão - + Start of a JavaScript fragment Início de um bloco Javascript - + JavaScript default JavaScript por padrão - + JavaScript comment Comentário JavaScript - + JavaScript line comment Comentário de linha JavaScript - + JavaDoc style JavaScript comment Comentário JavaScript no estilo JavaDoc - + JavaScript number Número JavaScript - + JavaScript word Palavra JavaScript - + JavaScript keyword Palavra chave JavaScript - + JavaScript double-quoted string Cadeia de caracteres JavaScript envolvida por aspas duplas - + JavaScript single-quoted string Cadeia de caracteres JavaScript envolvida por aspas simples - + JavaScript symbol Símbolo JavaScript - + JavaScript unclosed string Cadeia de caracteres JavaScript não fechada - + JavaScript regular expression Expressão regular JavaScript - + Start of an ASP JavaScript fragment Início de um bloco Javascript ASP - + ASP JavaScript default JavaScript ASP por padrão - + ASP JavaScript comment Comentário JavaScript ASP - + ASP JavaScript line comment Comentário de linha JavaScript ASP - + JavaDoc style ASP JavaScript comment Comentário JavaScript ASP no estilo JavaDoc - + ASP JavaScript number Número JavaScript ASP - + ASP JavaScript word Palavra chave JavaScript ASP - + ASP JavaScript keyword Palavra chave JavaScript ASP - + ASP JavaScript double-quoted string Cadeia de caracteres JavaScript ASP envolvida por aspas duplas - + ASP JavaScript single-quoted string Cadeia de caracteres JavaScript ASP envolvida por aspas simples - + ASP JavaScript symbol Símbolo JavaScript ASP - + ASP JavaScript unclosed string Cadeia de caracteres JavaScript ASP não fechada - + ASP JavaScript regular expression Expressão regular JavaScript ASP - + Start of a VBScript fragment Início de um bloco VBScript - + VBScript default VBScript por padrão - + VBScript comment Comentário VBScript - + VBScript number Número VBScript - + VBScript keyword Palavra chave VBScript - + VBScript string Cadeia de caracteres VBScript - + VBScript identifier Identificador VBScript - + VBScript unclosed string Cadeia de caracteres VBScript não fechada - + Start of an ASP VBScript fragment Início de um bloco VBScript ASP - + ASP VBScript default VBScript ASP por padrão - + ASP VBScript comment Comentário VBScript ASP - + ASP VBScript number Número VBScript ASP - + ASP VBScript keyword Palavra chave VBScript ASP - + ASP VBScript string Cadeia de caracteres VBScript ASP - + ASP VBScript identifier Identificador VBScript ASP - + ASP VBScript unclosed string Cadeia de caracteres VBScript ASP não fechada - + Start of a Python fragment Início de um bloco Python - + Python default Python por padrão - + Python comment Comentário Python - + Python number Número Python - + Python double-quoted string Cadeia de caracteres Python envolvida por aspas duplas - + Python single-quoted string Cadeia de caracteres Python envolvida por aspas simples - + Python keyword Palavra chave Python - + Python triple double-quoted string Cadeia de caracteres Python envolvida por aspas triplas duplas - + Python triple single-quoted string Cadeia de caracteres Python envolvida por aspas triplas simples - + Python class name Nome de classe Python - + Python function or method name Nome de método ou função Python - + Python operator Operador Python - + Python identifier Identificador Python - + Start of an ASP Python fragment Início de um bloco Python ASP - + ASP Python default Python ASP por padrão - + ASP Python comment Comentário Python ASP - + ASP Python number Número Python ASP - + ASP Python double-quoted string Cadeia de caracteres Python ASP envolvida por aspas duplas - + ASP Python single-quoted string Cadeia de caracteres Python ASP envolvida por aspas simples - + ASP Python keyword Palavra chave Python ASP - + ASP Python triple double-quoted string Cadeia de caracteres Python ASP envolvida por aspas triplas duplas - + ASP Python triple single-quoted string Cadeia de caracteres Python ASP envolvida por aspas triplas simples - + ASP Python class name Nome de classe Python ASP - + ASP Python function or method name Nome de método ou função Python ASP - + ASP Python operator Operador Python ASP - + ASP Python identifier Identificador Python ASP - + PHP default PHP por padrão - + PHP double-quoted string Cadeia de caracteres PHP envolvida por aspas duplas - + PHP single-quoted string Cadeia de caracteres PHP envolvida por aspas simples - + PHP keyword Palavra chave PHP - + PHP number Número PHP - + PHP variable Variável PHP - + PHP comment Comentário PHP - + PHP line comment Comentário de linha PHP - + PHP double-quoted variable Variável PHP envolvida por aspas duplas - + PHP operator Operador PHP + + QsciLexerHex + + + Default + Padrão + + + + Record start + + + + + Record type + + + + + Unknown record type + + + + + Byte count + + + + + Incorrect byte count + + + + + No address + + + + + Data address + + + + + Record count + + + + + Start address + + + + + Extended address + + + + + Odd data + + + + + Even data + + + + + Unknown data + + + + + Checksum + + + + + Incorrect checksum + + + + + Trailing garbage after a record + + + QsciLexerIDL - + UUID UUID @@ -2165,72 +2341,72 @@ QsciLexerJSON - + Default Padrão - + Number Número - + String Cadeia de Caracteres - + Unclosed string Cadeia de caracteres não fechada - + Property - + Escape sequence - + Line comment Comentar Linha - + Block comment - + Operator Operador - + IRI - + JSON-LD compact IRI - + JSON keyword - + JSON-LD keyword - + Parsing error @@ -2238,7 +2414,7 @@ QsciLexerJavaScript - + Regular expression Expressão Regular @@ -2246,102 +2422,102 @@ QsciLexerLua - + Default Padrão - + Comment Comentário - + Line comment Comentar Linha - + Number Número - + Keyword Palavra Chave - + String Cadeia de Caracteres - + Character Caractere - + Literal string Cadeia de caracteres literal - + Preprocessor Preprocessador - + Operator Operador - + Identifier Identificador - + Unclosed string Cadeia de caracteres não fechada - + Basic functions Funções básicas - + String, table and maths functions Funções de cadeia de caracteres e de tabelas matemáticas - + Coroutines, i/o and system facilities Funções auxiiares, e/s e funções de sistema - + User defined 1 Definição de usuário 1 - + User defined 2 Definição de usuário 2 - + User defined 3 Definição de usuário 3 - + User defined 4 Definição de usuário 4 - + Label Rótulo @@ -2349,37 +2525,37 @@ QsciLexerMakefile - + Default Padrão - + Comment Comentário - + Preprocessor Preprocessador - + Variable Variável - + Operator Operador - + Target Destino - + Error Erro @@ -2387,112 +2563,112 @@ QsciLexerMarkdown - + Default Padrão - + Special Especial - + Strong emphasis using double asterisks - + Strong emphasis using double underscores - + Emphasis using single asterisks - + Emphasis using single underscores - + Level 1 header - + Level 2 header - + Level 3 header - + Level 4 header - + Level 5 header - + Level 6 header - + Pre-char - + Unordered list item - + Ordered list item - + Block quote - + Strike out - + Horizontal rule - + Link - + Code between backticks - + Code between double backticks - + Code block @@ -2500,47 +2676,47 @@ QsciLexerMatlab - + Default Padrão - + Comment Comentário - + Command Comando - + Number Número - + Keyword Palavra Chave - + Single-quoted string Cadeia de caracteres envolvida por aspas simples - + Operator Operador - + Identifier Identificador - + Double-quoted string Cadeia de caracteres envolvida por aspas duplas @@ -2548,77 +2724,77 @@ QsciLexerPO - + Default Padrão - + Comment Comentário - + Message identifier - + Message identifier text - + Message string - + Message string text - + Message context - + Message context text - + Fuzzy flag - + Programmer comment - + Reference - + Flags - + Message identifier text end-of-line - + Message string text end-of-line - + Message context text end-of-line @@ -2626,87 +2802,87 @@ QsciLexerPOV - + Default Padrão - + Comment Comentário - + Comment line Comentar Linha - + Number Número - + Operator Operador - + Identifier Identificador - + String Cadeia de Caracteres - + Unclosed string Cadeia de caracteres não fechada - + Directive Diretiva - + Bad directive Diretiva ruim - + Objects, CSG and appearance Objetos, CSG e aparência - + Types, modifiers and items Tipos, modificadores e itens - + Predefined identifiers Identificadores predefinidos - + Predefined functions Funções predefinidas - + User defined 1 Definição de usuário 1 - + User defined 2 Definição de usuário 2 - + User defined 3 Definição de usuário 3 @@ -2714,77 +2890,77 @@ QsciLexerPascal - + Default Padrão - + Line comment Comentar Linha - + Number Número - + Keyword Palavra Chave - + Single-quoted string Cadeia de caracteres envolvida por aspas simples - + Operator Operador - + Identifier Identificador - + '{ ... }' style comment - + '(* ... *)' style comment - + '{$ ... }' style pre-processor block - + '(*$ ... *)' style pre-processor block - + Hexadecimal number - + Unclosed string Cadeia de caracteres não fechada - + Character Caractere - + Inline asm @@ -2792,207 +2968,207 @@ QsciLexerPerl - + Default Padrão - + Error Erro - + Comment Comentário - + POD POD - + Number Número - + Keyword Palavra Chave - + Double-quoted string Cadeia de caracteres envolvida por aspas duplas - + Single-quoted string Cadeia de caracteres envolvida por aspas simples - + Operator Operador - + Identifier Identificador - + Scalar Escalar - + Array Vetor - + Hash Hash - + Symbol table Tabela de Símbolos - + Regular expression Expressão Regular - + Substitution Substituição - + Backticks Aspas Invertidas - + Data section Seção de dados - + Here document delimiter Delimitador de documentos criados através de redicionadores (>> e >) - + Single-quoted here document "here document" envolvido por aspas simples - + Double-quoted here document "here document" envolvido por aspas duplas - + Backtick here document "here document" envolvido por aspas invertidas - + Quoted string (q) Cadeia de caracteres envolvida por aspas (q) - + Quoted string (qq) Cadeia de caracteres envolvida por aspas (qq) - + Quoted string (qx) Cadeia de caracteres envolvida por aspas (qx) - + Quoted string (qr) Cadeia de caracteres envolvida por aspas (qr) - + Quoted string (qw) Cadeia de caracteres envolvida por aspas (qw) - + POD verbatim POD em formato verbatim - + Subroutine prototype - + Format identifier - + Format body - + Double-quoted string (interpolated variable) - + Translation - + Regular expression (interpolated variable) - + Substitution (interpolated variable) - + Backticks (interpolated variable) - + Double-quoted here document (interpolated variable) - + Backtick here document (interpolated variable) - + Quoted string (qq, interpolated variable) - + Quoted string (qx, interpolated variable) - + Quoted string (qr, interpolated variable) @@ -3000,82 +3176,82 @@ QsciLexerPostScript - + Default Padrão - + Comment Comentário - + DSC comment - + DSC comment value - + Number Número - + Name - + Keyword Palavra Chave - + Literal - + Immediately evaluated literal - + Array parenthesis - + Dictionary parenthesis - + Procedure parenthesis - + Text Texto - + Hexadecimal string - + Base85 string - + Bad string character @@ -3083,32 +3259,32 @@ QsciLexerProperties - + Default Padrão - + Comment Comentário - + Section Seção - + Assignment Atribuição - + Default value Valor Padrão - + Key @@ -3116,102 +3292,102 @@ QsciLexerPython - + Default Padrão - + Comment Comentário - + Number Número - + Double-quoted string Cadeia de caracteres envolvida por aspas duplas - + Single-quoted string Cadeia de caracteres envolvida por aspas simples - + Keyword Palavra Chave - + Triple single-quoted string Cadeia de caracteres envolvida por três aspas simples - + Triple double-quoted string Cadeia de caracteres envolvida por três aspas duplas - + Class name Nome da classe - + Function or method name Nome da função ou método - + Operator Operador - + Identifier Identificador - + Comment block Bloco de comentários - + Unclosed string Cadeia de caracteres não fechada - + Highlighted identifier - + Decorator - + Double-quoted f-string - + Single-quoted f-string - + Triple single-quoted f-string - + Triple double-quoted f-string @@ -3219,157 +3395,157 @@ QsciLexerRuby - + Default Padrão - + Comment Comentário - + Number Número - + Double-quoted string Cadeia de caracteres envolvida por aspas duplas - + Single-quoted string Cadeia de caracteres envolvida por aspas simples - + Keyword Palavra Chave - + Class name Nome da classe - + Function or method name Nome da função ou método - + Operator Operador - + Identifier Identificador - + Error - + POD POD - + Regular expression Expressão Regular - + Global - + Symbol Símbolo - + Module name - + Instance variable - + Class variable - + Backticks Aspas Invertidas - + Data section Seção de dados - + Here document delimiter - + Here document - + %q string - + %Q string - + %x string - + %r string - + %w string - + Demoted keyword - + stdin - + stdout - + stderr @@ -3377,112 +3553,112 @@ QsciLexerSQL - + Default Padrão - + Comment Comentário - + Number Número - + Keyword Palavra Chave - + Single-quoted string Cadeia de caracteres envolvida por aspas simples - + Operator Operador - + Identifier Identificador - + Comment line Comentário de Linha - + JavaDoc style comment Comentário estilo JavaDoc - + Double-quoted string Cadeia de caracteres envolvida por aspas duplas - + SQL*Plus keyword Palavra chave do SQL*Plus - + SQL*Plus prompt Prompt do SQL*Plus - + SQL*Plus comment Comentário do SQL*Plus - + # comment line Comentário de linha usando # - + JavaDoc keyword Palavra chave JavaDoc - + JavaDoc keyword error Erro de palavra chave do JavaDoc - + User defined 1 Definição de usuário 1 - + User defined 2 Definição de usuário 2 - + User defined 3 Definição de usuário 3 - + User defined 4 Definição de usuário 4 - + Quoted identifier - + Quoted operator @@ -3490,47 +3666,47 @@ QsciLexerSpice - + Default Padrão - + Identifier Identificador - + Command Comando - + Function - + Parameter - + Number Número - + Delimiter - + Value Valor - + Comment Comentário @@ -3538,112 +3714,112 @@ QsciLexerTCL - + Default Padrão - + Comment Comentário - + Comment line - + Number Número - + Quoted keyword - + Quoted string - + Operator Operador - + Identifier Identificador - + Substitution Substituição - + Brace substitution - + Modifier - + Expand keyword - + TCL keyword - + Tk keyword - + iTCL keyword - + Tk command - + User defined 1 Definição de usuário 1 - + User defined 2 Definição de usuário 2 - + User defined 3 Definição de usuário 3 - + User defined 4 Definição de usuário 4 - + Comment box - + Comment block Bloco de comentários @@ -3651,32 +3827,32 @@ QsciLexerTeX - + Default Padrão - + Special Especial - + Group Grupo - + Symbol Símbolo - + Command Comando - + Text Texto @@ -3684,82 +3860,82 @@ QsciLexerVHDL - + Default Padrão - + Comment Comentário - + Comment line - + Number Número - + String Cadeia de Caracteres - + Operator Operador - + Identifier Identificador - + Unclosed string Cadeia de caracteres não fechada - + Keyword Palavra Chave - + Standard operator - + Attribute Atributo - + Standard function - + Standard package - + Standard type - + User defined - + Comment block Bloco de comentários @@ -3767,192 +3943,192 @@ QsciLexerVerilog - + Default Padrão - + Inactive default - + Comment Comentário - + Inactive comment - + Line comment Comentar Linha - + Inactive line comment - + Bang comment - + Inactive bang comment - + Number Número - + Inactive number - + Primary keywords and identifiers - + Inactive primary keywords and identifiers - + String Cadeia de Caracteres - + Inactive string - + Secondary keywords and identifiers Identificadores e palavras chave secundárias - + Inactive secondary keywords and identifiers - + System task - + Inactive system task - + Preprocessor block - + Inactive preprocessor block - + Operator Operador - + Inactive operator - + Identifier Identificador - + Inactive identifier - + Unclosed string Cadeia de caracteres não fechada - + Inactive unclosed string - + User defined tasks and identifiers - + Inactive user defined tasks and identifiers - + Keyword comment - + Inactive keyword comment - + Input port declaration - + Inactive input port declaration - + Output port declaration - + Inactive output port declaration - + Input/output port declaration - + Inactive input/output port declaration - + Port connection - + Inactive port connection @@ -3960,52 +4136,52 @@ QsciLexerYAML - + Default Padrão - + Comment Comentário - + Identifier Identificador - + Keyword Palavra Chave - + Number Número - + Reference - + Document delimiter - + Text block marker - + Syntax error marker - + Operator Operador @@ -4013,37 +4189,37 @@ QsciScintilla - + &Undo - + &Redo - + Cu&t - + &Copy - + &Paste - + Delete - + Select All diff --git a/libs/qscintilla/Qt4Qt5/qsciprinter.cpp b/libs/qscintilla_2.14.1/Qt5Qt6/qsciprinter.cpp similarity index 91% rename from libs/qscintilla/Qt4Qt5/qsciprinter.cpp rename to libs/qscintilla_2.14.1/Qt5Qt6/qsciprinter.cpp index c95c0fc71..7f40fde46 100644 --- a/libs/qscintilla/Qt4Qt5/qsciprinter.cpp +++ b/libs/qscintilla_2.14.1/Qt5Qt6/qsciprinter.cpp @@ -1,6 +1,6 @@ // This module implements the QsciPrinter class. // -// Copyright (c) 2019 Riverbank Computing Limited +// Copyright (c) 2023 Riverbank Computing Limited // // This file is part of QScintilla. // @@ -48,8 +48,9 @@ void QsciPrinter::formatPage(QPainter &, bool, QRect &, int) } -// Print a range of lines to a printer. -int QsciPrinter::printRange(QsciScintillaBase *qsb, int from, int to) +// Print a range of lines to a printer using a supplied QPainter. +int QsciPrinter::printRange(QsciScintillaBase *qsb, QPainter &painter, + int from, int to) { // Sanity check. if (!qsb) @@ -87,14 +88,14 @@ int QsciPrinter::printRange(QsciScintillaBase *qsb, int from, int to) if (startPos >= endPos) return false; - QPainter painter(this); bool reverse = (pageOrder() == LastPageFirst); bool needNewPage = false; + int nr_copies = supportsMultipleCopies() ? 1 : copyCount(); qsb -> SendScintilla(QsciScintillaBase::SCI_SETPRINTMAGNIFICATION,mag); qsb -> SendScintilla(QsciScintillaBase::SCI_SETPRINTWRAPMODE,wrap); - for (int i = 1; i <= numCopies(); ++i) + for (int i = 1; i <= nr_copies; ++i) { // If we are printing in reverse page order then remember the start // position of each page. @@ -170,6 +171,15 @@ int QsciPrinter::printRange(QsciScintillaBase *qsb, int from, int to) } +// Print a range of lines to a printer using a default QPainter. +int QsciPrinter::printRange(QsciScintillaBase *qsb, int from, int to) +{ + QPainter painter(this); + + return printRange(qsb, painter, from, to); +} + + // Set the print magnification in points. void QsciPrinter::setMagnification(int magnification) { diff --git a/libs/qscintilla/Qt4Qt5/qsciscintilla.cpp b/libs/qscintilla_2.14.1/Qt5Qt6/qsciscintilla.cpp similarity index 97% rename from libs/qscintilla/Qt4Qt5/qsciscintilla.cpp rename to libs/qscintilla_2.14.1/Qt5Qt6/qsciscintilla.cpp index d261ba408..d167a9901 100644 --- a/libs/qscintilla/Qt4Qt5/qsciscintilla.cpp +++ b/libs/qscintilla_2.14.1/Qt5Qt6/qsciscintilla.cpp @@ -2,7 +2,7 @@ // Scintilla. It is modelled on QTextEdit - a method of the same name should // behave in the same way. // -// Copyright (c) 2019 Riverbank Computing Limited +// Copyright (c) 2023 Riverbank Computing Limited // // This file is part of QScintilla. // @@ -390,8 +390,8 @@ void QsciScintilla::callTip() ct = ct_entries.join("\n"); } - ScintillaBytes ct_bytes = textAsBytes(ct); - const char *cts = ScintillaBytesConstData(ct_bytes); + QByteArray ct_bytes = textAsBytes(ct); + const char *cts = ct_bytes.constData(); SendScintilla(SCI_CALLTIPSHOW, adjustedCallTipPosition(shift), cts); @@ -470,10 +470,8 @@ void QsciScintilla::handleCallTipClick(int dir) if (ct_cursor > 0) ct.prepend('\001'); - ScintillaBytes ct_bytes = textAsBytes(ct); - const char *cts = ScintillaBytesConstData(ct_bytes); - - SendScintilla(SCI_CALLTIPSHOW, adjustedCallTipPosition(shift), cts); + SendScintilla(SCI_CALLTIPSHOW, adjustedCallTipPosition(shift), + textAsBytes(ct).constData()); } @@ -676,8 +674,8 @@ void QsciScintilla::startAutoCompletion(AutoCompletionSource acs, return; // Get the last word's raw data and length. - ScintillaBytes s = textAsBytes(context.last()); - const char *last_data = ScintillaBytesConstData(s); + QByteArray s = textAsBytes(context.last()); + const char *last_data = s.constData(); int last_len = s.length(); if (checkThresh && last_len < acThresh) @@ -777,8 +775,8 @@ void QsciScintilla::startAutoCompletion(AutoCompletionSource acs, SendScintilla(SCI_AUTOCSETCHOOSESINGLE, choose_single); SendScintilla(SCI_AUTOCSETSEPARATOR, acSeparator); - ScintillaBytes wlist_s = textAsBytes(wlist.join(QChar(acSeparator))); - SendScintilla(SCI_AUTOCSHOW, last_len, ScintillaBytesConstData(wlist_s)); + SendScintilla(SCI_AUTOCSHOW, last_len, + textAsBytes(wlist.join(QChar(acSeparator))).constData()); } @@ -1883,10 +1881,9 @@ int QsciScintilla::simpleFind() SendScintilla(SCI_SETTARGETSTART, findState.startpos); SendScintilla(SCI_SETTARGETEND, findState.endpos); - ScintillaBytes s = textAsBytes(findState.expr); + QByteArray s = textAsBytes(findState.expr); - return SendScintilla(SCI_SEARCHINTARGET, s.length(), - ScintillaBytesConstData(s)); + return SendScintilla(SCI_SEARCHINTARGET, s.length(), s.constData()); } @@ -1903,8 +1900,7 @@ void QsciScintilla::replace(const QString &replaceStr) int cmd = (findState.flags & SCFIND_REGEXP) ? SCI_REPLACETARGETRE : SCI_REPLACETARGET; - ScintillaBytes s = textAsBytes(replaceStr); - long len = SendScintilla(cmd, -1, ScintillaBytesConstData(s)); + long len = SendScintilla(cmd, -1, textAsBytes(replaceStr).constData()); // Reset the selection. SendScintilla(SCI_SETSELECTIONSTART, start); @@ -1914,7 +1910,10 @@ void QsciScintilla::replace(const QString &replaceStr) findState.endpos_orig += (len - orig_len); if (findState.forward) + { findState.startpos = start + len; + findState.endpos += (len - orig_len); + } } @@ -2183,8 +2182,8 @@ void QsciScintilla::append(const QString &text) { bool ro = ensureRW(); - ScintillaBytes s = textAsBytes(text); - SendScintilla(SCI_APPENDTEXT, s.length(), ScintillaBytesConstData(s)); + QByteArray s = textAsBytes(text); + SendScintilla(SCI_APPENDTEXT, s.length(), s.constData()); SendScintilla(SCI_EMPTYUNDOBUFFER); @@ -2212,8 +2211,7 @@ void QsciScintilla::insertAtPos(const QString &text, int pos) bool ro = ensureRW(); SendScintilla(SCI_BEGINUNDOACTION); - SendScintilla(SCI_INSERTTEXT, pos, - ScintillaBytesConstData(textAsBytes(text))); + SendScintilla(SCI_INSERTTEXT, pos, textAsBytes(text).constData()); SendScintilla(SCI_ENDUNDOACTION); setReadOnly(ro); @@ -2308,7 +2306,7 @@ void QsciScintilla::removeSelectedText() // Replace any selected text. void QsciScintilla::replaceSelectedText(const QString &text) { - SendScintilla(SCI_REPLACESEL, ScintillaBytesConstData(textAsBytes(text))); + SendScintilla(SCI_REPLACESEL, textAsBytes(text).constData()); } @@ -2318,11 +2316,12 @@ QString QsciScintilla::selectedText() const if (!selText) return QString(); - char *buf = new char[SendScintilla(SCI_GETSELECTIONEND) - SendScintilla(SCI_GETSELECTIONSTART) + 1]; + int size = SendScintilla(SCI_GETSELECTIONEND) - SendScintilla(SCI_GETSELECTIONSTART); + char *buf = new char[size + 1]; SendScintilla(SCI_GETSELTEXT, buf); - QString qs = bytesAsText(buf); + QString qs = bytesAsText(buf, size); delete[] buf; return qs; @@ -2332,12 +2331,14 @@ QString QsciScintilla::selectedText() const // Return the current text. QString QsciScintilla::text() const { - int buflen = length() + 1; - char *buf = new char[buflen]; + int size = length(); + char *buf = new char[size + 1]; - SendScintilla(SCI_GETTEXT, buflen, buf); + // Note that the docs seem to be wrong and we need to ask for the length + // plus the '\0'. + SendScintilla(SCI_GETTEXT, size + 1, buf); - QString qs = bytesAsText(buf); + QString qs = bytesAsText(buf, size); delete[] buf; return qs; @@ -2347,17 +2348,16 @@ QString QsciScintilla::text() const // Return the text of a line. QString QsciScintilla::text(int line) const { - int line_len = lineLength(line); + int size = lineLength(line); - if (line_len < 1) + if (size < 1) return QString(); - char *buf = new char[line_len + 1]; + char *buf = new char[size]; SendScintilla(SCI_GETLINE, line, buf); - buf[line_len] = '\0'; - QString qs = bytesAsText(buf); + QString qs = bytesAsText(buf, size); delete[] buf; return qs; @@ -2367,9 +2367,10 @@ QString QsciScintilla::text(int line) const // Return the text between two positions. QString QsciScintilla::text(int start, int end) const { - char *buf = new char[end - start + 1]; + int size = end - start; + char *buf = new char[size + 1]; SendScintilla(SCI_GETTEXTRANGE, start, end, buf); - QString text = bytesAsText(buf); + QString text = bytesAsText(buf, size); delete[] buf; return text; @@ -2392,7 +2393,9 @@ void QsciScintilla::setText(const QString &text) { bool ro = ensureRW(); - SendScintilla(SCI_SETTEXT, ScintillaBytesConstData(textAsBytes(text))); + SendScintilla(SCI_CLEARALL); + QByteArray bytes = textAsBytes(text); + SendScintilla(SCI_ADDTEXT, bytes.size(), bytes.constData()); SendScintilla(SCI_EMPTYUNDOBUFFER); setReadOnly(ro); @@ -2463,9 +2466,8 @@ void QsciScintilla::clear() { bool ro = ensureRW(); - SendScintilla(SCI_BEGINUNDOACTION); SendScintilla(SCI_CLEARALL); - SendScintilla(SCI_ENDUNDOACTION); + SendScintilla(SCI_EMPTYUNDOBUFFER); setReadOnly(ro); } @@ -2704,9 +2706,7 @@ void QsciScintilla::setMarginText(int line, const QString &text, int style) { int style_offset = SendScintilla(SCI_MARGINGETSTYLEOFFSET); - SendScintilla(SCI_MARGINSETTEXT, line, - ScintillaBytesConstData(textAsBytes(text))); - + SendScintilla(SCI_MARGINSETTEXT, line, textAsBytes(text).constData()); SendScintilla(SCI_MARGINSETSTYLE, line, style - style_offset); } @@ -2733,11 +2733,10 @@ void QsciScintilla::setMarginText(int line, const QsciStyledText &text) void QsciScintilla::setMarginText(int line, const QList &text) { char *styles; - ScintillaBytes styled_text = styleText(text, &styles, + QByteArray styled_text = styleText(text, &styles, SendScintilla(SCI_MARGINGETSTYLEOFFSET)); - SendScintilla(SCI_MARGINSETTEXT, line, - ScintillaBytesConstData(styled_text)); + SendScintilla(SCI_MARGINSETTEXT, line, styled_text.constData()); SendScintilla(SCI_MARGINSETSTYLES, line, styles); delete[] styles; @@ -2805,7 +2804,7 @@ void QsciScintilla::setMarginWidth(int margin, int width) void QsciScintilla::setMarginWidth(int margin, const QString &s) { int width = SendScintilla(SCI_TEXTWIDTH, STYLE_LINENUMBER, - ScintillaBytesConstData(textAsBytes(s))); + textAsBytes(s).constData()); setMarginWidth(margin, width); } @@ -3641,7 +3640,7 @@ long QsciScintilla::checkBrace(long pos, int brace_style, bool &colonMode) // Find a brace and it's match. Return true if the current position is inside // a pair of braces. -bool QsciScintilla::findMatchingBrace(long &brace, long &other,BraceMatch mode) +bool QsciScintilla::findMatchingBrace(long &brace, long &other, BraceMatch mode) { bool colonMode = false; int brace_style = (lex.isNull() ? -1 : lex->braceStyle()); @@ -4056,8 +4055,8 @@ void QsciScintilla::showUserList(int id, const QStringList &list) SendScintilla(SCI_AUTOCSETSEPARATOR, userSeparator); - ScintillaBytes s = textAsBytes(list.join(QChar(userSeparator))); - SendScintilla(SCI_USERLISTSHOW, id, ScintillaBytesConstData(s)); + SendScintilla(SCI_USERLISTSHOW, id, + textAsBytes(list.join(QChar(userSeparator))).constData()); } @@ -4227,9 +4226,7 @@ void QsciScintilla::annotate(int line, const QString &text, int style) { int style_offset = SendScintilla(SCI_ANNOTATIONGETSTYLEOFFSET); - ScintillaBytes s = textAsBytes(text); - - SendScintilla(SCI_ANNOTATIONSETTEXT, line, ScintillaBytesConstData(s)); + SendScintilla(SCI_ANNOTATIONSETTEXT, line, textAsBytes(text).constData()); SendScintilla(SCI_ANNOTATIONSETSTYLE, line, style - style_offset); setScrollBars(); @@ -4258,11 +4255,10 @@ void QsciScintilla::annotate(int line, const QsciStyledText &text) void QsciScintilla::annotate(int line, const QList &text) { char *styles; - ScintillaBytes styled_text = styleText(text, &styles, + QByteArray styled_text = styleText(text, &styles, SendScintilla(SCI_ANNOTATIONGETSTYLEOFFSET)); - SendScintilla(SCI_ANNOTATIONSETTEXT, line, - ScintillaBytesConstData(styled_text)); + SendScintilla(SCI_ANNOTATIONSETTEXT, line, styled_text.constData()); SendScintilla(SCI_ANNOTATIONSETSTYLES, line, styles); delete[] styles; @@ -4272,11 +4268,10 @@ void QsciScintilla::annotate(int line, const QList &text) // Get the annotation for a line, if any. QString QsciScintilla::annotation(int line) const { - char *buf = new char[SendScintilla(SCI_ANNOTATIONGETTEXT, line, (const char *)0) + 1]; - - buf[SendScintilla(SCI_ANNOTATIONGETTEXT, line, buf)] = '\0'; + int size = SendScintilla(SCI_ANNOTATIONGETTEXT, line, (const char *)0); + char *buf = new char[size + 1]; - QString qs = bytesAsText(buf); + QString qs = bytesAsText(buf, size); delete[] buf; return qs; @@ -4284,7 +4279,8 @@ QString QsciScintilla::annotation(int line) const // Convert a list of styled text to the low-level arrays. -QsciScintillaBase::ScintillaBytes QsciScintilla::styleText(const QList &styled_text, char **styles, int style_offset) +QByteArray QsciScintilla::styleText(const QList &styled_text, + char **styles, int style_offset) { QString text; int i; @@ -4299,7 +4295,7 @@ QsciScintillaBase::ScintillaBytes QsciScintilla::styleText(const QListmodifiers() & zoom_modifier) != 0) { - if (e->delta() > 0) + QPoint ad = e->angleDelta(); + int delta = (qAbs(ad.x()) > qAbs(ad.y())) ? ad.x() : ad.y(); + + if (delta > 0) zoomIn(); else zoomOut(); diff --git a/libs/qscintilla/Qt4Qt5/qsciscintillabase.cpp b/libs/qscintilla_2.14.1/Qt5Qt6/qsciscintillabase.cpp similarity index 94% rename from libs/qscintilla/Qt4Qt5/qsciscintillabase.cpp rename to libs/qscintilla_2.14.1/Qt5Qt6/qsciscintillabase.cpp index 6e1018c2b..2e3f06348 100644 --- a/libs/qscintilla/Qt4Qt5/qsciscintillabase.cpp +++ b/libs/qscintilla_2.14.1/Qt5Qt6/qsciscintillabase.cpp @@ -1,6 +1,6 @@ // This module implements the "official" low-level API. // -// Copyright (c) 2019 Riverbank Computing Limited +// Copyright (c) 2023 Riverbank Computing Limited // // This file is part of QScintilla. // @@ -36,7 +36,6 @@ #include #include #include -#include #include "SciAccessibility.h" #include "ScintillaQt.h" @@ -80,17 +79,15 @@ static const QLatin1String mimeTextPlain("text/plain"); static const QLatin1String mimeRectangularWin("MSDEVColumnSelect"); static const QLatin1String mimeRectangular("text/x-qscintilla-rectangular"); -#if (QT_VERSION >= 0x040200 && QT_VERSION < 0x050000 && defined(Q_OS_MAC)) || (QT_VERSION >= 0x050200 && defined(Q_OS_OSX)) +#if QT_VERSION < 0x060000 && defined(Q_OS_OSX) extern void initialiseRectangularPasteboardMime(); #endif // The ctor. QsciScintillaBase::QsciScintillaBase(QWidget *parent) - : QAbstractScrollArea(parent), preeditPos(-1), preeditNrBytes(0) -#if QT_VERSION >= 0x050000 - , clickCausedFocus(false) -#endif + : QAbstractScrollArea(parent), preeditPos(-1), preeditNrBytes(0), + clickCausedFocus(false) { #if !defined(QT_NO_ACCESSIBILITY) QsciAccessibleScintillaBase::initialise(); @@ -103,12 +100,8 @@ QsciScintillaBase::QsciScintillaBase(QWidget *parent) setFocusPolicy(Qt::WheelFocus); setAttribute(Qt::WA_KeyCompression); setAttribute(Qt::WA_InputMethodEnabled); -#if QT_VERSION >= 0x050100 setInputMethodHints( Qt::ImhNoAutoUppercase|Qt::ImhNoPredictiveText|Qt::ImhMultiLine); -#elif QT_VERSION >= 0x040600 - setInputMethodHints(Qt::ImhNoAutoUppercase|Qt::ImhNoPredictiveText); -#endif viewport()->setBackgroundRole(QPalette::Base); viewport()->setMouseTracking(true); @@ -116,7 +109,7 @@ QsciScintillaBase::QsciScintillaBase(QWidget *parent) triple_click.setSingleShot(true); -#if (QT_VERSION >= 0x040200 && QT_VERSION < 0x050000 && defined(Q_OS_MAC)) || (QT_VERSION >= 0x050200 && defined(Q_OS_OSX)) +#if QT_VERSION < 0x060000 && defined(Q_OS_OSX) initialiseRectangularPasteboardMime(); #endif @@ -131,11 +124,6 @@ QsciScintillaBase::QsciScintillaBase(QWidget *parent) lexersLinked = true; } - QClipboard *cb = QApplication::clipboard(); - - if (cb->supportsSelection()) - connect(cb, SIGNAL(selectionChanged()), SLOT(handleSelection())); - // Add it to the pool. poolList.append(this); } @@ -326,11 +314,7 @@ void QsciScintillaBase::contextMenuEvent(QContextMenuEvent *e) void QsciScintillaBase::focusInEvent(QFocusEvent *e) { sci->SetFocusState(true); - -#if QT_VERSION >= 0x050000 clickCausedFocus = (e->reason() == Qt::MouseFocusReason); -#endif - QAbstractScrollArea::focusInEvent(e); } @@ -369,14 +353,6 @@ bool QsciScintillaBase::focusNextPrevChild(bool next) } -// Handle the selection changing. -void QsciScintillaBase::handleSelection() -{ - if (!QApplication::clipboard()->ownsSelection()) - sci->UnclaimSelection(); -} - - // Handle key presses. void QsciScintillaBase::keyPressEvent(QKeyEvent *e) { @@ -413,7 +389,7 @@ void QsciScintillaBase::keyPressEvent(QKeyEvent *e) if (!text.isEmpty() && text[0].isPrint()) { - ScintillaBytes bytes = textAsBytes(text); + QByteArray bytes = textAsBytes(text); sci->AddCharUTF(bytes.data(), bytes.length()); e->accept(); } @@ -516,7 +492,7 @@ int QsciScintillaBase::commandKey(int qt_key, int &modifiers) // Encode a QString as bytes. -QsciScintillaBase::ScintillaBytes QsciScintillaBase::textAsBytes(const QString &text) const +QByteArray QsciScintillaBase::textAsBytes(const QString &text) const { if (sci->IsUnicodeMode()) return text.toUtf8(); @@ -526,12 +502,12 @@ QsciScintillaBase::ScintillaBytes QsciScintillaBase::textAsBytes(const QString & // Decode bytes as a QString. -QString QsciScintillaBase::bytesAsText(const char *bytes) const +QString QsciScintillaBase::bytesAsText(const char *bytes, int size) const { if (sci->IsUnicodeMode()) - return QString::fromUtf8(bytes); + return QString::fromUtf8(bytes, size); - return QString::fromLatin1(bytes); + return QString::fromLatin1(bytes, size); } @@ -608,7 +584,7 @@ void QsciScintillaBase::mousePressEvent(QMouseEvent *e) sci->RightButtonDownWithModifiers(pt, clickTime, QsciScintillaQt::ModifierFlags(shift, ctrl, alt)); } - else if (e->button() == Qt::MidButton) + else if (e->button() == Qt::MiddleButton) { QClipboard *cb = QApplication::clipboard(); @@ -641,7 +617,6 @@ void QsciScintillaBase::mouseReleaseEvent(QMouseEvent *e) QsciScintillaQt::ModifierFlags(false, ctrl, false)); } -#if QT_VERSION >= 0x050000 if (!sci->pdoc->IsReadOnly() && !sci->PointInSelMargin(pt) && qApp->autoSipEnabled()) { QStyle::RequestSoftwareInputPanel rsip = QStyle::RequestSoftwareInputPanel(style()->styleHint(QStyle::SH_RequestSoftwareInputPanel)); @@ -651,7 +626,6 @@ void QsciScintillaBase::mouseReleaseEvent(QMouseEvent *e) } clickCausedFocus = false; -#endif } diff --git a/libs/qscintilla/Qt4Qt5/qscistyle.cpp b/libs/qscintilla_2.14.1/Qt5Qt6/qscistyle.cpp similarity index 98% rename from libs/qscintilla/Qt4Qt5/qscistyle.cpp rename to libs/qscintilla_2.14.1/Qt5Qt6/qscistyle.cpp index 0e984563f..b863ada6f 100644 --- a/libs/qscintilla/Qt4Qt5/qscistyle.cpp +++ b/libs/qscintilla_2.14.1/Qt5Qt6/qscistyle.cpp @@ -1,6 +1,6 @@ // This module implements the QsciStyle class. // -// Copyright (c) 2019 Riverbank Computing Limited +// Copyright (c) 2023 Riverbank Computing Limited // // This file is part of QScintilla. // diff --git a/libs/qscintilla/Qt4Qt5/qscistyledtext.cpp b/libs/qscintilla_2.14.1/Qt5Qt6/qscistyledtext.cpp similarity index 96% rename from libs/qscintilla/Qt4Qt5/qscistyledtext.cpp rename to libs/qscintilla_2.14.1/Qt5Qt6/qscistyledtext.cpp index 6534128d8..8aa37f53c 100644 --- a/libs/qscintilla/Qt4Qt5/qscistyledtext.cpp +++ b/libs/qscintilla_2.14.1/Qt5Qt6/qscistyledtext.cpp @@ -1,6 +1,6 @@ // This module implements the QsciStyledText class. // -// Copyright (c) 2019 Riverbank Computing Limited +// Copyright (c) 2023 Riverbank Computing Limited // // This file is part of QScintilla. // diff --git a/libs/qscintilla/include/ILexer.h b/libs/qscintilla_2.14.1/scintilla/include/ILexer.h similarity index 100% rename from libs/qscintilla/include/ILexer.h rename to libs/qscintilla_2.14.1/scintilla/include/ILexer.h diff --git a/libs/qscintilla/include/ILoader.h b/libs/qscintilla_2.14.1/scintilla/include/ILoader.h similarity index 100% rename from libs/qscintilla/include/ILoader.h rename to libs/qscintilla_2.14.1/scintilla/include/ILoader.h diff --git a/libs/qscintilla/include/License.txt b/libs/qscintilla_2.14.1/scintilla/include/License.txt similarity index 100% rename from libs/qscintilla/include/License.txt rename to libs/qscintilla_2.14.1/scintilla/include/License.txt diff --git a/libs/qscintilla/include/Platform.h b/libs/qscintilla_2.14.1/scintilla/include/Platform.h similarity index 100% rename from libs/qscintilla/include/Platform.h rename to libs/qscintilla_2.14.1/scintilla/include/Platform.h diff --git a/libs/qscintilla/include/SciLexer.h b/libs/qscintilla_2.14.1/scintilla/include/SciLexer.h similarity index 100% rename from libs/qscintilla/include/SciLexer.h rename to libs/qscintilla_2.14.1/scintilla/include/SciLexer.h diff --git a/libs/qscintilla/include/Sci_Position.h b/libs/qscintilla_2.14.1/scintilla/include/Sci_Position.h similarity index 100% rename from libs/qscintilla/include/Sci_Position.h rename to libs/qscintilla_2.14.1/scintilla/include/Sci_Position.h diff --git a/libs/qscintilla/include/Scintilla.h b/libs/qscintilla_2.14.1/scintilla/include/Scintilla.h similarity index 100% rename from libs/qscintilla/include/Scintilla.h rename to libs/qscintilla_2.14.1/scintilla/include/Scintilla.h diff --git a/libs/qscintilla/include/Scintilla.iface b/libs/qscintilla_2.14.1/scintilla/include/Scintilla.iface similarity index 100% rename from libs/qscintilla/include/Scintilla.iface rename to libs/qscintilla_2.14.1/scintilla/include/Scintilla.iface diff --git a/libs/qscintilla/include/ScintillaWidget.h b/libs/qscintilla_2.14.1/scintilla/include/ScintillaWidget.h similarity index 100% rename from libs/qscintilla/include/ScintillaWidget.h rename to libs/qscintilla_2.14.1/scintilla/include/ScintillaWidget.h diff --git a/libs/qscintilla_2.14.1/scintilla/lexers/LexA68k.cpp b/libs/qscintilla_2.14.1/scintilla/lexers/LexA68k.cpp new file mode 100644 index 000000000..1475ad078 --- /dev/null +++ b/libs/qscintilla_2.14.1/scintilla/lexers/LexA68k.cpp @@ -0,0 +1,345 @@ +// Scintilla source code edit control +/** @file LexA68k.cxx + ** Lexer for Assembler, just for the MASM syntax + ** Written by Martial Demolins AKA Folco + **/ +// Copyright 2010 Martial Demolins +// The License.txt file describes the conditions under which this software +// may be distributed. + + +#include +#include +#include +#include +#include +#include + +#include "ILexer.h" +#include "Scintilla.h" +#include "SciLexer.h" + +#include "WordList.h" +#include "LexAccessor.h" +#include "Accessor.h" +#include "StyleContext.h" +#include "CharacterSet.h" +#include "LexerModule.h" + +using namespace Scintilla; + + +// Return values for GetOperatorType +#define NO_OPERATOR 0 +#define OPERATOR_1CHAR 1 +#define OPERATOR_2CHAR 2 + + +/** + * IsIdentifierStart + * + * Return true if the given char is a valid identifier first char + */ + +static inline bool IsIdentifierStart (const int ch) +{ + return (isalpha(ch) || (ch == '_') || (ch == '\\')); +} + + +/** + * IsIdentifierChar + * + * Return true if the given char is a valid identifier char + */ + +static inline bool IsIdentifierChar (const int ch) +{ + return (isalnum(ch) || (ch == '_') || (ch == '@') || (ch == ':') || (ch == '.')); +} + + +/** + * GetOperatorType + * + * Return: + * NO_OPERATOR if char is not an operator + * OPERATOR_1CHAR if the operator is one char long + * OPERATOR_2CHAR if the operator is two chars long + */ + +static inline int GetOperatorType (const int ch1, const int ch2) +{ + int OpType = NO_OPERATOR; + + if ((ch1 == '+') || (ch1 == '-') || (ch1 == '*') || (ch1 == '/') || (ch1 == '#') || + (ch1 == '(') || (ch1 == ')') || (ch1 == '~') || (ch1 == '&') || (ch1 == '|') || (ch1 == ',')) + OpType = OPERATOR_1CHAR; + + else if ((ch1 == ch2) && (ch1 == '<' || ch1 == '>')) + OpType = OPERATOR_2CHAR; + + return OpType; +} + + +/** + * IsBin + * + * Return true if the given char is 0 or 1 + */ + +static inline bool IsBin (const int ch) +{ + return (ch == '0') || (ch == '1'); +} + + +/** + * IsDoxygenChar + * + * Return true if the char may be part of a Doxygen keyword + */ + +static inline bool IsDoxygenChar (const int ch) +{ + return isalpha(ch) || (ch == '$') || (ch == '[') || (ch == ']') || (ch == '{') || (ch == '}'); +} + + +/** + * ColouriseA68kDoc + * + * Main function, which colourises a 68k source + */ + +static void ColouriseA68kDoc (Sci_PositionU startPos, Sci_Position length, int initStyle, WordList *keywordlists[], Accessor &styler) +{ + // Used to buffer a string, to be able to compare it using built-in functions + char Buffer[100]; + + + // Used to know the length of an operator + int OpType; + + + // Get references to keywords lists + WordList &cpuInstruction = *keywordlists[0]; + WordList ®isters = *keywordlists[1]; + WordList &directive = *keywordlists[2]; + WordList &extInstruction = *keywordlists[3]; + WordList &alert = *keywordlists[4]; + WordList &doxygenKeyword = *keywordlists[5]; + + + // Instanciate a context for our source + StyleContext sc(startPos, length, initStyle, styler); + + + /************************************************************ + * + * Parse the source + * + ************************************************************/ + + for ( ; sc.More(); sc.Forward()) + { + /************************************************************ + * + * A style always terminates at the end of a line, even for + * comments (no multi-lines comments) + * + ************************************************************/ + if (sc.atLineStart) { + sc.SetState(SCE_A68K_DEFAULT); + } + + + /************************************************************ + * + * If we are not in "default style", check if the style continues + * In this case, we just have to loop + * + ************************************************************/ + + if (sc.state != SCE_A68K_DEFAULT) + { + if ( ((sc.state == SCE_A68K_NUMBER_DEC) && isdigit(sc.ch)) // Decimal number + || ((sc.state == SCE_A68K_NUMBER_BIN) && IsBin(sc.ch)) // Binary number + || ((sc.state == SCE_A68K_NUMBER_HEX) && isxdigit(sc.ch)) // Hexa number + || ((sc.state == SCE_A68K_MACRO_ARG) && isdigit(sc.ch)) // Macro argument + || ((sc.state == SCE_A68K_STRING1) && (sc.ch != '\'')) // String single-quoted + || ((sc.state == SCE_A68K_STRING2) && (sc.ch != '\"')) // String double-quoted + || ((sc.state == SCE_A68K_MACRO_DECLARATION) && IsIdentifierChar(sc.ch)) // Macro declaration (or global label, we don't know at this point) + || ((sc.state == SCE_A68K_IDENTIFIER) && IsIdentifierChar(sc.ch)) // Identifier + || ((sc.state == SCE_A68K_LABEL) && IsIdentifierChar(sc.ch)) // Label (local) + || ((sc.state == SCE_A68K_COMMENT_DOXYGEN) && IsDoxygenChar(sc.ch)) // Doxygen keyword + || ((sc.state == SCE_A68K_COMMENT_SPECIAL) && isalpha(sc.ch)) // Alert + || ((sc.state == SCE_A68K_COMMENT) && !isalpha(sc.ch) && (sc.ch != '\\'))) // Normal comment + { + continue; + } + + /************************************************************ + * + * Check if current state terminates + * + ************************************************************/ + + // Strings: include terminal ' or " in the current string by skipping it + if ((sc.state == SCE_A68K_STRING1) || (sc.state == SCE_A68K_STRING2)) { + sc.Forward(); + } + + + // If a macro declaration was terminated with ':', it was a label + else if ((sc.state == SCE_A68K_MACRO_DECLARATION) && (sc.chPrev == ':')) { + sc.ChangeState(SCE_A68K_LABEL); + } + + + // If it wasn't a Doxygen keyword, change it to normal comment + else if (sc.state == SCE_A68K_COMMENT_DOXYGEN) { + sc.GetCurrent(Buffer, sizeof(Buffer)); + if (!doxygenKeyword.InList(Buffer)) { + sc.ChangeState(SCE_A68K_COMMENT); + } + sc.SetState(SCE_A68K_COMMENT); + continue; + } + + + // If it wasn't an Alert, change it to normal comment + else if (sc.state == SCE_A68K_COMMENT_SPECIAL) { + sc.GetCurrent(Buffer, sizeof(Buffer)); + if (!alert.InList(Buffer)) { + sc.ChangeState(SCE_A68K_COMMENT); + } + // Reset style to normal comment, or to Doxygen keyword if it begins with '\' + if (sc.ch == '\\') { + sc.SetState(SCE_A68K_COMMENT_DOXYGEN); + } + else { + sc.SetState(SCE_A68K_COMMENT); + } + continue; + } + + + // If we are in a comment, it's a Doxygen keyword or an Alert + else if (sc.state == SCE_A68K_COMMENT) { + if (sc.ch == '\\') { + sc.SetState(SCE_A68K_COMMENT_DOXYGEN); + } + else { + sc.SetState(SCE_A68K_COMMENT_SPECIAL); + } + continue; + } + + + // Check if we are at the end of an identifier + // In this case, colourise it if was a keyword. + else if ((sc.state == SCE_A68K_IDENTIFIER) && !IsIdentifierChar(sc.ch)) { + sc.GetCurrentLowered(Buffer, sizeof(Buffer)); // Buffer the string of the current context + if (cpuInstruction.InList(Buffer)) { // And check if it belongs to a keyword list + sc.ChangeState(SCE_A68K_CPUINSTRUCTION); + } + else if (extInstruction.InList(Buffer)) { + sc.ChangeState(SCE_A68K_EXTINSTRUCTION); + } + else if (registers.InList(Buffer)) { + sc.ChangeState(SCE_A68K_REGISTER); + } + else if (directive.InList(Buffer)) { + sc.ChangeState(SCE_A68K_DIRECTIVE); + } + } + + // All special contexts are now handled.Come back to default style + sc.SetState(SCE_A68K_DEFAULT); + } + + + /************************************************************ + * + * Check if we must enter a new state + * + ************************************************************/ + + // Something which begins at the beginning of a line, and with + // - '\' + an identifier start char, or + // - '\\@' + an identifier start char + // is a local label (second case is used for macro local labels). We set it already as a label, it can't be a macro/equ declaration + if (sc.atLineStart && (sc.ch < 0x80) && IsIdentifierStart(sc.chNext) && (sc.ch == '\\')) { + sc.SetState(SCE_A68K_LABEL); + } + + if (sc.atLineStart && (sc.ch < 0x80) && (sc.ch == '\\') && (sc.chNext == '\\')) { + sc.Forward(2); + if ((sc.ch == '@') && IsIdentifierStart(sc.chNext)) { + sc.ChangeState(SCE_A68K_LABEL); + sc.SetState(SCE_A68K_LABEL); + } + } + + // Label and macro identifiers start at the beginning of a line + // We set both as a macro id, but if it wasn't one (':' at the end), + // it will be changed as a label. + if (sc.atLineStart && (sc.ch < 0x80) && IsIdentifierStart(sc.ch)) { + sc.SetState(SCE_A68K_MACRO_DECLARATION); + } + else if ((sc.ch < 0x80) && (sc.ch == ';')) { // Default: alert in a comment. If it doesn't match + sc.SetState(SCE_A68K_COMMENT); // with an alert, it will be toggle to a normal comment + } + else if ((sc.ch < 0x80) && isdigit(sc.ch)) { // Decimal numbers haven't prefix + sc.SetState(SCE_A68K_NUMBER_DEC); + } + else if ((sc.ch < 0x80) && (sc.ch == '%')) { // Binary numbers are prefixed with '%' + sc.SetState(SCE_A68K_NUMBER_BIN); + } + else if ((sc.ch < 0x80) && (sc.ch == '$')) { // Hexadecimal numbers are prefixed with '$' + sc.SetState(SCE_A68K_NUMBER_HEX); + } + else if ((sc.ch < 0x80) && (sc.ch == '\'')) { // String (single-quoted) + sc.SetState(SCE_A68K_STRING1); + } + else if ((sc.ch < 0x80) && (sc.ch == '\"')) { // String (double-quoted) + sc.SetState(SCE_A68K_STRING2); + } + else if ((sc.ch < 0x80) && (sc.ch == '\\') && (isdigit(sc.chNext))) { // Replacement symbols in macro are prefixed with '\' + sc.SetState(SCE_A68K_MACRO_ARG); + } + else if ((sc.ch < 0x80) && IsIdentifierStart(sc.ch)) { // An identifier: constant, label, etc... + sc.SetState(SCE_A68K_IDENTIFIER); + } + else { + if (sc.ch < 0x80) { + OpType = GetOperatorType(sc.ch, sc.chNext); // Check if current char is an operator + if (OpType != NO_OPERATOR) { + sc.SetState(SCE_A68K_OPERATOR); + if (OpType == OPERATOR_2CHAR) { // Check if the operator is 2 bytes long + sc.ForwardSetState(SCE_A68K_OPERATOR); // (>> or <<) + } + } + } + } + } // End of for() + sc.Complete(); +} + + +// Names of the keyword lists + +static const char * const a68kWordListDesc[] = +{ + "CPU instructions", + "Registers", + "Directives", + "Extended instructions", + "Comment special words", + "Doxygen keywords", + 0 +}; + +LexerModule lmA68k(SCLEX_A68K, ColouriseA68kDoc, "a68k", 0, a68kWordListDesc); diff --git a/libs/qscintilla_2.14.1/scintilla/lexers/LexAPDL.cpp b/libs/qscintilla_2.14.1/scintilla/lexers/LexAPDL.cpp new file mode 100644 index 000000000..447e40d58 --- /dev/null +++ b/libs/qscintilla_2.14.1/scintilla/lexers/LexAPDL.cpp @@ -0,0 +1,257 @@ +// Scintilla source code edit control +/** @file LexAPDL.cxx + ** Lexer for APDL. Based on the lexer for Assembler by The Black Horus. + ** By Hadar Raz. + **/ +// Copyright 1998-2003 by Neil Hodgson +// The License.txt file describes the conditions under which this software may be distributed. + +#include +#include +#include +#include +#include +#include + +#include "ILexer.h" +#include "Scintilla.h" +#include "SciLexer.h" + +#include "WordList.h" +#include "LexAccessor.h" +#include "Accessor.h" +#include "StyleContext.h" +#include "CharacterSet.h" +#include "LexerModule.h" + +using namespace Scintilla; + +static inline bool IsAWordChar(const int ch) { + return (ch < 0x80 && (isalnum(ch) || ch == '_')); +} + +static inline bool IsAnOperator(char ch) { + // '.' left out as it is used to make up numbers + if (ch == '*' || ch == '/' || ch == '-' || ch == '+' || + ch == '(' || ch == ')' || ch == '=' || ch == '^' || + ch == '[' || ch == ']' || ch == '<' || ch == '&' || + ch == '>' || ch == ',' || ch == '|' || ch == '~' || + ch == '$' || ch == ':' || ch == '%') + return true; + return false; +} + +static void ColouriseAPDLDoc(Sci_PositionU startPos, Sci_Position length, int initStyle, WordList *keywordlists[], + Accessor &styler) { + + int stringStart = ' '; + + WordList &processors = *keywordlists[0]; + WordList &commands = *keywordlists[1]; + WordList &slashcommands = *keywordlists[2]; + WordList &starcommands = *keywordlists[3]; + WordList &arguments = *keywordlists[4]; + WordList &functions = *keywordlists[5]; + + // Do not leak onto next line + initStyle = SCE_APDL_DEFAULT; + StyleContext sc(startPos, length, initStyle, styler); + + for (; sc.More(); sc.Forward()) { + // Determine if the current state should terminate. + if (sc.state == SCE_APDL_NUMBER) { + if (!(IsADigit(sc.ch) || sc.ch == '.' || (sc.ch == 'e' || sc.ch == 'E') || + ((sc.ch == '+' || sc.ch == '-') && (sc.chPrev == 'e' || sc.chPrev == 'E')))) { + sc.SetState(SCE_APDL_DEFAULT); + } + } else if (sc.state == SCE_APDL_COMMENT) { + if (sc.atLineEnd) { + sc.SetState(SCE_APDL_DEFAULT); + } + } else if (sc.state == SCE_APDL_COMMENTBLOCK) { + if (sc.atLineEnd) { + if (sc.ch == '\r') { + sc.Forward(); + } + sc.ForwardSetState(SCE_APDL_DEFAULT); + } + } else if (sc.state == SCE_APDL_STRING) { + if (sc.atLineEnd) { + sc.SetState(SCE_APDL_DEFAULT); + } else if ((sc.ch == '\'' && stringStart == '\'') || (sc.ch == '\"' && stringStart == '\"')) { + sc.ForwardSetState(SCE_APDL_DEFAULT); + } + } else if (sc.state == SCE_APDL_WORD) { + if (!IsAWordChar(sc.ch)) { + char s[100]; + sc.GetCurrentLowered(s, sizeof(s)); + if (processors.InList(s)) { + sc.ChangeState(SCE_APDL_PROCESSOR); + } else if (slashcommands.InList(s)) { + sc.ChangeState(SCE_APDL_SLASHCOMMAND); + } else if (starcommands.InList(s)) { + sc.ChangeState(SCE_APDL_STARCOMMAND); + } else if (commands.InList(s)) { + sc.ChangeState(SCE_APDL_COMMAND); + } else if (arguments.InList(s)) { + sc.ChangeState(SCE_APDL_ARGUMENT); + } else if (functions.InList(s)) { + sc.ChangeState(SCE_APDL_FUNCTION); + } + sc.SetState(SCE_APDL_DEFAULT); + } + } else if (sc.state == SCE_APDL_OPERATOR) { + if (!IsAnOperator(static_cast(sc.ch))) { + sc.SetState(SCE_APDL_DEFAULT); + } + } + + // Determine if a new state should be entered. + if (sc.state == SCE_APDL_DEFAULT) { + if (sc.ch == '!' && sc.chNext == '!') { + sc.SetState(SCE_APDL_COMMENTBLOCK); + } else if (sc.ch == '!') { + sc.SetState(SCE_APDL_COMMENT); + } else if (IsADigit(sc.ch) || (sc.ch == '.' && IsADigit(sc.chNext))) { + sc.SetState(SCE_APDL_NUMBER); + } else if (sc.ch == '\'' || sc.ch == '\"') { + sc.SetState(SCE_APDL_STRING); + stringStart = sc.ch; + } else if (IsAWordChar(sc.ch) || ((sc.ch == '*' || sc.ch == '/') && !isgraph(sc.chPrev))) { + sc.SetState(SCE_APDL_WORD); + } else if (IsAnOperator(static_cast(sc.ch))) { + sc.SetState(SCE_APDL_OPERATOR); + } + } + } + sc.Complete(); +} + +//------------------------------------------------------------------------------ +// 06-27-07 Sergio Lucato +// - Included code folding for Ansys APDL lexer +// - Copyied from LexBasic.cxx and modified for APDL +//------------------------------------------------------------------------------ + +/* Bits: + * 1 - whitespace + * 2 - operator + * 4 - identifier + * 8 - decimal digit + * 16 - hex digit + * 32 - bin digit + */ +static int character_classification[128] = +{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 2, 0, 2, 2, 2, 2, 2, 2, 2, 6, 2, 2, 2, 10, 6, + 60, 60, 28, 28, 28, 28, 28, 28, 28, 28, 2, 2, 2, 2, 2, 2, + 2, 20, 20, 20, 20, 20, 20, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 2, 2, 2, 2, 4, + 2, 20, 20, 20, 20, 20, 20, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 2, 2, 2, 2, 0 +}; + +static bool IsSpace(int c) { + return c < 128 && (character_classification[c] & 1); +} + +static bool IsIdentifier(int c) { + return c < 128 && (character_classification[c] & 4); +} + +static int LowerCase(int c) +{ + if (c >= 'A' && c <= 'Z') + return 'a' + c - 'A'; + return c; +} + +static int CheckAPDLFoldPoint(char const *token, int &level) { + if (!strcmp(token, "*if") || + !strcmp(token, "*do") || + !strcmp(token, "*dowhile") ) { + level |= SC_FOLDLEVELHEADERFLAG; + return 1; + } + if (!strcmp(token, "*endif") || + !strcmp(token, "*enddo") ) { + return -1; + } + return 0; +} + +static void FoldAPDLDoc(Sci_PositionU startPos, Sci_Position length, int, + WordList *[], Accessor &styler) { + + Sci_Position line = styler.GetLine(startPos); + int level = styler.LevelAt(line); + int go = 0, done = 0; + Sci_Position endPos = startPos + length; + char word[256]; + int wordlen = 0; + Sci_Position i; + bool foldCompact = styler.GetPropertyInt("fold.compact", 1) != 0; + // Scan for tokens at the start of the line (they may include + // whitespace, for tokens like "End Function" + for (i = startPos; i < endPos; i++) { + int c = styler.SafeGetCharAt(i); + if (!done && !go) { + if (wordlen) { // are we scanning a token already? + word[wordlen] = static_cast(LowerCase(c)); + if (!IsIdentifier(c)) { // done with token + word[wordlen] = '\0'; + go = CheckAPDLFoldPoint(word, level); + if (!go) { + // Treat any whitespace as single blank, for + // things like "End Function". + if (IsSpace(c) && IsIdentifier(word[wordlen - 1])) { + word[wordlen] = ' '; + if (wordlen < 255) + wordlen++; + } + else // done with this line + done = 1; + } + } else if (wordlen < 255) { + wordlen++; + } + } else { // start scanning at first non-whitespace character + if (!IsSpace(c)) { + if (IsIdentifier(c)) { + word[0] = static_cast(LowerCase(c)); + wordlen = 1; + } else // done with this line + done = 1; + } + } + } + if (c == '\n') { // line end + if (!done && wordlen == 0 && foldCompact) // line was only space + level |= SC_FOLDLEVELWHITEFLAG; + if (level != styler.LevelAt(line)) + styler.SetLevel(line, level); + level += go; + line++; + // reset state + wordlen = 0; + level &= ~SC_FOLDLEVELHEADERFLAG; + level &= ~SC_FOLDLEVELWHITEFLAG; + go = 0; + done = 0; + } + } +} + +static const char * const apdlWordListDesc[] = { + "processors", + "commands", + "slashommands", + "starcommands", + "arguments", + "functions", + 0 +}; + +LexerModule lmAPDL(SCLEX_APDL, ColouriseAPDLDoc, "apdl", FoldAPDLDoc, apdlWordListDesc); diff --git a/libs/qscintilla_2.14.1/scintilla/lexers/LexASY.cpp b/libs/qscintilla_2.14.1/scintilla/lexers/LexASY.cpp new file mode 100644 index 000000000..3ec522729 --- /dev/null +++ b/libs/qscintilla_2.14.1/scintilla/lexers/LexASY.cpp @@ -0,0 +1,269 @@ +// Scintilla source code edit control +//Author: instanton (email: soft_share126com) +// The License.txt file describes the conditions under which this software may be distributed. + +#include +#include +#include +#include +#include + +#include "ILexer.h" +#include "Scintilla.h" +#include "SciLexer.h" + +#include "WordList.h" +#include "LexAccessor.h" +#include "Accessor.h" +#include "StyleContext.h" +#include "CharacterSet.h" +#include "LexerModule.h" + +using namespace Scintilla; + +static void ColouriseAsyDoc(Sci_PositionU startPos, Sci_Position length, int initStyle, + WordList *keywordlists[], Accessor &styler) { + + WordList &keywords = *keywordlists[0]; + WordList &keywords2 = *keywordlists[1]; + + CharacterSet setWordStart(CharacterSet::setAlpha, "_", 0x80, true); + CharacterSet setWord(CharacterSet::setAlphaNum, "._", 0x80, true); + + int visibleChars = 0; + + StyleContext sc(startPos, length, initStyle, styler); + + for (; sc.More(); sc.Forward()) { + + if (sc.atLineStart) { + if (sc.state == SCE_ASY_STRING) { + sc.SetState(SCE_ASY_STRING); + } + visibleChars = 0; + } + + if (sc.ch == '\\') { + if (sc.chNext == '\n' || sc.chNext == '\r') { + sc.Forward(); + if (sc.ch == '\r' && sc.chNext == '\n') { + sc.Forward(); + } +// continuationLine = true; + continue; + } + } + + // Determine if the current state should terminate. + switch (sc.state) { + case SCE_ASY_OPERATOR: + sc.SetState(SCE_ASY_DEFAULT); + break; + case SCE_ASY_NUMBER: + if (!setWord.Contains(sc.ch)) { + sc.SetState(SCE_ASY_DEFAULT); + } + break; + case SCE_ASY_IDENTIFIER: + if (!setWord.Contains(sc.ch) || (sc.ch == '.')) { + char s[1000]; + sc.GetCurrentLowered(s, sizeof(s)); + if (keywords.InList(s)) { + sc.ChangeState(SCE_ASY_WORD); + } else if (keywords2.InList(s)) { + sc.ChangeState(SCE_ASY_WORD2); + } + sc.SetState(SCE_ASY_DEFAULT); + } + break; + case SCE_ASY_COMMENT: + if (sc.Match('*', '/')) { + sc.Forward(); + sc.ForwardSetState(SCE_ASY_DEFAULT); + } + break; + case SCE_ASY_COMMENTLINE: + if (sc.atLineStart) { + sc.SetState(SCE_ASY_DEFAULT); + } + break; + case SCE_ASY_STRING: + if (sc.atLineEnd) { + sc.ChangeState(SCE_ASY_STRINGEOL); + } else if (sc.ch == '\\') { + if (sc.chNext == '\"' || sc.chNext == '\'' || sc.chNext == '\\') { + sc.Forward(); + } + } else if (sc.ch == '\"') { + sc.ForwardSetState(SCE_ASY_DEFAULT); + } + break; + case SCE_ASY_CHARACTER: + if (sc.atLineEnd) { + sc.ChangeState(SCE_ASY_STRINGEOL); + } else if (sc.ch == '\\') { + if (sc.chNext == '\"' || sc.chNext == '\'' || sc.chNext == '\\') { + sc.Forward(); + } + } else if (sc.ch == '\'') { + sc.ForwardSetState(SCE_ASY_DEFAULT); + } + break; + } + + // Determine if a new state should be entered. + if (sc.state == SCE_ASY_DEFAULT) { + if (setWordStart.Contains(sc.ch) || (sc.ch == '@')) { + sc.SetState(SCE_ASY_IDENTIFIER); + } else if (sc.Match('/', '*')) { + sc.SetState(SCE_ASY_COMMENT); + sc.Forward(); // + } else if (sc.Match('/', '/')) { + sc.SetState(SCE_ASY_COMMENTLINE); + } else if (sc.ch == '\"') { + sc.SetState(SCE_ASY_STRING); + } else if (sc.ch == '\'') { + sc.SetState(SCE_ASY_CHARACTER); + } else if (sc.ch == '#' && visibleChars == 0) { + do { + sc.Forward(); + } while ((sc.ch == ' ' || sc.ch == '\t') && sc.More()); + if (sc.atLineEnd) { + sc.SetState(SCE_ASY_DEFAULT); + } + } else if (isoperator(static_cast(sc.ch))) { + sc.SetState(SCE_ASY_OPERATOR); + } + } + + } + sc.Complete(); +} + +static bool IsAsyCommentStyle(int style) { + return style == SCE_ASY_COMMENT; +} + + +static inline bool isASYidentifier(int ch) { + return + ((ch >= 'a') && (ch <= 'z')) || ((ch >= 'A') && (ch <= 'Z')) ; +} + +static int ParseASYWord(Sci_PositionU pos, Accessor &styler, char *word) +{ + int length=0; + char ch=styler.SafeGetCharAt(pos); + *word=0; + + while(isASYidentifier(ch) && length<100){ + word[length]=ch; + length++; + ch=styler.SafeGetCharAt(pos+length); + } + word[length]=0; + return length; +} + +static bool IsASYDrawingLine(Sci_Position line, Accessor &styler) { + Sci_Position pos = styler.LineStart(line); + Sci_Position eol_pos = styler.LineStart(line + 1) - 1; + + Sci_Position startpos = pos; + char buffer[100]=""; + + while (startpos 0) + levelCurrent = styler.LevelAt(lineCurrent-1) >> 16; + int levelMinCurrent = levelCurrent; + int levelNext = levelCurrent; + char chNext = styler[startPos]; + int styleNext = styler.StyleAt(startPos); + int style = initStyle; + for (Sci_PositionU i = startPos; i < endPos; i++) { + char ch = chNext; + chNext = styler.SafeGetCharAt(i + 1); + int stylePrev = style; + style = styleNext; + styleNext = styler.StyleAt(i + 1); + bool atEOL = (ch == '\r' && chNext != '\n') || (ch == '\n'); + if (foldComment && IsAsyCommentStyle(style)) { + if (!IsAsyCommentStyle(stylePrev) && (stylePrev != SCE_ASY_COMMENTLINEDOC)) { + levelNext++; + } else if (!IsAsyCommentStyle(styleNext) && (styleNext != SCE_ASY_COMMENTLINEDOC) && !atEOL) { + levelNext--; + } + } + if (style == SCE_ASY_OPERATOR) { + if (ch == '{') { + if (levelMinCurrent > levelNext) { + levelMinCurrent = levelNext; + } + levelNext++; + } else if (ch == '}') { + levelNext--; + } + } + + if (atEOL && IsASYDrawingLine(lineCurrent, styler)){ + if (lineCurrent==0 && IsASYDrawingLine(lineCurrent + 1, styler)) + levelNext++; + else if (lineCurrent!=0 && !IsASYDrawingLine(lineCurrent - 1, styler) + && IsASYDrawingLine(lineCurrent + 1, styler) + ) + levelNext++; + else if (lineCurrent!=0 && IsASYDrawingLine(lineCurrent - 1, styler) && + !IsASYDrawingLine(lineCurrent+1, styler)) + levelNext--; + } + + if (atEOL) { + int levelUse = levelCurrent; + if (foldAtElse) { + levelUse = levelMinCurrent; + } + int lev = levelUse | levelNext << 16; + if (visibleChars == 0 && foldCompact) + lev |= SC_FOLDLEVELWHITEFLAG; + if (levelUse < levelNext) + lev |= SC_FOLDLEVELHEADERFLAG; + if (lev != styler.LevelAt(lineCurrent)) { + styler.SetLevel(lineCurrent, lev); + } + lineCurrent++; + levelCurrent = levelNext; + levelMinCurrent = levelCurrent; + visibleChars = 0; + } + if (!IsASpace(ch)) + visibleChars++; + } +} + +static const char * const asyWordLists[] = { + "Primary keywords and identifiers", + "Secondary keywords and identifiers", + 0, + }; + +LexerModule lmASY(SCLEX_ASYMPTOTE, ColouriseAsyDoc, "asy", FoldAsyDoc, asyWordLists); diff --git a/libs/qscintilla_2.14.1/scintilla/lexers/LexAU3.cpp b/libs/qscintilla_2.14.1/scintilla/lexers/LexAU3.cpp new file mode 100644 index 000000000..b4029413c --- /dev/null +++ b/libs/qscintilla_2.14.1/scintilla/lexers/LexAU3.cpp @@ -0,0 +1,908 @@ +// Scintilla source code edit control +// @file LexAU3.cxx +// Lexer for AutoIt3 http://www.hiddensoft.com/autoit3 +// by Jos van der Zande, jvdzande@yahoo.com +// +// Changes: +// March 28, 2004 - Added the standard Folding code +// April 21, 2004 - Added Preprosessor Table + Syntax Highlighting +// Fixed Number highlighting +// Changed default isoperator to IsAOperator to have a better match to AutoIt3 +// Fixed "#comments_start" -> "#comments-start" +// Fixed "#comments_end" -> "#comments-end" +// Fixed Sendkeys in Strings when not terminated with } +// Added support for Sendkey strings that have second parameter e.g. {UP 5} or {a down} +// April 26, 2004 - Fixed # pre-processor statement inside of comment block would invalidly change the color. +// Added logic for #include to treat the <> as string +// Added underscore to IsAOperator. +// May 17, 2004 - Changed the folding logic from indent to keyword folding. +// Added Folding logic for blocks of single-commentlines or commentblock. +// triggered by: fold.comment=1 +// Added Folding logic for preprocessor blocks triggered by fold.preprocessor=1 +// Added Special for #region - #endregion syntax highlight and folding. +// May 30, 2004 - Fixed issue with continuation lines on If statements. +// June 5, 2004 - Added comma to Operators for better readability. +// Added fold.compact support set with fold.compact=1 +// Changed folding inside of #cs-#ce. Default is no keyword folding inside comment blocks when fold.comment=1 +// it will now only happen when fold.comment=2. +// Sep 5, 2004 - Added logic to handle colourizing words on the last line. +// Typed Characters now show as "default" till they match any table. +// Oct 10, 2004 - Added logic to show Comments in "Special" directives. +// Nov 1, 2004 - Added better testing for Numbers supporting x and e notation. +// Nov 28, 2004 - Added logic to handle continuation lines for syntax highlighting. +// Jan 10, 2005 - Added Abbreviations Keyword used for expansion +// Mar 24, 2005 - Updated Abbreviations Keywords to fix when followed by Operator. +// Apr 18, 2005 - Updated #CE/#Comment-End logic to take a linecomment ";" into account +// - Added folding support for With...EndWith +// - Added support for a DOT in variable names +// - Fixed Underscore in CommentBlock +// May 23, 2005 - Fixed the SentKey lexing in case of a missing } +// Aug 11, 2005 - Fixed possible bug with s_save length > 100. +// Aug 23, 2005 - Added Switch/endswitch support to the folding logic. +// Sep 27, 2005 - Fixed the SentKey lexing logic in case of multiple sentkeys. +// Mar 12, 2006 - Fixed issue with <> coloring as String in stead of Operator in rare occasions. +// Apr 8, 2006 - Added support for AutoIt3 Standard UDF library (SCE_AU3_UDF) +// Mar 9, 2007 - Fixed bug with + following a String getting the wrong Color. +// Jun 20, 2007 - Fixed Commentblock issue when LF's are used as EOL. +// Jul 26, 2007 - Fixed #endregion undetected bug. +// +// Copyright for Scintilla: 1998-2001 by Neil Hodgson +// The License.txt file describes the conditions under which this software may be distributed. +// Scintilla source code edit control + +#include +#include +#include +#include +#include +#include + +#include "ILexer.h" +#include "Scintilla.h" +#include "SciLexer.h" + +#include "WordList.h" +#include "LexAccessor.h" +#include "Accessor.h" +#include "StyleContext.h" +#include "CharacterSet.h" +#include "LexerModule.h" + +using namespace Scintilla; + +static inline bool IsTypeCharacter(const int ch) +{ + return ch == '$'; +} +static inline bool IsAWordChar(const int ch) +{ + return (ch < 0x80) && (isalnum(ch) || ch == '_'); +} + +static inline bool IsAWordStart(const int ch) +{ + return (ch < 0x80) && (isalnum(ch) || ch == '_' || ch == '@' || ch == '#' || ch == '$' || ch == '.'); +} + +static inline bool IsAOperator(char ch) { + if (IsASCII(ch) && isalnum(ch)) + return false; + if (ch == '+' || ch == '-' || ch == '*' || ch == '/' || + ch == '&' || ch == '^' || ch == '=' || ch == '<' || ch == '>' || + ch == '(' || ch == ')' || ch == '[' || ch == ']' || ch == ',' ) + return true; + return false; +} + +/////////////////////////////////////////////////////////////////////////////// +// GetSendKey() filters the portion before and after a/multiple space(s) +// and return the first portion to be looked-up in the table +// also check if the second portion is valid... (up,down.on.off,toggle or a number) +/////////////////////////////////////////////////////////////////////////////// + +static int GetSendKey(const char *szLine, char *szKey) +{ + int nFlag = 0; + int nStartFound = 0; + int nKeyPos = 0; + int nSpecPos= 0; + int nSpecNum= 1; + int nPos = 0; + char cTemp; + char szSpecial[100]; + + // split the portion of the sendkey in the part before and after the spaces + while ( ( (cTemp = szLine[nPos]) != '\0')) + { + // skip leading Ctrl/Shift/Alt state + if (cTemp == '{') { + nStartFound = 1; + } + // + if (nStartFound == 1) { + if ((cTemp == ' ') && (nFlag == 0) ) // get the stuff till first space + { + nFlag = 1; + // Add } to the end of the first bit for table lookup later. + szKey[nKeyPos++] = '}'; + } + else if (cTemp == ' ') + { + // skip other spaces + } + else if (nFlag == 0) + { + // save first portion into var till space or } is hit + szKey[nKeyPos++] = cTemp; + } + else if ((nFlag == 1) && (cTemp != '}')) + { + // Save second portion into var... + szSpecial[nSpecPos++] = cTemp; + // check if Second portion is all numbers for repeat fuction + if (isdigit(cTemp) == false) {nSpecNum = 0;} + } + } + nPos++; // skip to next char + + } // End While + + + // Check if the second portion is either a number or one of these keywords + szKey[nKeyPos] = '\0'; + szSpecial[nSpecPos] = '\0'; + if (strcmp(szSpecial,"down")== 0 || strcmp(szSpecial,"up")== 0 || + strcmp(szSpecial,"on")== 0 || strcmp(szSpecial,"off")== 0 || + strcmp(szSpecial,"toggle")== 0 || nSpecNum == 1 ) + { + nFlag = 0; + } + else + { + nFlag = 1; + } + return nFlag; // 1 is bad, 0 is good + +} // GetSendKey() + +// +// Routine to check the last "none comment" character on a line to see if its a continuation +// +static bool IsContinuationLine(Sci_PositionU szLine, Accessor &styler) +{ + Sci_Position nsPos = styler.LineStart(szLine); + Sci_Position nePos = styler.LineStart(szLine+1) - 2; + //int stylech = styler.StyleAt(nsPos); + while (nsPos < nePos) + { + //stylech = styler.StyleAt(nePos); + int stylech = styler.StyleAt(nsPos); + if (!(stylech == SCE_AU3_COMMENT)) { + char ch = styler.SafeGetCharAt(nePos); + if (!isspacechar(ch)) { + if (ch == '_') + return true; + else + return false; + } + } + nePos--; // skip to next char + } // End While + return false; +} // IsContinuationLine() + +// +// syntax highlighting logic +static void ColouriseAU3Doc(Sci_PositionU startPos, + Sci_Position length, int initStyle, + WordList *keywordlists[], + Accessor &styler) { + + WordList &keywords = *keywordlists[0]; + WordList &keywords2 = *keywordlists[1]; + WordList &keywords3 = *keywordlists[2]; + WordList &keywords4 = *keywordlists[3]; + WordList &keywords5 = *keywordlists[4]; + WordList &keywords6 = *keywordlists[5]; + WordList &keywords7 = *keywordlists[6]; + WordList &keywords8 = *keywordlists[7]; + // find the first previous line without continuation character at the end + Sci_Position lineCurrent = styler.GetLine(startPos); + Sci_Position s_startPos = startPos; + // When not inside a Block comment: find First line without _ + if (!(initStyle==SCE_AU3_COMMENTBLOCK)) { + while ((lineCurrent > 0 && IsContinuationLine(lineCurrent,styler)) || + (lineCurrent > 1 && IsContinuationLine(lineCurrent-1,styler))) { + lineCurrent--; + startPos = styler.LineStart(lineCurrent); // get start position + initStyle = 0; // reset the start style to 0 + } + } + // Set the new length to include it from the start and set the start position + length = length + s_startPos - startPos; // correct the total length to process + styler.StartAt(startPos); + + StyleContext sc(startPos, length, initStyle, styler); + char si; // string indicator "=1 '=2 + char ni; // Numeric indicator error=9 normal=0 normal+dec=1 hex=2 Enot=3 + char ci; // comment indicator 0=not linecomment(;) + char s_save[100] = ""; + si=0; + ni=0; + ci=0; + //$$$ + for (; sc.More(); sc.Forward()) { + char s[100]; + sc.GetCurrentLowered(s, sizeof(s)); + // ********************************************** + // save the total current word for eof processing + if (IsAWordChar(sc.ch) || sc.ch == '}') + { + strcpy(s_save,s); + int tp = static_cast(strlen(s_save)); + if (tp < 99) { + s_save[tp] = static_cast(tolower(sc.ch)); + s_save[tp+1] = '\0'; + } + } + // ********************************************** + // + switch (sc.state) + { + case SCE_AU3_COMMENTBLOCK: + { + //Reset at line end + if (sc.atLineEnd) { + ci=0; + if (strcmp(s, "#ce")== 0 || strcmp(s, "#comments-end")== 0) { + if (sc.atLineEnd) + sc.SetState(SCE_AU3_DEFAULT); + else + sc.SetState(SCE_AU3_COMMENTBLOCK); + } + break; + } + //skip rest of line when a ; is encountered + if (sc.chPrev == ';') { + ci=2; + sc.SetState(SCE_AU3_COMMENTBLOCK); + } + // skip rest of the line + if (ci==2) + break; + // check when first character is detected on the line + if (ci==0) { + if (IsAWordStart(static_cast(sc.ch)) || IsAOperator(static_cast(sc.ch))) { + ci=1; + sc.SetState(SCE_AU3_COMMENTBLOCK); + } + break; + } + if (!(IsAWordChar(sc.ch) || (sc.ch == '-' && strcmp(s, "#comments") == 0))) { + if ((strcmp(s, "#ce")== 0 || strcmp(s, "#comments-end")== 0)) + sc.SetState(SCE_AU3_COMMENT); // set to comment line for the rest of the line + else + ci=2; // line doesn't begin with #CE so skip the rest of the line + } + break; + } + case SCE_AU3_COMMENT: + { + if (sc.atLineEnd) {sc.SetState(SCE_AU3_DEFAULT);} + break; + } + case SCE_AU3_OPERATOR: + { + // check if its a COMobject + if (sc.chPrev == '.' && IsAWordChar(sc.ch)) { + sc.SetState(SCE_AU3_COMOBJ); + } + else { + sc.SetState(SCE_AU3_DEFAULT); + } + break; + } + case SCE_AU3_SPECIAL: + { + if (sc.ch == ';') {sc.SetState(SCE_AU3_COMMENT);} + if (sc.atLineEnd) {sc.SetState(SCE_AU3_DEFAULT);} + break; + } + case SCE_AU3_KEYWORD: + { + if (!(IsAWordChar(sc.ch) || (sc.ch == '-' && (strcmp(s, "#comments") == 0 || strcmp(s, "#include") == 0)))) + { + if (!IsTypeCharacter(sc.ch)) + { + if (strcmp(s, "#cs")== 0 || strcmp(s, "#comments-start")== 0 ) + { + sc.ChangeState(SCE_AU3_COMMENTBLOCK); + sc.SetState(SCE_AU3_COMMENTBLOCK); + break; + } + else if (keywords.InList(s)) { + sc.ChangeState(SCE_AU3_KEYWORD); + sc.SetState(SCE_AU3_DEFAULT); + } + else if (keywords2.InList(s)) { + sc.ChangeState(SCE_AU3_FUNCTION); + sc.SetState(SCE_AU3_DEFAULT); + } + else if (keywords3.InList(s)) { + sc.ChangeState(SCE_AU3_MACRO); + sc.SetState(SCE_AU3_DEFAULT); + } + else if (keywords5.InList(s)) { + sc.ChangeState(SCE_AU3_PREPROCESSOR); + sc.SetState(SCE_AU3_DEFAULT); + if (strcmp(s, "#include")== 0) + { + si = 3; // use to determine string start for #inlude <> + } + } + else if (keywords6.InList(s)) { + sc.ChangeState(SCE_AU3_SPECIAL); + sc.SetState(SCE_AU3_SPECIAL); + } + else if ((keywords7.InList(s)) && (!IsAOperator(static_cast(sc.ch)))) { + sc.ChangeState(SCE_AU3_EXPAND); + sc.SetState(SCE_AU3_DEFAULT); + } + else if (keywords8.InList(s)) { + sc.ChangeState(SCE_AU3_UDF); + sc.SetState(SCE_AU3_DEFAULT); + } + else if (strcmp(s, "_") == 0) { + sc.ChangeState(SCE_AU3_OPERATOR); + sc.SetState(SCE_AU3_DEFAULT); + } + else if (!IsAWordChar(sc.ch)) { + sc.ChangeState(SCE_AU3_DEFAULT); + sc.SetState(SCE_AU3_DEFAULT); + } + } + } + if (sc.atLineEnd) { + sc.SetState(SCE_AU3_DEFAULT);} + break; + } + case SCE_AU3_NUMBER: + { + // Numeric indicator error=9 normal=0 normal+dec=1 hex=2 E-not=3 + // + // test for Hex notation + if (strcmp(s, "0") == 0 && (sc.ch == 'x' || sc.ch == 'X') && ni == 0) + { + ni = 2; + break; + } + // test for E notation + if (IsADigit(sc.chPrev) && (sc.ch == 'e' || sc.ch == 'E') && ni <= 1) + { + ni = 3; + break; + } + // Allow Hex characters inside hex numeric strings + if ((ni == 2) && + (sc.ch == 'a' || sc.ch == 'b' || sc.ch == 'c' || sc.ch == 'd' || sc.ch == 'e' || sc.ch == 'f' || + sc.ch == 'A' || sc.ch == 'B' || sc.ch == 'C' || sc.ch == 'D' || sc.ch == 'E' || sc.ch == 'F' )) + { + break; + } + // test for 1 dec point only + if (sc.ch == '.') + { + if (ni==0) + { + ni=1; + } + else + { + ni=9; + } + break; + } + // end of numeric string ? + if (!(IsADigit(sc.ch))) + { + if (ni==9) + { + sc.ChangeState(SCE_AU3_DEFAULT); + } + sc.SetState(SCE_AU3_DEFAULT); + } + break; + } + case SCE_AU3_VARIABLE: + { + // Check if its a COMObject + if (sc.ch == '.' && !IsADigit(sc.chNext)) { + sc.SetState(SCE_AU3_OPERATOR); + } + else if (!IsAWordChar(sc.ch)) { + sc.SetState(SCE_AU3_DEFAULT); + } + break; + } + case SCE_AU3_COMOBJ: + { + if (!(IsAWordChar(sc.ch))) { + sc.SetState(SCE_AU3_DEFAULT); + } + break; + } + case SCE_AU3_STRING: + { + // check for " to end a double qouted string or + // check for ' to end a single qouted string + if ((si == 1 && sc.ch == '\"') || (si == 2 && sc.ch == '\'') || (si == 3 && sc.ch == '>')) + { + sc.ForwardSetState(SCE_AU3_DEFAULT); + si=0; + break; + } + if (sc.atLineEnd) + { + si=0; + // at line end and not found a continuation char then reset to default + Sci_Position lineCurrent = styler.GetLine(sc.currentPos); + if (!IsContinuationLine(lineCurrent,styler)) + { + sc.SetState(SCE_AU3_DEFAULT); + break; + } + } + // find Sendkeys in a STRING + if (sc.ch == '{' || sc.ch == '+' || sc.ch == '!' || sc.ch == '^' || sc.ch == '#' ) { + sc.SetState(SCE_AU3_SENT);} + break; + } + + case SCE_AU3_SENT: + { + // Send key string ended + if (sc.chPrev == '}' && sc.ch != '}') + { + // set color to SENDKEY when valid sendkey .. else set back to regular string + char sk[100]; + // split {111 222} and return {111} and check if 222 is valid. + // if return code = 1 then invalid 222 so must be string + if (GetSendKey(s,sk)) + { + sc.ChangeState(SCE_AU3_STRING); + } + // if single char between {?} then its ok as sendkey for a single character + else if (strlen(sk) == 3) + { + sc.ChangeState(SCE_AU3_SENT); + } + // if sendkey {111} is in table then ok as sendkey + else if (keywords4.InList(sk)) + { + sc.ChangeState(SCE_AU3_SENT); + } + else + { + sc.ChangeState(SCE_AU3_STRING); + } + sc.SetState(SCE_AU3_STRING); + } + else + { + // check if the start is a valid SendKey start + Sci_Position nPos = 0; + int nState = 1; + char cTemp; + while (!(nState == 2) && ((cTemp = s[nPos]) != '\0')) + { + if (cTemp == '{' && nState == 1) + { + nState = 2; + } + if (nState == 1 && !(cTemp == '+' || cTemp == '!' || cTemp == '^' || cTemp == '#' )) + { + nState = 0; + } + nPos++; + } + //Verify characters infront of { ... if not assume regular string + if (nState == 1 && (!(sc.ch == '{' || sc.ch == '+' || sc.ch == '!' || sc.ch == '^' || sc.ch == '#' ))) { + sc.ChangeState(SCE_AU3_STRING); + sc.SetState(SCE_AU3_STRING); + } + // If invalid character found then assume its a regular string + if (nState == 0) { + sc.ChangeState(SCE_AU3_STRING); + sc.SetState(SCE_AU3_STRING); + } + } + // check if next portion is again a sendkey + if (sc.atLineEnd) + { + sc.ChangeState(SCE_AU3_STRING); + sc.SetState(SCE_AU3_DEFAULT); + si = 0; // reset string indicator + } + //* check in next characters following a sentkey are again a sent key + // Need this test incase of 2 sentkeys like {F1}{ENTER} but not detect {{} + if (sc.state == SCE_AU3_STRING && (sc.ch == '{' || sc.ch == '+' || sc.ch == '!' || sc.ch == '^' || sc.ch == '#' )) { + sc.SetState(SCE_AU3_SENT);} + // check to see if the string ended... + // Sendkey string isn't complete but the string ended.... + if ((si == 1 && sc.ch == '\"') || (si == 2 && sc.ch == '\'')) + { + sc.ChangeState(SCE_AU3_STRING); + sc.ForwardSetState(SCE_AU3_DEFAULT); + } + break; + } + } //switch (sc.state) + + // Determine if a new state should be entered: + + if (sc.state == SCE_AU3_DEFAULT) + { + if (sc.ch == ';') {sc.SetState(SCE_AU3_COMMENT);} + else if (sc.ch == '#') {sc.SetState(SCE_AU3_KEYWORD);} + else if (sc.ch == '$') {sc.SetState(SCE_AU3_VARIABLE);} + else if (sc.ch == '.' && !IsADigit(sc.chNext)) {sc.SetState(SCE_AU3_OPERATOR);} + else if (sc.ch == '@') {sc.SetState(SCE_AU3_KEYWORD);} + //else if (sc.ch == '_') {sc.SetState(SCE_AU3_KEYWORD);} + else if (sc.ch == '<' && si==3) {sc.SetState(SCE_AU3_STRING);} // string after #include + else if (sc.ch == '\"') { + sc.SetState(SCE_AU3_STRING); + si = 1; } + else if (sc.ch == '\'') { + sc.SetState(SCE_AU3_STRING); + si = 2; } + else if (IsADigit(sc.ch) || (sc.ch == '.' && IsADigit(sc.chNext))) + { + sc.SetState(SCE_AU3_NUMBER); + ni = 0; + } + else if (IsAWordStart(sc.ch)) {sc.SetState(SCE_AU3_KEYWORD);} + else if (IsAOperator(static_cast(sc.ch))) {sc.SetState(SCE_AU3_OPERATOR);} + else if (sc.atLineEnd) {sc.SetState(SCE_AU3_DEFAULT);} + } + } //for (; sc.More(); sc.Forward()) + + //************************************* + // Colourize the last word correctly + //************************************* + if (sc.state == SCE_AU3_KEYWORD) + { + if (strcmp(s_save, "#cs")== 0 || strcmp(s_save, "#comments-start")== 0 ) + { + sc.ChangeState(SCE_AU3_COMMENTBLOCK); + sc.SetState(SCE_AU3_COMMENTBLOCK); + } + else if (keywords.InList(s_save)) { + sc.ChangeState(SCE_AU3_KEYWORD); + sc.SetState(SCE_AU3_KEYWORD); + } + else if (keywords2.InList(s_save)) { + sc.ChangeState(SCE_AU3_FUNCTION); + sc.SetState(SCE_AU3_FUNCTION); + } + else if (keywords3.InList(s_save)) { + sc.ChangeState(SCE_AU3_MACRO); + sc.SetState(SCE_AU3_MACRO); + } + else if (keywords5.InList(s_save)) { + sc.ChangeState(SCE_AU3_PREPROCESSOR); + sc.SetState(SCE_AU3_PREPROCESSOR); + } + else if (keywords6.InList(s_save)) { + sc.ChangeState(SCE_AU3_SPECIAL); + sc.SetState(SCE_AU3_SPECIAL); + } + else if (keywords7.InList(s_save) && sc.atLineEnd) { + sc.ChangeState(SCE_AU3_EXPAND); + sc.SetState(SCE_AU3_EXPAND); + } + else if (keywords8.InList(s_save)) { + sc.ChangeState(SCE_AU3_UDF); + sc.SetState(SCE_AU3_UDF); + } + else { + sc.ChangeState(SCE_AU3_DEFAULT); + sc.SetState(SCE_AU3_DEFAULT); + } + } + if (sc.state == SCE_AU3_SENT) + { + // Send key string ended + if (sc.chPrev == '}' && sc.ch != '}') + { + // set color to SENDKEY when valid sendkey .. else set back to regular string + char sk[100]; + // split {111 222} and return {111} and check if 222 is valid. + // if return code = 1 then invalid 222 so must be string + if (GetSendKey(s_save,sk)) + { + sc.ChangeState(SCE_AU3_STRING); + } + // if single char between {?} then its ok as sendkey for a single character + else if (strlen(sk) == 3) + { + sc.ChangeState(SCE_AU3_SENT); + } + // if sendkey {111} is in table then ok as sendkey + else if (keywords4.InList(sk)) + { + sc.ChangeState(SCE_AU3_SENT); + } + else + { + sc.ChangeState(SCE_AU3_STRING); + } + sc.SetState(SCE_AU3_STRING); + } + // check if next portion is again a sendkey + if (sc.atLineEnd) + { + sc.ChangeState(SCE_AU3_STRING); + sc.SetState(SCE_AU3_DEFAULT); + } + } + //************************************* + sc.Complete(); +} + +// +static bool IsStreamCommentStyle(int style) { + return style == SCE_AU3_COMMENT || style == SCE_AU3_COMMENTBLOCK; +} + +// +// Routine to find first none space on the current line and return its Style +// needed for comment lines not starting on pos 1 +static int GetStyleFirstWord(Sci_PositionU szLine, Accessor &styler) +{ + Sci_Position nsPos = styler.LineStart(szLine); + Sci_Position nePos = styler.LineStart(szLine+1) - 1; + while (isspacechar(styler.SafeGetCharAt(nsPos)) && nsPos < nePos) + { + nsPos++; // skip to next char + + } // End While + return styler.StyleAt(nsPos); + +} // GetStyleFirstWord() + + +// +static void FoldAU3Doc(Sci_PositionU startPos, Sci_Position length, int, WordList *[], Accessor &styler) +{ + Sci_Position endPos = startPos + length; + // get settings from the config files for folding comments and preprocessor lines + bool foldComment = styler.GetPropertyInt("fold.comment") != 0; + bool foldInComment = styler.GetPropertyInt("fold.comment") == 2; + bool foldCompact = styler.GetPropertyInt("fold.compact", 1) != 0; + bool foldpreprocessor = styler.GetPropertyInt("fold.preprocessor") != 0; + // Backtrack to previous line in case need to fix its fold status + Sci_Position lineCurrent = styler.GetLine(startPos); + if (startPos > 0) { + if (lineCurrent > 0) { + lineCurrent--; + startPos = styler.LineStart(lineCurrent); + } + } + // vars for style of previous/current/next lines + int style = GetStyleFirstWord(lineCurrent,styler); + int stylePrev = 0; + // find the first previous line without continuation character at the end + while ((lineCurrent > 0 && IsContinuationLine(lineCurrent,styler)) || + (lineCurrent > 1 && IsContinuationLine(lineCurrent-1,styler))) { + lineCurrent--; + startPos = styler.LineStart(lineCurrent); + } + if (lineCurrent > 0) { + stylePrev = GetStyleFirstWord(lineCurrent-1,styler); + } + // vars for getting first word to check for keywords + bool FirstWordStart = false; + bool FirstWordEnd = false; + char szKeyword[11]=""; + int szKeywordlen = 0; + char szThen[5]=""; + int szThenlen = 0; + bool ThenFoundLast = false; + // var for indentlevel + int levelCurrent = SC_FOLDLEVELBASE; + if (lineCurrent > 0) + levelCurrent = styler.LevelAt(lineCurrent-1) >> 16; + int levelNext = levelCurrent; + // + int visibleChars = 0; + char chNext = styler.SafeGetCharAt(startPos); + char chPrev = ' '; + // + for (Sci_Position i = startPos; i < endPos; i++) { + char ch = chNext; + chNext = styler.SafeGetCharAt(i + 1); + if (IsAWordChar(ch)) { + visibleChars++; + } + // get the syle for the current character neede to check in comment + int stylech = styler.StyleAt(i); + // get first word for the line for indent check max 9 characters + if (FirstWordStart && (!(FirstWordEnd))) { + if (!IsAWordChar(ch)) { + FirstWordEnd = true; + szKeyword[szKeywordlen] = '\0'; + } + else { + if (szKeywordlen < 10) { + szKeyword[szKeywordlen++] = static_cast(tolower(ch)); + } + } + } + // start the capture of the first word + if (!(FirstWordStart)) { + if (IsAWordChar(ch) || IsAWordStart(ch) || ch == ';') { + FirstWordStart = true; + szKeyword[szKeywordlen++] = static_cast(tolower(ch)); + } + } + // only process this logic when not in comment section + if (!(stylech == SCE_AU3_COMMENT)) { + if (ThenFoundLast) { + if (IsAWordChar(ch)) { + ThenFoundLast = false; + } + } + // find out if the word "then" is the last on a "if" line + if (FirstWordEnd && strcmp(szKeyword,"if") == 0) { + if (szThenlen == 4) { + szThen[0] = szThen[1]; + szThen[1] = szThen[2]; + szThen[2] = szThen[3]; + szThen[3] = static_cast(tolower(ch)); + if (strcmp(szThen,"then") == 0 ) { + ThenFoundLast = true; + } + } + else { + szThen[szThenlen++] = static_cast(tolower(ch)); + if (szThenlen == 5) { + szThen[4] = '\0'; + } + } + } + } + // End of Line found so process the information + if ((ch == '\r' && chNext != '\n') || (ch == '\n') || (i == endPos)) { + // ************************** + // Folding logic for Keywords + // ************************** + // if a keyword is found on the current line and the line doesn't end with _ (continuation) + // and we are not inside a commentblock. + if (szKeywordlen > 0 && (!(chPrev == '_')) && + ((!(IsStreamCommentStyle(style)) || foldInComment)) ) { + szKeyword[szKeywordlen] = '\0'; + // only fold "if" last keyword is "then" (else its a one line if) + if (strcmp(szKeyword,"if") == 0 && ThenFoundLast) { + levelNext++; + } + // create new fold for these words + if (strcmp(szKeyword,"do") == 0 || strcmp(szKeyword,"for") == 0 || + strcmp(szKeyword,"func") == 0 || strcmp(szKeyword,"while") == 0|| + strcmp(szKeyword,"with") == 0 || strcmp(szKeyword,"#region") == 0 ) { + levelNext++; + } + // create double Fold for select&switch because Case will subtract one of the current level + if (strcmp(szKeyword,"select") == 0 || strcmp(szKeyword,"switch") == 0) { + levelNext++; + levelNext++; + } + // end the fold for these words before the current line + if (strcmp(szKeyword,"endfunc") == 0 || strcmp(szKeyword,"endif") == 0 || + strcmp(szKeyword,"next") == 0 || strcmp(szKeyword,"until") == 0 || + strcmp(szKeyword,"endwith") == 0 ||strcmp(szKeyword,"wend") == 0){ + levelNext--; + levelCurrent--; + } + // end the fold for these words before the current line and Start new fold + if (strcmp(szKeyword,"case") == 0 || strcmp(szKeyword,"else") == 0 || + strcmp(szKeyword,"elseif") == 0 ) { + levelCurrent--; + } + // end the double fold for this word before the current line + if (strcmp(szKeyword,"endselect") == 0 || strcmp(szKeyword,"endswitch") == 0 ) { + levelNext--; + levelNext--; + levelCurrent--; + levelCurrent--; + } + // end the fold for these words on the current line + if (strcmp(szKeyword,"#endregion") == 0 ) { + levelNext--; + } + } + // Preprocessor and Comment folding + int styleNext = GetStyleFirstWord(lineCurrent + 1,styler); + // ************************************* + // Folding logic for preprocessor blocks + // ************************************* + // process preprosessor line + if (foldpreprocessor && style == SCE_AU3_PREPROCESSOR) { + if (!(stylePrev == SCE_AU3_PREPROCESSOR) && (styleNext == SCE_AU3_PREPROCESSOR)) { + levelNext++; + } + // fold till the last line for normal comment lines + else if (stylePrev == SCE_AU3_PREPROCESSOR && !(styleNext == SCE_AU3_PREPROCESSOR)) { + levelNext--; + } + } + // ********************************* + // Folding logic for Comment blocks + // ********************************* + if (foldComment && IsStreamCommentStyle(style)) { + // Start of a comment block + if (!(stylePrev==style) && IsStreamCommentStyle(styleNext) && styleNext==style) { + levelNext++; + } + // fold till the last line for normal comment lines + else if (IsStreamCommentStyle(stylePrev) + && !(styleNext == SCE_AU3_COMMENT) + && stylePrev == SCE_AU3_COMMENT + && style == SCE_AU3_COMMENT) { + levelNext--; + } + // fold till the one but last line for Blockcomment lines + else if (IsStreamCommentStyle(stylePrev) + && !(styleNext == SCE_AU3_COMMENTBLOCK) + && style == SCE_AU3_COMMENTBLOCK) { + levelNext--; + levelCurrent--; + } + } + int levelUse = levelCurrent; + int lev = levelUse | levelNext << 16; + if (visibleChars == 0 && foldCompact) + lev |= SC_FOLDLEVELWHITEFLAG; + if (levelUse < levelNext) { + lev |= SC_FOLDLEVELHEADERFLAG; + } + if (lev != styler.LevelAt(lineCurrent)) { + styler.SetLevel(lineCurrent, lev); + } + // reset values for the next line + lineCurrent++; + stylePrev = style; + style = styleNext; + levelCurrent = levelNext; + visibleChars = 0; + // if the last character is an Underscore then don't reset since the line continues on the next line. + if (!(chPrev == '_')) { + szKeywordlen = 0; + szThenlen = 0; + FirstWordStart = false; + FirstWordEnd = false; + ThenFoundLast = false; + } + } + // save the last processed character + if (!isspacechar(ch)) { + chPrev = ch; + visibleChars++; + } + } +} + + +// + +static const char * const AU3WordLists[] = { + "#autoit keywords", + "#autoit functions", + "#autoit macros", + "#autoit Sent keys", + "#autoit Pre-processors", + "#autoit Special", + "#autoit Expand", + "#autoit UDF", + 0 +}; +LexerModule lmAU3(SCLEX_AU3, ColouriseAU3Doc, "au3", FoldAU3Doc , AU3WordLists); diff --git a/libs/qscintilla_2.14.1/scintilla/lexers/LexAVE.cpp b/libs/qscintilla_2.14.1/scintilla/lexers/LexAVE.cpp new file mode 100644 index 000000000..b976734ae --- /dev/null +++ b/libs/qscintilla_2.14.1/scintilla/lexers/LexAVE.cpp @@ -0,0 +1,229 @@ +// SciTE - Scintilla based Text Editor +/** @file LexAVE.cxx + ** Lexer for Avenue. + ** + ** Written by Alexey Yutkin . + **/ +// Copyright 1998-2002 by Neil Hodgson +// The License.txt file describes the conditions under which this software may be distributed. + +#include +#include +#include +#include +#include +#include + +#include "ILexer.h" +#include "Scintilla.h" +#include "SciLexer.h" + +#include "WordList.h" +#include "LexAccessor.h" +#include "Accessor.h" +#include "StyleContext.h" +#include "CharacterSet.h" +#include "LexerModule.h" + +using namespace Scintilla; + + +static inline bool IsAWordChar(const int ch) { + return (ch < 0x80) && (isalnum(ch) || ch == '.' || ch == '_'); +} +static inline bool IsEnumChar(const int ch) { + return (ch < 0x80) && (isalnum(ch)|| ch == '_'); +} +static inline bool IsANumberChar(const int ch) { + return (ch < 0x80) && (isalnum(ch) || ch == '.' ); +} + +inline bool IsAWordStart(const int ch) { + return (ch < 0x80) && (isalnum(ch) || ch == '_'); +} + +inline bool isAveOperator(char ch) { + if (IsASCII(ch) && isalnum(ch)) + return false; + // '.' left out as it is used to make up numbers + if (ch == '*' || ch == '/' || ch == '-' || ch == '+' || + ch == '(' || ch == ')' || ch == '=' || + ch == '{' || ch == '}' || + ch == '[' || ch == ']' || ch == ';' || + ch == '<' || ch == '>' || ch == ',' || + ch == '.' ) + return true; + return false; +} + +static void ColouriseAveDoc( + Sci_PositionU startPos, + Sci_Position length, + int initStyle, + WordList *keywordlists[], + Accessor &styler) { + + WordList &keywords = *keywordlists[0]; + WordList &keywords2 = *keywordlists[1]; + WordList &keywords3 = *keywordlists[2]; + WordList &keywords4 = *keywordlists[3]; + WordList &keywords5 = *keywordlists[4]; + WordList &keywords6 = *keywordlists[5]; + + // Do not leak onto next line + if (initStyle == SCE_AVE_STRINGEOL) { + initStyle = SCE_AVE_DEFAULT; + } + + StyleContext sc(startPos, length, initStyle, styler); + + for (; sc.More(); sc.Forward()) { + if (sc.atLineEnd) { + // Update the line state, so it can be seen by next line + Sci_Position currentLine = styler.GetLine(sc.currentPos); + styler.SetLineState(currentLine, 0); + } + if (sc.atLineStart && (sc.state == SCE_AVE_STRING)) { + // Prevent SCE_AVE_STRINGEOL from leaking back to previous line + sc.SetState(SCE_AVE_STRING); + } + + + // Determine if the current state should terminate. + if (sc.state == SCE_AVE_OPERATOR) { + sc.SetState(SCE_AVE_DEFAULT); + } else if (sc.state == SCE_AVE_NUMBER) { + if (!IsANumberChar(sc.ch)) { + sc.SetState(SCE_AVE_DEFAULT); + } + } else if (sc.state == SCE_AVE_ENUM) { + if (!IsEnumChar(sc.ch)) { + sc.SetState(SCE_AVE_DEFAULT); + } + } else if (sc.state == SCE_AVE_IDENTIFIER) { + if (!IsAWordChar(sc.ch) || (sc.ch == '.')) { + char s[100]; + //sc.GetCurrent(s, sizeof(s)); + sc.GetCurrentLowered(s, sizeof(s)); + if (keywords.InList(s)) { + sc.ChangeState(SCE_AVE_WORD); + } else if (keywords2.InList(s)) { + sc.ChangeState(SCE_AVE_WORD2); + } else if (keywords3.InList(s)) { + sc.ChangeState(SCE_AVE_WORD3); + } else if (keywords4.InList(s)) { + sc.ChangeState(SCE_AVE_WORD4); + } else if (keywords5.InList(s)) { + sc.ChangeState(SCE_AVE_WORD5); + } else if (keywords6.InList(s)) { + sc.ChangeState(SCE_AVE_WORD6); + } + sc.SetState(SCE_AVE_DEFAULT); + } + } else if (sc.state == SCE_AVE_COMMENT) { + if (sc.atLineEnd) { + sc.SetState(SCE_AVE_DEFAULT); + } + } else if (sc.state == SCE_AVE_STRING) { + if (sc.ch == '\"') { + sc.ForwardSetState(SCE_AVE_DEFAULT); + } else if (sc.atLineEnd) { + sc.ChangeState(SCE_AVE_STRINGEOL); + sc.ForwardSetState(SCE_AVE_DEFAULT); + } + } + + // Determine if a new state should be entered. + if (sc.state == SCE_AVE_DEFAULT) { + if (IsADigit(sc.ch) || (sc.ch == '.' && IsADigit(sc.chNext))) { + sc.SetState(SCE_AVE_NUMBER); + } else if (IsAWordStart(sc.ch)) { + sc.SetState(SCE_AVE_IDENTIFIER); + } else if (sc.Match('\"')) { + sc.SetState(SCE_AVE_STRING); + } else if (sc.Match('\'')) { + sc.SetState(SCE_AVE_COMMENT); + sc.Forward(); + } else if (isAveOperator(static_cast(sc.ch))) { + sc.SetState(SCE_AVE_OPERATOR); + } else if (sc.Match('#')) { + sc.SetState(SCE_AVE_ENUM); + sc.Forward(); + } + } + } + sc.Complete(); +} + +static void FoldAveDoc(Sci_PositionU startPos, Sci_Position length, int /* initStyle */, WordList *[], + Accessor &styler) { + Sci_PositionU lengthDoc = startPos + length; + int visibleChars = 0; + Sci_Position lineCurrent = styler.GetLine(startPos); + int levelPrev = styler.LevelAt(lineCurrent) & SC_FOLDLEVELNUMBERMASK; + int levelCurrent = levelPrev; + char chNext = static_cast(tolower(styler[startPos])); + bool foldCompact = styler.GetPropertyInt("fold.compact", 1) != 0; + int styleNext = styler.StyleAt(startPos); + char s[10] = ""; + + for (Sci_PositionU i = startPos; i < lengthDoc; i++) { + char ch = static_cast(tolower(chNext)); + chNext = static_cast(tolower(styler.SafeGetCharAt(i + 1))); + int style = styleNext; + styleNext = styler.StyleAt(i + 1); + bool atEOL = (ch == '\r' && chNext != '\n') || (ch == '\n'); + if (style == SCE_AVE_WORD) { + if (ch == 't' || ch == 'f' || ch == 'w' || ch == 'e') { + for (unsigned int j = 0; j < 6; j++) { + if (!iswordchar(styler[i + j])) { + break; + } + s[j] = static_cast(tolower(styler[i + j])); + s[j + 1] = '\0'; + } + + if ((strcmp(s, "then") == 0) || (strcmp(s, "for") == 0) || (strcmp(s, "while") == 0)) { + levelCurrent++; + } + if ((strcmp(s, "end") == 0) || (strcmp(s, "elseif") == 0)) { + // Normally "elseif" and "then" will be on the same line and will cancel + // each other out. // As implemented, this does not support fold.at.else. + levelCurrent--; + } + } + } else if (style == SCE_AVE_OPERATOR) { + if (ch == '{' || ch == '(') { + levelCurrent++; + } else if (ch == '}' || ch == ')') { + levelCurrent--; + } + } + + if (atEOL) { + int lev = levelPrev; + if (visibleChars == 0 && foldCompact) { + lev |= SC_FOLDLEVELWHITEFLAG; + } + if ((levelCurrent > levelPrev) && (visibleChars > 0)) { + lev |= SC_FOLDLEVELHEADERFLAG; + } + if (lev != styler.LevelAt(lineCurrent)) { + styler.SetLevel(lineCurrent, lev); + } + lineCurrent++; + levelPrev = levelCurrent; + visibleChars = 0; + } + if (!isspacechar(ch)) { + visibleChars++; + } + } + // Fill in the real level of the next line, keeping the current flags as they will be filled in later + + int flagsNext = styler.LevelAt(lineCurrent) & ~SC_FOLDLEVELNUMBERMASK; + styler.SetLevel(lineCurrent, levelPrev | flagsNext); +} + +LexerModule lmAVE(SCLEX_AVE, ColouriseAveDoc, "ave", FoldAveDoc); + diff --git a/libs/qscintilla_2.14.1/scintilla/lexers/LexAVS.cpp b/libs/qscintilla_2.14.1/scintilla/lexers/LexAVS.cpp new file mode 100644 index 000000000..df5223f8d --- /dev/null +++ b/libs/qscintilla_2.14.1/scintilla/lexers/LexAVS.cpp @@ -0,0 +1,291 @@ +// Scintilla source code edit control +/** @file LexAVS.cxx + ** Lexer for AviSynth. + **/ +// Copyright 2012 by Bruno Barbieri +// Heavily based on LexPOV by Neil Hodgson +// The License.txt file describes the conditions under which this software may be distributed. + +#include +#include +#include +#include +#include +#include + +#include "ILexer.h" +#include "Scintilla.h" +#include "SciLexer.h" + +#include "WordList.h" +#include "LexAccessor.h" +#include "Accessor.h" +#include "StyleContext.h" +#include "CharacterSet.h" +#include "LexerModule.h" + +using namespace Scintilla; + +static inline bool IsAWordChar(const int ch) { + return (ch < 0x80) && (isalnum(ch) || ch == '_'); +} + +static inline bool IsAWordStart(int ch) { + return isalpha(ch) || (ch != ' ' && ch != '\n' && ch != '(' && ch != '.' && ch != ','); +} + +static inline bool IsANumberChar(int ch) { + // Not exactly following number definition (several dots are seen as OK, etc.) + // but probably enough in most cases. + return (ch < 0x80) && + (isdigit(ch) || ch == '.' || ch == '-' || ch == '+'); +} + +static void ColouriseAvsDoc( + Sci_PositionU startPos, + Sci_Position length, + int initStyle, + WordList *keywordlists[], + Accessor &styler) { + + WordList &keywords = *keywordlists[0]; + WordList &filters = *keywordlists[1]; + WordList &plugins = *keywordlists[2]; + WordList &functions = *keywordlists[3]; + WordList &clipProperties = *keywordlists[4]; + WordList &userDefined = *keywordlists[5]; + + Sci_Position currentLine = styler.GetLine(startPos); + // Initialize the block comment nesting level, if we are inside such a comment. + int blockCommentLevel = 0; + if (initStyle == SCE_AVS_COMMENTBLOCK || initStyle == SCE_AVS_COMMENTBLOCKN) { + blockCommentLevel = styler.GetLineState(currentLine - 1); + } + + // Do not leak onto next line + if (initStyle == SCE_AVS_COMMENTLINE) { + initStyle = SCE_AVS_DEFAULT; + } + + StyleContext sc(startPos, length, initStyle, styler); + + for (; sc.More(); sc.Forward()) { + if (sc.atLineEnd) { + // Update the line state, so it can be seen by next line + currentLine = styler.GetLine(sc.currentPos); + if (sc.state == SCE_AVS_COMMENTBLOCK || sc.state == SCE_AVS_COMMENTBLOCKN) { + // Inside a block comment, we set the line state + styler.SetLineState(currentLine, blockCommentLevel); + } else { + // Reset the line state + styler.SetLineState(currentLine, 0); + } + } + + // Determine if the current state should terminate. + if (sc.state == SCE_AVS_OPERATOR) { + sc.SetState(SCE_AVS_DEFAULT); + } else if (sc.state == SCE_AVS_NUMBER) { + // We stop the number definition on non-numerical non-dot non-sign char + if (!IsANumberChar(sc.ch)) { + sc.SetState(SCE_AVS_DEFAULT); + } + } else if (sc.state == SCE_AVS_IDENTIFIER) { + if (!IsAWordChar(sc.ch)) { + char s[100]; + sc.GetCurrentLowered(s, sizeof(s)); + + if (keywords.InList(s)) { + sc.ChangeState(SCE_AVS_KEYWORD); + } else if (filters.InList(s)) { + sc.ChangeState(SCE_AVS_FILTER); + } else if (plugins.InList(s)) { + sc.ChangeState(SCE_AVS_PLUGIN); + } else if (functions.InList(s)) { + sc.ChangeState(SCE_AVS_FUNCTION); + } else if (clipProperties.InList(s)) { + sc.ChangeState(SCE_AVS_CLIPPROP); + } else if (userDefined.InList(s)) { + sc.ChangeState(SCE_AVS_USERDFN); + } + sc.SetState(SCE_AVS_DEFAULT); + } + } else if (sc.state == SCE_AVS_COMMENTBLOCK) { + if (sc.Match('/', '*')) { + blockCommentLevel++; + sc.Forward(); + } else if (sc.Match('*', '/') && blockCommentLevel > 0) { + blockCommentLevel--; + sc.Forward(); + if (blockCommentLevel == 0) { + sc.ForwardSetState(SCE_AVS_DEFAULT); + } + } + } else if (sc.state == SCE_AVS_COMMENTBLOCKN) { + if (sc.Match('[', '*')) { + blockCommentLevel++; + sc.Forward(); + } else if (sc.Match('*', ']') && blockCommentLevel > 0) { + blockCommentLevel--; + sc.Forward(); + if (blockCommentLevel == 0) { + sc.ForwardSetState(SCE_AVS_DEFAULT); + } + } + } else if (sc.state == SCE_AVS_COMMENTLINE) { + if (sc.atLineEnd) { + sc.ForwardSetState(SCE_AVS_DEFAULT); + } + } else if (sc.state == SCE_AVS_STRING) { + if (sc.ch == '\"') { + sc.ForwardSetState(SCE_AVS_DEFAULT); + } + } else if (sc.state == SCE_AVS_TRIPLESTRING) { + if (sc.Match("\"\"\"")) { + sc.Forward(); + sc.Forward(); + sc.ForwardSetState(SCE_AVS_DEFAULT); + } + } + + // Determine if a new state should be entered. + if (sc.state == SCE_AVS_DEFAULT) { + if (IsADigit(sc.ch) || (sc.ch == '.' && IsADigit(sc.chNext))) { + sc.SetState(SCE_AVS_NUMBER); + } else if (IsADigit(sc.ch) || (sc.ch == ',' && IsADigit(sc.chNext))) { + sc.Forward(); + sc.SetState(SCE_AVS_NUMBER); + } else if (sc.Match('/', '*')) { + blockCommentLevel = 1; + sc.SetState(SCE_AVS_COMMENTBLOCK); + sc.Forward(); // Eat the * so it isn't used for the end of the comment + } else if (sc.Match('[', '*')) { + blockCommentLevel = 1; + sc.SetState(SCE_AVS_COMMENTBLOCKN); + sc.Forward(); // Eat the * so it isn't used for the end of the comment + } else if (sc.ch == '#') { + sc.SetState(SCE_AVS_COMMENTLINE); + } else if (sc.ch == '\"') { + if (sc.Match("\"\"\"")) { + sc.SetState(SCE_AVS_TRIPLESTRING); + } else { + sc.SetState(SCE_AVS_STRING); + } + } else if (isoperator(static_cast(sc.ch))) { + sc.SetState(SCE_AVS_OPERATOR); + } else if (IsAWordStart(sc.ch)) { + sc.SetState(SCE_AVS_IDENTIFIER); + } + } + } + + // End of file: complete any pending changeState + if (sc.state == SCE_AVS_IDENTIFIER) { + if (!IsAWordChar(sc.ch)) { + char s[100]; + sc.GetCurrentLowered(s, sizeof(s)); + + if (keywords.InList(s)) { + sc.ChangeState(SCE_AVS_KEYWORD); + } else if (filters.InList(s)) { + sc.ChangeState(SCE_AVS_FILTER); + } else if (plugins.InList(s)) { + sc.ChangeState(SCE_AVS_PLUGIN); + } else if (functions.InList(s)) { + sc.ChangeState(SCE_AVS_FUNCTION); + } else if (clipProperties.InList(s)) { + sc.ChangeState(SCE_AVS_CLIPPROP); + } else if (userDefined.InList(s)) { + sc.ChangeState(SCE_AVS_USERDFN); + } + sc.SetState(SCE_AVS_DEFAULT); + } + } + + sc.Complete(); +} + +static void FoldAvsDoc( + Sci_PositionU startPos, + Sci_Position length, + int initStyle, + WordList *[], + Accessor &styler) { + + bool foldComment = styler.GetPropertyInt("fold.comment") != 0; + bool foldCompact = styler.GetPropertyInt("fold.compact", 1) != 0; + Sci_PositionU endPos = startPos + length; + int visibleChars = 0; + Sci_Position lineCurrent = styler.GetLine(startPos); + int levelPrev = styler.LevelAt(lineCurrent) & SC_FOLDLEVELNUMBERMASK; + int levelCurrent = levelPrev; + char chNext = styler[startPos]; + int styleNext = styler.StyleAt(startPos); + int style = initStyle; + + for (Sci_PositionU i = startPos; i < endPos; i++) { + char ch = chNext; + chNext = styler.SafeGetCharAt(i + 1); + int stylePrev = style; + style = styleNext; + styleNext = styler.StyleAt(i + 1); + bool atEOL = (ch == '\r' && chNext != '\n') || (ch == '\n'); + if (foldComment && style == SCE_AVS_COMMENTBLOCK) { + if (stylePrev != SCE_AVS_COMMENTBLOCK) { + levelCurrent++; + } else if ((styleNext != SCE_AVS_COMMENTBLOCK) && !atEOL) { + // Comments don't end at end of line and the next character may be unstyled. + levelCurrent--; + } + } + + if (foldComment && style == SCE_AVS_COMMENTBLOCKN) { + if (stylePrev != SCE_AVS_COMMENTBLOCKN) { + levelCurrent++; + } else if ((styleNext != SCE_AVS_COMMENTBLOCKN) && !atEOL) { + // Comments don't end at end of line and the next character may be unstyled. + levelCurrent--; + } + } + + if (style == SCE_AVS_OPERATOR) { + if (ch == '{') { + levelCurrent++; + } else if (ch == '}') { + levelCurrent--; + } + } + + if (atEOL) { + int lev = levelPrev; + if (visibleChars == 0 && foldCompact) + lev |= SC_FOLDLEVELWHITEFLAG; + if ((levelCurrent > levelPrev) && (visibleChars > 0)) + lev |= SC_FOLDLEVELHEADERFLAG; + if (lev != styler.LevelAt(lineCurrent)) { + styler.SetLevel(lineCurrent, lev); + } + lineCurrent++; + levelPrev = levelCurrent; + visibleChars = 0; + } + + if (!isspacechar(ch)) + visibleChars++; + } + // Fill in the real level of the next line, keeping the current flags as they will be filled in later + int flagsNext = styler.LevelAt(lineCurrent) & ~SC_FOLDLEVELNUMBERMASK; + styler.SetLevel(lineCurrent, levelPrev | flagsNext); +} + +static const char * const avsWordLists[] = { + "Keywords", + "Filters", + "Plugins", + "Functions", + "Clip properties", + "User defined functions", + 0, +}; + +LexerModule lmAVS(SCLEX_AVS, ColouriseAvsDoc, "avs", FoldAvsDoc, avsWordLists); diff --git a/libs/qscintilla_2.14.1/scintilla/lexers/LexAbaqus.cpp b/libs/qscintilla_2.14.1/scintilla/lexers/LexAbaqus.cpp new file mode 100644 index 000000000..96a7b886e --- /dev/null +++ b/libs/qscintilla_2.14.1/scintilla/lexers/LexAbaqus.cpp @@ -0,0 +1,603 @@ +// Scintilla source code edit control +/** @file LexABAQUS.cxx + ** Lexer for ABAQUS. Based on the lexer for APDL by Hadar Raz. + ** By Sergio Lucato. + ** Sort of completely rewritten by Gertjan Kloosterman + **/ +// The License.txt file describes the conditions under which this software may be distributed. + +// Code folding copyied and modified from LexBasic.cxx + +#include +#include +#include +#include +#include +#include + +#include "ILexer.h" +#include "Scintilla.h" +#include "SciLexer.h" + +#include "WordList.h" +#include "LexAccessor.h" +#include "Accessor.h" +#include "StyleContext.h" +#include "CharacterSet.h" +#include "LexerModule.h" + +using namespace Scintilla; + +static inline bool IsAKeywordChar(const int ch) { + return (ch < 0x80 && (isalnum(ch) || (ch == '_') || (ch == ' '))); +} + +static inline bool IsASetChar(const int ch) { + return (ch < 0x80 && (isalnum(ch) || (ch == '_') || (ch == '.') || (ch == '-'))); +} + +static void ColouriseABAQUSDoc(Sci_PositionU startPos, Sci_Position length, int initStyle, WordList*[] /* *keywordlists[] */, + Accessor &styler) { + enum localState { KW_LINE_KW, KW_LINE_COMMA, KW_LINE_PAR, KW_LINE_EQ, KW_LINE_VAL, \ + DAT_LINE_VAL, DAT_LINE_COMMA,\ + COMMENT_LINE,\ + ST_ERROR, LINE_END } state ; + + // Do not leak onto next line + state = LINE_END ; + initStyle = SCE_ABAQUS_DEFAULT; + StyleContext sc(startPos, length, initStyle, styler); + + // Things are actually quite simple + // we have commentlines + // keywordlines and datalines + // On a data line there will only be colouring of numbers + // a keyword line is constructed as + // *word,[ paramname[=paramvalue]]* + // if the line ends with a , the keyword line continues onto the new line + + for (; sc.More(); sc.Forward()) { + switch ( state ) { + case KW_LINE_KW : + if ( sc.atLineEnd ) { + // finished the line in keyword state, switch to LINE_END + sc.SetState(SCE_ABAQUS_DEFAULT) ; + state = LINE_END ; + } else if ( IsAKeywordChar(sc.ch) ) { + // nothing changes + state = KW_LINE_KW ; + } else if ( sc.ch == ',' ) { + // Well well we say a comma, arguments *MUST* follow + sc.SetState(SCE_ABAQUS_OPERATOR) ; + state = KW_LINE_COMMA ; + } else { + // Flag an error + sc.SetState(SCE_ABAQUS_PROCESSOR) ; + state = ST_ERROR ; + } + // Done with processing + break ; + case KW_LINE_COMMA : + // acomma on a keywordline was seen + if ( IsAKeywordChar(sc.ch)) { + sc.SetState(SCE_ABAQUS_ARGUMENT) ; + state = KW_LINE_PAR ; + } else if ( sc.atLineEnd || (sc.ch == ',') ) { + // we remain in keyword mode + state = KW_LINE_COMMA ; + } else if ( sc.ch == ' ' ) { + sc.SetState(SCE_ABAQUS_DEFAULT) ; + state = KW_LINE_COMMA ; + } else { + // Anything else constitutes an error + sc.SetState(SCE_ABAQUS_PROCESSOR) ; + state = ST_ERROR ; + } + break ; + case KW_LINE_PAR : + if ( sc.atLineEnd ) { + sc.SetState(SCE_ABAQUS_DEFAULT) ; + state = LINE_END ; + } else if ( IsAKeywordChar(sc.ch) || (sc.ch == '-') ) { + // remain in this state + state = KW_LINE_PAR ; + } else if ( sc.ch == ',' ) { + sc.SetState(SCE_ABAQUS_OPERATOR) ; + state = KW_LINE_COMMA ; + } else if ( sc.ch == '=' ) { + sc.SetState(SCE_ABAQUS_OPERATOR) ; + state = KW_LINE_EQ ; + } else { + // Anything else constitutes an error + sc.SetState(SCE_ABAQUS_PROCESSOR) ; + state = ST_ERROR ; + } + break ; + case KW_LINE_EQ : + if ( sc.ch == ' ' ) { + sc.SetState(SCE_ABAQUS_DEFAULT) ; + // remain in this state + state = KW_LINE_EQ ; + } else if ( IsADigit(sc.ch) || (sc.ch == '-') || (sc.ch == '.' && IsADigit(sc.chNext)) ) { + sc.SetState(SCE_ABAQUS_NUMBER) ; + state = KW_LINE_VAL ; + } else if ( IsAKeywordChar(sc.ch) ) { + sc.SetState(SCE_ABAQUS_DEFAULT) ; + state = KW_LINE_VAL ; + } else if ( (sc.ch == '\'') || (sc.ch == '\"') ) { + sc.SetState(SCE_ABAQUS_STRING) ; + state = KW_LINE_VAL ; + } else { + sc.SetState(SCE_ABAQUS_PROCESSOR) ; + state = ST_ERROR ; + } + break ; + case KW_LINE_VAL : + if ( sc.atLineEnd ) { + sc.SetState(SCE_ABAQUS_DEFAULT) ; + state = LINE_END ; + } else if ( IsASetChar(sc.ch) && (sc.state == SCE_ABAQUS_DEFAULT) ) { + // nothing changes + state = KW_LINE_VAL ; + } else if (( (IsADigit(sc.ch) || sc.ch == '.' || (sc.ch == 'e' || sc.ch == 'E') || + ((sc.ch == '+' || sc.ch == '-') && (sc.chPrev == 'e' || sc.chPrev == 'E')))) && + (sc.state == SCE_ABAQUS_NUMBER)) { + // remain in number mode + state = KW_LINE_VAL ; + } else if (sc.state == SCE_ABAQUS_STRING) { + // accept everything until a closing quote + if ( sc.ch == '\'' || sc.ch == '\"' ) { + sc.SetState(SCE_ABAQUS_DEFAULT) ; + state = KW_LINE_VAL ; + } + } else if ( sc.ch == ',' ) { + sc.SetState(SCE_ABAQUS_OPERATOR) ; + state = KW_LINE_COMMA ; + } else { + // anything else is an error + sc.SetState(SCE_ABAQUS_PROCESSOR) ; + state = ST_ERROR ; + } + break ; + case DAT_LINE_VAL : + if ( sc.atLineEnd ) { + sc.SetState(SCE_ABAQUS_DEFAULT) ; + state = LINE_END ; + } else if ( IsASetChar(sc.ch) && (sc.state == SCE_ABAQUS_DEFAULT) ) { + // nothing changes + state = DAT_LINE_VAL ; + } else if (( (IsADigit(sc.ch) || sc.ch == '.' || (sc.ch == 'e' || sc.ch == 'E') || + ((sc.ch == '+' || sc.ch == '-') && (sc.chPrev == 'e' || sc.chPrev == 'E')))) && + (sc.state == SCE_ABAQUS_NUMBER)) { + // remain in number mode + state = DAT_LINE_VAL ; + } else if (sc.state == SCE_ABAQUS_STRING) { + // accept everything until a closing quote + if ( sc.ch == '\'' || sc.ch == '\"' ) { + sc.SetState(SCE_ABAQUS_DEFAULT) ; + state = DAT_LINE_VAL ; + } + } else if ( sc.ch == ',' ) { + sc.SetState(SCE_ABAQUS_OPERATOR) ; + state = DAT_LINE_COMMA ; + } else { + // anything else is an error + sc.SetState(SCE_ABAQUS_PROCESSOR) ; + state = ST_ERROR ; + } + break ; + case DAT_LINE_COMMA : + // a comma on a data line was seen + if ( sc.atLineEnd ) { + sc.SetState(SCE_ABAQUS_DEFAULT) ; + state = LINE_END ; + } else if ( sc.ch == ' ' ) { + sc.SetState(SCE_ABAQUS_DEFAULT) ; + state = DAT_LINE_COMMA ; + } else if (sc.ch == ',') { + sc.SetState(SCE_ABAQUS_OPERATOR) ; + state = DAT_LINE_COMMA ; + } else if ( IsADigit(sc.ch) || (sc.ch == '-')|| (sc.ch == '.' && IsADigit(sc.chNext)) ) { + sc.SetState(SCE_ABAQUS_NUMBER) ; + state = DAT_LINE_VAL ; + } else if ( IsAKeywordChar(sc.ch) ) { + sc.SetState(SCE_ABAQUS_DEFAULT) ; + state = DAT_LINE_VAL ; + } else if ( (sc.ch == '\'') || (sc.ch == '\"') ) { + sc.SetState(SCE_ABAQUS_STRING) ; + state = DAT_LINE_VAL ; + } else { + sc.SetState(SCE_ABAQUS_PROCESSOR) ; + state = ST_ERROR ; + } + break ; + case COMMENT_LINE : + if ( sc.atLineEnd ) { + sc.SetState(SCE_ABAQUS_DEFAULT) ; + state = LINE_END ; + } + break ; + case ST_ERROR : + if ( sc.atLineEnd ) { + sc.SetState(SCE_ABAQUS_DEFAULT) ; + state = LINE_END ; + } + break ; + case LINE_END : + if ( sc.atLineEnd || sc.ch == ' ' ) { + // nothing changes + state = LINE_END ; + } else if ( sc.ch == '*' ) { + if ( sc.chNext == '*' ) { + state = COMMENT_LINE ; + sc.SetState(SCE_ABAQUS_COMMENT) ; + } else { + state = KW_LINE_KW ; + sc.SetState(SCE_ABAQUS_STARCOMMAND) ; + } + } else { + // it must be a data line, things are as if we are in DAT_LINE_COMMA + if ( sc.ch == ',' ) { + sc.SetState(SCE_ABAQUS_OPERATOR) ; + state = DAT_LINE_COMMA ; + } else if ( IsADigit(sc.ch) || (sc.ch == '-')|| (sc.ch == '.' && IsADigit(sc.chNext)) ) { + sc.SetState(SCE_ABAQUS_NUMBER) ; + state = DAT_LINE_VAL ; + } else if ( IsAKeywordChar(sc.ch) ) { + sc.SetState(SCE_ABAQUS_DEFAULT) ; + state = DAT_LINE_VAL ; + } else if ( (sc.ch == '\'') || (sc.ch == '\"') ) { + sc.SetState(SCE_ABAQUS_STRING) ; + state = DAT_LINE_VAL ; + } else { + sc.SetState(SCE_ABAQUS_PROCESSOR) ; + state = ST_ERROR ; + } + } + break ; + } + } + sc.Complete(); +} + +//------------------------------------------------------------------------------ +// This copyied and modified from LexBasic.cxx +//------------------------------------------------------------------------------ + +/* Bits: + * 1 - whitespace + * 2 - operator + * 4 - identifier + * 8 - decimal digit + * 16 - hex digit + * 32 - bin digit + */ +static int character_classification[128] = +{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 2, 0, 2, 2, 2, 2, 2, 2, 2, 6, 2, 2, 2, 10, 6, + 60, 60, 28, 28, 28, 28, 28, 28, 28, 28, 2, 2, 2, 2, 2, 2, + 2, 20, 20, 20, 20, 20, 20, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 2, 2, 2, 2, 4, + 2, 20, 20, 20, 20, 20, 20, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 2, 2, 2, 2, 0 +}; + +static bool IsSpace(int c) { + return c < 128 && (character_classification[c] & 1); +} + +static bool IsIdentifier(int c) { + return c < 128 && (character_classification[c] & 4); +} + +static int LowerCase(int c) +{ + if (c >= 'A' && c <= 'Z') + return 'a' + c - 'A'; + return c; +} + +static Sci_Position LineEnd(Sci_Position line, Accessor &styler) +{ + const Sci_Position docLines = styler.GetLine(styler.Length() - 1); // Available last line + Sci_Position eol_pos ; + // if the line is the last line, the eol_pos is styler.Length() + // eol will contain a new line, or a virtual new line + if ( docLines == line ) + eol_pos = styler.Length() ; + else + eol_pos = styler.LineStart(line + 1) - 1; + return eol_pos ; +} + +static Sci_Position LineStart(Sci_Position line, Accessor &styler) +{ + return styler.LineStart(line) ; +} + +// LineType +// +// bits determines the line type +// 1 : data line +// 2 : only whitespace +// 3 : data line with only whitespace +// 4 : keyword line +// 5 : block open keyword line +// 6 : block close keyword line +// 7 : keyword line in error +// 8 : comment line +static int LineType(Sci_Position line, Accessor &styler) { + Sci_Position pos = LineStart(line, styler) ; + Sci_Position eol_pos = LineEnd(line, styler) ; + + int c ; + char ch = ' '; + + Sci_Position i = pos ; + while ( i < eol_pos ) { + c = styler.SafeGetCharAt(i); + ch = static_cast(LowerCase(c)); + // We can say something as soon as no whitespace + // was encountered + if ( !IsSpace(c) ) + break ; + i++ ; + } + + if ( i >= eol_pos ) { + // This is a whitespace line, currently + // classifies as data line + return 3 ; + } + + if ( ch != '*' ) { + // This is a data line + return 1 ; + } + + if ( i == eol_pos - 1 ) { + // Only a single *, error but make keyword line + return 4+3 ; + } + + // This means we can have a second character + // if that is also a * this means a comment + // otherwise it is a keyword. + c = styler.SafeGetCharAt(i+1); + ch = static_cast(LowerCase(c)); + if ( ch == '*' ) { + return 8 ; + } + + // At this point we know this is a keyword line + // the character at position i is a * + // it is not a comment line + char word[256] ; + int wlen = 0; + + word[wlen] = '*' ; + wlen++ ; + + i++ ; + while ( (i < eol_pos) && (wlen < 255) ) { + c = styler.SafeGetCharAt(i); + ch = static_cast(LowerCase(c)); + + if ( (!IsSpace(c)) && (!IsIdentifier(c)) ) + break ; + + if ( IsIdentifier(c) ) { + word[wlen] = ch ; + wlen++ ; + } + + i++ ; + } + + word[wlen] = 0 ; + + // Make a comparison + if ( !strcmp(word, "*step") || + !strcmp(word, "*part") || + !strcmp(word, "*instance") || + !strcmp(word, "*assembly")) { + return 4+1 ; + } + + if ( !strcmp(word, "*endstep") || + !strcmp(word, "*endpart") || + !strcmp(word, "*endinstance") || + !strcmp(word, "*endassembly")) { + return 4+2 ; + } + + return 4 ; +} + +static void SafeSetLevel(Sci_Position line, int level, Accessor &styler) +{ + if ( line < 0 ) + return ; + + int mask = ((~SC_FOLDLEVELHEADERFLAG) | (~SC_FOLDLEVELWHITEFLAG)); + + if ( (level & mask) < 0 ) + return ; + + if ( styler.LevelAt(line) != level ) + styler.SetLevel(line, level) ; +} + +static void FoldABAQUSDoc(Sci_PositionU startPos, Sci_Position length, int, +WordList *[], Accessor &styler) { + Sci_Position startLine = styler.GetLine(startPos) ; + Sci_Position endLine = styler.GetLine(startPos+length-1) ; + + // bool foldCompact = styler.GetPropertyInt("fold.compact", 1) != 0; + // We want to deal with all the cases + // To know the correct indentlevel, we need to look back to the + // previous command line indentation level + // order of formatting keyline datalines commentlines + Sci_Position beginData = -1 ; + Sci_Position beginComment = -1 ; + Sci_Position prvKeyLine = startLine ; + Sci_Position prvKeyLineTp = 0 ; + + // Scan until we find the previous keyword line + // this will give us the level reference that we need + while ( prvKeyLine > 0 ) { + prvKeyLine-- ; + prvKeyLineTp = LineType(prvKeyLine, styler) ; + if ( prvKeyLineTp & 4 ) + break ; + } + + // Determine the base line level of all lines following + // the previous keyword + // new keyword lines are placed on this level + //if ( prvKeyLineTp & 4 ) { + int level = styler.LevelAt(prvKeyLine) & ~SC_FOLDLEVELHEADERFLAG ; + //} + + // uncomment line below if weird behaviour continues + prvKeyLine = -1 ; + + // Now start scanning over the lines. + for ( Sci_Position line = startLine; line <= endLine; line++ ) { + int lineType = LineType(line, styler) ; + + // Check for comment line + if ( lineType == 8 ) { + if ( beginComment < 0 ) { + beginComment = line ; + } + } + + // Check for data line + if ( (lineType == 1) || (lineType == 3) ) { + if ( beginData < 0 ) { + if ( beginComment >= 0 ) { + beginData = beginComment ; + } else { + beginData = line ; + } + } + beginComment = -1 ; + } + + // Check for keywordline. + // As soon as a keyword line is encountered, we can set the + // levels of everything from the previous keyword line to this one + if ( lineType & 4 ) { + // this is a keyword, we can now place the previous keyword + // all its data lines and the remainder + + // Write comments and data line + if ( beginComment < 0 ) { + beginComment = line ; + } + + if ( beginData < 0 ) { + beginData = beginComment ; + if ( prvKeyLineTp != 5 ) + SafeSetLevel(prvKeyLine, level, styler) ; + else + SafeSetLevel(prvKeyLine, level | SC_FOLDLEVELHEADERFLAG, styler) ; + } else { + SafeSetLevel(prvKeyLine, level | SC_FOLDLEVELHEADERFLAG, styler) ; + } + + int datLevel = level + 1 ; + if ( !(prvKeyLineTp & 4) ) { + datLevel = level ; + } + + for ( Sci_Position ll = beginData; ll < beginComment; ll++ ) + SafeSetLevel(ll, datLevel, styler) ; + + // The keyword we just found is going to be written at another level + // if we have a type 5 and type 6 + if ( prvKeyLineTp == 5 ) { + level += 1 ; + } + + if ( prvKeyLineTp == 6 ) { + level -= 1 ; + if ( level < 0 ) { + level = 0 ; + } + } + + for ( Sci_Position lll = beginComment; lll < line; lll++ ) + SafeSetLevel(lll, level, styler) ; + + // wrap and reset + beginComment = -1 ; + beginData = -1 ; + prvKeyLine = line ; + prvKeyLineTp = lineType ; + } + + } + + if ( beginComment < 0 ) { + beginComment = endLine + 1 ; + } else { + // We need to find out whether this comment block is followed by + // a data line or a keyword line + const Sci_Position docLines = styler.GetLine(styler.Length() - 1); + + for ( Sci_Position line = endLine + 1; line <= docLines; line++ ) { + Sci_Position lineType = LineType(line, styler) ; + + if ( lineType != 8 ) { + if ( !(lineType & 4) ) { + beginComment = endLine + 1 ; + } + break ; + } + } + } + + if ( beginData < 0 ) { + beginData = beginComment ; + if ( prvKeyLineTp != 5 ) + SafeSetLevel(prvKeyLine, level, styler) ; + else + SafeSetLevel(prvKeyLine, level | SC_FOLDLEVELHEADERFLAG, styler) ; + } else { + SafeSetLevel(prvKeyLine, level | SC_FOLDLEVELHEADERFLAG, styler) ; + } + + int datLevel = level + 1 ; + if ( !(prvKeyLineTp & 4) ) { + datLevel = level ; + } + + for ( Sci_Position ll = beginData; ll < beginComment; ll++ ) + SafeSetLevel(ll, datLevel, styler) ; + + if ( prvKeyLineTp == 5 ) { + level += 1 ; + } + + if ( prvKeyLineTp == 6 ) { + level -= 1 ; + } + for ( Sci_Position m = beginComment; m <= endLine; m++ ) + SafeSetLevel(m, level, styler) ; +} + +static const char * const abaqusWordListDesc[] = { + "processors", + "commands", + "slashommands", + "starcommands", + "arguments", + "functions", + 0 +}; + +LexerModule lmAbaqus(SCLEX_ABAQUS, ColouriseABAQUSDoc, "abaqus", FoldABAQUSDoc, abaqusWordListDesc); diff --git a/libs/qscintilla_2.14.1/scintilla/lexers/LexAda.cpp b/libs/qscintilla_2.14.1/scintilla/lexers/LexAda.cpp new file mode 100644 index 000000000..9d7f5d0f7 --- /dev/null +++ b/libs/qscintilla_2.14.1/scintilla/lexers/LexAda.cpp @@ -0,0 +1,513 @@ +// Scintilla source code edit control +/** @file LexAda.cxx + ** Lexer for Ada 95 + **/ +// Copyright 2002 by Sergey Koshcheyev +// The License.txt file describes the conditions under which this software may be distributed. + +#include +#include +#include +#include +#include +#include + +#include + +#include "ILexer.h" +#include "Scintilla.h" +#include "SciLexer.h" + +#include "WordList.h" +#include "LexAccessor.h" +#include "Accessor.h" +#include "StyleContext.h" +#include "CharacterSet.h" +#include "LexerModule.h" + +using namespace Scintilla; + +/* + * Interface + */ + +static void ColouriseDocument( + Sci_PositionU startPos, + Sci_Position length, + int initStyle, + WordList *keywordlists[], + Accessor &styler); + +static const char * const adaWordListDesc[] = { + "Keywords", + 0 +}; + +LexerModule lmAda(SCLEX_ADA, ColouriseDocument, "ada", NULL, adaWordListDesc); + +/* + * Implementation + */ + +// Functions that have apostropheStartsAttribute as a parameter set it according to whether +// an apostrophe encountered after processing the current token will start an attribute or +// a character literal. +static void ColouriseCharacter(StyleContext& sc, bool& apostropheStartsAttribute); +static void ColouriseComment(StyleContext& sc, bool& apostropheStartsAttribute); +static void ColouriseContext(StyleContext& sc, char chEnd, int stateEOL); +static void ColouriseDelimiter(StyleContext& sc, bool& apostropheStartsAttribute); +static void ColouriseLabel(StyleContext& sc, WordList& keywords, bool& apostropheStartsAttribute); +static void ColouriseNumber(StyleContext& sc, bool& apostropheStartsAttribute); +static void ColouriseString(StyleContext& sc, bool& apostropheStartsAttribute); +static void ColouriseWhiteSpace(StyleContext& sc, bool& apostropheStartsAttribute); +static void ColouriseWord(StyleContext& sc, WordList& keywords, bool& apostropheStartsAttribute); + +static inline bool IsDelimiterCharacter(int ch); +static inline bool IsSeparatorOrDelimiterCharacter(int ch); +static bool IsValidIdentifier(const std::string& identifier); +static bool IsValidNumber(const std::string& number); +static inline bool IsWordStartCharacter(int ch); +static inline bool IsWordCharacter(int ch); + +static void ColouriseCharacter(StyleContext& sc, bool& apostropheStartsAttribute) { + apostropheStartsAttribute = true; + + sc.SetState(SCE_ADA_CHARACTER); + + // Skip the apostrophe and one more character (so that '' is shown as non-terminated and ''' + // is handled correctly) + sc.Forward(); + sc.Forward(); + + ColouriseContext(sc, '\'', SCE_ADA_CHARACTEREOL); +} + +static void ColouriseContext(StyleContext& sc, char chEnd, int stateEOL) { + while (!sc.atLineEnd && !sc.Match(chEnd)) { + sc.Forward(); + } + + if (!sc.atLineEnd) { + sc.ForwardSetState(SCE_ADA_DEFAULT); + } else { + sc.ChangeState(stateEOL); + } +} + +static void ColouriseComment(StyleContext& sc, bool& /*apostropheStartsAttribute*/) { + // Apostrophe meaning is not changed, but the parameter is present for uniformity + + sc.SetState(SCE_ADA_COMMENTLINE); + + while (!sc.atLineEnd) { + sc.Forward(); + } +} + +static void ColouriseDelimiter(StyleContext& sc, bool& apostropheStartsAttribute) { + apostropheStartsAttribute = sc.Match (')'); + sc.SetState(SCE_ADA_DELIMITER); + sc.ForwardSetState(SCE_ADA_DEFAULT); +} + +static void ColouriseLabel(StyleContext& sc, WordList& keywords, bool& apostropheStartsAttribute) { + apostropheStartsAttribute = false; + + sc.SetState(SCE_ADA_LABEL); + + // Skip "<<" + sc.Forward(); + sc.Forward(); + + std::string identifier; + + while (!sc.atLineEnd && !IsSeparatorOrDelimiterCharacter(sc.ch)) { + identifier += static_cast(tolower(sc.ch)); + sc.Forward(); + } + + // Skip ">>" + if (sc.Match('>', '>')) { + sc.Forward(); + sc.Forward(); + } else { + sc.ChangeState(SCE_ADA_ILLEGAL); + } + + // If the name is an invalid identifier or a keyword, then make it invalid label + if (!IsValidIdentifier(identifier) || keywords.InList(identifier.c_str())) { + sc.ChangeState(SCE_ADA_ILLEGAL); + } + + sc.SetState(SCE_ADA_DEFAULT); + +} + +static void ColouriseNumber(StyleContext& sc, bool& apostropheStartsAttribute) { + apostropheStartsAttribute = true; + + std::string number; + sc.SetState(SCE_ADA_NUMBER); + + // Get all characters up to a delimiter or a separator, including points, but excluding + // double points (ranges). + while (!IsSeparatorOrDelimiterCharacter(sc.ch) || (sc.ch == '.' && sc.chNext != '.')) { + number += static_cast(sc.ch); + sc.Forward(); + } + + // Special case: exponent with sign + if ((sc.chPrev == 'e' || sc.chPrev == 'E') && + (sc.ch == '+' || sc.ch == '-')) { + number += static_cast(sc.ch); + sc.Forward (); + + while (!IsSeparatorOrDelimiterCharacter(sc.ch)) { + number += static_cast(sc.ch); + sc.Forward(); + } + } + + if (!IsValidNumber(number)) { + sc.ChangeState(SCE_ADA_ILLEGAL); + } + + sc.SetState(SCE_ADA_DEFAULT); +} + +static void ColouriseString(StyleContext& sc, bool& apostropheStartsAttribute) { + apostropheStartsAttribute = true; + + sc.SetState(SCE_ADA_STRING); + sc.Forward(); + + ColouriseContext(sc, '"', SCE_ADA_STRINGEOL); +} + +static void ColouriseWhiteSpace(StyleContext& sc, bool& /*apostropheStartsAttribute*/) { + // Apostrophe meaning is not changed, but the parameter is present for uniformity + sc.SetState(SCE_ADA_DEFAULT); + sc.ForwardSetState(SCE_ADA_DEFAULT); +} + +static void ColouriseWord(StyleContext& sc, WordList& keywords, bool& apostropheStartsAttribute) { + apostropheStartsAttribute = true; + sc.SetState(SCE_ADA_IDENTIFIER); + + std::string word; + + while (!sc.atLineEnd && !IsSeparatorOrDelimiterCharacter(sc.ch)) { + word += static_cast(tolower(sc.ch)); + sc.Forward(); + } + + if (!IsValidIdentifier(word)) { + sc.ChangeState(SCE_ADA_ILLEGAL); + + } else if (keywords.InList(word.c_str())) { + sc.ChangeState(SCE_ADA_WORD); + + if (word != "all") { + apostropheStartsAttribute = false; + } + } + + sc.SetState(SCE_ADA_DEFAULT); +} + +// +// ColouriseDocument +// + +static void ColouriseDocument( + Sci_PositionU startPos, + Sci_Position length, + int initStyle, + WordList *keywordlists[], + Accessor &styler) { + WordList &keywords = *keywordlists[0]; + + StyleContext sc(startPos, length, initStyle, styler); + + Sci_Position lineCurrent = styler.GetLine(startPos); + bool apostropheStartsAttribute = (styler.GetLineState(lineCurrent) & 1) != 0; + + while (sc.More()) { + if (sc.atLineEnd) { + // Go to the next line + sc.Forward(); + lineCurrent++; + + // Remember the line state for future incremental lexing + styler.SetLineState(lineCurrent, apostropheStartsAttribute); + + // Don't continue any styles on the next line + sc.SetState(SCE_ADA_DEFAULT); + } + + // Comments + if (sc.Match('-', '-')) { + ColouriseComment(sc, apostropheStartsAttribute); + + // Strings + } else if (sc.Match('"')) { + ColouriseString(sc, apostropheStartsAttribute); + + // Characters + } else if (sc.Match('\'') && !apostropheStartsAttribute) { + ColouriseCharacter(sc, apostropheStartsAttribute); + + // Labels + } else if (sc.Match('<', '<')) { + ColouriseLabel(sc, keywords, apostropheStartsAttribute); + + // Whitespace + } else if (IsASpace(sc.ch)) { + ColouriseWhiteSpace(sc, apostropheStartsAttribute); + + // Delimiters + } else if (IsDelimiterCharacter(sc.ch)) { + ColouriseDelimiter(sc, apostropheStartsAttribute); + + // Numbers + } else if (IsADigit(sc.ch) || sc.ch == '#') { + ColouriseNumber(sc, apostropheStartsAttribute); + + // Keywords or identifiers + } else { + ColouriseWord(sc, keywords, apostropheStartsAttribute); + } + } + + sc.Complete(); +} + +static inline bool IsDelimiterCharacter(int ch) { + switch (ch) { + case '&': + case '\'': + case '(': + case ')': + case '*': + case '+': + case ',': + case '-': + case '.': + case '/': + case ':': + case ';': + case '<': + case '=': + case '>': + case '|': + return true; + default: + return false; + } +} + +static inline bool IsSeparatorOrDelimiterCharacter(int ch) { + return IsASpace(ch) || IsDelimiterCharacter(ch); +} + +static bool IsValidIdentifier(const std::string& identifier) { + // First character can't be '_', so initialize the flag to true + bool lastWasUnderscore = true; + + size_t length = identifier.length(); + + // Zero-length identifiers are not valid (these can occur inside labels) + if (length == 0) { + return false; + } + + // Check for valid character at the start + if (!IsWordStartCharacter(identifier[0])) { + return false; + } + + // Check for only valid characters and no double underscores + for (size_t i = 0; i < length; i++) { + if (!IsWordCharacter(identifier[i]) || + (identifier[i] == '_' && lastWasUnderscore)) { + return false; + } + lastWasUnderscore = identifier[i] == '_'; + } + + // Check for underscore at the end + if (lastWasUnderscore == true) { + return false; + } + + // All checks passed + return true; +} + +static bool IsValidNumber(const std::string& number) { + size_t hashPos = number.find("#"); + bool seenDot = false; + + size_t i = 0; + size_t length = number.length(); + + if (length == 0) + return false; // Just in case + + // Decimal number + if (hashPos == std::string::npos) { + bool canBeSpecial = false; + + for (; i < length; i++) { + if (number[i] == '_') { + if (!canBeSpecial) { + return false; + } + canBeSpecial = false; + } else if (number[i] == '.') { + if (!canBeSpecial || seenDot) { + return false; + } + canBeSpecial = false; + seenDot = true; + } else if (IsADigit(number[i])) { + canBeSpecial = true; + } else { + break; + } + } + + if (!canBeSpecial) + return false; + } else { + // Based number + bool canBeSpecial = false; + int base = 0; + + // Parse base + for (; i < length; i++) { + int ch = number[i]; + if (ch == '_') { + if (!canBeSpecial) + return false; + canBeSpecial = false; + } else if (IsADigit(ch)) { + base = base * 10 + (ch - '0'); + if (base > 16) + return false; + canBeSpecial = true; + } else if (ch == '#' && canBeSpecial) { + break; + } else { + return false; + } + } + + if (base < 2) + return false; + if (i == length) + return false; + + i++; // Skip over '#' + + // Parse number + canBeSpecial = false; + + for (; i < length; i++) { + int ch = tolower(number[i]); + + if (ch == '_') { + if (!canBeSpecial) { + return false; + } + canBeSpecial = false; + + } else if (ch == '.') { + if (!canBeSpecial || seenDot) { + return false; + } + canBeSpecial = false; + seenDot = true; + + } else if (IsADigit(ch)) { + if (ch - '0' >= base) { + return false; + } + canBeSpecial = true; + + } else if (ch >= 'a' && ch <= 'f') { + if (ch - 'a' + 10 >= base) { + return false; + } + canBeSpecial = true; + + } else if (ch == '#' && canBeSpecial) { + break; + + } else { + return false; + } + } + + if (i == length) { + return false; + } + + i++; + } + + // Exponent (optional) + if (i < length) { + if (number[i] != 'e' && number[i] != 'E') + return false; + + i++; // Move past 'E' + + if (i == length) { + return false; + } + + if (number[i] == '+') + i++; + else if (number[i] == '-') { + if (seenDot) { + i++; + } else { + return false; // Integer literals should not have negative exponents + } + } + + if (i == length) { + return false; + } + + bool canBeSpecial = false; + + for (; i < length; i++) { + if (number[i] == '_') { + if (!canBeSpecial) { + return false; + } + canBeSpecial = false; + } else if (IsADigit(number[i])) { + canBeSpecial = true; + } else { + return false; + } + } + + if (!canBeSpecial) + return false; + } + + // if i == length, number was parsed successfully. + return i == length; +} + +static inline bool IsWordCharacter(int ch) { + return IsWordStartCharacter(ch) || IsADigit(ch); +} + +static inline bool IsWordStartCharacter(int ch) { + return (IsASCII(ch) && isalpha(ch)) || ch == '_'; +} diff --git a/libs/qscintilla_2.14.1/scintilla/lexers/LexAsm.cpp b/libs/qscintilla_2.14.1/scintilla/lexers/LexAsm.cpp new file mode 100644 index 000000000..bd82b1621 --- /dev/null +++ b/libs/qscintilla_2.14.1/scintilla/lexers/LexAsm.cpp @@ -0,0 +1,466 @@ +// Scintilla source code edit control +/** @file LexAsm.cxx + ** Lexer for Assembler, just for the MASM syntax + ** Written by The Black Horus + ** Enhancements and NASM stuff by Kein-Hong Man, 2003-10 + ** SCE_ASM_COMMENTBLOCK and SCE_ASM_CHARACTER are for future GNU as colouring + ** Converted to lexer object and added further folding features/properties by "Udo Lechner" + **/ +// Copyright 1998-2003 by Neil Hodgson +// The License.txt file describes the conditions under which this software may be distributed. + +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include "ILexer.h" +#include "Scintilla.h" +#include "SciLexer.h" + +#include "WordList.h" +#include "LexAccessor.h" +#include "StyleContext.h" +#include "CharacterSet.h" +#include "LexerModule.h" +#include "OptionSet.h" +#include "DefaultLexer.h" + +using namespace Scintilla; + +static inline bool IsAWordChar(const int ch) { + return (ch < 0x80) && (isalnum(ch) || ch == '.' || + ch == '_' || ch == '?'); +} + +static inline bool IsAWordStart(const int ch) { + return (ch < 0x80) && (isalnum(ch) || ch == '_' || ch == '.' || + ch == '%' || ch == '@' || ch == '$' || ch == '?'); +} + +static inline bool IsAsmOperator(const int ch) { + if ((ch < 0x80) && (isalnum(ch))) + return false; + // '.' left out as it is used to make up numbers + if (ch == '*' || ch == '/' || ch == '-' || ch == '+' || + ch == '(' || ch == ')' || ch == '=' || ch == '^' || + ch == '[' || ch == ']' || ch == '<' || ch == '&' || + ch == '>' || ch == ',' || ch == '|' || ch == '~' || + ch == '%' || ch == ':') + return true; + return false; +} + +static bool IsStreamCommentStyle(int style) { + return style == SCE_ASM_COMMENTDIRECTIVE || style == SCE_ASM_COMMENTBLOCK; +} + +static inline int LowerCase(int c) { + if (c >= 'A' && c <= 'Z') + return 'a' + c - 'A'; + return c; +} + +// An individual named option for use in an OptionSet + +// Options used for LexerAsm +struct OptionsAsm { + std::string delimiter; + bool fold; + bool foldSyntaxBased; + bool foldCommentMultiline; + bool foldCommentExplicit; + std::string foldExplicitStart; + std::string foldExplicitEnd; + bool foldExplicitAnywhere; + bool foldCompact; + OptionsAsm() { + delimiter = ""; + fold = false; + foldSyntaxBased = true; + foldCommentMultiline = false; + foldCommentExplicit = false; + foldExplicitStart = ""; + foldExplicitEnd = ""; + foldExplicitAnywhere = false; + foldCompact = true; + } +}; + +static const char * const asmWordListDesc[] = { + "CPU instructions", + "FPU instructions", + "Registers", + "Directives", + "Directive operands", + "Extended instructions", + "Directives4Foldstart", + "Directives4Foldend", + 0 +}; + +struct OptionSetAsm : public OptionSet { + OptionSetAsm() { + DefineProperty("lexer.asm.comment.delimiter", &OptionsAsm::delimiter, + "Character used for COMMENT directive's delimiter, replacing the standard \"~\"."); + + DefineProperty("fold", &OptionsAsm::fold); + + DefineProperty("fold.asm.syntax.based", &OptionsAsm::foldSyntaxBased, + "Set this property to 0 to disable syntax based folding."); + + DefineProperty("fold.asm.comment.multiline", &OptionsAsm::foldCommentMultiline, + "Set this property to 1 to enable folding multi-line comments."); + + DefineProperty("fold.asm.comment.explicit", &OptionsAsm::foldCommentExplicit, + "This option enables folding explicit fold points when using the Asm lexer. " + "Explicit fold points allows adding extra folding by placing a ;{ comment at the start and a ;} " + "at the end of a section that should fold."); + + DefineProperty("fold.asm.explicit.start", &OptionsAsm::foldExplicitStart, + "The string to use for explicit fold start points, replacing the standard ;{."); + + DefineProperty("fold.asm.explicit.end", &OptionsAsm::foldExplicitEnd, + "The string to use for explicit fold end points, replacing the standard ;}."); + + DefineProperty("fold.asm.explicit.anywhere", &OptionsAsm::foldExplicitAnywhere, + "Set this property to 1 to enable explicit fold points anywhere, not just in line comments."); + + DefineProperty("fold.compact", &OptionsAsm::foldCompact); + + DefineWordListSets(asmWordListDesc); + } +}; + +class LexerAsm : public DefaultLexer { + WordList cpuInstruction; + WordList mathInstruction; + WordList registers; + WordList directive; + WordList directiveOperand; + WordList extInstruction; + WordList directives4foldstart; + WordList directives4foldend; + OptionsAsm options; + OptionSetAsm osAsm; + int commentChar; +public: + LexerAsm(int commentChar_) { + commentChar = commentChar_; + } + virtual ~LexerAsm() { + } + void SCI_METHOD Release() override { + delete this; + } + int SCI_METHOD Version() const override { + return lvOriginal; + } + const char * SCI_METHOD PropertyNames() override { + return osAsm.PropertyNames(); + } + int SCI_METHOD PropertyType(const char *name) override { + return osAsm.PropertyType(name); + } + const char * SCI_METHOD DescribeProperty(const char *name) override { + return osAsm.DescribeProperty(name); + } + Sci_Position SCI_METHOD PropertySet(const char *key, const char *val) override; + const char * SCI_METHOD DescribeWordListSets() override { + return osAsm.DescribeWordListSets(); + } + Sci_Position SCI_METHOD WordListSet(int n, const char *wl) override; + void SCI_METHOD Lex(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess) override; + void SCI_METHOD Fold(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess) override; + + void * SCI_METHOD PrivateCall(int, void *) override { + return 0; + } + + static ILexer *LexerFactoryAsm() { + return new LexerAsm(';'); + } + + static ILexer *LexerFactoryAs() { + return new LexerAsm('#'); + } +}; + +Sci_Position SCI_METHOD LexerAsm::PropertySet(const char *key, const char *val) { + if (osAsm.PropertySet(&options, key, val)) { + return 0; + } + return -1; +} + +Sci_Position SCI_METHOD LexerAsm::WordListSet(int n, const char *wl) { + WordList *wordListN = 0; + switch (n) { + case 0: + wordListN = &cpuInstruction; + break; + case 1: + wordListN = &mathInstruction; + break; + case 2: + wordListN = ®isters; + break; + case 3: + wordListN = &directive; + break; + case 4: + wordListN = &directiveOperand; + break; + case 5: + wordListN = &extInstruction; + break; + case 6: + wordListN = &directives4foldstart; + break; + case 7: + wordListN = &directives4foldend; + break; + } + Sci_Position firstModification = -1; + if (wordListN) { + WordList wlNew; + wlNew.Set(wl); + if (*wordListN != wlNew) { + wordListN->Set(wl); + firstModification = 0; + } + } + return firstModification; +} + +void SCI_METHOD LexerAsm::Lex(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess) { + LexAccessor styler(pAccess); + + // Do not leak onto next line + if (initStyle == SCE_ASM_STRINGEOL) + initStyle = SCE_ASM_DEFAULT; + + StyleContext sc(startPos, length, initStyle, styler); + + for (; sc.More(); sc.Forward()) + { + + // Prevent SCE_ASM_STRINGEOL from leaking back to previous line + if (sc.atLineStart && (sc.state == SCE_ASM_STRING)) { + sc.SetState(SCE_ASM_STRING); + } else if (sc.atLineStart && (sc.state == SCE_ASM_CHARACTER)) { + sc.SetState(SCE_ASM_CHARACTER); + } + + // Handle line continuation generically. + if (sc.ch == '\\') { + if (sc.chNext == '\n' || sc.chNext == '\r') { + sc.Forward(); + if (sc.ch == '\r' && sc.chNext == '\n') { + sc.Forward(); + } + continue; + } + } + + // Determine if the current state should terminate. + if (sc.state == SCE_ASM_OPERATOR) { + if (!IsAsmOperator(sc.ch)) { + sc.SetState(SCE_ASM_DEFAULT); + } + } else if (sc.state == SCE_ASM_NUMBER) { + if (!IsAWordChar(sc.ch)) { + sc.SetState(SCE_ASM_DEFAULT); + } + } else if (sc.state == SCE_ASM_IDENTIFIER) { + if (!IsAWordChar(sc.ch) ) { + char s[100]; + sc.GetCurrentLowered(s, sizeof(s)); + bool IsDirective = false; + + if (cpuInstruction.InList(s)) { + sc.ChangeState(SCE_ASM_CPUINSTRUCTION); + } else if (mathInstruction.InList(s)) { + sc.ChangeState(SCE_ASM_MATHINSTRUCTION); + } else if (registers.InList(s)) { + sc.ChangeState(SCE_ASM_REGISTER); + } else if (directive.InList(s)) { + sc.ChangeState(SCE_ASM_DIRECTIVE); + IsDirective = true; + } else if (directiveOperand.InList(s)) { + sc.ChangeState(SCE_ASM_DIRECTIVEOPERAND); + } else if (extInstruction.InList(s)) { + sc.ChangeState(SCE_ASM_EXTINSTRUCTION); + } + sc.SetState(SCE_ASM_DEFAULT); + if (IsDirective && !strcmp(s, "comment")) { + char delimiter = options.delimiter.empty() ? '~' : options.delimiter.c_str()[0]; + while (IsASpaceOrTab(sc.ch) && !sc.atLineEnd) { + sc.ForwardSetState(SCE_ASM_DEFAULT); + } + if (sc.ch == delimiter) { + sc.SetState(SCE_ASM_COMMENTDIRECTIVE); + } + } + } + } else if (sc.state == SCE_ASM_COMMENTDIRECTIVE) { + char delimiter = options.delimiter.empty() ? '~' : options.delimiter.c_str()[0]; + if (sc.ch == delimiter) { + while (!sc.atLineEnd) { + sc.Forward(); + } + sc.SetState(SCE_ASM_DEFAULT); + } + } else if (sc.state == SCE_ASM_COMMENT ) { + if (sc.atLineEnd) { + sc.SetState(SCE_ASM_DEFAULT); + } + } else if (sc.state == SCE_ASM_STRING) { + if (sc.ch == '\\') { + if (sc.chNext == '\"' || sc.chNext == '\'' || sc.chNext == '\\') { + sc.Forward(); + } + } else if (sc.ch == '\"') { + sc.ForwardSetState(SCE_ASM_DEFAULT); + } else if (sc.atLineEnd) { + sc.ChangeState(SCE_ASM_STRINGEOL); + sc.ForwardSetState(SCE_ASM_DEFAULT); + } + } else if (sc.state == SCE_ASM_CHARACTER) { + if (sc.ch == '\\') { + if (sc.chNext == '\"' || sc.chNext == '\'' || sc.chNext == '\\') { + sc.Forward(); + } + } else if (sc.ch == '\'') { + sc.ForwardSetState(SCE_ASM_DEFAULT); + } else if (sc.atLineEnd) { + sc.ChangeState(SCE_ASM_STRINGEOL); + sc.ForwardSetState(SCE_ASM_DEFAULT); + } + } + + // Determine if a new state should be entered. + if (sc.state == SCE_ASM_DEFAULT) { + if (sc.ch == commentChar){ + sc.SetState(SCE_ASM_COMMENT); + } else if (IsASCII(sc.ch) && (isdigit(sc.ch) || (sc.ch == '.' && IsASCII(sc.chNext) && isdigit(sc.chNext)))) { + sc.SetState(SCE_ASM_NUMBER); + } else if (IsAWordStart(sc.ch)) { + sc.SetState(SCE_ASM_IDENTIFIER); + } else if (sc.ch == '\"') { + sc.SetState(SCE_ASM_STRING); + } else if (sc.ch == '\'') { + sc.SetState(SCE_ASM_CHARACTER); + } else if (IsAsmOperator(sc.ch)) { + sc.SetState(SCE_ASM_OPERATOR); + } + } + + } + sc.Complete(); +} + +// Store both the current line's fold level and the next lines in the +// level store to make it easy to pick up with each increment +// and to make it possible to fiddle the current level for "else". + +void SCI_METHOD LexerAsm::Fold(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess) { + + if (!options.fold) + return; + + LexAccessor styler(pAccess); + + Sci_PositionU endPos = startPos + length; + int visibleChars = 0; + Sci_Position lineCurrent = styler.GetLine(startPos); + int levelCurrent = SC_FOLDLEVELBASE; + if (lineCurrent > 0) + levelCurrent = styler.LevelAt(lineCurrent-1) >> 16; + int levelNext = levelCurrent; + char chNext = styler[startPos]; + int styleNext = styler.StyleAt(startPos); + int style = initStyle; + char word[100]; + int wordlen = 0; + const bool userDefinedFoldMarkers = !options.foldExplicitStart.empty() && !options.foldExplicitEnd.empty(); + for (Sci_PositionU i = startPos; i < endPos; i++) { + char ch = chNext; + chNext = styler.SafeGetCharAt(i + 1); + int stylePrev = style; + style = styleNext; + styleNext = styler.StyleAt(i + 1); + bool atEOL = (ch == '\r' && chNext != '\n') || (ch == '\n'); + if (options.foldCommentMultiline && IsStreamCommentStyle(style)) { + if (!IsStreamCommentStyle(stylePrev)) { + levelNext++; + } else if (!IsStreamCommentStyle(styleNext) && !atEOL) { + // Comments don't end at end of line and the next character may be unstyled. + levelNext--; + } + } + if (options.foldCommentExplicit && ((style == SCE_ASM_COMMENT) || options.foldExplicitAnywhere)) { + if (userDefinedFoldMarkers) { + if (styler.Match(i, options.foldExplicitStart.c_str())) { + levelNext++; + } else if (styler.Match(i, options.foldExplicitEnd.c_str())) { + levelNext--; + } + } else { + if (ch == ';') { + if (chNext == '{') { + levelNext++; + } else if (chNext == '}') { + levelNext--; + } + } + } + } + if (options.foldSyntaxBased && (style == SCE_ASM_DIRECTIVE)) { + word[wordlen++] = static_cast(LowerCase(ch)); + if (wordlen == 100) { // prevent overflow + word[0] = '\0'; + wordlen = 1; + } + if (styleNext != SCE_ASM_DIRECTIVE) { // reading directive ready + word[wordlen] = '\0'; + wordlen = 0; + if (directives4foldstart.InList(word)) { + levelNext++; + } else if (directives4foldend.InList(word)){ + levelNext--; + } + } + } + if (!IsASpace(ch)) + visibleChars++; + if (atEOL || (i == endPos-1)) { + int levelUse = levelCurrent; + int lev = levelUse | levelNext << 16; + if (visibleChars == 0 && options.foldCompact) + lev |= SC_FOLDLEVELWHITEFLAG; + if (levelUse < levelNext) + lev |= SC_FOLDLEVELHEADERFLAG; + if (lev != styler.LevelAt(lineCurrent)) { + styler.SetLevel(lineCurrent, lev); + } + lineCurrent++; + levelCurrent = levelNext; + if (atEOL && (i == static_cast(styler.Length() - 1))) { + // There is an empty line at end of file so give it same level and empty + styler.SetLevel(lineCurrent, (levelCurrent | levelCurrent << 16) | SC_FOLDLEVELWHITEFLAG); + } + visibleChars = 0; + } + } +} + +LexerModule lmAsm(SCLEX_ASM, LexerAsm::LexerFactoryAsm, "asm", asmWordListDesc); +LexerModule lmAs(SCLEX_AS, LexerAsm::LexerFactoryAs, "as", asmWordListDesc); + diff --git a/libs/qscintilla_2.14.1/scintilla/lexers/LexAsn1.cpp b/libs/qscintilla_2.14.1/scintilla/lexers/LexAsn1.cpp new file mode 100644 index 000000000..0ec2a0636 --- /dev/null +++ b/libs/qscintilla_2.14.1/scintilla/lexers/LexAsn1.cpp @@ -0,0 +1,186 @@ +// Scintilla source code edit control +/** @file LexAsn1.cxx + ** Lexer for ASN.1 + **/ +// Copyright 2004 by Herr Pfarrer rpfarrer yahoo de +// Last Updated: 20/07/2004 +// The License.txt file describes the conditions under which this software may be distributed. + +#include +#include +#include +#include +#include + +#include "ILexer.h" +#include "Scintilla.h" +#include "SciLexer.h" + +#include "WordList.h" +#include "LexAccessor.h" +#include "Accessor.h" +#include "StyleContext.h" +#include "CharacterSet.h" +#include "LexerModule.h" + +using namespace Scintilla; + +// Some char test functions +static bool isAsn1Number(int ch) +{ + return (ch >= '0' && ch <= '9'); +} + +static bool isAsn1Letter(int ch) +{ + return (ch >= 'A' && ch <= 'Z') || (ch >= 'a' && ch <= 'z'); +} + +static bool isAsn1Char(int ch) +{ + return (ch == '-' ) || isAsn1Number(ch) || isAsn1Letter (ch); +} + +// +// Function determining the color of a given code portion +// Based on a "state" +// +static void ColouriseAsn1Doc(Sci_PositionU startPos, Sci_Position length, int initStyle, WordList *keywordLists[], Accessor &styler) +{ + // The keywords + WordList &Keywords = *keywordLists[0]; + WordList &Attributes = *keywordLists[1]; + WordList &Descriptors = *keywordLists[2]; + WordList &Types = *keywordLists[3]; + + // Parse the whole buffer character by character using StyleContext + StyleContext sc(startPos, length, initStyle, styler); + for (; sc.More(); sc.Forward()) + { + // The state engine + switch (sc.state) + { + case SCE_ASN1_DEFAULT: // Plain characters +asn1_default: + if (sc.ch == '-' && sc.chNext == '-') + // A comment begins here + sc.SetState(SCE_ASN1_COMMENT); + else if (sc.ch == '"') + // A string begins here + sc.SetState(SCE_ASN1_STRING); + else if (isAsn1Number (sc.ch)) + // A number starts here (identifier should start with a letter in ASN.1) + sc.SetState(SCE_ASN1_SCALAR); + else if (isAsn1Char (sc.ch)) + // An identifier starts here (identifier always start with a letter) + sc.SetState(SCE_ASN1_IDENTIFIER); + else if (sc.ch == ':') + // A ::= operator starts here + sc.SetState(SCE_ASN1_OPERATOR); + break; + case SCE_ASN1_COMMENT: // A comment + if (sc.ch == '\r' || sc.ch == '\n') + // A comment ends here + sc.SetState(SCE_ASN1_DEFAULT); + break; + case SCE_ASN1_IDENTIFIER: // An identifier (keyword, attribute, descriptor or type) + if (!isAsn1Char (sc.ch)) + { + // The end of identifier is here: we can look for it in lists by now and change its state + char s[100]; + sc.GetCurrent(s, sizeof(s)); + if (Keywords.InList(s)) + // It's a keyword, change its state + sc.ChangeState(SCE_ASN1_KEYWORD); + else if (Attributes.InList(s)) + // It's an attribute, change its state + sc.ChangeState(SCE_ASN1_ATTRIBUTE); + else if (Descriptors.InList(s)) + // It's a descriptor, change its state + sc.ChangeState(SCE_ASN1_DESCRIPTOR); + else if (Types.InList(s)) + // It's a type, change its state + sc.ChangeState(SCE_ASN1_TYPE); + + // Set to default now + sc.SetState(SCE_ASN1_DEFAULT); + } + break; + case SCE_ASN1_STRING: // A string delimited by "" + if (sc.ch == '"') + { + // A string ends here + sc.ForwardSetState(SCE_ASN1_DEFAULT); + + // To correctly manage a char sticking to the string quote + goto asn1_default; + } + break; + case SCE_ASN1_SCALAR: // A plain number + if (!isAsn1Number (sc.ch)) + // A number ends here + sc.SetState(SCE_ASN1_DEFAULT); + break; + case SCE_ASN1_OPERATOR: // The affectation operator ::= and wath follows (eg: ::= { org 6 } OID or ::= 12 trap) + if (sc.ch == '{') + { + // An OID definition starts here: enter the sub loop + for (; sc.More(); sc.Forward()) + { + if (isAsn1Number (sc.ch) && (!isAsn1Char (sc.chPrev) || isAsn1Number (sc.chPrev))) + // The OID number is highlighted + sc.SetState(SCE_ASN1_OID); + else if (isAsn1Char (sc.ch)) + // The OID parent identifier is plain + sc.SetState(SCE_ASN1_IDENTIFIER); + else + sc.SetState(SCE_ASN1_DEFAULT); + + if (sc.ch == '}') + // Here ends the OID and the operator sub loop: go back to main loop + break; + } + } + else if (isAsn1Number (sc.ch)) + { + // A trap number definition starts here: enter the sub loop + for (; sc.More(); sc.Forward()) + { + if (isAsn1Number (sc.ch)) + // The trap number is highlighted + sc.SetState(SCE_ASN1_OID); + else + { + // The number ends here: go back to main loop + sc.SetState(SCE_ASN1_DEFAULT); + break; + } + } + } + else if (sc.ch != ':' && sc.ch != '=' && sc.ch != ' ') + // The operator doesn't imply an OID definition nor a trap, back to main loop + goto asn1_default; // To be sure to handle actually the state change + break; + } + } + sc.Complete(); +} + +static void FoldAsn1Doc(Sci_PositionU, Sci_Position, int, WordList *[], Accessor &styler) +{ + // No folding enabled, no reason to continue... + if( styler.GetPropertyInt("fold") == 0 ) + return; + + // No folding implemented: doesn't make sense for ASN.1 +} + +static const char * const asn1WordLists[] = { + "Keywords", + "Attributes", + "Descriptors", + "Types", + 0, }; + + +LexerModule lmAsn1(SCLEX_ASN1, ColouriseAsn1Doc, "asn1", FoldAsn1Doc, asn1WordLists); diff --git a/libs/qscintilla_2.14.1/scintilla/lexers/LexBaan.cpp b/libs/qscintilla_2.14.1/scintilla/lexers/LexBaan.cpp new file mode 100644 index 000000000..fa8b46302 --- /dev/null +++ b/libs/qscintilla_2.14.1/scintilla/lexers/LexBaan.cpp @@ -0,0 +1,988 @@ +// Scintilla source code edit control +/** @file LexBaan.cxx +** Lexer for Baan. +** Based heavily on LexCPP.cxx +**/ +// Copyright 2001- by Vamsi Potluru & Praveen Ambekar +// Maintainer Email: oirfeodent@yahoo.co.in +// The License.txt file describes the conditions under which this software may be distributed. + +// C standard library +#include +#include + +// C++ wrappers of C standard library +#include + +// C++ standard library +#include +#include + +// Scintilla headers + +// Non-platform-specific headers + +// include +#include "ILexer.h" +#include "Scintilla.h" +#include "SciLexer.h" + +// lexlib +#include "WordList.h" +#include "LexAccessor.h" +#include "StyleContext.h" +#include "CharacterSet.h" +#include "LexerModule.h" +#include "OptionSet.h" +#include "DefaultLexer.h" + +using namespace Scintilla; + +namespace { +// Use an unnamed namespace to protect the functions and classes from name conflicts + +// Options used for LexerBaan +struct OptionsBaan { + bool fold; + bool foldComment; + bool foldPreprocessor; + bool foldCompact; + bool baanFoldSyntaxBased; + bool baanFoldKeywordsBased; + bool baanFoldSections; + bool baanFoldInnerLevel; + bool baanStylingWithinPreprocessor; + OptionsBaan() { + fold = false; + foldComment = false; + foldPreprocessor = false; + foldCompact = false; + baanFoldSyntaxBased = false; + baanFoldKeywordsBased = false; + baanFoldSections = false; + baanFoldInnerLevel = false; + baanStylingWithinPreprocessor = false; + } +}; + +const char *const baanWordLists[] = { + "Baan & BaanSQL Reserved Keywords ", + "Baan Standard functions", + "Baan Functions Abridged", + "Baan Main Sections ", + "Baan Sub Sections", + "PreDefined Variables", + "PreDefined Attributes", + "Enumerates", + 0, +}; + +struct OptionSetBaan : public OptionSet { + OptionSetBaan() { + DefineProperty("fold", &OptionsBaan::fold); + + DefineProperty("fold.comment", &OptionsBaan::foldComment); + + DefineProperty("fold.preprocessor", &OptionsBaan::foldPreprocessor); + + DefineProperty("fold.compact", &OptionsBaan::foldCompact); + + DefineProperty("fold.baan.syntax.based", &OptionsBaan::baanFoldSyntaxBased, + "Set this property to 0 to disable syntax based folding, which is folding based on '{' & '('."); + + DefineProperty("fold.baan.keywords.based", &OptionsBaan::baanFoldKeywordsBased, + "Set this property to 0 to disable keywords based folding, which is folding based on " + " for, if, on (case), repeat, select, while and fold ends based on endfor, endif, endcase, until, endselect, endwhile respectively." + "Also folds declarations which are grouped together."); + + DefineProperty("fold.baan.sections", &OptionsBaan::baanFoldSections, + "Set this property to 0 to disable folding of Main Sections as well as Sub Sections."); + + DefineProperty("fold.baan.inner.level", &OptionsBaan::baanFoldInnerLevel, + "Set this property to 1 to enable folding of inner levels of select statements." + "Disabled by default. case and if statements are also eligible" ); + + DefineProperty("lexer.baan.styling.within.preprocessor", &OptionsBaan::baanStylingWithinPreprocessor, + "For Baan code, determines whether all preprocessor code is styled in the " + "preprocessor style (0, the default) or only from the initial # to the end " + "of the command word(1)."); + + DefineWordListSets(baanWordLists); + } +}; + +static inline bool IsAWordChar(const int ch) { + return (ch < 0x80) && (isalnum(ch) || ch == '.' || ch == '_' || ch == '$'); +} + +static inline bool IsAnOperator(int ch) { + if (IsAlphaNumeric(ch)) + return false; + if (ch == '#' || ch == '^' || ch == '&' || ch == '*' || + ch == '(' || ch == ')' || ch == '-' || ch == '+' || + ch == '=' || ch == '|' || ch == '{' || ch == '}' || + ch == '[' || ch == ']' || ch == ':' || ch == ';' || + ch == '<' || ch == '>' || ch == ',' || ch == '/' || + ch == '?' || ch == '!' || ch == '"' || ch == '~' || + ch == '\\') + return true; + return false; +} + +static inline int IsAnyOtherIdentifier(char *s, Sci_Position sLength) { + + /* IsAnyOtherIdentifier uses standard templates used in baan. + The matching template is shown as comments just above the return condition. + ^ - refers to any character [a-z]. + # - refers to any number [0-9]. + Other characters shown are compared as is. + Tried implementing with Regex... it was too complicated for me. + Any other implementation suggestion welcome. + */ + switch (sLength) { + case 8: + if (isalpha(s[0]) && isalpha(s[1]) && isalpha(s[2]) && isalpha(s[3]) && isalpha(s[4]) && IsADigit(s[5]) && IsADigit(s[6]) && IsADigit(s[7])) { + //^^^^^### + return(SCE_BAAN_TABLEDEF); + } + break; + case 9: + if (s[0] == 't' && isalpha(s[1]) && isalpha(s[2]) && isalpha(s[3]) && isalpha(s[4]) && isalpha(s[5]) && IsADigit(s[6]) && IsADigit(s[7]) && IsADigit(s[8])) { + //t^^^^^### + return(SCE_BAAN_TABLEDEF); + } + else if (s[8] == '.' && isalpha(s[0]) && isalpha(s[1]) && isalpha(s[2]) && isalpha(s[3]) && isalpha(s[4]) && IsADigit(s[5]) && IsADigit(s[6]) && IsADigit(s[7])) { + //^^^^^###. + return(SCE_BAAN_TABLESQL); + } + break; + case 13: + if (s[8] == '.' && isalpha(s[0]) && isalpha(s[1]) && isalpha(s[2]) && isalpha(s[3]) && isalpha(s[4]) && IsADigit(s[5]) && IsADigit(s[6]) && IsADigit(s[7])) { + //^^^^^###.**** + return(SCE_BAAN_TABLESQL); + } + else if (s[0] == 'r' && s[1] == 'c' && s[2] == 'd' && s[3] == '.' && s[4] == 't' && isalpha(s[5]) && isalpha(s[6]) && isalpha(s[7]) && isalpha(s[8]) && isalpha(s[9]) && IsADigit(s[10]) && IsADigit(s[11]) && IsADigit(s[12])) { + //rcd.t^^^^^### + return(SCE_BAAN_TABLEDEF); + } + break; + case 14: + case 15: + if (s[8] == '.' && isalpha(s[0]) && isalpha(s[1]) && isalpha(s[2]) && isalpha(s[3]) && isalpha(s[4]) && IsADigit(s[5]) && IsADigit(s[6]) && IsADigit(s[7])) { + if (s[13] != ':') { + //^^^^^###.****** + return(SCE_BAAN_TABLESQL); + } + } + break; + case 16: + case 17: + if (s[8] == '.' && s[9] == '_' && s[10] == 'i' && s[11] == 'n' && s[12] == 'd' && s[13] == 'e' && s[14] == 'x' && IsADigit(s[15]) && isalpha(s[0]) && isalpha(s[1]) && isalpha(s[2]) && isalpha(s[3]) && isalpha(s[4]) && IsADigit(s[5]) && IsADigit(s[6]) && IsADigit(s[7])) { + //^^^^^###._index## + return(SCE_BAAN_TABLEDEF); + } + else if (s[8] == '.' && s[9] == '_' && s[10] == 'c' && s[11] == 'o' && s[12] == 'm' && s[13] == 'p' && s[14] == 'n' && s[15] == 'r' && isalpha(s[0]) && isalpha(s[1]) && isalpha(s[2]) && isalpha(s[3]) && isalpha(s[4]) && IsADigit(s[5]) && IsADigit(s[6]) && IsADigit(s[7])) { + //^^^^^###._compnr + return(SCE_BAAN_TABLEDEF); + } + break; + default: + break; + } + if (sLength > 14 && s[5] == '.' && s[6] == 'd' && s[7] == 'l' && s[8] == 'l' && s[13] == '.' && isalpha(s[0]) && isalpha(s[1]) && isalpha(s[2]) && isalpha(s[3]) && isalpha(s[4]) && IsADigit(s[9]) && IsADigit(s[10]) && IsADigit(s[11]) && IsADigit(s[12])) { + //^^^^^.dll####. + return(SCE_BAAN_FUNCTION); + } + else if (sLength > 15 && s[2] == 'i' && s[3] == 'n' && s[4] == 't' && s[5] == '.' && s[6] == 'd' && s[7] == 'l' && s[8] == 'l' && isalpha(s[0]) && isalpha(s[1]) && isalpha(s[9]) && isalpha(s[10]) && isalpha(s[11]) && isalpha(s[12]) && isalpha(s[13])) { + //^^int.dll^^^^^. + return(SCE_BAAN_FUNCTION); + } + else if (sLength > 11 && s[0] == 'i' && s[10] == '.' && isalpha(s[1]) && isalpha(s[2]) && isalpha(s[3]) && isalpha(s[4]) && isalpha(s[5]) && IsADigit(s[6]) && IsADigit(s[7]) && IsADigit(s[8]) && IsADigit(s[9])) { + //i^^^^^####. + return(SCE_BAAN_FUNCTION); + } + + return(SCE_BAAN_DEFAULT); +} + +static bool IsCommentLine(Sci_Position line, LexAccessor &styler) { + Sci_Position pos = styler.LineStart(line); + Sci_Position eol_pos = styler.LineStart(line + 1) - 1; + for (Sci_Position i = pos; i < eol_pos; i++) { + char ch = styler[i]; + int style = styler.StyleAt(i); + if (ch == '|' && style == SCE_BAAN_COMMENT) + return true; + else if (!IsASpaceOrTab(ch)) + return false; + } + return false; +} + +static bool IsPreProcLine(Sci_Position line, LexAccessor &styler) { + Sci_Position pos = styler.LineStart(line); + Sci_Position eol_pos = styler.LineStart(line + 1) - 1; + for (Sci_Position i = pos; i < eol_pos; i++) { + char ch = styler[i]; + int style = styler.StyleAt(i); + if (ch == '#' && style == SCE_BAAN_PREPROCESSOR) { + if (styler.Match(i, "#elif") || styler.Match(i, "#else") || styler.Match(i, "#endif") + || styler.Match(i, "#if") || styler.Match(i, "#ifdef") || styler.Match(i, "#ifndef")) + // Above PreProcessors has a seperate fold mechanism. + return false; + else + return true; + } + else if (ch == '^') + return true; + else if (!IsASpaceOrTab(ch)) + return false; + } + return false; +} + +static int mainOrSubSectionLine(Sci_Position line, LexAccessor &styler) { + Sci_Position pos = styler.LineStart(line); + Sci_Position eol_pos = styler.LineStart(line + 1) - 1; + for (Sci_Position i = pos; i < eol_pos; i++) { + char ch = styler[i]; + int style = styler.StyleAt(i); + if (style == SCE_BAAN_WORD5 || style == SCE_BAAN_WORD4) + return style; + else if (IsASpaceOrTab(ch)) + continue; + else + break; + } + return 0; +} + +static bool priorSectionIsSubSection(Sci_Position line, LexAccessor &styler){ + while (line > 0) { + Sci_Position pos = styler.LineStart(line); + Sci_Position eol_pos = styler.LineStart(line + 1) - 1; + for (Sci_Position i = pos; i < eol_pos; i++) { + char ch = styler[i]; + int style = styler.StyleAt(i); + if (style == SCE_BAAN_WORD4) + return true; + else if (style == SCE_BAAN_WORD5) + return false; + else if (IsASpaceOrTab(ch)) + continue; + else + break; + } + line--; + } + return false; +} + +static bool nextSectionIsSubSection(Sci_Position line, LexAccessor &styler) { + while (line > 0) { + Sci_Position pos = styler.LineStart(line); + Sci_Position eol_pos = styler.LineStart(line + 1) - 1; + for (Sci_Position i = pos; i < eol_pos; i++) { + char ch = styler[i]; + int style = styler.StyleAt(i); + if (style == SCE_BAAN_WORD4) + return true; + else if (style == SCE_BAAN_WORD5) + return false; + else if (IsASpaceOrTab(ch)) + continue; + else + break; + } + line++; + } + return false; +} + +static bool IsDeclarationLine(Sci_Position line, LexAccessor &styler) { + Sci_Position pos = styler.LineStart(line); + Sci_Position eol_pos = styler.LineStart(line + 1) - 1; + for (Sci_Position i = pos; i < eol_pos; i++) { + char ch = styler[i]; + int style = styler.StyleAt(i); + if (style == SCE_BAAN_WORD) { + if (styler.Match(i, "table") || styler.Match(i, "extern") || styler.Match(i, "long") + || styler.Match(i, "double") || styler.Match(i, "boolean") || styler.Match(i, "string") + || styler.Match(i, "domain")) { + for (Sci_Position j = eol_pos; j > pos; j--) { + int styleFromEnd = styler.StyleAt(j); + if (styleFromEnd == SCE_BAAN_COMMENT) + continue; + else if (IsASpace(styler[j])) + continue; + else if (styler[j] != ',') + //Above conditions ensures, Declaration is not part of any function parameters. + return true; + else + return false; + } + } + else + return false; + } + else if (!IsASpaceOrTab(ch)) + return false; + } + return false; +} + +static bool IsInnerLevelFold(Sci_Position line, LexAccessor &styler) { + Sci_Position pos = styler.LineStart(line); + Sci_Position eol_pos = styler.LineStart(line + 1) - 1; + for (Sci_Position i = pos; i < eol_pos; i++) { + char ch = styler[i]; + int style = styler.StyleAt(i); + if (style == SCE_BAAN_WORD && (styler.Match(i, "else" ) || styler.Match(i, "case") + || styler.Match(i, "default") || styler.Match(i, "selectdo") || styler.Match(i, "selecteos") + || styler.Match(i, "selectempty") || styler.Match(i, "selecterror"))) + return true; + else if (IsASpaceOrTab(ch)) + continue; + else + return false; + } + return false; +} + +static inline bool wordInArray(const std::string& value, std::string *array, int length) +{ + for (int i = 0; i < length; i++) + { + if (value == array[i]) + { + return true; + } + } + + return false; +} + +class WordListAbridged : public WordList { +public: + WordListAbridged() { + kwAbridged = false; + kwHasSection = false; + }; + ~WordListAbridged() { + Clear(); + }; + bool kwAbridged; + bool kwHasSection; + bool Contains(const char *s) { + return kwAbridged ? InListAbridged(s, '~') : InList(s); + }; +}; + +} + +class LexerBaan : public DefaultLexer { + WordListAbridged keywords; + WordListAbridged keywords2; + WordListAbridged keywords3; + WordListAbridged keywords4; + WordListAbridged keywords5; + WordListAbridged keywords6; + WordListAbridged keywords7; + WordListAbridged keywords8; + WordListAbridged keywords9; + OptionsBaan options; + OptionSetBaan osBaan; +public: + LexerBaan() { + } + + virtual ~LexerBaan() { + } + + int SCI_METHOD Version() const override { + return lvOriginal; + } + + void SCI_METHOD Release() override { + delete this; + } + + const char * SCI_METHOD PropertyNames() override { + return osBaan.PropertyNames(); + } + + int SCI_METHOD PropertyType(const char * name) override { + return osBaan.PropertyType(name); + } + + const char * SCI_METHOD DescribeProperty(const char * name) override { + return osBaan.DescribeProperty(name); + } + + Sci_Position SCI_METHOD PropertySet(const char *key, const char *val) override; + + const char * SCI_METHOD DescribeWordListSets() override { + return osBaan.DescribeWordListSets(); + } + + Sci_Position SCI_METHOD WordListSet(int n, const char *wl) override; + + void SCI_METHOD Lex(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess) override; + + void SCI_METHOD Fold(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess) override; + + void * SCI_METHOD PrivateCall(int, void *) override { + return NULL; + } + + static ILexer * LexerFactoryBaan() { + return new LexerBaan(); + } +}; + +Sci_Position SCI_METHOD LexerBaan::PropertySet(const char *key, const char *val) { + if (osBaan.PropertySet(&options, key, val)) { + return 0; + } + return -1; +} + +Sci_Position SCI_METHOD LexerBaan::WordListSet(int n, const char *wl) { + WordListAbridged *WordListAbridgedN = 0; + switch (n) { + case 0: + WordListAbridgedN = &keywords; + break; + case 1: + WordListAbridgedN = &keywords2; + break; + case 2: + WordListAbridgedN = &keywords3; + break; + case 3: + WordListAbridgedN = &keywords4; + break; + case 4: + WordListAbridgedN = &keywords5; + break; + case 5: + WordListAbridgedN = &keywords6; + break; + case 6: + WordListAbridgedN = &keywords7; + break; + case 7: + WordListAbridgedN = &keywords8; + break; + case 8: + WordListAbridgedN = &keywords9; + break; + } + Sci_Position firstModification = -1; + if (WordListAbridgedN) { + WordListAbridged wlNew; + wlNew.Set(wl); + if (*WordListAbridgedN != wlNew) { + WordListAbridgedN->Set(wl); + WordListAbridgedN->kwAbridged = strchr(wl, '~') != NULL; + WordListAbridgedN->kwHasSection = strchr(wl, ':') != NULL; + + firstModification = 0; + } + } + return firstModification; +} + +void SCI_METHOD LexerBaan::Lex(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess) { + + if (initStyle == SCE_BAAN_STRINGEOL) // Does not leak onto next line + initStyle = SCE_BAAN_DEFAULT; + + int visibleChars = 0; + bool lineHasDomain = false; + bool lineHasFunction = false; + bool lineHasPreProc = false; + bool lineIgnoreString = false; + bool lineHasDefines = false; + bool numberIsHex = false; + char word[1000]; + int wordlen = 0; + + std::string preProcessorTags[13] = { "#context_off", "#context_on", + "#define", "#elif", "#else", "#endif", + "#ident", "#if", "#ifdef", "#ifndef", + "#include", "#pragma", "#undef" }; + LexAccessor styler(pAccess); + StyleContext sc(startPos, length, initStyle, styler); + + for (; sc.More(); sc.Forward()) { + + // Determine if the current state should terminate. + switch (sc.state) { + case SCE_BAAN_OPERATOR: + sc.SetState(SCE_BAAN_DEFAULT); + break; + case SCE_BAAN_NUMBER: + if (IsASpaceOrTab(sc.ch) || sc.ch == '\r' || sc.ch == '\n' || IsAnOperator(sc.ch)) { + sc.SetState(SCE_BAAN_DEFAULT); + } + else if ((numberIsHex && !(MakeLowerCase(sc.ch) == 'x' || MakeLowerCase(sc.ch) == 'e' || + IsADigit(sc.ch, 16) || sc.ch == '.' || sc.ch == '-' || sc.ch == '+')) || + (!numberIsHex && !(MakeLowerCase(sc.ch) == 'e' || IsADigit(sc.ch) + || sc.ch == '.' || sc.ch == '-' || sc.ch == '+'))) { + // check '-' for possible -10e-5. Add '+' as well. + numberIsHex = false; + sc.ChangeState(SCE_BAAN_IDENTIFIER); + sc.SetState(SCE_BAAN_DEFAULT); + } + break; + case SCE_BAAN_IDENTIFIER: + if (!IsAWordChar(sc.ch)) { + char s[1000]; + char s1[1000]; + sc.GetCurrentLowered(s, sizeof(s)); + if (sc.ch == ':') { + memcpy(s1, s, sizeof(s)); + s1[sc.LengthCurrent()] = sc.ch; + s1[sc.LengthCurrent() + 1] = '\0'; + } + if ((keywords.kwHasSection && (sc.ch == ':')) ? keywords.Contains(s1) : keywords.Contains(s)) { + sc.ChangeState(SCE_BAAN_WORD); + if (0 == strcmp(s, "domain")) { + lineHasDomain = true; + } + else if (0 == strcmp(s, "function")) { + lineHasFunction = true; + } + } + else if (lineHasDomain) { + sc.ChangeState(SCE_BAAN_DOMDEF); + lineHasDomain = false; + } + else if (lineHasFunction) { + sc.ChangeState(SCE_BAAN_FUNCDEF); + lineHasFunction = false; + } + else if ((keywords2.kwHasSection && (sc.ch == ':')) ? keywords2.Contains(s1) : keywords2.Contains(s)) { + sc.ChangeState(SCE_BAAN_WORD2); + } + else if ((keywords3.kwHasSection && (sc.ch == ':')) ? keywords3.Contains(s1) : keywords3.Contains(s)) { + if (sc.ch == '(') + sc.ChangeState(SCE_BAAN_WORD3); + else + sc.ChangeState(SCE_BAAN_IDENTIFIER); + } + else if ((keywords4.kwHasSection && (sc.ch == ':')) ? keywords4.Contains(s1) : keywords4.Contains(s)) { + sc.ChangeState(SCE_BAAN_WORD4); + } + else if ((keywords5.kwHasSection && (sc.ch == ':')) ? keywords5.Contains(s1) : keywords5.Contains(s)) { + sc.ChangeState(SCE_BAAN_WORD5); + } + else if ((keywords6.kwHasSection && (sc.ch == ':')) ? keywords6.Contains(s1) : keywords6.Contains(s)) { + sc.ChangeState(SCE_BAAN_WORD6); + } + else if ((keywords7.kwHasSection && (sc.ch == ':')) ? keywords7.Contains(s1) : keywords7.Contains(s)) { + sc.ChangeState(SCE_BAAN_WORD7); + } + else if ((keywords8.kwHasSection && (sc.ch == ':')) ? keywords8.Contains(s1) : keywords8.Contains(s)) { + sc.ChangeState(SCE_BAAN_WORD8); + } + else if ((keywords9.kwHasSection && (sc.ch == ':')) ? keywords9.Contains(s1) : keywords9.Contains(s)) { + sc.ChangeState(SCE_BAAN_WORD9); + } + else if (lineHasPreProc) { + sc.ChangeState(SCE_BAAN_OBJECTDEF); + lineHasPreProc = false; + } + else if (lineHasDefines) { + sc.ChangeState(SCE_BAAN_DEFINEDEF); + lineHasDefines = false; + } + else { + int state = IsAnyOtherIdentifier(s, sc.LengthCurrent()); + if (state > 0) { + sc.ChangeState(state); + } + } + sc.SetState(SCE_BAAN_DEFAULT); + } + break; + case SCE_BAAN_PREPROCESSOR: + if (options.baanStylingWithinPreprocessor) { + if (IsASpace(sc.ch) || IsAnOperator(sc.ch)) { + sc.SetState(SCE_BAAN_DEFAULT); + } + } + else { + if (sc.atLineEnd && (sc.chNext != '^')) { + sc.SetState(SCE_BAAN_DEFAULT); + } + } + break; + case SCE_BAAN_COMMENT: + if (sc.ch == '\r' || sc.ch == '\n') { + sc.SetState(SCE_BAAN_DEFAULT); + } + break; + case SCE_BAAN_COMMENTDOC: + if (sc.MatchIgnoreCase("enddllusage")) { + for (unsigned int i = 0; i < 10; i++) { + sc.Forward(); + } + sc.ForwardSetState(SCE_BAAN_DEFAULT); + } + else if (sc.MatchIgnoreCase("endfunctionusage")) { + for (unsigned int i = 0; i < 15; i++) { + sc.Forward(); + } + sc.ForwardSetState(SCE_BAAN_DEFAULT); + } + break; + case SCE_BAAN_STRING: + if (sc.ch == '\"') { + sc.ForwardSetState(SCE_BAAN_DEFAULT); + } + else if ((sc.atLineEnd) && (sc.chNext != '^')) { + sc.ChangeState(SCE_BAAN_STRINGEOL); + sc.ForwardSetState(SCE_BAAN_DEFAULT); + visibleChars = 0; + } + break; + } + + // Determine if a new state should be entered. + if (sc.state == SCE_BAAN_DEFAULT) { + if (IsADigit(sc.ch) || (sc.ch == '.' && IsADigit(sc.chNext)) + || ((sc.ch == '-' || sc.ch == '+') && (IsADigit(sc.chNext) || sc.chNext == '.')) + || (MakeLowerCase(sc.ch) == 'e' && (IsADigit(sc.chNext) || sc.chNext == '+' || sc.chNext == '-'))) { + if ((sc.ch == '0' && MakeLowerCase(sc.chNext) == 'x') || + ((sc.ch == '-' || sc.ch == '+') && sc.chNext == '0' && MakeLowerCase(sc.GetRelativeCharacter(2)) == 'x')){ + numberIsHex = true; + } + sc.SetState(SCE_BAAN_NUMBER); + } + else if (sc.MatchIgnoreCase("dllusage") || sc.MatchIgnoreCase("functionusage")) { + sc.SetState(SCE_BAAN_COMMENTDOC); + do { + sc.Forward(); + } while ((!sc.atLineEnd) && sc.More()); + } + else if (iswordstart(sc.ch)) { + sc.SetState(SCE_BAAN_IDENTIFIER); + } + else if (sc.Match('|')) { + sc.SetState(SCE_BAAN_COMMENT); + } + else if (sc.ch == '\"' && !(lineIgnoreString)) { + sc.SetState(SCE_BAAN_STRING); + } + else if (sc.ch == '#' && visibleChars == 0) { + // Preprocessor commands are alone on their line + sc.SetState(SCE_BAAN_PREPROCESSOR); + word[0] = '\0'; + wordlen = 0; + while (sc.More() && !(IsASpace(sc.chNext) || IsAnOperator(sc.chNext))) { + sc.Forward(); + wordlen++; + } + sc.GetCurrentLowered(word, sizeof(word)); + if (!sc.atLineEnd) { + word[wordlen++] = sc.ch; + word[wordlen++] = '\0'; + } + if (!wordInArray(word, preProcessorTags, 13)) + // Colorise only preprocessor built in Baan. + sc.ChangeState(SCE_BAAN_IDENTIFIER); + if (strcmp(word, "#pragma") == 0 || strcmp(word, "#include") == 0) { + lineHasPreProc = true; + lineIgnoreString = true; + } + else if (strcmp(word, "#define") == 0 || strcmp(word, "#undef") == 0 || + strcmp(word, "#ifdef") == 0 || strcmp(word, "#if") == 0 || strcmp(word, "#ifndef") == 0) { + lineHasDefines = true; + lineIgnoreString = false; + } + } + else if (IsAnOperator(static_cast(sc.ch))) { + sc.SetState(SCE_BAAN_OPERATOR); + } + } + + if (sc.atLineEnd) { + // Reset states to begining of colourise so no surprises + // if different sets of lines lexed. + visibleChars = 0; + lineHasDomain = false; + lineHasFunction = false; + lineHasPreProc = false; + lineIgnoreString = false; + lineHasDefines = false; + numberIsHex = false; + } + if (!IsASpace(sc.ch)) { + visibleChars++; + } + } + sc.Complete(); +} + +void SCI_METHOD LexerBaan::Fold(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess) { + if (!options.fold) + return; + + char word[100]; + int wordlen = 0; + bool foldStart = true; + bool foldNextSelect = true; + bool afterFunctionSection = false; + bool beforeDeclarationSection = false; + int currLineStyle = 0; + int nextLineStyle = 0; + + std::string startTags[6] = { "for", "if", "on", "repeat", "select", "while" }; + std::string endTags[6] = { "endcase", "endfor", "endif", "endselect", "endwhile", "until" }; + std::string selectCloseTags[5] = { "selectdo", "selecteos", "selectempty", "selecterror", "endselect" }; + + LexAccessor styler(pAccess); + Sci_PositionU endPos = startPos + length; + int visibleChars = 0; + Sci_Position lineCurrent = styler.GetLine(startPos); + + // Backtrack to previous line in case need to fix its fold status + if (startPos > 0) { + if (lineCurrent > 0) { + lineCurrent--; + startPos = styler.LineStart(lineCurrent); + } + } + + int levelPrev = SC_FOLDLEVELBASE; + if (lineCurrent > 0) + levelPrev = styler.LevelAt(lineCurrent - 1) >> 16; + int levelCurrent = levelPrev; + char chNext = styler[startPos]; + int style = initStyle; + int styleNext = styler.StyleAt(startPos); + + for (Sci_PositionU i = startPos; i < endPos; i++) { + char ch = chNext; + chNext = styler.SafeGetCharAt(i + 1); + style = styleNext; + styleNext = styler.StyleAt(i + 1); + int stylePrev = (i) ? styler.StyleAt(i - 1) : SCE_BAAN_DEFAULT; + bool atEOL = (ch == '\r' && chNext != '\n') || (ch == '\n'); + + // Comment folding + if (options.foldComment && style == SCE_BAAN_COMMENTDOC) { + if (style != stylePrev) { + levelCurrent++; + } + else if (style != styleNext) { + levelCurrent--; + } + } + if (options.foldComment && atEOL && IsCommentLine(lineCurrent, styler)) { + if (!IsCommentLine(lineCurrent - 1, styler) + && IsCommentLine(lineCurrent + 1, styler)) + levelCurrent++; + else if (IsCommentLine(lineCurrent - 1, styler) + && !IsCommentLine(lineCurrent + 1, styler)) + levelCurrent--; + } + // PreProcessor Folding + if (options.foldPreprocessor) { + if (atEOL && IsPreProcLine(lineCurrent, styler)) { + if (!IsPreProcLine(lineCurrent - 1, styler) + && IsPreProcLine(lineCurrent + 1, styler)) + levelCurrent++; + else if (IsPreProcLine(lineCurrent - 1, styler) + && !IsPreProcLine(lineCurrent + 1, styler)) + levelCurrent--; + } + else if (style == SCE_BAAN_PREPROCESSOR) { + // folds #ifdef/#if/#ifndef - they are not part of the IsPreProcLine folding. + if (ch == '#') { + if (styler.Match(i, "#ifdef") || styler.Match(i, "#if") || styler.Match(i, "#ifndef") + || styler.Match(i, "#context_on")) + levelCurrent++; + else if (styler.Match(i, "#endif") || styler.Match(i, "#context_off")) + levelCurrent--; + } + } + } + //Syntax Folding + if (options.baanFoldSyntaxBased && (style == SCE_BAAN_OPERATOR)) { + if (ch == '{' || ch == '(') { + levelCurrent++; + } + else if (ch == '}' || ch == ')') { + levelCurrent--; + } + } + //Keywords Folding + if (options.baanFoldKeywordsBased) { + if (atEOL && IsDeclarationLine(lineCurrent, styler)) { + if (!IsDeclarationLine(lineCurrent - 1, styler) + && IsDeclarationLine(lineCurrent + 1, styler)) + levelCurrent++; + else if (IsDeclarationLine(lineCurrent - 1, styler) + && !IsDeclarationLine(lineCurrent + 1, styler)) + levelCurrent--; + } + else if (style == SCE_BAAN_WORD) { + word[wordlen++] = static_cast(MakeLowerCase(ch)); + if (wordlen == 100) { // prevent overflow + word[0] = '\0'; + wordlen = 1; + } + if (styleNext != SCE_BAAN_WORD) { + word[wordlen] = '\0'; + wordlen = 0; + if (strcmp(word, "for") == 0) { + Sci_PositionU j = i + 1; + while ((j < endPos) && IsASpaceOrTab(styler.SafeGetCharAt(j))) { + j++; + } + if (styler.Match(j, "update")) { + // Means this is a "for update" used by Select which is already folded. + foldStart = false; + } + } + else if (strcmp(word, "on") == 0) { + Sci_PositionU j = i + 1; + while ((j < endPos) && IsASpaceOrTab(styler.SafeGetCharAt(j))) { + j++; + } + if (!styler.Match(j, "case")) { + // Means this is not a "on Case" statement... could be "on" used by index. + foldStart = false; + } + } + else if (strcmp(word, "select") == 0) { + if (foldNextSelect) { + // Next Selects are sub-clause till reach of selectCloseTags[] array. + foldNextSelect = false; + foldStart = true; + } + else { + foldNextSelect = false; + foldStart = false; + } + } + else if (wordInArray(word, selectCloseTags, 5)) { + // select clause ends, next select clause can be folded. + foldNextSelect = true; + foldStart = true; + } + else { + foldStart = true; + } + if (foldStart) { + if (wordInArray(word, startTags, 6)) { + levelCurrent++; + } + else if (wordInArray(word, endTags, 6)) { + levelCurrent--; + } + } + } + } + } + // Fold inner level of if/select/case statements + if (options.baanFoldInnerLevel && atEOL) { + bool currLineInnerLevel = IsInnerLevelFold(lineCurrent, styler); + bool nextLineInnerLevel = IsInnerLevelFold(lineCurrent + 1, styler); + if (currLineInnerLevel && currLineInnerLevel != nextLineInnerLevel) { + levelCurrent++; + } + else if (nextLineInnerLevel && nextLineInnerLevel != currLineInnerLevel) { + levelCurrent--; + } + } + // Section Foldings. + // One way of implementing Section Foldings, as there is no END markings of sections. + // first section ends on the previous line of next section. + // Re-written whole folding to accomodate this. + if (options.baanFoldSections && atEOL) { + currLineStyle = mainOrSubSectionLine(lineCurrent, styler); + nextLineStyle = mainOrSubSectionLine(lineCurrent + 1, styler); + if (currLineStyle != 0 && currLineStyle != nextLineStyle) { + if (levelCurrent < levelPrev) + --levelPrev; + for (Sci_Position j = styler.LineStart(lineCurrent); j < styler.LineStart(lineCurrent + 1) - 1; j++) { + if (IsASpaceOrTab(styler[j])) + continue; + else if (styler.StyleAt(j) == SCE_BAAN_WORD5) { + if (styler.Match(j, "functions:")) { + // Means functions: is the end of MainSections. + // Nothing to fold after this. + afterFunctionSection = true; + break; + } + else { + afterFunctionSection = false; + break; + } + } + else { + afterFunctionSection = false; + break; + } + } + if (!afterFunctionSection) + levelCurrent++; + } + else if (nextLineStyle != 0 && currLineStyle != nextLineStyle + && (priorSectionIsSubSection(lineCurrent -1 ,styler) + || !nextSectionIsSubSection(lineCurrent + 1, styler))) { + for (Sci_Position j = styler.LineStart(lineCurrent + 1); j < styler.LineStart(lineCurrent + 1 + 1) - 1; j++) { + if (IsASpaceOrTab(styler[j])) + continue; + else if (styler.StyleAt(j) == SCE_BAAN_WORD5) { + if (styler.Match(j, "declaration:")) { + // Means declaration: is the start of MainSections. + // Nothing to fold before this. + beforeDeclarationSection = true; + break; + } + else { + beforeDeclarationSection = false; + break; + } + } + else { + beforeDeclarationSection = false; + break; + } + } + if (!beforeDeclarationSection) { + levelCurrent--; + if (nextLineStyle == SCE_BAAN_WORD5 && priorSectionIsSubSection(lineCurrent-1, styler)) + // next levelCurrent--; is to unfold previous subsection fold. + // On reaching the next main section, the previous main as well sub section ends. + levelCurrent--; + } + } + } + if (atEOL) { + int lev = levelPrev; + lev |= levelCurrent << 16; + if (visibleChars == 0 && options.foldCompact) + lev |= SC_FOLDLEVELWHITEFLAG; + if ((levelCurrent > levelPrev) && (visibleChars > 0)) + lev |= SC_FOLDLEVELHEADERFLAG; + if (lev != styler.LevelAt(lineCurrent)) { + styler.SetLevel(lineCurrent, lev); + } + lineCurrent++; + levelPrev = levelCurrent; + visibleChars = 0; + } + if (!isspacechar(ch)) + visibleChars++; + } + int flagsNext = styler.LevelAt(lineCurrent) & ~SC_FOLDLEVELNUMBERMASK; + styler.SetLevel(lineCurrent, levelPrev | flagsNext); +} + +LexerModule lmBaan(SCLEX_BAAN, LexerBaan::LexerFactoryBaan, "baan", baanWordLists); diff --git a/libs/qscintilla_2.14.1/scintilla/lexers/LexBash.cpp b/libs/qscintilla_2.14.1/scintilla/lexers/LexBash.cpp new file mode 100644 index 000000000..5bbd563d5 --- /dev/null +++ b/libs/qscintilla_2.14.1/scintilla/lexers/LexBash.cpp @@ -0,0 +1,907 @@ +// Scintilla source code edit control +/** @file LexBash.cxx + ** Lexer for Bash. + **/ +// Copyright 2004-2012 by Neil Hodgson +// Adapted from LexPerl by Kein-Hong Man 2004 +// The License.txt file describes the conditions under which this software may be distributed. + +#include +#include +#include +#include +#include + +#include "ILexer.h" +#include "Scintilla.h" +#include "SciLexer.h" + +#include "WordList.h" +#include "LexAccessor.h" +#include "Accessor.h" +#include "StyleContext.h" +#include "CharacterSet.h" +#include "LexerModule.h" + +using namespace Scintilla; + +#define HERE_DELIM_MAX 256 + +// define this if you want 'invalid octals' to be marked as errors +// usually, this is not a good idea, permissive lexing is better +#undef PEDANTIC_OCTAL + +#define BASH_BASE_ERROR 65 +#define BASH_BASE_DECIMAL 66 +#define BASH_BASE_HEX 67 +#ifdef PEDANTIC_OCTAL +#define BASH_BASE_OCTAL 68 +#define BASH_BASE_OCTAL_ERROR 69 +#endif + +// state constants for parts of a bash command segment +#define BASH_CMD_BODY 0 +#define BASH_CMD_START 1 +#define BASH_CMD_WORD 2 +#define BASH_CMD_TEST 3 +#define BASH_CMD_ARITH 4 +#define BASH_CMD_DELIM 5 + +// state constants for nested delimiter pairs, used by +// SCE_SH_STRING and SCE_SH_BACKTICKS processing +#define BASH_DELIM_LITERAL 0 +#define BASH_DELIM_STRING 1 +#define BASH_DELIM_CSTRING 2 +#define BASH_DELIM_LSTRING 3 +#define BASH_DELIM_COMMAND 4 +#define BASH_DELIM_BACKTICK 5 + +#define BASH_DELIM_STACK_MAX 7 + +static inline int translateBashDigit(int ch) { + if (ch >= '0' && ch <= '9') { + return ch - '0'; + } else if (ch >= 'a' && ch <= 'z') { + return ch - 'a' + 10; + } else if (ch >= 'A' && ch <= 'Z') { + return ch - 'A' + 36; + } else if (ch == '@') { + return 62; + } else if (ch == '_') { + return 63; + } + return BASH_BASE_ERROR; +} + +static inline int getBashNumberBase(char *s) { + int i = 0; + int base = 0; + while (*s) { + base = base * 10 + (*s++ - '0'); + i++; + } + if (base > 64 || i > 2) { + return BASH_BASE_ERROR; + } + return base; +} + +static int opposite(int ch) { + if (ch == '(') return ')'; + if (ch == '[') return ']'; + if (ch == '{') return '}'; + if (ch == '<') return '>'; + return ch; +} + +static int GlobScan(StyleContext &sc) { + // forward scan for zsh globs, disambiguate versus bash arrays + // complex expressions may still fail, e.g. unbalanced () '' "" etc + int c, sLen = 0; + int pCount = 0; + int hash = 0; + while ((c = sc.GetRelativeCharacter(++sLen)) != 0) { + if (IsASpace(c)) { + return 0; + } else if (c == '\'' || c == '\"') { + if (hash != 2) return 0; + } else if (c == '#' && hash == 0) { + hash = (sLen == 1) ? 2:1; + } else if (c == '(') { + pCount++; + } else if (c == ')') { + if (pCount == 0) { + if (hash) return sLen; + return 0; + } + pCount--; + } + } + return 0; +} + +static void ColouriseBashDoc(Sci_PositionU startPos, Sci_Position length, int initStyle, + WordList *keywordlists[], Accessor &styler) { + + WordList &keywords = *keywordlists[0]; + WordList cmdDelimiter, bashStruct, bashStruct_in; + cmdDelimiter.Set("| || |& & && ; ;; ( ) { }"); + bashStruct.Set("if elif fi while until else then do done esac eval"); + bashStruct_in.Set("for case select"); + + CharacterSet setWordStart(CharacterSet::setAlpha, "_"); + // note that [+-] are often parts of identifiers in shell scripts + CharacterSet setWord(CharacterSet::setAlphaNum, "._+-"); + CharacterSet setMetaCharacter(CharacterSet::setNone, "|&;()<> \t\r\n"); + setMetaCharacter.Add(0); + CharacterSet setBashOperator(CharacterSet::setNone, "^&%()-+=|{}[]:;>,*/(ch); + Delimiter[DelimiterLength] = '\0'; + } + ~HereDocCls() { + } + }; + HereDocCls HereDoc; + + class QuoteCls { // Class to manage quote pairs (simplified vs LexPerl) + public: + int Count; + int Up, Down; + QuoteCls() { + Count = 0; + Up = '\0'; + Down = '\0'; + } + void Open(int u) { + Count++; + Up = u; + Down = opposite(Up); + } + void Start(int u) { + Count = 0; + Open(u); + } + }; + QuoteCls Quote; + + class QuoteStackCls { // Class to manage quote pairs that nest + public: + int Count; + int Up, Down; + int Style; + int Depth; // levels pushed + int CountStack[BASH_DELIM_STACK_MAX]; + int UpStack [BASH_DELIM_STACK_MAX]; + int StyleStack[BASH_DELIM_STACK_MAX]; + QuoteStackCls() { + Count = 0; + Up = '\0'; + Down = '\0'; + Style = 0; + Depth = 0; + } + void Start(int u, int s) { + Count = 1; + Up = u; + Down = opposite(Up); + Style = s; + } + void Push(int u, int s) { + if (Depth >= BASH_DELIM_STACK_MAX) + return; + CountStack[Depth] = Count; + UpStack [Depth] = Up; + StyleStack[Depth] = Style; + Depth++; + Count = 1; + Up = u; + Down = opposite(Up); + Style = s; + } + void Pop(void) { + if (Depth <= 0) + return; + Depth--; + Count = CountStack[Depth]; + Up = UpStack [Depth]; + Style = StyleStack[Depth]; + Down = opposite(Up); + } + ~QuoteStackCls() { + } + }; + QuoteStackCls QuoteStack; + + int numBase = 0; + int digit; + Sci_PositionU endPos = startPos + length; + int cmdState = BASH_CMD_START; + int testExprType = 0; + + // Always backtracks to the start of a line that is not a continuation + // of the previous line (i.e. start of a bash command segment) + Sci_Position ln = styler.GetLine(startPos); + if (ln > 0 && startPos == static_cast(styler.LineStart(ln))) + ln--; + for (;;) { + startPos = styler.LineStart(ln); + if (ln == 0 || styler.GetLineState(ln) == BASH_CMD_START) + break; + ln--; + } + initStyle = SCE_SH_DEFAULT; + + StyleContext sc(startPos, endPos - startPos, initStyle, styler); + + for (; sc.More(); sc.Forward()) { + + // handle line continuation, updates per-line stored state + if (sc.atLineStart) { + ln = styler.GetLine(sc.currentPos); + if (sc.state == SCE_SH_STRING + || sc.state == SCE_SH_BACKTICKS + || sc.state == SCE_SH_CHARACTER + || sc.state == SCE_SH_HERE_Q + || sc.state == SCE_SH_COMMENTLINE + || sc.state == SCE_SH_PARAM) { + // force backtrack while retaining cmdState + styler.SetLineState(ln, BASH_CMD_BODY); + } else { + if (ln > 0) { + if ((sc.GetRelative(-3) == '\\' && sc.GetRelative(-2) == '\r' && sc.chPrev == '\n') + || sc.GetRelative(-2) == '\\') { // handle '\' line continuation + // retain last line's state + } else + cmdState = BASH_CMD_START; + } + styler.SetLineState(ln, cmdState); + } + } + + // controls change of cmdState at the end of a non-whitespace element + // states BODY|TEST|ARITH persist until the end of a command segment + // state WORD persist, but ends with 'in' or 'do' construct keywords + int cmdStateNew = BASH_CMD_BODY; + if (cmdState == BASH_CMD_TEST || cmdState == BASH_CMD_ARITH || cmdState == BASH_CMD_WORD) + cmdStateNew = cmdState; + int stylePrev = sc.state; + + // Determine if the current state should terminate. + switch (sc.state) { + case SCE_SH_OPERATOR: + sc.SetState(SCE_SH_DEFAULT); + if (cmdState == BASH_CMD_DELIM) // if command delimiter, start new command + cmdStateNew = BASH_CMD_START; + else if (sc.chPrev == '\\') // propagate command state if line continued + cmdStateNew = cmdState; + break; + case SCE_SH_WORD: + // "." never used in Bash variable names but used in file names + if (!setWord.Contains(sc.ch)) { + char s[500]; + char s2[10]; + sc.GetCurrent(s, sizeof(s)); + // allow keywords ending in a whitespace or command delimiter + s2[0] = static_cast(sc.ch); + s2[1] = '\0'; + bool keywordEnds = IsASpace(sc.ch) || cmdDelimiter.InList(s2); + // 'in' or 'do' may be construct keywords + if (cmdState == BASH_CMD_WORD) { + if (strcmp(s, "in") == 0 && keywordEnds) + cmdStateNew = BASH_CMD_BODY; + else if (strcmp(s, "do") == 0 && keywordEnds) + cmdStateNew = BASH_CMD_START; + else + sc.ChangeState(SCE_SH_IDENTIFIER); + sc.SetState(SCE_SH_DEFAULT); + break; + } + // a 'test' keyword starts a test expression + if (strcmp(s, "test") == 0) { + if (cmdState == BASH_CMD_START && keywordEnds) { + cmdStateNew = BASH_CMD_TEST; + testExprType = 0; + } else + sc.ChangeState(SCE_SH_IDENTIFIER); + } + // detect bash construct keywords + else if (bashStruct.InList(s)) { + if (cmdState == BASH_CMD_START && keywordEnds) + cmdStateNew = BASH_CMD_START; + else + sc.ChangeState(SCE_SH_IDENTIFIER); + } + // 'for'|'case'|'select' needs 'in'|'do' to be highlighted later + else if (bashStruct_in.InList(s)) { + if (cmdState == BASH_CMD_START && keywordEnds) + cmdStateNew = BASH_CMD_WORD; + else + sc.ChangeState(SCE_SH_IDENTIFIER); + } + // disambiguate option items and file test operators + else if (s[0] == '-') { + if (cmdState != BASH_CMD_TEST) + sc.ChangeState(SCE_SH_IDENTIFIER); + } + // disambiguate keywords and identifiers + else if (cmdState != BASH_CMD_START + || !(keywords.InList(s) && keywordEnds)) { + sc.ChangeState(SCE_SH_IDENTIFIER); + } + sc.SetState(SCE_SH_DEFAULT); + } + break; + case SCE_SH_IDENTIFIER: + if (sc.chPrev == '\\') { // for escaped chars + sc.ForwardSetState(SCE_SH_DEFAULT); + } else if (!setWord.Contains(sc.ch)) { + sc.SetState(SCE_SH_DEFAULT); + } else if (cmdState == BASH_CMD_ARITH && !setWordStart.Contains(sc.ch)) { + sc.SetState(SCE_SH_DEFAULT); + } + break; + case SCE_SH_NUMBER: + digit = translateBashDigit(sc.ch); + if (numBase == BASH_BASE_DECIMAL) { + if (sc.ch == '#') { + char s[10]; + sc.GetCurrent(s, sizeof(s)); + numBase = getBashNumberBase(s); + if (numBase != BASH_BASE_ERROR) + break; + } else if (IsADigit(sc.ch)) + break; + } else if (numBase == BASH_BASE_HEX) { + if (IsADigit(sc.ch, 16)) + break; +#ifdef PEDANTIC_OCTAL + } else if (numBase == BASH_BASE_OCTAL || + numBase == BASH_BASE_OCTAL_ERROR) { + if (digit <= 7) + break; + if (digit <= 9) { + numBase = BASH_BASE_OCTAL_ERROR; + break; + } +#endif + } else if (numBase == BASH_BASE_ERROR) { + if (digit <= 9) + break; + } else { // DD#DDDD number style handling + if (digit != BASH_BASE_ERROR) { + if (numBase <= 36) { + // case-insensitive if base<=36 + if (digit >= 36) digit -= 26; + } + if (digit < numBase) + break; + if (digit <= 9) { + numBase = BASH_BASE_ERROR; + break; + } + } + } + // fallthrough when number is at an end or error + if (numBase == BASH_BASE_ERROR +#ifdef PEDANTIC_OCTAL + || numBase == BASH_BASE_OCTAL_ERROR +#endif + ) { + sc.ChangeState(SCE_SH_ERROR); + } + sc.SetState(SCE_SH_DEFAULT); + break; + case SCE_SH_COMMENTLINE: + if (sc.atLineEnd && sc.chPrev != '\\') { + sc.SetState(SCE_SH_DEFAULT); + } + break; + case SCE_SH_HERE_DELIM: + // From Bash info: + // --------------- + // Specifier format is: <<[-]WORD + // Optional '-' is for removal of leading tabs from here-doc. + // Whitespace acceptable after <<[-] operator + // + if (HereDoc.State == 0) { // '<<' encountered + HereDoc.Quote = sc.chNext; + HereDoc.Quoted = false; + HereDoc.DelimiterLength = 0; + HereDoc.Delimiter[HereDoc.DelimiterLength] = '\0'; + if (sc.chNext == '\'' || sc.chNext == '\"') { // a quoted here-doc delimiter (' or ") + sc.Forward(); + HereDoc.Quoted = true; + HereDoc.State = 1; + } else if (setHereDoc.Contains(sc.chNext) || + (sc.chNext == '=' && cmdState != BASH_CMD_ARITH)) { + // an unquoted here-doc delimiter, no special handling + HereDoc.State = 1; + } else if (sc.chNext == '<') { // HERE string <<< + sc.Forward(); + sc.ForwardSetState(SCE_SH_DEFAULT); + } else if (IsASpace(sc.chNext)) { + // eat whitespace + } else if (setLeftShift.Contains(sc.chNext) || + (sc.chNext == '=' && cmdState == BASH_CMD_ARITH)) { + // left shift <<$var or <<= cases + sc.ChangeState(SCE_SH_OPERATOR); + sc.ForwardSetState(SCE_SH_DEFAULT); + } else { + // symbols terminates; deprecated zero-length delimiter + HereDoc.State = 1; + } + } else if (HereDoc.State == 1) { // collect the delimiter + // * if single quoted, there's no escape + // * if double quoted, there are \\ and \" escapes + if ((HereDoc.Quote == '\'' && sc.ch != HereDoc.Quote) || + (HereDoc.Quoted && sc.ch != HereDoc.Quote && sc.ch != '\\') || + (HereDoc.Quote != '\'' && sc.chPrev == '\\') || + (setHereDoc2.Contains(sc.ch))) { + HereDoc.Append(sc.ch); + } else if (HereDoc.Quoted && sc.ch == HereDoc.Quote) { // closing quote => end of delimiter + sc.ForwardSetState(SCE_SH_DEFAULT); + } else if (sc.ch == '\\') { + if (HereDoc.Quoted && sc.chNext != HereDoc.Quote && sc.chNext != '\\') { + // in quoted prefixes only \ and the quote eat the escape + HereDoc.Append(sc.ch); + } else { + // skip escape prefix + } + } else if (!HereDoc.Quoted) { + sc.SetState(SCE_SH_DEFAULT); + } + if (HereDoc.DelimiterLength >= HERE_DELIM_MAX - 1) { // force blowup + sc.SetState(SCE_SH_ERROR); + HereDoc.State = 0; + } + } + break; + case SCE_SH_HERE_Q: + // HereDoc.State == 2 + if (sc.atLineStart) { + sc.SetState(SCE_SH_HERE_Q); + int prefixws = 0; + while (sc.ch == '\t' && !sc.atLineEnd) { // tabulation prefix + sc.Forward(); + prefixws++; + } + if (prefixws > 0) + sc.SetState(SCE_SH_HERE_Q); + while (!sc.atLineEnd) { + sc.Forward(); + } + char s[HERE_DELIM_MAX]; + sc.GetCurrent(s, sizeof(s)); + if (sc.LengthCurrent() == 0) { // '' or "" delimiters + if ((prefixws == 0 || HereDoc.Indent) && + HereDoc.Quoted && HereDoc.DelimiterLength == 0) + sc.SetState(SCE_SH_DEFAULT); + break; + } + if (s[strlen(s) - 1] == '\r') + s[strlen(s) - 1] = '\0'; + if (strcmp(HereDoc.Delimiter, s) == 0) { + if ((prefixws == 0) || // indentation rule + (prefixws > 0 && HereDoc.Indent)) { + sc.SetState(SCE_SH_DEFAULT); + break; + } + } + } + break; + case SCE_SH_SCALAR: // variable names + if (!setParam.Contains(sc.ch)) { + if (sc.LengthCurrent() == 1) { + // Special variable: $(, $_ etc. + sc.ForwardSetState(SCE_SH_DEFAULT); + } else { + sc.SetState(SCE_SH_DEFAULT); + } + } + break; + case SCE_SH_STRING: // delimited styles, can nest + case SCE_SH_BACKTICKS: + if (sc.ch == '\\' && QuoteStack.Up != '\\') { + if (QuoteStack.Style != BASH_DELIM_LITERAL) + sc.Forward(); + } else if (sc.ch == QuoteStack.Down) { + QuoteStack.Count--; + if (QuoteStack.Count == 0) { + if (QuoteStack.Depth > 0) { + QuoteStack.Pop(); + } else + sc.ForwardSetState(SCE_SH_DEFAULT); + } + } else if (sc.ch == QuoteStack.Up) { + QuoteStack.Count++; + } else { + if (QuoteStack.Style == BASH_DELIM_STRING || + QuoteStack.Style == BASH_DELIM_LSTRING + ) { // do nesting for "string", $"locale-string" + if (sc.ch == '`') { + QuoteStack.Push(sc.ch, BASH_DELIM_BACKTICK); + } else if (sc.ch == '$' && sc.chNext == '(') { + sc.Forward(); + QuoteStack.Push(sc.ch, BASH_DELIM_COMMAND); + } + } else if (QuoteStack.Style == BASH_DELIM_COMMAND || + QuoteStack.Style == BASH_DELIM_BACKTICK + ) { // do nesting for $(command), `command` + if (sc.ch == '\'') { + QuoteStack.Push(sc.ch, BASH_DELIM_LITERAL); + } else if (sc.ch == '\"') { + QuoteStack.Push(sc.ch, BASH_DELIM_STRING); + } else if (sc.ch == '`') { + QuoteStack.Push(sc.ch, BASH_DELIM_BACKTICK); + } else if (sc.ch == '$') { + if (sc.chNext == '\'') { + sc.Forward(); + QuoteStack.Push(sc.ch, BASH_DELIM_CSTRING); + } else if (sc.chNext == '\"') { + sc.Forward(); + QuoteStack.Push(sc.ch, BASH_DELIM_LSTRING); + } else if (sc.chNext == '(') { + sc.Forward(); + QuoteStack.Push(sc.ch, BASH_DELIM_COMMAND); + } + } + } + } + break; + case SCE_SH_PARAM: // ${parameter} + if (sc.ch == '\\' && Quote.Up != '\\') { + sc.Forward(); + } else if (sc.ch == Quote.Down) { + Quote.Count--; + if (Quote.Count == 0) { + sc.ForwardSetState(SCE_SH_DEFAULT); + } + } else if (sc.ch == Quote.Up) { + Quote.Count++; + } + break; + case SCE_SH_CHARACTER: // singly-quoted strings + if (sc.ch == Quote.Down) { + Quote.Count--; + if (Quote.Count == 0) { + sc.ForwardSetState(SCE_SH_DEFAULT); + } + } + break; + } + + // Must check end of HereDoc state 1 before default state is handled + if (HereDoc.State == 1 && sc.atLineEnd) { + // Begin of here-doc (the line after the here-doc delimiter): + // Lexically, the here-doc starts from the next line after the >>, but the + // first line of here-doc seem to follow the style of the last EOL sequence + HereDoc.State = 2; + if (HereDoc.Quoted) { + if (sc.state == SCE_SH_HERE_DELIM) { + // Missing quote at end of string! Syntax error in bash 4.3 + // Mark this bit as an error, do not colour any here-doc + sc.ChangeState(SCE_SH_ERROR); + sc.SetState(SCE_SH_DEFAULT); + } else { + // HereDoc.Quote always == '\'' + sc.SetState(SCE_SH_HERE_Q); + } + } else if (HereDoc.DelimiterLength == 0) { + // no delimiter, illegal (but '' and "" are legal) + sc.ChangeState(SCE_SH_ERROR); + sc.SetState(SCE_SH_DEFAULT); + } else { + sc.SetState(SCE_SH_HERE_Q); + } + } + + // update cmdState about the current command segment + if (stylePrev != SCE_SH_DEFAULT && sc.state == SCE_SH_DEFAULT) { + cmdState = cmdStateNew; + } + // Determine if a new state should be entered. + if (sc.state == SCE_SH_DEFAULT) { + if (sc.ch == '\\') { + // Bash can escape any non-newline as a literal + sc.SetState(SCE_SH_IDENTIFIER); + if (sc.chNext == '\r' || sc.chNext == '\n') + sc.SetState(SCE_SH_OPERATOR); + } else if (IsADigit(sc.ch)) { + sc.SetState(SCE_SH_NUMBER); + numBase = BASH_BASE_DECIMAL; + if (sc.ch == '0') { // hex,octal + if (sc.chNext == 'x' || sc.chNext == 'X') { + numBase = BASH_BASE_HEX; + sc.Forward(); + } else if (IsADigit(sc.chNext)) { +#ifdef PEDANTIC_OCTAL + numBase = BASH_BASE_OCTAL; +#else + numBase = BASH_BASE_HEX; +#endif + } + } + } else if (setWordStart.Contains(sc.ch)) { + sc.SetState(SCE_SH_WORD); + } else if (sc.ch == '#') { + if (stylePrev != SCE_SH_WORD && stylePrev != SCE_SH_IDENTIFIER && + (sc.currentPos == 0 || setMetaCharacter.Contains(sc.chPrev))) { + sc.SetState(SCE_SH_COMMENTLINE); + } else { + sc.SetState(SCE_SH_WORD); + } + // handle some zsh features within arithmetic expressions only + if (cmdState == BASH_CMD_ARITH) { + if (sc.chPrev == '[') { // [#8] [##8] output digit setting + sc.SetState(SCE_SH_WORD); + if (sc.chNext == '#') { + sc.Forward(); + } + } else if (sc.Match("##^") && IsUpperCase(sc.GetRelative(3))) { // ##^A + sc.SetState(SCE_SH_IDENTIFIER); + sc.Forward(3); + } else if (sc.chNext == '#' && !IsASpace(sc.GetRelative(2))) { // ##a + sc.SetState(SCE_SH_IDENTIFIER); + sc.Forward(2); + } else if (setWordStart.Contains(sc.chNext)) { // #name + sc.SetState(SCE_SH_IDENTIFIER); + } + } + } else if (sc.ch == '\"') { + sc.SetState(SCE_SH_STRING); + QuoteStack.Start(sc.ch, BASH_DELIM_STRING); + } else if (sc.ch == '\'') { + sc.SetState(SCE_SH_CHARACTER); + Quote.Start(sc.ch); + } else if (sc.ch == '`') { + sc.SetState(SCE_SH_BACKTICKS); + QuoteStack.Start(sc.ch, BASH_DELIM_BACKTICK); + } else if (sc.ch == '$') { + if (sc.Match("$((")) { + sc.SetState(SCE_SH_OPERATOR); // handle '((' later + continue; + } + sc.SetState(SCE_SH_SCALAR); + sc.Forward(); + if (sc.ch == '{') { + sc.ChangeState(SCE_SH_PARAM); + Quote.Start(sc.ch); + } else if (sc.ch == '\'') { + sc.ChangeState(SCE_SH_STRING); + QuoteStack.Start(sc.ch, BASH_DELIM_CSTRING); + } else if (sc.ch == '"') { + sc.ChangeState(SCE_SH_STRING); + QuoteStack.Start(sc.ch, BASH_DELIM_LSTRING); + } else if (sc.ch == '(') { + sc.ChangeState(SCE_SH_BACKTICKS); + QuoteStack.Start(sc.ch, BASH_DELIM_COMMAND); + } else if (sc.ch == '`') { // $` seen in a configure script, valid? + sc.ChangeState(SCE_SH_BACKTICKS); + QuoteStack.Start(sc.ch, BASH_DELIM_BACKTICK); + } else { + continue; // scalar has no delimiter pair + } + } else if (sc.Match('<', '<')) { + sc.SetState(SCE_SH_HERE_DELIM); + HereDoc.State = 0; + if (sc.GetRelative(2) == '-') { // <<- indent case + HereDoc.Indent = true; + sc.Forward(); + } else { + HereDoc.Indent = false; + } + } else if (sc.ch == '-' && // one-char file test operators + setSingleCharOp.Contains(sc.chNext) && + !setWord.Contains(sc.GetRelative(2)) && + IsASpace(sc.chPrev)) { + sc.SetState(SCE_SH_WORD); + sc.Forward(); + } else if (setBashOperator.Contains(sc.ch)) { + char s[10]; + bool isCmdDelim = false; + sc.SetState(SCE_SH_OPERATOR); + // globs have no whitespace, do not appear in arithmetic expressions + if (cmdState != BASH_CMD_ARITH && sc.ch == '(' && sc.chNext != '(') { + int i = GlobScan(sc); + if (i > 1) { + sc.SetState(SCE_SH_IDENTIFIER); + sc.Forward(i); + continue; + } + } + // handle opening delimiters for test/arithmetic expressions - ((,[[,[ + if (cmdState == BASH_CMD_START + || cmdState == BASH_CMD_BODY) { + if (sc.Match('(', '(')) { + cmdState = BASH_CMD_ARITH; + sc.Forward(); + } else if (sc.Match('[', '[') && IsASpace(sc.GetRelative(2))) { + cmdState = BASH_CMD_TEST; + testExprType = 1; + sc.Forward(); + } else if (sc.ch == '[' && IsASpace(sc.chNext)) { + cmdState = BASH_CMD_TEST; + testExprType = 2; + } + } + // special state -- for ((x;y;z)) in ... looping + if (cmdState == BASH_CMD_WORD && sc.Match('(', '(')) { + cmdState = BASH_CMD_ARITH; + sc.Forward(); + continue; + } + // handle command delimiters in command START|BODY|WORD state, also TEST if 'test' + if (cmdState == BASH_CMD_START + || cmdState == BASH_CMD_BODY + || cmdState == BASH_CMD_WORD + || (cmdState == BASH_CMD_TEST && testExprType == 0)) { + s[0] = static_cast(sc.ch); + if (setBashOperator.Contains(sc.chNext)) { + s[1] = static_cast(sc.chNext); + s[2] = '\0'; + isCmdDelim = cmdDelimiter.InList(s); + if (isCmdDelim) + sc.Forward(); + } + if (!isCmdDelim) { + s[1] = '\0'; + isCmdDelim = cmdDelimiter.InList(s); + } + if (isCmdDelim) { + cmdState = BASH_CMD_DELIM; + continue; + } + } + // handle closing delimiters for test/arithmetic expressions - )),]],] + if (cmdState == BASH_CMD_ARITH && sc.Match(')', ')')) { + cmdState = BASH_CMD_BODY; + sc.Forward(); + } else if (cmdState == BASH_CMD_TEST && IsASpace(sc.chPrev)) { + if (sc.Match(']', ']') && testExprType == 1) { + sc.Forward(); + cmdState = BASH_CMD_BODY; + } else if (sc.ch == ']' && testExprType == 2) { + cmdState = BASH_CMD_BODY; + } + } + } + }// sc.state + } + sc.Complete(); + if (sc.state == SCE_SH_HERE_Q) { + styler.ChangeLexerState(sc.currentPos, styler.Length()); + } + sc.Complete(); +} + +static bool IsCommentLine(Sci_Position line, Accessor &styler) { + Sci_Position pos = styler.LineStart(line); + Sci_Position eol_pos = styler.LineStart(line + 1) - 1; + for (Sci_Position i = pos; i < eol_pos; i++) { + char ch = styler[i]; + if (ch == '#') + return true; + else if (ch != ' ' && ch != '\t') + return false; + } + return false; +} + +static void FoldBashDoc(Sci_PositionU startPos, Sci_Position length, int, WordList *[], + Accessor &styler) { + bool foldComment = styler.GetPropertyInt("fold.comment") != 0; + bool foldCompact = styler.GetPropertyInt("fold.compact", 1) != 0; + Sci_PositionU endPos = startPos + length; + int visibleChars = 0; + int skipHereCh = 0; + Sci_Position lineCurrent = styler.GetLine(startPos); + int levelPrev = styler.LevelAt(lineCurrent) & SC_FOLDLEVELNUMBERMASK; + int levelCurrent = levelPrev; + char chNext = styler[startPos]; + int styleNext = styler.StyleAt(startPos); + char word[8] = { '\0' }; // we're not interested in long words anyway + unsigned int wordlen = 0; + for (Sci_PositionU i = startPos; i < endPos; i++) { + char ch = chNext; + chNext = styler.SafeGetCharAt(i + 1); + int style = styleNext; + styleNext = styler.StyleAt(i + 1); + bool atEOL = (ch == '\r' && chNext != '\n') || (ch == '\n'); + // Comment folding + if (foldComment && atEOL && IsCommentLine(lineCurrent, styler)) + { + if (!IsCommentLine(lineCurrent - 1, styler) + && IsCommentLine(lineCurrent + 1, styler)) + levelCurrent++; + else if (IsCommentLine(lineCurrent - 1, styler) + && !IsCommentLine(lineCurrent + 1, styler)) + levelCurrent--; + } + if (style == SCE_SH_WORD) { + if ((wordlen + 1) < sizeof(word)) + word[wordlen++] = ch; + if (styleNext != style) { + word[wordlen] = '\0'; + wordlen = 0; + if (strcmp(word, "if") == 0 || strcmp(word, "case") == 0 || strcmp(word, "do") == 0) { + levelCurrent++; + } else if (strcmp(word, "fi") == 0 || strcmp(word, "esac") == 0 || strcmp(word, "done") == 0) { + levelCurrent--; + } + } + } + if (style == SCE_SH_OPERATOR) { + if (ch == '{') { + levelCurrent++; + } else if (ch == '}') { + levelCurrent--; + } + } + // Here Document folding + if (style == SCE_SH_HERE_DELIM) { + if (ch == '<' && chNext == '<') { + if (styler.SafeGetCharAt(i + 2) == '<') { + skipHereCh = 1; + } else { + if (skipHereCh == 0) { + levelCurrent++; + } else { + skipHereCh = 0; + } + } + } + } else if (style == SCE_SH_HERE_Q && styler.StyleAt(i+1) == SCE_SH_DEFAULT) { + levelCurrent--; + } + if (atEOL) { + int lev = levelPrev; + if (visibleChars == 0 && foldCompact) + lev |= SC_FOLDLEVELWHITEFLAG; + if ((levelCurrent > levelPrev) && (visibleChars > 0)) + lev |= SC_FOLDLEVELHEADERFLAG; + if (lev != styler.LevelAt(lineCurrent)) { + styler.SetLevel(lineCurrent, lev); + } + lineCurrent++; + levelPrev = levelCurrent; + visibleChars = 0; + } + if (!isspacechar(ch)) + visibleChars++; + } + // Fill in the real level of the next line, keeping the current flags as they will be filled in later + int flagsNext = styler.LevelAt(lineCurrent) & ~SC_FOLDLEVELNUMBERMASK; + styler.SetLevel(lineCurrent, levelPrev | flagsNext); +} + +static const char * const bashWordListDesc[] = { + "Keywords", + 0 +}; + +LexerModule lmBash(SCLEX_BASH, ColouriseBashDoc, "bash", FoldBashDoc, bashWordListDesc); diff --git a/libs/qscintilla_2.14.1/scintilla/lexers/LexBasic.cpp b/libs/qscintilla_2.14.1/scintilla/lexers/LexBasic.cpp new file mode 100644 index 000000000..4ec58dcdd --- /dev/null +++ b/libs/qscintilla_2.14.1/scintilla/lexers/LexBasic.cpp @@ -0,0 +1,565 @@ +// Scintilla source code edit control +/** @file LexBasic.cxx + ** Lexer for BlitzBasic and PureBasic. + ** Converted to lexer object and added further folding features/properties by "Udo Lechner" + **/ +// Copyright 1998-2003 by Neil Hodgson +// The License.txt file describes the conditions under which this software may be distributed. + +// This tries to be a unified Lexer/Folder for all the BlitzBasic/BlitzMax/PurBasic basics +// and derivatives. Once they diverge enough, might want to split it into multiple +// lexers for more code clearity. +// +// Mail me (elias users sf net) for any bugs. + +// Folding only works for simple things like functions or types. + +// You may want to have a look at my ctags lexer as well, if you additionally to coloring +// and folding need to extract things like label tags in your editor. + +#include +#include +#include +#include +#include +#include + +#include +#include + +#include "ILexer.h" +#include "Scintilla.h" +#include "SciLexer.h" + +#include "WordList.h" +#include "LexAccessor.h" +#include "StyleContext.h" +#include "CharacterSet.h" +#include "LexerModule.h" +#include "OptionSet.h" +#include "DefaultLexer.h" + +using namespace Scintilla; + +/* Bits: + * 1 - whitespace + * 2 - operator + * 4 - identifier + * 8 - decimal digit + * 16 - hex digit + * 32 - bin digit + * 64 - letter + */ +static int character_classification[128] = +{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 10, 2, + 60, 60, 28, 28, 28, 28, 28, 28, 28, 28, 2, 2, 2, 2, 2, 2, + 2, 84, 84, 84, 84, 84, 84, 68, 68, 68, 68, 68, 68, 68, 68, 68, + 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 2, 2, 2, 2, 68, + 2, 84, 84, 84, 84, 84, 84, 68, 68, 68, 68, 68, 68, 68, 68, 68, + 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 2, 2, 2, 2, 0 +}; + +static bool IsSpace(int c) { + return c < 128 && (character_classification[c] & 1); +} + +static bool IsOperator(int c) { + return c < 128 && (character_classification[c] & 2); +} + +static bool IsIdentifier(int c) { + return c < 128 && (character_classification[c] & 4); +} + +static bool IsDigit(int c) { + return c < 128 && (character_classification[c] & 8); +} + +static bool IsHexDigit(int c) { + return c < 128 && (character_classification[c] & 16); +} + +static bool IsBinDigit(int c) { + return c < 128 && (character_classification[c] & 32); +} + +static bool IsLetter(int c) { + return c < 128 && (character_classification[c] & 64); +} + +static int LowerCase(int c) +{ + if (c >= 'A' && c <= 'Z') + return 'a' + c - 'A'; + return c; +} + +static int CheckBlitzFoldPoint(char const *token, int &level) { + if (!strcmp(token, "function") || + !strcmp(token, "type")) { + level |= SC_FOLDLEVELHEADERFLAG; + return 1; + } + if (!strcmp(token, "end function") || + !strcmp(token, "end type")) { + return -1; + } + return 0; +} + +static int CheckPureFoldPoint(char const *token, int &level) { + if (!strcmp(token, "procedure") || + !strcmp(token, "enumeration") || + !strcmp(token, "interface") || + !strcmp(token, "structure")) { + level |= SC_FOLDLEVELHEADERFLAG; + return 1; + } + if (!strcmp(token, "endprocedure") || + !strcmp(token, "endenumeration") || + !strcmp(token, "endinterface") || + !strcmp(token, "endstructure")) { + return -1; + } + return 0; +} + +static int CheckFreeFoldPoint(char const *token, int &level) { + if (!strcmp(token, "function") || + !strcmp(token, "sub") || + !strcmp(token, "enum") || + !strcmp(token, "type") || + !strcmp(token, "union") || + !strcmp(token, "property") || + !strcmp(token, "destructor") || + !strcmp(token, "constructor")) { + level |= SC_FOLDLEVELHEADERFLAG; + return 1; + } + if (!strcmp(token, "end function") || + !strcmp(token, "end sub") || + !strcmp(token, "end enum") || + !strcmp(token, "end type") || + !strcmp(token, "end union") || + !strcmp(token, "end property") || + !strcmp(token, "end destructor") || + !strcmp(token, "end constructor")) { + return -1; + } + return 0; +} + +// An individual named option for use in an OptionSet + +// Options used for LexerBasic +struct OptionsBasic { + bool fold; + bool foldSyntaxBased; + bool foldCommentExplicit; + std::string foldExplicitStart; + std::string foldExplicitEnd; + bool foldExplicitAnywhere; + bool foldCompact; + OptionsBasic() { + fold = false; + foldSyntaxBased = true; + foldCommentExplicit = false; + foldExplicitStart = ""; + foldExplicitEnd = ""; + foldExplicitAnywhere = false; + foldCompact = true; + } +}; + +static const char * const blitzbasicWordListDesc[] = { + "BlitzBasic Keywords", + "user1", + "user2", + "user3", + 0 +}; + +static const char * const purebasicWordListDesc[] = { + "PureBasic Keywords", + "PureBasic PreProcessor Keywords", + "user defined 1", + "user defined 2", + 0 +}; + +static const char * const freebasicWordListDesc[] = { + "FreeBasic Keywords", + "FreeBasic PreProcessor Keywords", + "user defined 1", + "user defined 2", + 0 +}; + +struct OptionSetBasic : public OptionSet { + OptionSetBasic(const char * const wordListDescriptions[]) { + DefineProperty("fold", &OptionsBasic::fold); + + DefineProperty("fold.basic.syntax.based", &OptionsBasic::foldSyntaxBased, + "Set this property to 0 to disable syntax based folding."); + + DefineProperty("fold.basic.comment.explicit", &OptionsBasic::foldCommentExplicit, + "This option enables folding explicit fold points when using the Basic lexer. " + "Explicit fold points allows adding extra folding by placing a ;{ (BB/PB) or '{ (FB) comment at the start " + "and a ;} (BB/PB) or '} (FB) at the end of a section that should be folded."); + + DefineProperty("fold.basic.explicit.start", &OptionsBasic::foldExplicitStart, + "The string to use for explicit fold start points, replacing the standard ;{ (BB/PB) or '{ (FB)."); + + DefineProperty("fold.basic.explicit.end", &OptionsBasic::foldExplicitEnd, + "The string to use for explicit fold end points, replacing the standard ;} (BB/PB) or '} (FB)."); + + DefineProperty("fold.basic.explicit.anywhere", &OptionsBasic::foldExplicitAnywhere, + "Set this property to 1 to enable explicit fold points anywhere, not just in line comments."); + + DefineProperty("fold.compact", &OptionsBasic::foldCompact); + + DefineWordListSets(wordListDescriptions); + } +}; + +class LexerBasic : public DefaultLexer { + char comment_char; + int (*CheckFoldPoint)(char const *, int &); + WordList keywordlists[4]; + OptionsBasic options; + OptionSetBasic osBasic; +public: + LexerBasic(char comment_char_, int (*CheckFoldPoint_)(char const *, int &), const char * const wordListDescriptions[]) : + comment_char(comment_char_), + CheckFoldPoint(CheckFoldPoint_), + osBasic(wordListDescriptions) { + } + virtual ~LexerBasic() { + } + void SCI_METHOD Release() override { + delete this; + } + int SCI_METHOD Version() const override { + return lvOriginal; + } + const char * SCI_METHOD PropertyNames() override { + return osBasic.PropertyNames(); + } + int SCI_METHOD PropertyType(const char *name) override { + return osBasic.PropertyType(name); + } + const char * SCI_METHOD DescribeProperty(const char *name) override { + return osBasic.DescribeProperty(name); + } + Sci_Position SCI_METHOD PropertySet(const char *key, const char *val) override; + const char * SCI_METHOD DescribeWordListSets() override { + return osBasic.DescribeWordListSets(); + } + Sci_Position SCI_METHOD WordListSet(int n, const char *wl) override; + void SCI_METHOD Lex(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess) override; + void SCI_METHOD Fold(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess) override; + + void * SCI_METHOD PrivateCall(int, void *) override { + return 0; + } + static ILexer *LexerFactoryBlitzBasic() { + return new LexerBasic(';', CheckBlitzFoldPoint, blitzbasicWordListDesc); + } + static ILexer *LexerFactoryPureBasic() { + return new LexerBasic(';', CheckPureFoldPoint, purebasicWordListDesc); + } + static ILexer *LexerFactoryFreeBasic() { + return new LexerBasic('\'', CheckFreeFoldPoint, freebasicWordListDesc ); + } +}; + +Sci_Position SCI_METHOD LexerBasic::PropertySet(const char *key, const char *val) { + if (osBasic.PropertySet(&options, key, val)) { + return 0; + } + return -1; +} + +Sci_Position SCI_METHOD LexerBasic::WordListSet(int n, const char *wl) { + WordList *wordListN = 0; + switch (n) { + case 0: + wordListN = &keywordlists[0]; + break; + case 1: + wordListN = &keywordlists[1]; + break; + case 2: + wordListN = &keywordlists[2]; + break; + case 3: + wordListN = &keywordlists[3]; + break; + } + Sci_Position firstModification = -1; + if (wordListN) { + WordList wlNew; + wlNew.Set(wl); + if (*wordListN != wlNew) { + wordListN->Set(wl); + firstModification = 0; + } + } + return firstModification; +} + +void SCI_METHOD LexerBasic::Lex(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess) { + LexAccessor styler(pAccess); + + bool wasfirst = true, isfirst = true; // true if first token in a line + styler.StartAt(startPos); + int styleBeforeKeyword = SCE_B_DEFAULT; + + StyleContext sc(startPos, length, initStyle, styler); + + // Can't use sc.More() here else we miss the last character + for (; ; sc.Forward()) { + if (sc.state == SCE_B_IDENTIFIER) { + if (!IsIdentifier(sc.ch)) { + // Labels + if (wasfirst && sc.Match(':')) { + sc.ChangeState(SCE_B_LABEL); + sc.ForwardSetState(SCE_B_DEFAULT); + } else { + char s[100]; + int kstates[4] = { + SCE_B_KEYWORD, + SCE_B_KEYWORD2, + SCE_B_KEYWORD3, + SCE_B_KEYWORD4, + }; + sc.GetCurrentLowered(s, sizeof(s)); + for (int i = 0; i < 4; i++) { + if (keywordlists[i].InList(s)) { + sc.ChangeState(kstates[i]); + } + } + // Types, must set them as operator else they will be + // matched as number/constant + if (sc.Match('.') || sc.Match('$') || sc.Match('%') || + sc.Match('#')) { + sc.SetState(SCE_B_OPERATOR); + } else { + sc.SetState(SCE_B_DEFAULT); + } + } + } + } else if (sc.state == SCE_B_OPERATOR) { + if (!IsOperator(sc.ch) || sc.Match('#')) + sc.SetState(SCE_B_DEFAULT); + } else if (sc.state == SCE_B_LABEL) { + if (!IsIdentifier(sc.ch)) + sc.SetState(SCE_B_DEFAULT); + } else if (sc.state == SCE_B_CONSTANT) { + if (!IsIdentifier(sc.ch)) + sc.SetState(SCE_B_DEFAULT); + } else if (sc.state == SCE_B_NUMBER) { + if (!IsDigit(sc.ch)) + sc.SetState(SCE_B_DEFAULT); + } else if (sc.state == SCE_B_HEXNUMBER) { + if (!IsHexDigit(sc.ch)) + sc.SetState(SCE_B_DEFAULT); + } else if (sc.state == SCE_B_BINNUMBER) { + if (!IsBinDigit(sc.ch)) + sc.SetState(SCE_B_DEFAULT); + } else if (sc.state == SCE_B_STRING) { + if (sc.ch == '"') { + sc.ForwardSetState(SCE_B_DEFAULT); + } + if (sc.atLineEnd) { + sc.ChangeState(SCE_B_ERROR); + sc.SetState(SCE_B_DEFAULT); + } + } else if (sc.state == SCE_B_COMMENT || sc.state == SCE_B_PREPROCESSOR) { + if (sc.atLineEnd) { + sc.SetState(SCE_B_DEFAULT); + } + } else if (sc.state == SCE_B_DOCLINE) { + if (sc.atLineEnd) { + sc.SetState(SCE_B_DEFAULT); + } else if (sc.ch == '\\' || sc.ch == '@') { + if (IsLetter(sc.chNext) && sc.chPrev != '\\') { + styleBeforeKeyword = sc.state; + sc.SetState(SCE_B_DOCKEYWORD); + }; + } + } else if (sc.state == SCE_B_DOCKEYWORD) { + if (IsSpace(sc.ch)) { + sc.SetState(styleBeforeKeyword); + } else if (sc.atLineEnd && styleBeforeKeyword == SCE_B_DOCLINE) { + sc.SetState(SCE_B_DEFAULT); + } + } else if (sc.state == SCE_B_COMMENTBLOCK) { + if (sc.Match("\'/")) { + sc.Forward(); + sc.ForwardSetState(SCE_B_DEFAULT); + } + } else if (sc.state == SCE_B_DOCBLOCK) { + if (sc.Match("\'/")) { + sc.Forward(); + sc.ForwardSetState(SCE_B_DEFAULT); + } else if (sc.ch == '\\' || sc.ch == '@') { + if (IsLetter(sc.chNext) && sc.chPrev != '\\') { + styleBeforeKeyword = sc.state; + sc.SetState(SCE_B_DOCKEYWORD); + }; + } + } + + if (sc.atLineStart) + isfirst = true; + + if (sc.state == SCE_B_DEFAULT || sc.state == SCE_B_ERROR) { + if (isfirst && sc.Match('.') && comment_char != '\'') { + sc.SetState(SCE_B_LABEL); + } else if (isfirst && sc.Match('#')) { + wasfirst = isfirst; + sc.SetState(SCE_B_IDENTIFIER); + } else if (sc.Match(comment_char)) { + // Hack to make deprecated QBASIC '$Include show + // up in freebasic with SCE_B_PREPROCESSOR. + if (comment_char == '\'' && sc.Match(comment_char, '$')) + sc.SetState(SCE_B_PREPROCESSOR); + else if (sc.Match("\'*") || sc.Match("\'!")) { + sc.SetState(SCE_B_DOCLINE); + } else { + sc.SetState(SCE_B_COMMENT); + } + } else if (sc.Match("/\'")) { + if (sc.Match("/\'*") || sc.Match("/\'!")) { // Support of gtk-doc/Doxygen doc. style + sc.SetState(SCE_B_DOCBLOCK); + } else { + sc.SetState(SCE_B_COMMENTBLOCK); + } + sc.Forward(); // Eat the ' so it isn't used for the end of the comment + } else if (sc.Match('"')) { + sc.SetState(SCE_B_STRING); + } else if (IsDigit(sc.ch)) { + sc.SetState(SCE_B_NUMBER); + } else if (sc.Match('$') || sc.Match("&h") || sc.Match("&H") || sc.Match("&o") || sc.Match("&O")) { + sc.SetState(SCE_B_HEXNUMBER); + } else if (sc.Match('%') || sc.Match("&b") || sc.Match("&B")) { + sc.SetState(SCE_B_BINNUMBER); + } else if (sc.Match('#')) { + sc.SetState(SCE_B_CONSTANT); + } else if (IsOperator(sc.ch)) { + sc.SetState(SCE_B_OPERATOR); + } else if (IsIdentifier(sc.ch)) { + wasfirst = isfirst; + sc.SetState(SCE_B_IDENTIFIER); + } else if (!IsSpace(sc.ch)) { + sc.SetState(SCE_B_ERROR); + } + } + + if (!IsSpace(sc.ch)) + isfirst = false; + + if (!sc.More()) + break; + } + sc.Complete(); +} + + +void SCI_METHOD LexerBasic::Fold(Sci_PositionU startPos, Sci_Position length, int /* initStyle */, IDocument *pAccess) { + + if (!options.fold) + return; + + LexAccessor styler(pAccess); + + Sci_Position line = styler.GetLine(startPos); + int level = styler.LevelAt(line); + int go = 0, done = 0; + Sci_Position endPos = startPos + length; + char word[256]; + int wordlen = 0; + const bool userDefinedFoldMarkers = !options.foldExplicitStart.empty() && !options.foldExplicitEnd.empty(); + int cNext = styler[startPos]; + + // Scan for tokens at the start of the line (they may include + // whitespace, for tokens like "End Function" + for (Sci_Position i = startPos; i < endPos; i++) { + int c = cNext; + cNext = styler.SafeGetCharAt(i + 1); + bool atEOL = (c == '\r' && cNext != '\n') || (c == '\n'); + if (options.foldSyntaxBased && !done && !go) { + if (wordlen) { // are we scanning a token already? + word[wordlen] = static_cast(LowerCase(c)); + if (!IsIdentifier(c)) { // done with token + word[wordlen] = '\0'; + go = CheckFoldPoint(word, level); + if (!go) { + // Treat any whitespace as single blank, for + // things like "End Function". + if (IsSpace(c) && IsIdentifier(word[wordlen - 1])) { + word[wordlen] = ' '; + if (wordlen < 255) + wordlen++; + } + else // done with this line + done = 1; + } + } else if (wordlen < 255) { + wordlen++; + } + } else { // start scanning at first non-whitespace character + if (!IsSpace(c)) { + if (IsIdentifier(c)) { + word[0] = static_cast(LowerCase(c)); + wordlen = 1; + } else // done with this line + done = 1; + } + } + } + if (options.foldCommentExplicit && ((styler.StyleAt(i) == SCE_B_COMMENT) || options.foldExplicitAnywhere)) { + if (userDefinedFoldMarkers) { + if (styler.Match(i, options.foldExplicitStart.c_str())) { + level |= SC_FOLDLEVELHEADERFLAG; + go = 1; + } else if (styler.Match(i, options.foldExplicitEnd.c_str())) { + go = -1; + } + } else { + if (c == comment_char) { + if (cNext == '{') { + level |= SC_FOLDLEVELHEADERFLAG; + go = 1; + } else if (cNext == '}') { + go = -1; + } + } + } + } + if (atEOL) { // line end + if (!done && wordlen == 0 && options.foldCompact) // line was only space + level |= SC_FOLDLEVELWHITEFLAG; + if (level != styler.LevelAt(line)) + styler.SetLevel(line, level); + level += go; + line++; + // reset state + wordlen = 0; + level &= ~SC_FOLDLEVELHEADERFLAG; + level &= ~SC_FOLDLEVELWHITEFLAG; + go = 0; + done = 0; + } + } +} + +LexerModule lmBlitzBasic(SCLEX_BLITZBASIC, LexerBasic::LexerFactoryBlitzBasic, "blitzbasic", blitzbasicWordListDesc); + +LexerModule lmPureBasic(SCLEX_PUREBASIC, LexerBasic::LexerFactoryPureBasic, "purebasic", purebasicWordListDesc); + +LexerModule lmFreeBasic(SCLEX_FREEBASIC, LexerBasic::LexerFactoryFreeBasic, "freebasic", freebasicWordListDesc); diff --git a/libs/qscintilla_2.14.1/scintilla/lexers/LexBatch.cpp b/libs/qscintilla_2.14.1/scintilla/lexers/LexBatch.cpp new file mode 100644 index 000000000..db7e37688 --- /dev/null +++ b/libs/qscintilla_2.14.1/scintilla/lexers/LexBatch.cpp @@ -0,0 +1,498 @@ +// Scintilla source code edit control +/** @file LexBatch.cxx + ** Lexer for batch files. + **/ +// Copyright 1998-2001 by Neil Hodgson +// The License.txt file describes the conditions under which this software may be distributed. + +#include +#include +#include +#include +#include +#include + +#include "ILexer.h" +#include "Scintilla.h" +#include "SciLexer.h" + +#include "WordList.h" +#include "LexAccessor.h" +#include "Accessor.h" +#include "StyleContext.h" +#include "CharacterSet.h" +#include "LexerModule.h" + +using namespace Scintilla; + +static bool Is0To9(char ch) { + return (ch >= '0') && (ch <= '9'); +} + +static bool IsAlphabetic(int ch) { + return IsASCII(ch) && isalpha(ch); +} + +static inline bool AtEOL(Accessor &styler, Sci_PositionU i) { + return (styler[i] == '\n') || + ((styler[i] == '\r') && (styler.SafeGetCharAt(i + 1) != '\n')); +} + +// Tests for BATCH Operators +static bool IsBOperator(char ch) { + return (ch == '=') || (ch == '+') || (ch == '>') || (ch == '<') || + (ch == '|') || (ch == '?') || (ch == '*'); +} + +// Tests for BATCH Separators +static bool IsBSeparator(char ch) { + return (ch == '\\') || (ch == '.') || (ch == ';') || + (ch == '\"') || (ch == '\'') || (ch == '/'); +} + +static void ColouriseBatchLine( + char *lineBuffer, + Sci_PositionU lengthLine, + Sci_PositionU startLine, + Sci_PositionU endPos, + WordList *keywordlists[], + Accessor &styler) { + + Sci_PositionU offset = 0; // Line Buffer Offset + Sci_PositionU cmdLoc; // External Command / Program Location + char wordBuffer[81]; // Word Buffer - large to catch long paths + Sci_PositionU wbl; // Word Buffer Length + Sci_PositionU wbo; // Word Buffer Offset - also Special Keyword Buffer Length + WordList &keywords = *keywordlists[0]; // Internal Commands + WordList &keywords2 = *keywordlists[1]; // External Commands (optional) + + // CHOICE, ECHO, GOTO, PROMPT and SET have Default Text that may contain Regular Keywords + // Toggling Regular Keyword Checking off improves readability + // Other Regular Keywords and External Commands / Programs might also benefit from toggling + // Need a more robust algorithm to properly toggle Regular Keyword Checking + bool continueProcessing = true; // Used to toggle Regular Keyword Checking + // Special Keywords are those that allow certain characters without whitespace after the command + // Examples are: cd. cd\ md. rd. dir| dir> echo: echo. path= + // Special Keyword Buffer used to determine if the first n characters is a Keyword + char sKeywordBuffer[10]; // Special Keyword Buffer + bool sKeywordFound; // Exit Special Keyword for-loop if found + + // Skip initial spaces + while ((offset < lengthLine) && (isspacechar(lineBuffer[offset]))) { + offset++; + } + // Colorize Default Text + styler.ColourTo(startLine + offset - 1, SCE_BAT_DEFAULT); + // Set External Command / Program Location + cmdLoc = offset; + + // Check for Fake Label (Comment) or Real Label - return if found + if (lineBuffer[offset] == ':') { + if (lineBuffer[offset + 1] == ':') { + // Colorize Fake Label (Comment) - :: is similar to REM, see http://content.techweb.com/winmag/columns/explorer/2000/21.htm + styler.ColourTo(endPos, SCE_BAT_COMMENT); + } else { + // Colorize Real Label + styler.ColourTo(endPos, SCE_BAT_LABEL); + } + return; + // Check for Drive Change (Drive Change is internal command) - return if found + } else if ((IsAlphabetic(lineBuffer[offset])) && + (lineBuffer[offset + 1] == ':') && + ((isspacechar(lineBuffer[offset + 2])) || + (((lineBuffer[offset + 2] == '\\')) && + (isspacechar(lineBuffer[offset + 3]))))) { + // Colorize Regular Keyword + styler.ColourTo(endPos, SCE_BAT_WORD); + return; + } + + // Check for Hide Command (@ECHO OFF/ON) + if (lineBuffer[offset] == '@') { + styler.ColourTo(startLine + offset, SCE_BAT_HIDE); + offset++; + } + // Skip next spaces + while ((offset < lengthLine) && (isspacechar(lineBuffer[offset]))) { + offset++; + } + + // Read remainder of line word-at-a-time or remainder-of-word-at-a-time + while (offset < lengthLine) { + if (offset > startLine) { + // Colorize Default Text + styler.ColourTo(startLine + offset - 1, SCE_BAT_DEFAULT); + } + // Copy word from Line Buffer into Word Buffer + wbl = 0; + for (; offset < lengthLine && wbl < 80 && + !isspacechar(lineBuffer[offset]); wbl++, offset++) { + wordBuffer[wbl] = static_cast(tolower(lineBuffer[offset])); + } + wordBuffer[wbl] = '\0'; + wbo = 0; + + // Check for Comment - return if found + if (CompareCaseInsensitive(wordBuffer, "rem") == 0) { + styler.ColourTo(endPos, SCE_BAT_COMMENT); + return; + } + // Check for Separator + if (IsBSeparator(wordBuffer[0])) { + // Check for External Command / Program + if ((cmdLoc == offset - wbl) && + ((wordBuffer[0] == ':') || + (wordBuffer[0] == '\\') || + (wordBuffer[0] == '.'))) { + // Reset Offset to re-process remainder of word + offset -= (wbl - 1); + // Colorize External Command / Program + if (!keywords2) { + styler.ColourTo(startLine + offset - 1, SCE_BAT_COMMAND); + } else if (keywords2.InList(wordBuffer)) { + styler.ColourTo(startLine + offset - 1, SCE_BAT_COMMAND); + } else { + styler.ColourTo(startLine + offset - 1, SCE_BAT_DEFAULT); + } + // Reset External Command / Program Location + cmdLoc = offset; + } else { + // Reset Offset to re-process remainder of word + offset -= (wbl - 1); + // Colorize Default Text + styler.ColourTo(startLine + offset - 1, SCE_BAT_DEFAULT); + } + // Check for Regular Keyword in list + } else if ((keywords.InList(wordBuffer)) && + (continueProcessing)) { + // ECHO, GOTO, PROMPT and SET require no further Regular Keyword Checking + if ((CompareCaseInsensitive(wordBuffer, "echo") == 0) || + (CompareCaseInsensitive(wordBuffer, "goto") == 0) || + (CompareCaseInsensitive(wordBuffer, "prompt") == 0) || + (CompareCaseInsensitive(wordBuffer, "set") == 0)) { + continueProcessing = false; + } + // Identify External Command / Program Location for ERRORLEVEL, and EXIST + if ((CompareCaseInsensitive(wordBuffer, "errorlevel") == 0) || + (CompareCaseInsensitive(wordBuffer, "exist") == 0)) { + // Reset External Command / Program Location + cmdLoc = offset; + // Skip next spaces + while ((cmdLoc < lengthLine) && + (isspacechar(lineBuffer[cmdLoc]))) { + cmdLoc++; + } + // Skip comparison + while ((cmdLoc < lengthLine) && + (!isspacechar(lineBuffer[cmdLoc]))) { + cmdLoc++; + } + // Skip next spaces + while ((cmdLoc < lengthLine) && + (isspacechar(lineBuffer[cmdLoc]))) { + cmdLoc++; + } + // Identify External Command / Program Location for CALL, DO, LOADHIGH and LH + } else if ((CompareCaseInsensitive(wordBuffer, "call") == 0) || + (CompareCaseInsensitive(wordBuffer, "do") == 0) || + (CompareCaseInsensitive(wordBuffer, "loadhigh") == 0) || + (CompareCaseInsensitive(wordBuffer, "lh") == 0)) { + // Reset External Command / Program Location + cmdLoc = offset; + // Skip next spaces + while ((cmdLoc < lengthLine) && + (isspacechar(lineBuffer[cmdLoc]))) { + cmdLoc++; + } + } + // Colorize Regular keyword + styler.ColourTo(startLine + offset - 1, SCE_BAT_WORD); + // No need to Reset Offset + // Check for Special Keyword in list, External Command / Program, or Default Text + } else if ((wordBuffer[0] != '%') && + (wordBuffer[0] != '!') && + (!IsBOperator(wordBuffer[0])) && + (continueProcessing)) { + // Check for Special Keyword + // Affected Commands are in Length range 2-6 + // Good that ERRORLEVEL, EXIST, CALL, DO, LOADHIGH, and LH are unaffected + sKeywordFound = false; + for (Sci_PositionU keywordLength = 2; keywordLength < wbl && keywordLength < 7 && !sKeywordFound; keywordLength++) { + wbo = 0; + // Copy Keyword Length from Word Buffer into Special Keyword Buffer + for (; wbo < keywordLength; wbo++) { + sKeywordBuffer[wbo] = static_cast(wordBuffer[wbo]); + } + sKeywordBuffer[wbo] = '\0'; + // Check for Special Keyword in list + if ((keywords.InList(sKeywordBuffer)) && + ((IsBOperator(wordBuffer[wbo])) || + (IsBSeparator(wordBuffer[wbo])))) { + sKeywordFound = true; + // ECHO requires no further Regular Keyword Checking + if (CompareCaseInsensitive(sKeywordBuffer, "echo") == 0) { + continueProcessing = false; + } + // Colorize Special Keyword as Regular Keyword + styler.ColourTo(startLine + offset - 1 - (wbl - wbo), SCE_BAT_WORD); + // Reset Offset to re-process remainder of word + offset -= (wbl - wbo); + } + } + // Check for External Command / Program or Default Text + if (!sKeywordFound) { + wbo = 0; + // Check for External Command / Program + if (cmdLoc == offset - wbl) { + // Read up to %, Operator or Separator + while ((wbo < wbl) && + (wordBuffer[wbo] != '%') && + (wordBuffer[wbo] != '!') && + (!IsBOperator(wordBuffer[wbo])) && + (!IsBSeparator(wordBuffer[wbo]))) { + wbo++; + } + // Reset External Command / Program Location + cmdLoc = offset - (wbl - wbo); + // Reset Offset to re-process remainder of word + offset -= (wbl - wbo); + // CHOICE requires no further Regular Keyword Checking + if (CompareCaseInsensitive(wordBuffer, "choice") == 0) { + continueProcessing = false; + } + // Check for START (and its switches) - What follows is External Command \ Program + if (CompareCaseInsensitive(wordBuffer, "start") == 0) { + // Reset External Command / Program Location + cmdLoc = offset; + // Skip next spaces + while ((cmdLoc < lengthLine) && + (isspacechar(lineBuffer[cmdLoc]))) { + cmdLoc++; + } + // Reset External Command / Program Location if command switch detected + if (lineBuffer[cmdLoc] == '/') { + // Skip command switch + while ((cmdLoc < lengthLine) && + (!isspacechar(lineBuffer[cmdLoc]))) { + cmdLoc++; + } + // Skip next spaces + while ((cmdLoc < lengthLine) && + (isspacechar(lineBuffer[cmdLoc]))) { + cmdLoc++; + } + } + } + // Colorize External Command / Program + if (!keywords2) { + styler.ColourTo(startLine + offset - 1, SCE_BAT_COMMAND); + } else if (keywords2.InList(wordBuffer)) { + styler.ColourTo(startLine + offset - 1, SCE_BAT_COMMAND); + } else { + styler.ColourTo(startLine + offset - 1, SCE_BAT_DEFAULT); + } + // No need to Reset Offset + // Check for Default Text + } else { + // Read up to %, Operator or Separator + while ((wbo < wbl) && + (wordBuffer[wbo] != '%') && + (wordBuffer[wbo] != '!') && + (!IsBOperator(wordBuffer[wbo])) && + (!IsBSeparator(wordBuffer[wbo]))) { + wbo++; + } + // Colorize Default Text + styler.ColourTo(startLine + offset - 1 - (wbl - wbo), SCE_BAT_DEFAULT); + // Reset Offset to re-process remainder of word + offset -= (wbl - wbo); + } + } + // Check for Argument (%n), Environment Variable (%x...%) or Local Variable (%%a) + } else if (wordBuffer[0] == '%') { + // Colorize Default Text + styler.ColourTo(startLine + offset - 1 - wbl, SCE_BAT_DEFAULT); + wbo++; + // Search to end of word for second % (can be a long path) + while ((wbo < wbl) && + (wordBuffer[wbo] != '%') && + (!IsBOperator(wordBuffer[wbo])) && + (!IsBSeparator(wordBuffer[wbo]))) { + wbo++; + } + // Check for Argument (%n) or (%*) + if (((Is0To9(wordBuffer[1])) || (wordBuffer[1] == '*')) && + (wordBuffer[wbo] != '%')) { + // Check for External Command / Program + if (cmdLoc == offset - wbl) { + cmdLoc = offset - (wbl - 2); + } + // Colorize Argument + styler.ColourTo(startLine + offset - 1 - (wbl - 2), SCE_BAT_IDENTIFIER); + // Reset Offset to re-process remainder of word + offset -= (wbl - 2); + // Check for Expanded Argument (%~...) / Variable (%%~...) + } else if (((wbl > 1) && (wordBuffer[1] == '~')) || + ((wbl > 2) && (wordBuffer[1] == '%') && (wordBuffer[2] == '~'))) { + // Check for External Command / Program + if (cmdLoc == offset - wbl) { + cmdLoc = offset - (wbl - wbo); + } + // Colorize Expanded Argument / Variable + styler.ColourTo(startLine + offset - 1 - (wbl - wbo), SCE_BAT_IDENTIFIER); + // Reset Offset to re-process remainder of word + offset -= (wbl - wbo); + // Check for Environment Variable (%x...%) + } else if ((wordBuffer[1] != '%') && + (wordBuffer[wbo] == '%')) { + wbo++; + // Check for External Command / Program + if (cmdLoc == offset - wbl) { + cmdLoc = offset - (wbl - wbo); + } + // Colorize Environment Variable + styler.ColourTo(startLine + offset - 1 - (wbl - wbo), SCE_BAT_IDENTIFIER); + // Reset Offset to re-process remainder of word + offset -= (wbl - wbo); + // Check for Local Variable (%%a) + } else if ( + (wbl > 2) && + (wordBuffer[1] == '%') && + (wordBuffer[2] != '%') && + (!IsBOperator(wordBuffer[2])) && + (!IsBSeparator(wordBuffer[2]))) { + // Check for External Command / Program + if (cmdLoc == offset - wbl) { + cmdLoc = offset - (wbl - 3); + } + // Colorize Local Variable + styler.ColourTo(startLine + offset - 1 - (wbl - 3), SCE_BAT_IDENTIFIER); + // Reset Offset to re-process remainder of word + offset -= (wbl - 3); + } + // Check for Environment Variable (!x...!) + } else if (wordBuffer[0] == '!') { + // Colorize Default Text + styler.ColourTo(startLine + offset - 1 - wbl, SCE_BAT_DEFAULT); + wbo++; + // Search to end of word for second ! (can be a long path) + while ((wbo < wbl) && + (wordBuffer[wbo] != '!') && + (!IsBOperator(wordBuffer[wbo])) && + (!IsBSeparator(wordBuffer[wbo]))) { + wbo++; + } + if (wordBuffer[wbo] == '!') { + wbo++; + // Check for External Command / Program + if (cmdLoc == offset - wbl) { + cmdLoc = offset - (wbl - wbo); + } + // Colorize Environment Variable + styler.ColourTo(startLine + offset - 1 - (wbl - wbo), SCE_BAT_IDENTIFIER); + // Reset Offset to re-process remainder of word + offset -= (wbl - wbo); + } + // Check for Operator + } else if (IsBOperator(wordBuffer[0])) { + // Colorize Default Text + styler.ColourTo(startLine + offset - 1 - wbl, SCE_BAT_DEFAULT); + // Check for Comparison Operator + if ((wordBuffer[0] == '=') && (wordBuffer[1] == '=')) { + // Identify External Command / Program Location for IF + cmdLoc = offset; + // Skip next spaces + while ((cmdLoc < lengthLine) && + (isspacechar(lineBuffer[cmdLoc]))) { + cmdLoc++; + } + // Colorize Comparison Operator + styler.ColourTo(startLine + offset - 1 - (wbl - 2), SCE_BAT_OPERATOR); + // Reset Offset to re-process remainder of word + offset -= (wbl - 2); + // Check for Pipe Operator + } else if (wordBuffer[0] == '|') { + // Reset External Command / Program Location + cmdLoc = offset - wbl + 1; + // Skip next spaces + while ((cmdLoc < lengthLine) && + (isspacechar(lineBuffer[cmdLoc]))) { + cmdLoc++; + } + // Colorize Pipe Operator + styler.ColourTo(startLine + offset - 1 - (wbl - 1), SCE_BAT_OPERATOR); + // Reset Offset to re-process remainder of word + offset -= (wbl - 1); + // Check for Other Operator + } else { + // Check for > Operator + if (wordBuffer[0] == '>') { + // Turn Keyword and External Command / Program checking back on + continueProcessing = true; + } + // Colorize Other Operator + styler.ColourTo(startLine + offset - 1 - (wbl - 1), SCE_BAT_OPERATOR); + // Reset Offset to re-process remainder of word + offset -= (wbl - 1); + } + // Check for Default Text + } else { + // Read up to %, Operator or Separator + while ((wbo < wbl) && + (wordBuffer[wbo] != '%') && + (wordBuffer[wbo] != '!') && + (!IsBOperator(wordBuffer[wbo])) && + (!IsBSeparator(wordBuffer[wbo]))) { + wbo++; + } + // Colorize Default Text + styler.ColourTo(startLine + offset - 1 - (wbl - wbo), SCE_BAT_DEFAULT); + // Reset Offset to re-process remainder of word + offset -= (wbl - wbo); + } + // Skip next spaces - nothing happens if Offset was Reset + while ((offset < lengthLine) && (isspacechar(lineBuffer[offset]))) { + offset++; + } + } + // Colorize Default Text for remainder of line - currently not lexed + styler.ColourTo(endPos, SCE_BAT_DEFAULT); +} + +static void ColouriseBatchDoc( + Sci_PositionU startPos, + Sci_Position length, + int /*initStyle*/, + WordList *keywordlists[], + Accessor &styler) { + + char lineBuffer[1024]; + + styler.StartAt(startPos); + styler.StartSegment(startPos); + Sci_PositionU linePos = 0; + Sci_PositionU startLine = startPos; + for (Sci_PositionU i = startPos; i < startPos + length; i++) { + lineBuffer[linePos++] = styler[i]; + if (AtEOL(styler, i) || (linePos >= sizeof(lineBuffer) - 1)) { + // End of line (or of line buffer) met, colourise it + lineBuffer[linePos] = '\0'; + ColouriseBatchLine(lineBuffer, linePos, startLine, i, keywordlists, styler); + linePos = 0; + startLine = i + 1; + } + } + if (linePos > 0) { // Last line does not have ending characters + lineBuffer[linePos] = '\0'; + ColouriseBatchLine(lineBuffer, linePos, startLine, startPos + length - 1, + keywordlists, styler); + } +} + +static const char *const batchWordListDesc[] = { + "Internal Commands", + "External Commands", + 0 +}; + +LexerModule lmBatch(SCLEX_BATCH, ColouriseBatchDoc, "batch", 0, batchWordListDesc); diff --git a/libs/qscintilla_2.14.1/scintilla/lexers/LexBibTeX.cpp b/libs/qscintilla_2.14.1/scintilla/lexers/LexBibTeX.cpp new file mode 100644 index 000000000..7e4cb9fc1 --- /dev/null +++ b/libs/qscintilla_2.14.1/scintilla/lexers/LexBibTeX.cpp @@ -0,0 +1,308 @@ +// Copyright 2008-2010 Sergiu Dotenco. The License.txt file describes the +// conditions under which this software may be distributed. + +/** + * @file LexBibTeX.cxx + * @brief General BibTeX coloring scheme. + * @author Sergiu Dotenco + * @date April 18, 2009 + */ + +#include +#include + +#include +#include + +#include +#include +#include + +#include "ILexer.h" +#include "Scintilla.h" +#include "SciLexer.h" + +#include "PropSetSimple.h" +#include "WordList.h" +#include "LexAccessor.h" +#include "Accessor.h" +#include "StyleContext.h" +#include "CharacterSet.h" +#include "LexerModule.h" + +using namespace Scintilla; + +namespace { + bool IsAlphabetic(unsigned int ch) + { + return IsASCII(ch) && std::isalpha(ch) != 0; + } + bool IsAlphaNumeric(char ch) + { + return IsASCII(ch) && std::isalnum(ch); + } + + bool EqualCaseInsensitive(const char* a, const char* b) + { + return CompareCaseInsensitive(a, b) == 0; + } + + bool EntryWithoutKey(const char* name) + { + return EqualCaseInsensitive(name,"string"); + } + + char GetClosingBrace(char openbrace) + { + char result = openbrace; + + switch (openbrace) { + case '(': result = ')'; break; + case '{': result = '}'; break; + } + + return result; + } + + bool IsEntryStart(char prev, char ch) + { + return prev != '\\' && ch == '@'; + } + + bool IsEntryStart(const StyleContext& sc) + { + return IsEntryStart(sc.chPrev, sc.ch); + } + + void ColorizeBibTeX(Sci_PositionU start_pos, Sci_Position length, int /*init_style*/, WordList* keywordlists[], Accessor& styler) + { + WordList &EntryNames = *keywordlists[0]; + bool fold_compact = styler.GetPropertyInt("fold.compact", 1) != 0; + + std::string buffer; + buffer.reserve(25); + + // We always colorize a section from the beginning, so let's + // search for the @ character which isn't escaped, i.e. \@ + while (start_pos > 0 && !IsEntryStart(styler.SafeGetCharAt(start_pos - 1), + styler.SafeGetCharAt(start_pos))) { + --start_pos; ++length; + } + + styler.StartAt(start_pos); + styler.StartSegment(start_pos); + + Sci_Position current_line = styler.GetLine(start_pos); + int prev_level = styler.LevelAt(current_line) & SC_FOLDLEVELNUMBERMASK; + int current_level = prev_level; + int visible_chars = 0; + + bool in_comment = false ; + StyleContext sc(start_pos, length, SCE_BIBTEX_DEFAULT, styler); + + bool going = sc.More(); // needed because of a fuzzy end of file state + char closing_brace = 0; + bool collect_entry_name = false; + + for (; going; sc.Forward()) { + if (!sc.More()) + going = false; // we need to go one behind the end of text + + if (in_comment) { + if (sc.atLineEnd) { + sc.SetState(SCE_BIBTEX_DEFAULT); + in_comment = false; + } + } + else { + // Found @entry + if (IsEntryStart(sc)) { + sc.SetState(SCE_BIBTEX_UNKNOWN_ENTRY); + sc.Forward(); + ++current_level; + + buffer.clear(); + collect_entry_name = true; + } + else if ((sc.state == SCE_BIBTEX_ENTRY || sc.state == SCE_BIBTEX_UNKNOWN_ENTRY) + && (sc.ch == '{' || sc.ch == '(')) { + // Entry name colorization done + // Found either a { or a ( after entry's name, e.g. @entry(...) @entry{...} + // Closing counterpart needs to be stored. + closing_brace = GetClosingBrace(sc.ch); + + sc.SetState(SCE_BIBTEX_DEFAULT); // Don't colorize { ( + + // @string doesn't have any key + if (EntryWithoutKey(buffer.c_str())) + sc.ForwardSetState(SCE_BIBTEX_PARAMETER); + else + sc.ForwardSetState(SCE_BIBTEX_KEY); // Key/label colorization + } + + // Need to handle the case where entry's key is empty + // e.g. @book{,...} + if (sc.state == SCE_BIBTEX_KEY && sc.ch == ',') { + // Key/label colorization done + sc.SetState(SCE_BIBTEX_DEFAULT); // Don't colorize the , + sc.ForwardSetState(SCE_BIBTEX_PARAMETER); // Parameter colorization + } + else if (sc.state == SCE_BIBTEX_PARAMETER && sc.ch == '=') { + sc.SetState(SCE_BIBTEX_DEFAULT); // Don't colorize the = + sc.ForwardSetState(SCE_BIBTEX_VALUE); // Parameter value colorization + + Sci_Position start = sc.currentPos; + + // We need to handle multiple situations: + // 1. name"one two {three}" + // 2. name={one {one two {two}} three} + // 3. year=2005 + + // Skip ", { until we encounter the first alphanumerical character + while (sc.More() && !(IsAlphaNumeric(sc.ch) || sc.ch == '"' || sc.ch == '{')) + sc.Forward(); + + if (sc.More()) { + // Store " or { + char ch = sc.ch; + + // Not interested in alphanumerical characters + if (IsAlphaNumeric(ch)) + ch = 0; + + int skipped = 0; + + if (ch) { + // Skip preceding " or { such as in name={{test}}. + // Remember how many characters have been skipped + // Make sure that empty values, i.e. "" are also handled correctly + while (sc.More() && (sc.ch == ch && (ch != '"' || skipped < 1))) { + sc.Forward(); + ++skipped; + } + } + + // Closing counterpart for " is the same character + if (ch == '{') + ch = '}'; + + // We have reached the parameter value + // In case the open character was a alnum char, skip until , is found + // otherwise until skipped == 0 + while (sc.More() && (skipped > 0 || (!ch && !(sc.ch == ',' || sc.ch == closing_brace)))) { + // Make sure the character isn't escaped + if (sc.chPrev != '\\') { + // Parameter value contains a { which is the 2nd case described above + if (sc.ch == '{') + ++skipped; // Remember it + else if (sc.ch == '}') + --skipped; + else if (skipped == 1 && sc.ch == ch && ch == '"') // Don't ignore cases like {"o} + skipped = 0; + } + + sc.Forward(); + } + } + + // Don't colorize the , + sc.SetState(SCE_BIBTEX_DEFAULT); + + // Skip until the , or entry's closing closing_brace is found + // since this parameter might be the last one + while (sc.More() && !(sc.ch == ',' || sc.ch == closing_brace)) + sc.Forward(); + + int state = SCE_BIBTEX_PARAMETER; // The might be more parameters + + // We've reached the closing closing_brace for the bib entry + // in case no " or {} has been used to enclose the value, + // as in 3rd case described above + if (sc.ch == closing_brace) { + --current_level; + // Make sure the text between entries is not colored + // using parameter's style + state = SCE_BIBTEX_DEFAULT; + } + + Sci_Position end = sc.currentPos; + current_line = styler.GetLine(end); + + // We have possibly skipped some lines, so the folding levels + // have to be adjusted separately + for (Sci_Position i = styler.GetLine(start); i <= styler.GetLine(end); ++i) + styler.SetLevel(i, prev_level); + + sc.ForwardSetState(state); + } + + if (sc.state == SCE_BIBTEX_PARAMETER && sc.ch == closing_brace) { + sc.SetState(SCE_BIBTEX_DEFAULT); + --current_level; + } + + // Non escaped % found which represents a comment until the end of the line + if (sc.chPrev != '\\' && sc.ch == '%') { + in_comment = true; + sc.SetState(SCE_BIBTEX_COMMENT); + } + } + + if (sc.state == SCE_BIBTEX_UNKNOWN_ENTRY || sc.state == SCE_BIBTEX_ENTRY) { + if (!IsAlphabetic(sc.ch) && collect_entry_name) + collect_entry_name = false; + + if (collect_entry_name) { + buffer += static_cast(tolower(sc.ch)); + if (EntryNames.InList(buffer.c_str())) + sc.ChangeState(SCE_BIBTEX_ENTRY); + else + sc.ChangeState(SCE_BIBTEX_UNKNOWN_ENTRY); + } + } + + if (sc.atLineEnd) { + int level = prev_level; + + if (visible_chars == 0 && fold_compact) + level |= SC_FOLDLEVELWHITEFLAG; + + if ((current_level > prev_level)) + level |= SC_FOLDLEVELHEADERFLAG; + // else if (current_level < prev_level) + // level |= SC_FOLDLEVELBOXFOOTERFLAG; // Deprecated + + if (level != styler.LevelAt(current_line)) { + styler.SetLevel(current_line, level); + } + + ++current_line; + prev_level = current_level; + visible_chars = 0; + } + + if (!isspacechar(sc.ch)) + ++visible_chars; + } + + sc.Complete(); + + // Fill in the real level of the next line, keeping the current flags as they will be filled in later + int flagsNext = styler.LevelAt(current_line) & ~SC_FOLDLEVELNUMBERMASK; + styler.SetLevel(current_line, prev_level | flagsNext); + } +} +static const char * const BibTeXWordLists[] = { + "Entry Names", + 0, +}; + + +LexerModule lmBibTeX(SCLEX_BIBTEX, ColorizeBibTeX, "bib", 0, BibTeXWordLists); + +// Entry Names +// article, book, booklet, conference, inbook, +// incollection, inproceedings, manual, mastersthesis, +// misc, phdthesis, proceedings, techreport, unpublished, +// string, url + diff --git a/libs/qscintilla_2.14.1/scintilla/lexers/LexBullant.cpp b/libs/qscintilla_2.14.1/scintilla/lexers/LexBullant.cpp new file mode 100644 index 000000000..2386d2252 --- /dev/null +++ b/libs/qscintilla_2.14.1/scintilla/lexers/LexBullant.cpp @@ -0,0 +1,231 @@ +// SciTE - Scintilla based Text Editor +// LexBullant.cxx - lexer for Bullant + +#include +#include +#include +#include +#include +#include + +#include "ILexer.h" +#include "Scintilla.h" +#include "SciLexer.h" + +#include "WordList.h" +#include "LexAccessor.h" +#include "Accessor.h" +#include "StyleContext.h" +#include "CharacterSet.h" +#include "LexerModule.h" + +using namespace Scintilla; + +static int classifyWordBullant(Sci_PositionU start, Sci_PositionU end, WordList &keywords, Accessor &styler) { + char s[100]; + s[0] = '\0'; + for (Sci_PositionU i = 0; i < end - start + 1 && i < 30; i++) { + s[i] = static_cast(tolower(styler[start + i])); + s[i + 1] = '\0'; + } + int lev= 0; + char chAttr = SCE_C_IDENTIFIER; + if (isdigit(s[0]) || (s[0] == '.')){ + chAttr = SCE_C_NUMBER; + } + else { + if (keywords.InList(s)) { + chAttr = SCE_C_WORD; + if (strcmp(s, "end") == 0) + lev = -1; + else if (strcmp(s, "method") == 0 || + strcmp(s, "case") == 0 || + strcmp(s, "class") == 0 || + strcmp(s, "debug") == 0 || + strcmp(s, "test") == 0 || + strcmp(s, "if") == 0 || + strcmp(s, "lock") == 0 || + strcmp(s, "transaction") == 0 || + strcmp(s, "trap") == 0 || + strcmp(s, "until") == 0 || + strcmp(s, "while") == 0) + lev = 1; + } + } + styler.ColourTo(end, chAttr); + return lev; +} + +static void ColouriseBullantDoc(Sci_PositionU startPos, Sci_Position length, int initStyle, WordList *keywordlists[], + Accessor &styler) { + WordList &keywords = *keywordlists[0]; + + styler.StartAt(startPos); + + bool fold = styler.GetPropertyInt("fold") != 0; + Sci_Position lineCurrent = styler.GetLine(startPos); + int levelPrev = styler.LevelAt(lineCurrent) & SC_FOLDLEVELNUMBERMASK; + int levelCurrent = levelPrev; + + int state = initStyle; + if (state == SCE_C_STRINGEOL) // Does not leak onto next line + state = SCE_C_DEFAULT; + char chPrev = ' '; + char chNext = styler[startPos]; + Sci_PositionU lengthDoc = startPos + length; + int visibleChars = 0; + styler.StartSegment(startPos); + int endFoundThisLine = 0; + for (Sci_PositionU i = startPos; i < lengthDoc; i++) { + char ch = chNext; + chNext = styler.SafeGetCharAt(i + 1); + + if ((ch == '\r' && chNext != '\n') || (ch == '\n')) { + // Trigger on CR only (Mac style) or either on LF from CR+LF (Dos/Win) or on LF alone (Unix) + // Avoid triggering two times on Dos/Win + // End of line + endFoundThisLine = 0; + if (state == SCE_C_STRINGEOL) { + styler.ColourTo(i, state); + state = SCE_C_DEFAULT; + } + if (fold) { + int lev = levelPrev; + if (visibleChars == 0) + lev |= SC_FOLDLEVELWHITEFLAG; + if ((levelCurrent > levelPrev) && (visibleChars > 0)) + lev |= SC_FOLDLEVELHEADERFLAG; + styler.SetLevel(lineCurrent, lev); + lineCurrent++; + levelPrev = levelCurrent; + } + visibleChars = 0; + +/* int indentBlock = GetLineIndentation(lineCurrent); + if (blockChange==1){ + lineCurrent++; + int pos=SetLineIndentation(lineCurrent, indentBlock + indentSize); + } else if (blockChange==-1) { + indentBlock -= indentSize; + if (indentBlock < 0) + indentBlock = 0; + SetLineIndentation(lineCurrent, indentBlock); + lineCurrent++; + } + blockChange=0; +*/ } + if (!(IsASCII(ch) && isspace(ch))) + visibleChars++; + + if (styler.IsLeadByte(ch)) { + chNext = styler.SafeGetCharAt(i + 2); + chPrev = ' '; + i += 1; + continue; + } + + if (state == SCE_C_DEFAULT) { + if (iswordstart(ch)) { + styler.ColourTo(i-1, state); + state = SCE_C_IDENTIFIER; + } else if (ch == '@' && chNext == 'o') { + if ((styler.SafeGetCharAt(i+2) =='f') && (styler.SafeGetCharAt(i+3) == 'f')) { + styler.ColourTo(i-1, state); + state = SCE_C_COMMENT; + } + } else if (ch == '#') { + styler.ColourTo(i-1, state); + state = SCE_C_COMMENTLINE; + } else if (ch == '\"') { + styler.ColourTo(i-1, state); + state = SCE_C_STRING; + } else if (ch == '\'') { + styler.ColourTo(i-1, state); + state = SCE_C_CHARACTER; + } else if (isoperator(ch)) { + styler.ColourTo(i-1, state); + styler.ColourTo(i, SCE_C_OPERATOR); + } + } else if (state == SCE_C_IDENTIFIER) { + if (!iswordchar(ch)) { + int levelChange = classifyWordBullant(styler.GetStartSegment(), i - 1, keywords, styler); + state = SCE_C_DEFAULT; + chNext = styler.SafeGetCharAt(i + 1); + if (ch == '#') { + state = SCE_C_COMMENTLINE; + } else if (ch == '\"') { + state = SCE_C_STRING; + } else if (ch == '\'') { + state = SCE_C_CHARACTER; + } else if (isoperator(ch)) { + styler.ColourTo(i, SCE_C_OPERATOR); + } + if (endFoundThisLine == 0) + levelCurrent+=levelChange; + if (levelChange == -1) + endFoundThisLine=1; + } + } else if (state == SCE_C_COMMENT) { + if (ch == '@' && chNext == 'o') { + if (styler.SafeGetCharAt(i+2) == 'n') { + styler.ColourTo(i+2, state); + state = SCE_C_DEFAULT; + i+=2; + } + } + } else if (state == SCE_C_COMMENTLINE) { + if (ch == '\r' || ch == '\n') { + endFoundThisLine = 0; + styler.ColourTo(i-1, state); + state = SCE_C_DEFAULT; + } + } else if (state == SCE_C_STRING) { + if (ch == '\\') { + if (chNext == '\"' || chNext == '\'' || chNext == '\\') { + i++; + ch = chNext; + chNext = styler.SafeGetCharAt(i + 1); + } + } else if (ch == '\"') { + styler.ColourTo(i, state); + state = SCE_C_DEFAULT; + } else if (chNext == '\r' || chNext == '\n') { + endFoundThisLine = 0; + styler.ColourTo(i-1, SCE_C_STRINGEOL); + state = SCE_C_STRINGEOL; + } + } else if (state == SCE_C_CHARACTER) { + if ((ch == '\r' || ch == '\n') && (chPrev != '\\')) { + endFoundThisLine = 0; + styler.ColourTo(i-1, SCE_C_STRINGEOL); + state = SCE_C_STRINGEOL; + } else if (ch == '\\') { + if (chNext == '\"' || chNext == '\'' || chNext == '\\') { + i++; + ch = chNext; + chNext = styler.SafeGetCharAt(i + 1); + } + } else if (ch == '\'') { + styler.ColourTo(i, state); + state = SCE_C_DEFAULT; + } + } + chPrev = ch; + } + styler.ColourTo(lengthDoc - 1, state); + + // Fill in the real level of the next line, keeping the current flags as they will be filled in later + if (fold) { + int flagsNext = styler.LevelAt(lineCurrent) & ~SC_FOLDLEVELNUMBERMASK; + //styler.SetLevel(lineCurrent, levelCurrent | flagsNext); + styler.SetLevel(lineCurrent, levelPrev | flagsNext); + + } +} + +static const char * const bullantWordListDesc[] = { + "Keywords", + 0 +}; + +LexerModule lmBullant(SCLEX_BULLANT, ColouriseBullantDoc, "bullant", 0, bullantWordListDesc); diff --git a/libs/qscintilla_2.14.1/scintilla/lexers/LexCLW.cpp b/libs/qscintilla_2.14.1/scintilla/lexers/LexCLW.cpp new file mode 100644 index 000000000..d469d6bfd --- /dev/null +++ b/libs/qscintilla_2.14.1/scintilla/lexers/LexCLW.cpp @@ -0,0 +1,680 @@ +// Scintilla source code edit control +/** @file LexClw.cxx + ** Lexer for Clarion. + ** 2004/12/17 Updated Lexer + **/ +// Copyright 2003-2004 by Ron Schofield +// The License.txt file describes the conditions under which this software may be distributed. + +#include +#include +#include +#include +#include +#include + +#include "ILexer.h" +#include "Scintilla.h" +#include "SciLexer.h" + +#include "WordList.h" +#include "LexAccessor.h" +#include "Accessor.h" +#include "StyleContext.h" +#include "CharacterSet.h" +#include "LexerModule.h" + +using namespace Scintilla; + +// Is an end of line character +inline bool IsEOL(const int ch) { + + return(ch == '\n'); +} + +// Convert character to uppercase +static char CharacterUpper(char chChar) { + + if (chChar < 'a' || chChar > 'z') { + return(chChar); + } + else { + return(static_cast(chChar - 'a' + 'A')); + } +} + +// Convert string to uppercase +static void StringUpper(char *szString) { + + while (*szString) { + *szString = CharacterUpper(*szString); + szString++; + } +} + +// Is a label start character +inline bool IsALabelStart(const int iChar) { + + return(isalpha(iChar) || iChar == '_'); +} + +// Is a label character +inline bool IsALabelCharacter(const int iChar) { + + return(isalnum(iChar) || iChar == '_' || iChar == ':'); +} + +// Is the character is a ! and the the next character is not a ! +inline bool IsACommentStart(const int iChar) { + + return(iChar == '!'); +} + +// Is the character a Clarion hex character (ABCDEF) +inline bool IsAHexCharacter(const int iChar, bool bCaseSensitive) { + + // Case insensitive. + if (!bCaseSensitive) { + if (strchr("ABCDEFabcdef", iChar) != NULL) { + return(true); + } + } + // Case sensitive + else { + if (strchr("ABCDEF", iChar) != NULL) { + return(true); + } + } + return(false); +} + +// Is the character a Clarion base character (B=Binary, O=Octal, H=Hex) +inline bool IsANumericBaseCharacter(const int iChar, bool bCaseSensitive) { + + // Case insensitive. + if (!bCaseSensitive) { + // If character is a numeric base character + if (strchr("BOHboh", iChar) != NULL) { + return(true); + } + } + // Case sensitive + else { + // If character is a numeric base character + if (strchr("BOH", iChar) != NULL) { + return(true); + } + } + return(false); +} + +// Set the correct numeric constant state +inline bool SetNumericConstantState(StyleContext &scDoc) { + + int iPoints = 0; // Point counter + char cNumericString[512]; // Numeric string buffer + + // Buffer the current numberic string + scDoc.GetCurrent(cNumericString, sizeof(cNumericString)); + // Loop through the string until end of string (NULL termination) + for (int iIndex = 0; cNumericString[iIndex] != '\0'; iIndex++) { + // Depending on the character + switch (cNumericString[iIndex]) { + // Is a . (point) + case '.' : + // Increment point counter + iPoints++; + break; + default : + break; + } + } + // If points found (can be more than one for improper formatted number + if (iPoints > 0) { + return(true); + } + // Else no points found + else { + return(false); + } +} + +// Get the next word in uppercase from the current position (keyword lookahead) +inline bool GetNextWordUpper(Accessor &styler, Sci_PositionU uiStartPos, Sci_Position iLength, char *cWord) { + + Sci_PositionU iIndex = 0; // Buffer Index + + // Loop through the remaining string from the current position + for (Sci_Position iOffset = uiStartPos; iOffset < iLength; iOffset++) { + // Get the character from the buffer using the offset + char cCharacter = styler[iOffset]; + if (IsEOL(cCharacter)) { + break; + } + // If the character is alphabet character + if (isalpha(cCharacter)) { + // Add UPPERCASE character to the word buffer + cWord[iIndex++] = CharacterUpper(cCharacter); + } + } + // Add null termination + cWord[iIndex] = '\0'; + // If no word was found + if (iIndex == 0) { + // Return failure + return(false); + } + // Else word was found + else { + // Return success + return(true); + } +} + +// Clarion Language Colouring Procedure +static void ColouriseClarionDoc(Sci_PositionU uiStartPos, Sci_Position iLength, int iInitStyle, WordList *wlKeywords[], Accessor &accStyler, bool bCaseSensitive) { + + int iParenthesesLevel = 0; // Parenthese Level + int iColumn1Label = false; // Label starts in Column 1 + + WordList &wlClarionKeywords = *wlKeywords[0]; // Clarion Keywords + WordList &wlCompilerDirectives = *wlKeywords[1]; // Compiler Directives + WordList &wlRuntimeExpressions = *wlKeywords[2]; // Runtime Expressions + WordList &wlBuiltInProcsFuncs = *wlKeywords[3]; // Builtin Procedures and Functions + WordList &wlStructsDataTypes = *wlKeywords[4]; // Structures and Data Types + WordList &wlAttributes = *wlKeywords[5]; // Procedure Attributes + WordList &wlStandardEquates = *wlKeywords[6]; // Standard Equates + WordList &wlLabelReservedWords = *wlKeywords[7]; // Clarion Reserved Keywords (Labels) + WordList &wlProcLabelReservedWords = *wlKeywords[8]; // Clarion Reserved Keywords (Procedure Labels) + + const char wlProcReservedKeywordList[] = + "PROCEDURE FUNCTION"; + WordList wlProcReservedKeywords; + wlProcReservedKeywords.Set(wlProcReservedKeywordList); + + const char wlCompilerKeywordList[] = + "COMPILE OMIT"; + WordList wlCompilerKeywords; + wlCompilerKeywords.Set(wlCompilerKeywordList); + + const char wlLegacyStatementsList[] = + "BOF EOF FUNCTION POINTER SHARE"; + WordList wlLegacyStatements; + wlLegacyStatements.Set(wlLegacyStatementsList); + + StyleContext scDoc(uiStartPos, iLength, iInitStyle, accStyler); + + // lex source code + for (; scDoc.More(); scDoc.Forward()) + { + // + // Determine if the current state should terminate. + // + + // Label State Handling + if (scDoc.state == SCE_CLW_LABEL) { + // If the character is not a valid label + if (!IsALabelCharacter(scDoc.ch)) { + // If the character is a . (dot syntax) + if (scDoc.ch == '.') { + // Turn off column 1 label flag as label now cannot be reserved work + iColumn1Label = false; + // Uncolour the . (dot) to default state, move forward one character, + // and change back to the label state. + scDoc.SetState(SCE_CLW_DEFAULT); + scDoc.Forward(); + scDoc.SetState(SCE_CLW_LABEL); + } + // Else check label + else { + char cLabel[512]; // Label buffer + // Buffer the current label string + scDoc.GetCurrent(cLabel,sizeof(cLabel)); + // If case insensitive, convert string to UPPERCASE to match passed keywords. + if (!bCaseSensitive) { + StringUpper(cLabel); + } + // Else if UPPERCASE label string is in the Clarion compiler keyword list + if (wlCompilerKeywords.InList(cLabel) && iColumn1Label){ + // change the label to error state + scDoc.ChangeState(SCE_CLW_COMPILER_DIRECTIVE); + } + // Else if UPPERCASE label string is in the Clarion reserved keyword list + else if (wlLabelReservedWords.InList(cLabel) && iColumn1Label){ + // change the label to error state + scDoc.ChangeState(SCE_CLW_ERROR); + } + // Else if UPPERCASE label string is + else if (wlProcLabelReservedWords.InList(cLabel) && iColumn1Label) { + char cWord[512]; // Word buffer + // Get the next word from the current position + if (GetNextWordUpper(accStyler,scDoc.currentPos,uiStartPos+iLength,cWord)) { + // If the next word is a procedure reserved word + if (wlProcReservedKeywords.InList(cWord)) { + // Change the label to error state + scDoc.ChangeState(SCE_CLW_ERROR); + } + } + } + // Else if label string is in the compiler directive keyword list + else if (wlCompilerDirectives.InList(cLabel)) { + // change the state to compiler directive state + scDoc.ChangeState(SCE_CLW_COMPILER_DIRECTIVE); + } + // Terminate the label state and set to default state + scDoc.SetState(SCE_CLW_DEFAULT); + } + } + } + // Keyword State Handling + else if (scDoc.state == SCE_CLW_KEYWORD) { + // If character is : (colon) + if (scDoc.ch == ':') { + char cEquate[512]; // Equate buffer + // Move forward to include : (colon) in buffer + scDoc.Forward(); + // Buffer the equate string + scDoc.GetCurrent(cEquate,sizeof(cEquate)); + // If case insensitive, convert string to UPPERCASE to match passed keywords. + if (!bCaseSensitive) { + StringUpper(cEquate); + } + // If statement string is in the equate list + if (wlStandardEquates.InList(cEquate)) { + // Change to equate state + scDoc.ChangeState(SCE_CLW_STANDARD_EQUATE); + } + } + // If the character is not a valid label character + else if (!IsALabelCharacter(scDoc.ch)) { + char cStatement[512]; // Statement buffer + // Buffer the statement string + scDoc.GetCurrent(cStatement,sizeof(cStatement)); + // If case insensitive, convert string to UPPERCASE to match passed keywords. + if (!bCaseSensitive) { + StringUpper(cStatement); + } + // If statement string is in the Clarion keyword list + if (wlClarionKeywords.InList(cStatement)) { + // Change the statement string to the Clarion keyword state + scDoc.ChangeState(SCE_CLW_KEYWORD); + } + // Else if statement string is in the compiler directive keyword list + else if (wlCompilerDirectives.InList(cStatement)) { + // Change the statement string to the compiler directive state + scDoc.ChangeState(SCE_CLW_COMPILER_DIRECTIVE); + } + // Else if statement string is in the runtime expressions keyword list + else if (wlRuntimeExpressions.InList(cStatement)) { + // Change the statement string to the runtime expressions state + scDoc.ChangeState(SCE_CLW_RUNTIME_EXPRESSIONS); + } + // Else if statement string is in the builtin procedures and functions keyword list + else if (wlBuiltInProcsFuncs.InList(cStatement)) { + // Change the statement string to the builtin procedures and functions state + scDoc.ChangeState(SCE_CLW_BUILTIN_PROCEDURES_FUNCTION); + } + // Else if statement string is in the tructures and data types keyword list + else if (wlStructsDataTypes.InList(cStatement)) { + // Change the statement string to the structures and data types state + scDoc.ChangeState(SCE_CLW_STRUCTURE_DATA_TYPE); + } + // Else if statement string is in the procedure attribute keyword list + else if (wlAttributes.InList(cStatement)) { + // Change the statement string to the procedure attribute state + scDoc.ChangeState(SCE_CLW_ATTRIBUTE); + } + // Else if statement string is in the standard equate keyword list + else if (wlStandardEquates.InList(cStatement)) { + // Change the statement string to the standard equate state + scDoc.ChangeState(SCE_CLW_STANDARD_EQUATE); + } + // Else if statement string is in the deprecated or legacy keyword list + else if (wlLegacyStatements.InList(cStatement)) { + // Change the statement string to the standard equate state + scDoc.ChangeState(SCE_CLW_DEPRECATED); + } + // Else the statement string doesn't match any work list + else { + // Change the statement string to the default state + scDoc.ChangeState(SCE_CLW_DEFAULT); + } + // Terminate the keyword state and set to default state + scDoc.SetState(SCE_CLW_DEFAULT); + } + } + // String State Handling + else if (scDoc.state == SCE_CLW_STRING) { + // If the character is an ' (single quote) + if (scDoc.ch == '\'') { + // Set the state to default and move forward colouring + // the ' (single quote) as default state + // terminating the string state + scDoc.SetState(SCE_CLW_DEFAULT); + scDoc.Forward(); + } + // If the next character is an ' (single quote) + if (scDoc.chNext == '\'') { + // Move forward one character and set to default state + // colouring the next ' (single quote) as default state + // terminating the string state + scDoc.ForwardSetState(SCE_CLW_DEFAULT); + scDoc.Forward(); + } + } + // Picture String State Handling + else if (scDoc.state == SCE_CLW_PICTURE_STRING) { + // If the character is an ( (open parenthese) + if (scDoc.ch == '(') { + // Increment the parenthese level + iParenthesesLevel++; + } + // Else if the character is a ) (close parenthese) + else if (scDoc.ch == ')') { + // If the parenthese level is set to zero + // parentheses matched + if (!iParenthesesLevel) { + scDoc.SetState(SCE_CLW_DEFAULT); + } + // Else parenthese level is greater than zero + // still looking for matching parentheses + else { + // Decrement the parenthese level + iParenthesesLevel--; + } + } + } + // Standard Equate State Handling + else if (scDoc.state == SCE_CLW_STANDARD_EQUATE) { + if (!isalnum(scDoc.ch)) { + scDoc.SetState(SCE_CLW_DEFAULT); + } + } + // Integer Constant State Handling + else if (scDoc.state == SCE_CLW_INTEGER_CONSTANT) { + // If the character is not a digit (0-9) + // or character is not a hexidecimal character (A-F) + // or character is not a . (point) + // or character is not a numberic base character (B,O,H) + if (!(isdigit(scDoc.ch) + || IsAHexCharacter(scDoc.ch, bCaseSensitive) + || scDoc.ch == '.' + || IsANumericBaseCharacter(scDoc.ch, bCaseSensitive))) { + // If the number was a real + if (SetNumericConstantState(scDoc)) { + // Colour the matched string to the real constant state + scDoc.ChangeState(SCE_CLW_REAL_CONSTANT); + } + // Else the number was an integer + else { + // Colour the matched string to an integer constant state + scDoc.ChangeState(SCE_CLW_INTEGER_CONSTANT); + } + // Terminate the integer constant state and set to default state + scDoc.SetState(SCE_CLW_DEFAULT); + } + } + + // + // Determine if a new state should be entered. + // + + // Beginning of Line Handling + if (scDoc.atLineStart) { + // Reset the column 1 label flag + iColumn1Label = false; + // If column 1 character is a label start character + if (IsALabelStart(scDoc.ch)) { + // Label character is found in column 1 + // so set column 1 label flag and clear last column 1 label + iColumn1Label = true; + // Set the state to label + scDoc.SetState(SCE_CLW_LABEL); + } + // else if character is a space or tab + else if (IsASpace(scDoc.ch)){ + // Set to default state + scDoc.SetState(SCE_CLW_DEFAULT); + } + // else if comment start (!) or is an * (asterisk) + else if (IsACommentStart(scDoc.ch) || scDoc.ch == '*' ) { + // then set the state to comment. + scDoc.SetState(SCE_CLW_COMMENT); + } + // else the character is a ? (question mark) + else if (scDoc.ch == '?') { + // Change to the compiler directive state, move forward, + // colouring the ? (question mark), change back to default state. + scDoc.ChangeState(SCE_CLW_COMPILER_DIRECTIVE); + scDoc.Forward(); + scDoc.SetState(SCE_CLW_DEFAULT); + } + // else an invalid character in column 1 + else { + // Set to error state + scDoc.SetState(SCE_CLW_ERROR); + } + } + // End of Line Handling + else if (scDoc.atLineEnd) { + // Reset to the default state at the end of each line. + scDoc.SetState(SCE_CLW_DEFAULT); + } + // Default Handling + else { + // If in default state + if (scDoc.state == SCE_CLW_DEFAULT) { + // If is a letter could be a possible statement + if (isalpha(scDoc.ch)) { + // Set the state to Clarion Keyword and verify later + scDoc.SetState(SCE_CLW_KEYWORD); + } + // else is a number + else if (isdigit(scDoc.ch)) { + // Set the state to Integer Constant and verify later + scDoc.SetState(SCE_CLW_INTEGER_CONSTANT); + } + // else if the start of a comment or a | (line continuation) + else if (IsACommentStart(scDoc.ch) || scDoc.ch == '|') { + // then set the state to comment. + scDoc.SetState(SCE_CLW_COMMENT); + } + // else if the character is a ' (single quote) + else if (scDoc.ch == '\'') { + // If the character is also a ' (single quote) + // Embedded Apostrophe + if (scDoc.chNext == '\'') { + // Move forward colouring it as default state + scDoc.ForwardSetState(SCE_CLW_DEFAULT); + } + else { + // move to the next character and then set the state to comment. + scDoc.ForwardSetState(SCE_CLW_STRING); + } + } + // else the character is an @ (ampersand) + else if (scDoc.ch == '@') { + // Case insensitive. + if (!bCaseSensitive) { + // If character is a valid picture token character + if (strchr("DEKNPSTdeknpst", scDoc.chNext) != NULL) { + // Set to the picture string state + scDoc.SetState(SCE_CLW_PICTURE_STRING); + } + } + // Case sensitive + else { + // If character is a valid picture token character + if (strchr("DEKNPST", scDoc.chNext) != NULL) { + // Set the picture string state + scDoc.SetState(SCE_CLW_PICTURE_STRING); + } + } + } + } + } + } + // lexing complete + scDoc.Complete(); +} + +// Clarion Language Case Sensitive Colouring Procedure +static void ColouriseClarionDocSensitive(Sci_PositionU uiStartPos, Sci_Position iLength, int iInitStyle, WordList *wlKeywords[], Accessor &accStyler) { + + ColouriseClarionDoc(uiStartPos, iLength, iInitStyle, wlKeywords, accStyler, true); +} + +// Clarion Language Case Insensitive Colouring Procedure +static void ColouriseClarionDocInsensitive(Sci_PositionU uiStartPos, Sci_Position iLength, int iInitStyle, WordList *wlKeywords[], Accessor &accStyler) { + + ColouriseClarionDoc(uiStartPos, iLength, iInitStyle, wlKeywords, accStyler, false); +} + +// Fill Buffer + +static void FillBuffer(Sci_PositionU uiStart, Sci_PositionU uiEnd, Accessor &accStyler, char *szBuffer, Sci_PositionU uiLength) { + + Sci_PositionU uiPos = 0; + + while ((uiPos < uiEnd - uiStart + 1) && (uiPos < uiLength-1)) { + szBuffer[uiPos] = static_cast(toupper(accStyler[uiStart + uiPos])); + uiPos++; + } + szBuffer[uiPos] = '\0'; +} + +// Classify Clarion Fold Point + +static int ClassifyClarionFoldPoint(int iLevel, const char* szString) { + + if (!(isdigit(szString[0]) || (szString[0] == '.'))) { + if (strcmp(szString, "PROCEDURE") == 0) { + // iLevel = SC_FOLDLEVELBASE + 1; + } + else if (strcmp(szString, "MAP") == 0 || + strcmp(szString,"ACCEPT") == 0 || + strcmp(szString,"BEGIN") == 0 || + strcmp(szString,"CASE") == 0 || + strcmp(szString,"EXECUTE") == 0 || + strcmp(szString,"IF") == 0 || + strcmp(szString,"ITEMIZE") == 0 || + strcmp(szString,"INTERFACE") == 0 || + strcmp(szString,"JOIN") == 0 || + strcmp(szString,"LOOP") == 0 || + strcmp(szString,"MODULE") == 0 || + strcmp(szString,"RECORD") == 0) { + iLevel++; + } + else if (strcmp(szString, "APPLICATION") == 0 || + strcmp(szString, "CLASS") == 0 || + strcmp(szString, "DETAIL") == 0 || + strcmp(szString, "FILE") == 0 || + strcmp(szString, "FOOTER") == 0 || + strcmp(szString, "FORM") == 0 || + strcmp(szString, "GROUP") == 0 || + strcmp(szString, "HEADER") == 0 || + strcmp(szString, "INTERFACE") == 0 || + strcmp(szString, "MENU") == 0 || + strcmp(szString, "MENUBAR") == 0 || + strcmp(szString, "OLE") == 0 || + strcmp(szString, "OPTION") == 0 || + strcmp(szString, "QUEUE") == 0 || + strcmp(szString, "REPORT") == 0 || + strcmp(szString, "SHEET") == 0 || + strcmp(szString, "TAB") == 0 || + strcmp(szString, "TOOLBAR") == 0 || + strcmp(szString, "VIEW") == 0 || + strcmp(szString, "WINDOW") == 0) { + iLevel++; + } + else if (strcmp(szString, "END") == 0 || + strcmp(szString, "UNTIL") == 0 || + strcmp(szString, "WHILE") == 0) { + iLevel--; + } + } + return(iLevel); +} + +// Clarion Language Folding Procedure +static void FoldClarionDoc(Sci_PositionU uiStartPos, Sci_Position iLength, int iInitStyle, WordList *[], Accessor &accStyler) { + + Sci_PositionU uiEndPos = uiStartPos + iLength; + Sci_Position iLineCurrent = accStyler.GetLine(uiStartPos); + int iLevelPrev = accStyler.LevelAt(iLineCurrent) & SC_FOLDLEVELNUMBERMASK; + int iLevelCurrent = iLevelPrev; + char chNext = accStyler[uiStartPos]; + int iStyle = iInitStyle; + int iStyleNext = accStyler.StyleAt(uiStartPos); + int iVisibleChars = 0; + Sci_Position iLastStart = 0; + + for (Sci_PositionU uiPos = uiStartPos; uiPos < uiEndPos; uiPos++) { + + char chChar = chNext; + chNext = accStyler.SafeGetCharAt(uiPos + 1); + int iStylePrev = iStyle; + iStyle = iStyleNext; + iStyleNext = accStyler.StyleAt(uiPos + 1); + bool bEOL = (chChar == '\r' && chNext != '\n') || (chChar == '\n'); + + if (iStylePrev == SCE_CLW_DEFAULT) { + if (iStyle == SCE_CLW_KEYWORD || iStyle == SCE_CLW_STRUCTURE_DATA_TYPE) { + // Store last word start point. + iLastStart = uiPos; + } + } + + if (iStylePrev == SCE_CLW_KEYWORD || iStylePrev == SCE_CLW_STRUCTURE_DATA_TYPE) { + if(iswordchar(chChar) && !iswordchar(chNext)) { + char chBuffer[100]; + FillBuffer(iLastStart, uiPos, accStyler, chBuffer, sizeof(chBuffer)); + iLevelCurrent = ClassifyClarionFoldPoint(iLevelCurrent,chBuffer); + // if ((iLevelCurrent == SC_FOLDLEVELBASE + 1) && iLineCurrent > 1) { + // accStyler.SetLevel(iLineCurrent-1,SC_FOLDLEVELBASE); + // iLevelPrev = SC_FOLDLEVELBASE; + // } + } + } + + if (bEOL) { + int iLevel = iLevelPrev; + if ((iLevelCurrent > iLevelPrev) && (iVisibleChars > 0)) + iLevel |= SC_FOLDLEVELHEADERFLAG; + if (iLevel != accStyler.LevelAt(iLineCurrent)) { + accStyler.SetLevel(iLineCurrent,iLevel); + } + iLineCurrent++; + iLevelPrev = iLevelCurrent; + iVisibleChars = 0; + } + + if (!isspacechar(chChar)) + iVisibleChars++; + } + + // Fill in the real level of the next line, keeping the current flags + // as they will be filled in later. + int iFlagsNext = accStyler.LevelAt(iLineCurrent) & ~SC_FOLDLEVELNUMBERMASK; + accStyler.SetLevel(iLineCurrent, iLevelPrev | iFlagsNext); +} + +// Word List Descriptions +static const char * const rgWordListDescriptions[] = { + "Clarion Keywords", + "Compiler Directives", + "Built-in Procedures and Functions", + "Runtime Expressions", + "Structure and Data Types", + "Attributes", + "Standard Equates", + "Reserved Words (Labels)", + "Reserved Words (Procedure Labels)", + 0, +}; + +// Case Sensitive Clarion Language Lexer +LexerModule lmClw(SCLEX_CLW, ColouriseClarionDocSensitive, "clarion", FoldClarionDoc, rgWordListDescriptions); + +// Case Insensitive Clarion Language Lexer +LexerModule lmClwNoCase(SCLEX_CLWNOCASE, ColouriseClarionDocInsensitive, "clarionnocase", FoldClarionDoc, rgWordListDescriptions); diff --git a/libs/qscintilla_2.14.1/scintilla/lexers/LexCOBOL.cpp b/libs/qscintilla_2.14.1/scintilla/lexers/LexCOBOL.cpp new file mode 100644 index 000000000..f0374824f --- /dev/null +++ b/libs/qscintilla_2.14.1/scintilla/lexers/LexCOBOL.cpp @@ -0,0 +1,379 @@ +// Scintilla source code edit control +/** @file LexCOBOL.cxx + ** Lexer for COBOL + ** Based on LexPascal.cxx + ** Written by Laurent le Tynevez + ** Updated by Simon Steele September 2002 + ** Updated by Mathias Rauen May 2003 (Delphi adjustments) + ** Updated by Rod Falck, Aug 2006 Converted to COBOL + **/ + +#include +#include +#include +#include +#include +#include + +#include "ILexer.h" +#include "Scintilla.h" +#include "SciLexer.h" + +#include "WordList.h" +#include "LexAccessor.h" +#include "Accessor.h" +#include "StyleContext.h" +#include "CharacterSet.h" +#include "LexerModule.h" + +using namespace Scintilla; + +#define IN_DIVISION 0x01 +#define IN_DECLARATIVES 0x02 +#define IN_SECTION 0x04 +#define IN_PARAGRAPH 0x08 +#define IN_FLAGS 0xF +#define NOT_HEADER 0x10 + +inline bool isCOBOLoperator(char ch) + { + return isoperator(ch); + } + +inline bool isCOBOLwordchar(char ch) + { + return IsASCII(ch) && (isalnum(ch) || ch == '-'); + + } + +inline bool isCOBOLwordstart(char ch) + { + return IsASCII(ch) && isalnum(ch); + } + +static int CountBits(int nBits) + { + int count = 0; + for (int i = 0; i < 32; ++i) + { + count += nBits & 1; + nBits >>= 1; + } + return count; + } + +static void getRange(Sci_PositionU start, + Sci_PositionU end, + Accessor &styler, + char *s, + Sci_PositionU len) { + Sci_PositionU i = 0; + while ((i < end - start + 1) && (i < len-1)) { + s[i] = static_cast(tolower(styler[start + i])); + i++; + } + s[i] = '\0'; +} + +static void ColourTo(Accessor &styler, Sci_PositionU end, unsigned int attr) { + styler.ColourTo(end, attr); +} + + +static int classifyWordCOBOL(Sci_PositionU start, Sci_PositionU end, /*WordList &keywords*/WordList *keywordlists[], Accessor &styler, int nContainment, bool *bAarea) { + int ret = 0; + + WordList& a_keywords = *keywordlists[0]; + WordList& b_keywords = *keywordlists[1]; + WordList& c_keywords = *keywordlists[2]; + + char s[100]; + s[0] = '\0'; + s[1] = '\0'; + getRange(start, end, styler, s, sizeof(s)); + + char chAttr = SCE_C_IDENTIFIER; + if (isdigit(s[0]) || (s[0] == '.') || (s[0] == 'v')) { + chAttr = SCE_C_NUMBER; + char *p = s + 1; + while (*p) { + if ((!isdigit(*p) && (*p) != 'v') && isCOBOLwordchar(*p)) { + chAttr = SCE_C_IDENTIFIER; + break; + } + ++p; + } + } + else { + if (a_keywords.InList(s)) { + chAttr = SCE_C_WORD; + } + else if (b_keywords.InList(s)) { + chAttr = SCE_C_WORD2; + } + else if (c_keywords.InList(s)) { + chAttr = SCE_C_UUID; + } + } + if (*bAarea) { + if (strcmp(s, "division") == 0) { + ret = IN_DIVISION; + // we've determined the containment, anything else is just ignored for those purposes + *bAarea = false; + } else if (strcmp(s, "declaratives") == 0) { + ret = IN_DIVISION | IN_DECLARATIVES; + if (nContainment & IN_DECLARATIVES) + ret |= NOT_HEADER | IN_SECTION; + // we've determined the containment, anything else is just ignored for those purposes + *bAarea = false; + } else if (strcmp(s, "section") == 0) { + ret = (nContainment &~ IN_PARAGRAPH) | IN_SECTION; + // we've determined the containment, anything else is just ignored for those purposes + *bAarea = false; + } else if (strcmp(s, "end") == 0 && (nContainment & IN_DECLARATIVES)) { + ret = IN_DIVISION | IN_DECLARATIVES | IN_SECTION | NOT_HEADER; + } else { + ret = nContainment | IN_PARAGRAPH; + } + } + ColourTo(styler, end, chAttr); + return ret; +} + +static void ColouriseCOBOLDoc(Sci_PositionU startPos, Sci_Position length, int initStyle, WordList *keywordlists[], + Accessor &styler) { + + styler.StartAt(startPos); + + int state = initStyle; + if (state == SCE_C_CHARACTER) // Does not leak onto next line + state = SCE_C_DEFAULT; + char chPrev = ' '; + char chNext = styler[startPos]; + Sci_PositionU lengthDoc = startPos + length; + + int nContainment; + + Sci_Position currentLine = styler.GetLine(startPos); + if (currentLine > 0) { + styler.SetLineState(currentLine, styler.GetLineState(currentLine-1)); + nContainment = styler.GetLineState(currentLine); + nContainment &= ~NOT_HEADER; + } else { + styler.SetLineState(currentLine, 0); + nContainment = 0; + } + + styler.StartSegment(startPos); + bool bNewLine = true; + bool bAarea = !isspacechar(chNext); + int column = 0; + for (Sci_PositionU i = startPos; i < lengthDoc; i++) { + char ch = chNext; + + chNext = styler.SafeGetCharAt(i + 1); + + ++column; + + if (bNewLine) { + column = 0; + } + if (column <= 1 && !bAarea) { + bAarea = !isspacechar(ch); + } + bool bSetNewLine = false; + if ((ch == '\r' && chNext != '\n') || (ch == '\n')) { + // Trigger on CR only (Mac style) or either on LF from CR+LF (Dos/Win) or on LF alone (Unix) + // Avoid triggering two times on Dos/Win + // End of line + if (state == SCE_C_CHARACTER) { + ColourTo(styler, i, state); + state = SCE_C_DEFAULT; + } + styler.SetLineState(currentLine, nContainment); + currentLine++; + bSetNewLine = true; + if (nContainment & NOT_HEADER) + nContainment &= ~(NOT_HEADER | IN_DECLARATIVES | IN_SECTION); + } + + if (styler.IsLeadByte(ch)) { + chNext = styler.SafeGetCharAt(i + 2); + chPrev = ' '; + i += 1; + continue; + } + + if (state == SCE_C_DEFAULT) { + if (isCOBOLwordstart(ch) || (ch == '$' && IsASCII(chNext) && isalpha(chNext))) { + ColourTo(styler, i-1, state); + state = SCE_C_IDENTIFIER; + } else if (column == 6 && ch == '*') { + // Cobol comment line: asterisk in column 7. + ColourTo(styler, i-1, state); + state = SCE_C_COMMENTLINE; + } else if (ch == '*' && chNext == '>') { + // Cobol inline comment: asterisk, followed by greater than. + ColourTo(styler, i-1, state); + state = SCE_C_COMMENTLINE; + } else if (column == 0 && ch == '*' && chNext != '*') { + ColourTo(styler, i-1, state); + state = SCE_C_COMMENTLINE; + } else if (column == 0 && ch == '/' && chNext != '*') { + ColourTo(styler, i-1, state); + state = SCE_C_COMMENTLINE; + } else if (column == 0 && ch == '*' && chNext == '*') { + ColourTo(styler, i-1, state); + state = SCE_C_COMMENTDOC; + } else if (column == 0 && ch == '/' && chNext == '*') { + ColourTo(styler, i-1, state); + state = SCE_C_COMMENTDOC; + } else if (ch == '"') { + ColourTo(styler, i-1, state); + state = SCE_C_STRING; + } else if (ch == '\'') { + ColourTo(styler, i-1, state); + state = SCE_C_CHARACTER; + } else if (ch == '?' && column == 0) { + ColourTo(styler, i-1, state); + state = SCE_C_PREPROCESSOR; + } else if (isCOBOLoperator(ch)) { + ColourTo(styler, i-1, state); + ColourTo(styler, i, SCE_C_OPERATOR); + } + } else if (state == SCE_C_IDENTIFIER) { + if (!isCOBOLwordchar(ch)) { + int lStateChange = classifyWordCOBOL(styler.GetStartSegment(), i - 1, keywordlists, styler, nContainment, &bAarea); + + if(lStateChange != 0) { + styler.SetLineState(currentLine, lStateChange); + nContainment = lStateChange; + } + + state = SCE_C_DEFAULT; + chNext = styler.SafeGetCharAt(i + 1); + if (ch == '"') { + state = SCE_C_STRING; + } else if (ch == '\'') { + state = SCE_C_CHARACTER; + } else if (isCOBOLoperator(ch)) { + ColourTo(styler, i, SCE_C_OPERATOR); + } + } + } else { + if (state == SCE_C_PREPROCESSOR) { + if ((ch == '\r' || ch == '\n') && !(chPrev == '\\' || chPrev == '\r')) { + ColourTo(styler, i-1, state); + state = SCE_C_DEFAULT; + } + } else if (state == SCE_C_COMMENT) { + if (ch == '\r' || ch == '\n') { + ColourTo(styler, i, state); + state = SCE_C_DEFAULT; + } + } else if (state == SCE_C_COMMENTDOC) { + if (ch == '\r' || ch == '\n') { + if (((i > styler.GetStartSegment() + 2) || ( + (initStyle == SCE_C_COMMENTDOC) && + (styler.GetStartSegment() == static_cast(startPos))))) { + ColourTo(styler, i, state); + state = SCE_C_DEFAULT; + } + } + } else if (state == SCE_C_COMMENTLINE) { + if (ch == '\r' || ch == '\n') { + ColourTo(styler, i-1, state); + state = SCE_C_DEFAULT; + } + } else if (state == SCE_C_STRING) { + if (ch == '"') { + ColourTo(styler, i, state); + state = SCE_C_DEFAULT; + } + } else if (state == SCE_C_CHARACTER) { + if (ch == '\'') { + ColourTo(styler, i, state); + state = SCE_C_DEFAULT; + } + } + } + chPrev = ch; + bNewLine = bSetNewLine; + if (bNewLine) + { + bAarea = false; + } + } + ColourTo(styler, lengthDoc - 1, state); +} + +static void FoldCOBOLDoc(Sci_PositionU startPos, Sci_Position length, int, WordList *[], + Accessor &styler) { + bool foldCompact = styler.GetPropertyInt("fold.compact", 1) != 0; + Sci_PositionU endPos = startPos + length; + int visibleChars = 0; + Sci_Position lineCurrent = styler.GetLine(startPos); + int levelPrev = lineCurrent > 0 ? styler.LevelAt(lineCurrent - 1) & SC_FOLDLEVELNUMBERMASK : 0xFFF; + char chNext = styler[startPos]; + + bool bNewLine = true; + bool bAarea = !isspacechar(chNext); + int column = 0; + bool bComment = false; + for (Sci_PositionU i = startPos; i < endPos; i++) { + char ch = chNext; + chNext = styler.SafeGetCharAt(i + 1); + ++column; + + if (bNewLine) { + column = 0; + bComment = (ch == '*' || ch == '/' || ch == '?'); + } + if (column <= 1 && !bAarea) { + bAarea = !isspacechar(ch); + } + bool atEOL = (ch == '\r' && chNext != '\n') || (ch == '\n'); + if (atEOL) { + int nContainment = styler.GetLineState(lineCurrent); + int lev = CountBits(nContainment & IN_FLAGS) | SC_FOLDLEVELBASE; + if (bAarea && !bComment) + --lev; + if (visibleChars == 0 && foldCompact) + lev |= SC_FOLDLEVELWHITEFLAG; + if ((bAarea) && (visibleChars > 0) && !(nContainment & NOT_HEADER) && !bComment) + lev |= SC_FOLDLEVELHEADERFLAG; + if (lev != styler.LevelAt(lineCurrent)) { + styler.SetLevel(lineCurrent, lev); + } + if ((lev & SC_FOLDLEVELNUMBERMASK) <= (levelPrev & SC_FOLDLEVELNUMBERMASK)) { + // this level is at the same level or less than the previous line + // therefore these is nothing for the previous header to collapse, so remove the header + styler.SetLevel(lineCurrent - 1, levelPrev & ~SC_FOLDLEVELHEADERFLAG); + } + levelPrev = lev; + visibleChars = 0; + bAarea = false; + bNewLine = true; + lineCurrent++; + } else { + bNewLine = false; + } + + + if (!isspacechar(ch)) + visibleChars++; + } + + // Fill in the real level of the next line, keeping the current flags as they will be filled in later + int flagsNext = styler.LevelAt(lineCurrent) & ~SC_FOLDLEVELNUMBERMASK; + styler.SetLevel(lineCurrent, levelPrev | flagsNext); +} + +static const char * const COBOLWordListDesc[] = { + "A Keywords", + "B Keywords", + "Extended Keywords", + 0 +}; + +LexerModule lmCOBOL(SCLEX_COBOL, ColouriseCOBOLDoc, "COBOL", FoldCOBOLDoc, COBOLWordListDesc); diff --git a/libs/qscintilla_2.14.1/scintilla/lexers/LexCPP.cpp b/libs/qscintilla_2.14.1/scintilla/lexers/LexCPP.cpp new file mode 100644 index 000000000..3dac142ab --- /dev/null +++ b/libs/qscintilla_2.14.1/scintilla/lexers/LexCPP.cpp @@ -0,0 +1,1725 @@ +// Scintilla source code edit control +/** @file LexCPP.cxx + ** Lexer for C++, C, Java, and JavaScript. + ** Further folding features and configuration properties added by "Udo Lechner" + **/ +// Copyright 1998-2005 by Neil Hodgson +// The License.txt file describes the conditions under which this software may be distributed. + +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include + +#include "ILexer.h" +#include "Scintilla.h" +#include "SciLexer.h" + +#include "StringCopy.h" +#include "WordList.h" +#include "LexAccessor.h" +#include "Accessor.h" +#include "StyleContext.h" +#include "CharacterSet.h" +#include "LexerModule.h" +#include "OptionSet.h" +#include "SparseState.h" +#include "SubStyles.h" + +using namespace Scintilla; + +namespace { + // Use an unnamed namespace to protect the functions and classes from name conflicts + +bool IsSpaceEquiv(int state) noexcept { + return (state <= SCE_C_COMMENTDOC) || + // including SCE_C_DEFAULT, SCE_C_COMMENT, SCE_C_COMMENTLINE + (state == SCE_C_COMMENTLINEDOC) || (state == SCE_C_COMMENTDOCKEYWORD) || + (state == SCE_C_COMMENTDOCKEYWORDERROR); +} + +// Preconditions: sc.currentPos points to a character after '+' or '-'. +// The test for pos reaching 0 should be redundant, +// and is in only for safety measures. +// Limitation: this code will give the incorrect answer for code like +// a = b+++/ptn/... +// Putting a space between the '++' post-inc operator and the '+' binary op +// fixes this, and is highly recommended for readability anyway. +bool FollowsPostfixOperator(const StyleContext &sc, LexAccessor &styler) { + Sci_Position pos = sc.currentPos; + while (--pos > 0) { + const char ch = styler[pos]; + if (ch == '+' || ch == '-') { + return styler[pos - 1] == ch; + } + } + return false; +} + +bool followsReturnKeyword(const StyleContext &sc, LexAccessor &styler) { + // Don't look at styles, so no need to flush. + Sci_Position pos = sc.currentPos; + const Sci_Position currentLine = styler.GetLine(pos); + const Sci_Position lineStartPos = styler.LineStart(currentLine); + while (--pos > lineStartPos) { + const char ch = styler.SafeGetCharAt(pos); + if (ch != ' ' && ch != '\t') { + break; + } + } + const char *retBack = "nruter"; + const char *s = retBack; + while (*s + && pos >= lineStartPos + && styler.SafeGetCharAt(pos) == *s) { + s++; + pos--; + } + return !*s; +} + +bool IsSpaceOrTab(int ch) noexcept { + return ch == ' ' || ch == '\t'; +} + +bool OnlySpaceOrTab(const std::string &s) noexcept { + for (const char ch : s) { + if (!IsSpaceOrTab(ch)) + return false; + } + return true; +} + +std::vector StringSplit(const std::string &text, int separator) { + std::vector vs(text.empty() ? 0 : 1); + for (const char ch : text) { + if (ch == separator) { + vs.emplace_back(); + } else { + vs.back() += ch; + } + } + return vs; +} + +struct BracketPair { + std::vector::iterator itBracket; + std::vector::iterator itEndBracket; +}; + +BracketPair FindBracketPair(std::vector &tokens) { + BracketPair bp; + std::vector::iterator itTok = std::find(tokens.begin(), tokens.end(), "("); + bp.itBracket = tokens.end(); + bp.itEndBracket = tokens.end(); + if (itTok != tokens.end()) { + bp.itBracket = itTok; + size_t nest = 0; + while (itTok != tokens.end()) { + if (*itTok == "(") { + nest++; + } else if (*itTok == ")") { + nest--; + if (nest == 0) { + bp.itEndBracket = itTok; + return bp; + } + } + ++itTok; + } + } + bp.itBracket = tokens.end(); + return bp; +} + +void highlightTaskMarker(StyleContext &sc, LexAccessor &styler, + int activity, const WordList &markerList, bool caseSensitive){ + if ((isoperator(sc.chPrev) || IsASpace(sc.chPrev)) && markerList.Length()) { + const int lengthMarker = 50; + char marker[lengthMarker+1] = ""; + const Sci_Position currPos = static_cast(sc.currentPos); + int i = 0; + while (i < lengthMarker) { + const char ch = styler.SafeGetCharAt(currPos + i); + if (IsASpace(ch) || isoperator(ch)) { + break; + } + if (caseSensitive) + marker[i] = ch; + else + marker[i] = MakeLowerCase(ch); + i++; + } + marker[i] = '\0'; + if (markerList.InList(marker)) { + sc.SetState(SCE_C_TASKMARKER|activity); + } + } +} + +struct EscapeSequence { + int digitsLeft; + CharacterSet setHexDigits; + CharacterSet setOctDigits; + CharacterSet setNoneNumeric; + CharacterSet *escapeSetValid; + EscapeSequence() { + digitsLeft = 0; + escapeSetValid = 0; + setHexDigits = CharacterSet(CharacterSet::setDigits, "ABCDEFabcdef"); + setOctDigits = CharacterSet(CharacterSet::setNone, "01234567"); + } + void resetEscapeState(int nextChar) { + digitsLeft = 0; + escapeSetValid = &setNoneNumeric; + if (nextChar == 'U') { + digitsLeft = 9; + escapeSetValid = &setHexDigits; + } else if (nextChar == 'u') { + digitsLeft = 5; + escapeSetValid = &setHexDigits; + } else if (nextChar == 'x') { + digitsLeft = 5; + escapeSetValid = &setHexDigits; + } else if (setOctDigits.Contains(nextChar)) { + digitsLeft = 3; + escapeSetValid = &setOctDigits; + } + } + bool atEscapeEnd(int currChar) const { + return (digitsLeft <= 0) || !escapeSetValid->Contains(currChar); + } +}; + +std::string GetRestOfLine(LexAccessor &styler, Sci_Position start, bool allowSpace) { + std::string restOfLine; + Sci_Position i =0; + char ch = styler.SafeGetCharAt(start, '\n'); + const Sci_Position endLine = styler.LineEnd(styler.GetLine(start)); + while (((start+i) < endLine) && (ch != '\r')) { + const char chNext = styler.SafeGetCharAt(start + i + 1, '\n'); + if (ch == '/' && (chNext == '/' || chNext == '*')) + break; + if (allowSpace || (ch != ' ')) + restOfLine += ch; + i++; + ch = chNext; + } + return restOfLine; +} + +bool IsStreamCommentStyle(int style) noexcept { + return style == SCE_C_COMMENT || + style == SCE_C_COMMENTDOC || + style == SCE_C_COMMENTDOCKEYWORD || + style == SCE_C_COMMENTDOCKEYWORDERROR; +} + +struct PPDefinition { + Sci_Position line; + std::string key; + std::string value; + bool isUndef; + std::string arguments; + PPDefinition(Sci_Position line_, const std::string &key_, const std::string &value_, bool isUndef_ = false, const std::string &arguments_="") : + line(line_), key(key_), value(value_), isUndef(isUndef_), arguments(arguments_) { + } +}; + +class LinePPState { + int state; + int ifTaken; + int level; + bool ValidLevel() const noexcept { + return level >= 0 && level < 32; + } + int maskLevel() const noexcept { + if (level >= 0) { + return 1 << level; + } else { + return 1; + } + } +public: + LinePPState() : state(0), ifTaken(0), level(-1) { + } + bool IsInactive() const noexcept { + return state != 0; + } + bool CurrentIfTaken() const noexcept { + return (ifTaken & maskLevel()) != 0; + } + void StartSection(bool on) noexcept { + level++; + if (ValidLevel()) { + if (on) { + state &= ~maskLevel(); + ifTaken |= maskLevel(); + } else { + state |= maskLevel(); + ifTaken &= ~maskLevel(); + } + } + } + void EndSection() noexcept { + if (ValidLevel()) { + state &= ~maskLevel(); + ifTaken &= ~maskLevel(); + } + level--; + } + void InvertCurrentLevel() noexcept { + if (ValidLevel()) { + state ^= maskLevel(); + ifTaken |= maskLevel(); + } + } +}; + +// Hold the preprocessor state for each line seen. +// Currently one entry per line but could become sparse with just one entry per preprocessor line. +class PPStates { + std::vector vlls; +public: + LinePPState ForLine(Sci_Position line) const { + if ((line > 0) && (vlls.size() > static_cast(line))) { + return vlls[line]; + } else { + return LinePPState(); + } + } + void Add(Sci_Position line, LinePPState lls) { + vlls.resize(line+1); + vlls[line] = lls; + } +}; + +// An individual named option for use in an OptionSet + +// Options used for LexerCPP +struct OptionsCPP { + bool stylingWithinPreprocessor; + bool identifiersAllowDollars; + bool trackPreprocessor; + bool updatePreprocessor; + bool verbatimStringsAllowEscapes; + bool triplequotedStrings; + bool hashquotedStrings; + bool backQuotedStrings; + bool escapeSequence; + bool fold; + bool foldSyntaxBased; + bool foldComment; + bool foldCommentMultiline; + bool foldCommentExplicit; + std::string foldExplicitStart; + std::string foldExplicitEnd; + bool foldExplicitAnywhere; + bool foldPreprocessor; + bool foldPreprocessorAtElse; + bool foldCompact; + bool foldAtElse; + OptionsCPP() { + stylingWithinPreprocessor = false; + identifiersAllowDollars = true; + trackPreprocessor = true; + updatePreprocessor = true; + verbatimStringsAllowEscapes = false; + triplequotedStrings = false; + hashquotedStrings = false; + backQuotedStrings = false; + escapeSequence = false; + fold = false; + foldSyntaxBased = true; + foldComment = false; + foldCommentMultiline = true; + foldCommentExplicit = true; + foldExplicitStart = ""; + foldExplicitEnd = ""; + foldExplicitAnywhere = false; + foldPreprocessor = false; + foldPreprocessorAtElse = false; + foldCompact = false; + foldAtElse = false; + } +}; + +const char *const cppWordLists[] = { + "Primary keywords and identifiers", + "Secondary keywords and identifiers", + "Documentation comment keywords", + "Global classes and typedefs", + "Preprocessor definitions", + "Task marker and error marker keywords", + 0, +}; + +struct OptionSetCPP : public OptionSet { + OptionSetCPP() { + DefineProperty("styling.within.preprocessor", &OptionsCPP::stylingWithinPreprocessor, + "For C++ code, determines whether all preprocessor code is styled in the " + "preprocessor style (0, the default) or only from the initial # to the end " + "of the command word(1)."); + + DefineProperty("lexer.cpp.allow.dollars", &OptionsCPP::identifiersAllowDollars, + "Set to 0 to disallow the '$' character in identifiers with the cpp lexer."); + + DefineProperty("lexer.cpp.track.preprocessor", &OptionsCPP::trackPreprocessor, + "Set to 1 to interpret #if/#else/#endif to grey out code that is not active."); + + DefineProperty("lexer.cpp.update.preprocessor", &OptionsCPP::updatePreprocessor, + "Set to 1 to update preprocessor definitions when #define found."); + + DefineProperty("lexer.cpp.verbatim.strings.allow.escapes", &OptionsCPP::verbatimStringsAllowEscapes, + "Set to 1 to allow verbatim strings to contain escape sequences."); + + DefineProperty("lexer.cpp.triplequoted.strings", &OptionsCPP::triplequotedStrings, + "Set to 1 to enable highlighting of triple-quoted strings."); + + DefineProperty("lexer.cpp.hashquoted.strings", &OptionsCPP::hashquotedStrings, + "Set to 1 to enable highlighting of hash-quoted strings."); + + DefineProperty("lexer.cpp.backquoted.strings", &OptionsCPP::backQuotedStrings, + "Set to 1 to enable highlighting of back-quoted raw strings ."); + + DefineProperty("lexer.cpp.escape.sequence", &OptionsCPP::escapeSequence, + "Set to 1 to enable highlighting of escape sequences in strings"); + + DefineProperty("fold", &OptionsCPP::fold); + + DefineProperty("fold.cpp.syntax.based", &OptionsCPP::foldSyntaxBased, + "Set this property to 0 to disable syntax based folding."); + + DefineProperty("fold.comment", &OptionsCPP::foldComment, + "This option enables folding multi-line comments and explicit fold points when using the C++ lexer. " + "Explicit fold points allows adding extra folding by placing a //{ comment at the start and a //} " + "at the end of a section that should fold."); + + DefineProperty("fold.cpp.comment.multiline", &OptionsCPP::foldCommentMultiline, + "Set this property to 0 to disable folding multi-line comments when fold.comment=1."); + + DefineProperty("fold.cpp.comment.explicit", &OptionsCPP::foldCommentExplicit, + "Set this property to 0 to disable folding explicit fold points when fold.comment=1."); + + DefineProperty("fold.cpp.explicit.start", &OptionsCPP::foldExplicitStart, + "The string to use for explicit fold start points, replacing the standard //{."); + + DefineProperty("fold.cpp.explicit.end", &OptionsCPP::foldExplicitEnd, + "The string to use for explicit fold end points, replacing the standard //}."); + + DefineProperty("fold.cpp.explicit.anywhere", &OptionsCPP::foldExplicitAnywhere, + "Set this property to 1 to enable explicit fold points anywhere, not just in line comments."); + + DefineProperty("fold.cpp.preprocessor.at.else", &OptionsCPP::foldPreprocessorAtElse, + "This option enables folding on a preprocessor #else or #endif line of an #if statement."); + + DefineProperty("fold.preprocessor", &OptionsCPP::foldPreprocessor, + "This option enables folding preprocessor directives when using the C++ lexer. " + "Includes C#'s explicit #region and #endregion folding directives."); + + DefineProperty("fold.compact", &OptionsCPP::foldCompact); + + DefineProperty("fold.at.else", &OptionsCPP::foldAtElse, + "This option enables C++ folding on a \"} else {\" line of an if statement."); + + DefineWordListSets(cppWordLists); + } +}; + +const char styleSubable[] = {SCE_C_IDENTIFIER, SCE_C_COMMENTDOCKEYWORD, 0}; + +LexicalClass lexicalClasses[] = { + // Lexer Cpp SCLEX_CPP SCE_C_: + 0, "SCE_C_DEFAULT", "default", "White space", + 1, "SCE_C_COMMENT", "comment", "Comment: /* */.", + 2, "SCE_C_COMMENTLINE", "comment line", "Line Comment: //.", + 3, "SCE_C_COMMENTDOC", "comment documentation", "Doc comment: block comments beginning with /** or /*!", + 4, "SCE_C_NUMBER", "literal numeric", "Number", + 5, "SCE_C_WORD", "keyword", "Keyword", + 6, "SCE_C_STRING", "literal string", "Double quoted string", + 7, "SCE_C_CHARACTER", "literal string character", "Single quoted string", + 8, "SCE_C_UUID", "literal uuid", "UUIDs (only in IDL)", + 9, "SCE_C_PREPROCESSOR", "preprocessor", "Preprocessor", + 10, "SCE_C_OPERATOR", "operator", "Operators", + 11, "SCE_C_IDENTIFIER", "identifier", "Identifiers", + 12, "SCE_C_STRINGEOL", "error literal string", "End of line where string is not closed", + 13, "SCE_C_VERBATIM", "literal string multiline raw", "Verbatim strings for C#", + 14, "SCE_C_REGEX", "literal regex", "Regular expressions for JavaScript", + 15, "SCE_C_COMMENTLINEDOC", "comment documentation line", "Doc Comment Line: line comments beginning with /// or //!.", + 16, "SCE_C_WORD2", "identifier", "Keywords2", + 17, "SCE_C_COMMENTDOCKEYWORD", "comment documentation keyword", "Comment keyword", + 18, "SCE_C_COMMENTDOCKEYWORDERROR", "error comment documentation keyword", "Comment keyword error", + 19, "SCE_C_GLOBALCLASS", "identifier", "Global class", + 20, "SCE_C_STRINGRAW", "literal string multiline raw", "Raw strings for C++0x", + 21, "SCE_C_TRIPLEVERBATIM", "literal string multiline raw", "Triple-quoted strings for Vala", + 22, "SCE_C_HASHQUOTEDSTRING", "literal string", "Hash-quoted strings for Pike", + 23, "SCE_C_PREPROCESSORCOMMENT", "comment preprocessor", "Preprocessor stream comment", + 24, "SCE_C_PREPROCESSORCOMMENTDOC", "comment preprocessor documentation", "Preprocessor stream doc comment", + 25, "SCE_C_USERLITERAL", "literal", "User defined literals", + 26, "SCE_C_TASKMARKER", "comment taskmarker", "Task Marker", + 27, "SCE_C_ESCAPESEQUENCE", "literal string escapesequence", "Escape sequence", +}; + +} + +class LexerCPP : public ILexerWithMetaData { + bool caseSensitive; + CharacterSet setWord; + CharacterSet setNegationOp; + CharacterSet setArithmethicOp; + CharacterSet setRelOp; + CharacterSet setLogicalOp; + CharacterSet setWordStart; + PPStates vlls; + std::vector ppDefineHistory; + WordList keywords; + WordList keywords2; + WordList keywords3; + WordList keywords4; + WordList ppDefinitions; + WordList markerList; + struct SymbolValue { + std::string value; + std::string arguments; + SymbolValue(const std::string &value_="", const std::string &arguments_="") : value(value_), arguments(arguments_) { + } + SymbolValue &operator = (const std::string &value_) { + value = value_; + arguments.clear(); + return *this; + } + bool IsMacro() const noexcept { + return !arguments.empty(); + } + }; + typedef std::map SymbolTable; + SymbolTable preprocessorDefinitionsStart; + OptionsCPP options; + OptionSetCPP osCPP; + EscapeSequence escapeSeq; + SparseState rawStringTerminators; + enum { activeFlag = 0x40 }; + enum { ssIdentifier, ssDocKeyword }; + SubStyles subStyles; + std::string returnBuffer; +public: + explicit LexerCPP(bool caseSensitive_) : + caseSensitive(caseSensitive_), + setWord(CharacterSet::setAlphaNum, "._", 0x80, true), + setNegationOp(CharacterSet::setNone, "!"), + setArithmethicOp(CharacterSet::setNone, "+-/*%"), + setRelOp(CharacterSet::setNone, "=!<>"), + setLogicalOp(CharacterSet::setNone, "|&"), + subStyles(styleSubable, 0x80, 0x40, activeFlag) { + } + virtual ~LexerCPP() { + } + void SCI_METHOD Release() override { + delete this; + } + int SCI_METHOD Version() const override { + return lvMetaData; + } + const char * SCI_METHOD PropertyNames() override { + return osCPP.PropertyNames(); + } + int SCI_METHOD PropertyType(const char *name) override { + return osCPP.PropertyType(name); + } + const char * SCI_METHOD DescribeProperty(const char *name) override { + return osCPP.DescribeProperty(name); + } + Sci_Position SCI_METHOD PropertySet(const char *key, const char *val) override; + const char * SCI_METHOD DescribeWordListSets() override { + return osCPP.DescribeWordListSets(); + } + Sci_Position SCI_METHOD WordListSet(int n, const char *wl) override; + void SCI_METHOD Lex(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess) override; + void SCI_METHOD Fold(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess) override; + + void * SCI_METHOD PrivateCall(int, void *) override { + return 0; + } + + int SCI_METHOD LineEndTypesSupported() override { + return SC_LINE_END_TYPE_UNICODE; + } + + int SCI_METHOD AllocateSubStyles(int styleBase, int numberStyles) override { + return subStyles.Allocate(styleBase, numberStyles); + } + int SCI_METHOD SubStylesStart(int styleBase) override { + return subStyles.Start(styleBase); + } + int SCI_METHOD SubStylesLength(int styleBase) override { + return subStyles.Length(styleBase); + } + int SCI_METHOD StyleFromSubStyle(int subStyle) override { + const int styleBase = subStyles.BaseStyle(MaskActive(subStyle)); + const int active = subStyle & activeFlag; + return styleBase | active; + } + int SCI_METHOD PrimaryStyleFromStyle(int style) override { + return MaskActive(style); + } + void SCI_METHOD FreeSubStyles() override { + subStyles.Free(); + } + void SCI_METHOD SetIdentifiers(int style, const char *identifiers) override { + subStyles.SetIdentifiers(style, identifiers); + } + int SCI_METHOD DistanceToSecondaryStyles() override { + return activeFlag; + } + const char * SCI_METHOD GetSubStyleBases() override { + return styleSubable; + } + int SCI_METHOD NamedStyles() override { + return std::max(subStyles.LastAllocated() + 1, + static_cast(ELEMENTS(lexicalClasses))) + + activeFlag; + } + const char * SCI_METHOD NameOfStyle(int style) override { + if (style >= NamedStyles()) + return ""; + if (style < static_cast(ELEMENTS(lexicalClasses))) + return lexicalClasses[style].name; + // TODO: inactive and substyles + return ""; + } + const char * SCI_METHOD TagsOfStyle(int style) override { + if (style >= NamedStyles()) + return "Excess"; + returnBuffer.clear(); + const int firstSubStyle = subStyles.FirstAllocated(); + if (firstSubStyle >= 0) { + const int lastSubStyle = subStyles.LastAllocated(); + if (((style >= firstSubStyle) && (style <= (lastSubStyle))) || + ((style >= firstSubStyle + activeFlag) && (style <= (lastSubStyle + activeFlag)))) { + int styleActive = style; + if (style > lastSubStyle) { + returnBuffer = "inactive "; + styleActive -= activeFlag; + } + const int styleMain = StyleFromSubStyle(styleActive); + returnBuffer += lexicalClasses[styleMain].tags; + return returnBuffer.c_str(); + } + } + if (style < static_cast(ELEMENTS(lexicalClasses))) + return lexicalClasses[style].tags; + if (style >= activeFlag) { + returnBuffer = "inactive "; + const int styleActive = style - activeFlag; + if (styleActive < static_cast(ELEMENTS(lexicalClasses))) + returnBuffer += lexicalClasses[styleActive].tags; + else + returnBuffer = ""; + return returnBuffer.c_str(); + } + return ""; + } + const char * SCI_METHOD DescriptionOfStyle(int style) override { + if (style >= NamedStyles()) + return ""; + if (style < static_cast(ELEMENTS(lexicalClasses))) + return lexicalClasses[style].description; + // TODO: inactive and substyles + return ""; + } + + static ILexer *LexerFactoryCPP() { + return new LexerCPP(true); + } + static ILexer *LexerFactoryCPPInsensitive() { + return new LexerCPP(false); + } + static int MaskActive(int style) noexcept { + return style & ~activeFlag; + } + void EvaluateTokens(std::vector &tokens, const SymbolTable &preprocessorDefinitions); + std::vector Tokenize(const std::string &expr) const; + bool EvaluateExpression(const std::string &expr, const SymbolTable &preprocessorDefinitions); +}; + +Sci_Position SCI_METHOD LexerCPP::PropertySet(const char *key, const char *val) { + if (osCPP.PropertySet(&options, key, val)) { + if (strcmp(key, "lexer.cpp.allow.dollars") == 0) { + setWord = CharacterSet(CharacterSet::setAlphaNum, "._", 0x80, true); + if (options.identifiersAllowDollars) { + setWord.Add('$'); + } + } + return 0; + } + return -1; +} + +Sci_Position SCI_METHOD LexerCPP::WordListSet(int n, const char *wl) { + WordList *wordListN = 0; + switch (n) { + case 0: + wordListN = &keywords; + break; + case 1: + wordListN = &keywords2; + break; + case 2: + wordListN = &keywords3; + break; + case 3: + wordListN = &keywords4; + break; + case 4: + wordListN = &ppDefinitions; + break; + case 5: + wordListN = &markerList; + break; + } + Sci_Position firstModification = -1; + if (wordListN) { + WordList wlNew; + wlNew.Set(wl); + if (*wordListN != wlNew) { + wordListN->Set(wl); + firstModification = 0; + if (n == 4) { + // Rebuild preprocessorDefinitions + preprocessorDefinitionsStart.clear(); + for (int nDefinition = 0; nDefinition < ppDefinitions.Length(); nDefinition++) { + const char *cpDefinition = ppDefinitions.WordAt(nDefinition); + const char *cpEquals = strchr(cpDefinition, '='); + if (cpEquals) { + std::string name(cpDefinition, cpEquals - cpDefinition); + std::string val(cpEquals+1); + const size_t bracket = name.find('('); + const size_t bracketEnd = name.find(')'); + if ((bracket != std::string::npos) && (bracketEnd != std::string::npos)) { + // Macro + std::string args = name.substr(bracket + 1, bracketEnd - bracket - 1); + name = name.substr(0, bracket); + preprocessorDefinitionsStart[name] = SymbolValue(val, args); + } else { + preprocessorDefinitionsStart[name] = val; + } + } else { + std::string name(cpDefinition); + std::string val("1"); + preprocessorDefinitionsStart[name] = val; + } + } + } + } + } + return firstModification; +} + +void SCI_METHOD LexerCPP::Lex(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess) { + LexAccessor styler(pAccess); + + CharacterSet setOKBeforeRE(CharacterSet::setNone, "([{=,:;!%^&*|?~+-"); + CharacterSet setCouldBePostOp(CharacterSet::setNone, "+-"); + + CharacterSet setDoxygen(CharacterSet::setAlpha, "$@\\&<>#{}[]"); + + setWordStart = CharacterSet(CharacterSet::setAlpha, "_", 0x80, true); + + CharacterSet setInvalidRawFirst(CharacterSet::setNone, " )\\\t\v\f\n"); + + if (options.identifiersAllowDollars) { + setWordStart.Add('$'); + } + + int chPrevNonWhite = ' '; + int visibleChars = 0; + bool lastWordWasUUID = false; + int styleBeforeDCKeyword = SCE_C_DEFAULT; + int styleBeforeTaskMarker = SCE_C_DEFAULT; + bool continuationLine = false; + bool isIncludePreprocessor = false; + bool isStringInPreprocessor = false; + bool inRERange = false; + bool seenDocKeyBrace = false; + + Sci_Position lineCurrent = styler.GetLine(startPos); + if ((MaskActive(initStyle) == SCE_C_PREPROCESSOR) || + (MaskActive(initStyle) == SCE_C_COMMENTLINE) || + (MaskActive(initStyle) == SCE_C_COMMENTLINEDOC)) { + // Set continuationLine if last character of previous line is '\' + if (lineCurrent > 0) { + const Sci_Position endLinePrevious = styler.LineEnd(lineCurrent - 1); + if (endLinePrevious > 0) { + continuationLine = styler.SafeGetCharAt(endLinePrevious-1) == '\\'; + } + } + } + + // look back to set chPrevNonWhite properly for better regex colouring + if (startPos > 0) { + Sci_Position back = startPos; + while (--back && IsSpaceEquiv(MaskActive(styler.StyleAt(back)))) + ; + if (MaskActive(styler.StyleAt(back)) == SCE_C_OPERATOR) { + chPrevNonWhite = styler.SafeGetCharAt(back); + } + } + + StyleContext sc(startPos, length, initStyle, styler); + LinePPState preproc = vlls.ForLine(lineCurrent); + + bool definitionsChanged = false; + + // Truncate ppDefineHistory before current line + + if (!options.updatePreprocessor) + ppDefineHistory.clear(); + + std::vector::iterator itInvalid = std::find_if(ppDefineHistory.begin(), ppDefineHistory.end(), + [lineCurrent](const PPDefinition &p) { return p.line >= lineCurrent; }); + if (itInvalid != ppDefineHistory.end()) { + ppDefineHistory.erase(itInvalid, ppDefineHistory.end()); + definitionsChanged = true; + } + + SymbolTable preprocessorDefinitions = preprocessorDefinitionsStart; + for (const PPDefinition &ppDef : ppDefineHistory) { + if (ppDef.isUndef) + preprocessorDefinitions.erase(ppDef.key); + else + preprocessorDefinitions[ppDef.key] = SymbolValue(ppDef.value, ppDef.arguments); + } + + std::string rawStringTerminator = rawStringTerminators.ValueAt(lineCurrent-1); + SparseState rawSTNew(lineCurrent); + + int activitySet = preproc.IsInactive() ? activeFlag : 0; + + const WordClassifier &classifierIdentifiers = subStyles.Classifier(SCE_C_IDENTIFIER); + const WordClassifier &classifierDocKeyWords = subStyles.Classifier(SCE_C_COMMENTDOCKEYWORD); + + Sci_Position lineEndNext = styler.LineEnd(lineCurrent); + + for (; sc.More();) { + + if (sc.atLineStart) { + // Using MaskActive() is not needed in the following statement. + // Inside inactive preprocessor declaration, state will be reset anyway at the end of this block. + if ((sc.state == SCE_C_STRING) || (sc.state == SCE_C_CHARACTER)) { + // Prevent SCE_C_STRINGEOL from leaking back to previous line which + // ends with a line continuation by locking in the state up to this position. + sc.SetState(sc.state); + } + if ((MaskActive(sc.state) == SCE_C_PREPROCESSOR) && (!continuationLine)) { + sc.SetState(SCE_C_DEFAULT|activitySet); + } + // Reset states to beginning of colourise so no surprises + // if different sets of lines lexed. + visibleChars = 0; + lastWordWasUUID = false; + isIncludePreprocessor = false; + inRERange = false; + if (preproc.IsInactive()) { + activitySet = activeFlag; + sc.SetState(sc.state | activitySet); + } + } + + if (sc.atLineEnd) { + lineCurrent++; + lineEndNext = styler.LineEnd(lineCurrent); + vlls.Add(lineCurrent, preproc); + if (rawStringTerminator != "") { + rawSTNew.Set(lineCurrent-1, rawStringTerminator); + } + } + + // Handle line continuation generically. + if (sc.ch == '\\') { + if (static_cast((sc.currentPos+1)) >= lineEndNext) { + lineCurrent++; + lineEndNext = styler.LineEnd(lineCurrent); + vlls.Add(lineCurrent, preproc); + if (rawStringTerminator != "") { + rawSTNew.Set(lineCurrent-1, rawStringTerminator); + } + sc.Forward(); + if (sc.ch == '\r' && sc.chNext == '\n') { + // Even in UTF-8, \r and \n are separate + sc.Forward(); + } + continuationLine = true; + sc.Forward(); + continue; + } + } + + const bool atLineEndBeforeSwitch = sc.atLineEnd; + + // Determine if the current state should terminate. + switch (MaskActive(sc.state)) { + case SCE_C_OPERATOR: + sc.SetState(SCE_C_DEFAULT|activitySet); + break; + case SCE_C_NUMBER: + // We accept almost anything because of hex. and number suffixes + if (sc.ch == '_') { + sc.ChangeState(SCE_C_USERLITERAL|activitySet); + } else if (!(setWord.Contains(sc.ch) + || (sc.ch == '\'') + || ((sc.ch == '+' || sc.ch == '-') && (sc.chPrev == 'e' || sc.chPrev == 'E' || + sc.chPrev == 'p' || sc.chPrev == 'P')))) { + sc.SetState(SCE_C_DEFAULT|activitySet); + } + break; + case SCE_C_USERLITERAL: + if (!(setWord.Contains(sc.ch))) + sc.SetState(SCE_C_DEFAULT|activitySet); + break; + case SCE_C_IDENTIFIER: + if (sc.atLineStart || sc.atLineEnd || !setWord.Contains(sc.ch) || (sc.ch == '.')) { + char s[1000]; + if (caseSensitive) { + sc.GetCurrent(s, sizeof(s)); + } else { + sc.GetCurrentLowered(s, sizeof(s)); + } + if (keywords.InList(s)) { + lastWordWasUUID = strcmp(s, "uuid") == 0; + sc.ChangeState(SCE_C_WORD|activitySet); + } else if (keywords2.InList(s)) { + sc.ChangeState(SCE_C_WORD2|activitySet); + } else if (keywords4.InList(s)) { + sc.ChangeState(SCE_C_GLOBALCLASS|activitySet); + } else { + int subStyle = classifierIdentifiers.ValueFor(s); + if (subStyle >= 0) { + sc.ChangeState(subStyle|activitySet); + } + } + const bool literalString = sc.ch == '\"'; + if (literalString || sc.ch == '\'') { + size_t lenS = strlen(s); + const bool raw = literalString && sc.chPrev == 'R' && !setInvalidRawFirst.Contains(sc.chNext); + if (raw) + s[lenS--] = '\0'; + const bool valid = + (lenS == 0) || + ((lenS == 1) && ((s[0] == 'L') || (s[0] == 'u') || (s[0] == 'U'))) || + ((lenS == 2) && literalString && (s[0] == 'u') && (s[1] == '8')); + if (valid) { + if (literalString) { + if (raw) { + // Set the style of the string prefix to SCE_C_STRINGRAW but then change to + // SCE_C_DEFAULT as that allows the raw string start code to run. + sc.ChangeState(SCE_C_STRINGRAW|activitySet); + sc.SetState(SCE_C_DEFAULT|activitySet); + } else { + sc.ChangeState(SCE_C_STRING|activitySet); + } + } else { + sc.ChangeState(SCE_C_CHARACTER|activitySet); + } + } else { + sc.SetState(SCE_C_DEFAULT | activitySet); + } + } else { + sc.SetState(SCE_C_DEFAULT|activitySet); + } + } + break; + case SCE_C_PREPROCESSOR: + if (options.stylingWithinPreprocessor) { + if (IsASpace(sc.ch)) { + sc.SetState(SCE_C_DEFAULT|activitySet); + } + } else if (isStringInPreprocessor && (sc.Match('>') || sc.Match('\"') || sc.atLineEnd)) { + isStringInPreprocessor = false; + } else if (!isStringInPreprocessor) { + if ((isIncludePreprocessor && sc.Match('<')) || sc.Match('\"')) { + isStringInPreprocessor = true; + } else if (sc.Match('/', '*')) { + if (sc.Match("/**") || sc.Match("/*!")) { + sc.SetState(SCE_C_PREPROCESSORCOMMENTDOC|activitySet); + } else { + sc.SetState(SCE_C_PREPROCESSORCOMMENT|activitySet); + } + sc.Forward(); // Eat the * + } else if (sc.Match('/', '/')) { + sc.SetState(SCE_C_DEFAULT|activitySet); + } + } + break; + case SCE_C_PREPROCESSORCOMMENT: + case SCE_C_PREPROCESSORCOMMENTDOC: + if (sc.Match('*', '/')) { + sc.Forward(); + sc.ForwardSetState(SCE_C_PREPROCESSOR|activitySet); + continue; // Without advancing in case of '\'. + } + break; + case SCE_C_COMMENT: + if (sc.Match('*', '/')) { + sc.Forward(); + sc.ForwardSetState(SCE_C_DEFAULT|activitySet); + } else { + styleBeforeTaskMarker = SCE_C_COMMENT; + highlightTaskMarker(sc, styler, activitySet, markerList, caseSensitive); + } + break; + case SCE_C_COMMENTDOC: + if (sc.Match('*', '/')) { + sc.Forward(); + sc.ForwardSetState(SCE_C_DEFAULT|activitySet); + } else if (sc.ch == '@' || sc.ch == '\\') { // JavaDoc and Doxygen support + // Verify that we have the conditions to mark a comment-doc-keyword + if ((IsASpace(sc.chPrev) || sc.chPrev == '*') && (!IsASpace(sc.chNext))) { + styleBeforeDCKeyword = SCE_C_COMMENTDOC; + sc.SetState(SCE_C_COMMENTDOCKEYWORD|activitySet); + } + } + break; + case SCE_C_COMMENTLINE: + if (sc.atLineStart && !continuationLine) { + sc.SetState(SCE_C_DEFAULT|activitySet); + } else { + styleBeforeTaskMarker = SCE_C_COMMENTLINE; + highlightTaskMarker(sc, styler, activitySet, markerList, caseSensitive); + } + break; + case SCE_C_COMMENTLINEDOC: + if (sc.atLineStart && !continuationLine) { + sc.SetState(SCE_C_DEFAULT|activitySet); + } else if (sc.ch == '@' || sc.ch == '\\') { // JavaDoc and Doxygen support + // Verify that we have the conditions to mark a comment-doc-keyword + if ((IsASpace(sc.chPrev) || sc.chPrev == '/' || sc.chPrev == '!') && (!IsASpace(sc.chNext))) { + styleBeforeDCKeyword = SCE_C_COMMENTLINEDOC; + sc.SetState(SCE_C_COMMENTDOCKEYWORD|activitySet); + } + } + break; + case SCE_C_COMMENTDOCKEYWORD: + if ((styleBeforeDCKeyword == SCE_C_COMMENTDOC) && sc.Match('*', '/')) { + sc.ChangeState(SCE_C_COMMENTDOCKEYWORDERROR); + sc.Forward(); + sc.ForwardSetState(SCE_C_DEFAULT|activitySet); + seenDocKeyBrace = false; + } else if (sc.ch == '[' || sc.ch == '{') { + seenDocKeyBrace = true; + } else if (!setDoxygen.Contains(sc.ch) + && !(seenDocKeyBrace && (sc.ch == ',' || sc.ch == '.'))) { + char s[100]; + if (caseSensitive) { + sc.GetCurrent(s, sizeof(s)); + } else { + sc.GetCurrentLowered(s, sizeof(s)); + } + if (!(IsASpace(sc.ch) || (sc.ch == 0))) { + sc.ChangeState(SCE_C_COMMENTDOCKEYWORDERROR|activitySet); + } else if (!keywords3.InList(s + 1)) { + int subStyleCDKW = classifierDocKeyWords.ValueFor(s+1); + if (subStyleCDKW >= 0) { + sc.ChangeState(subStyleCDKW|activitySet); + } else { + sc.ChangeState(SCE_C_COMMENTDOCKEYWORDERROR|activitySet); + } + } + sc.SetState(styleBeforeDCKeyword|activitySet); + seenDocKeyBrace = false; + } + break; + case SCE_C_STRING: + if (sc.atLineEnd) { + sc.ChangeState(SCE_C_STRINGEOL|activitySet); + } else if (isIncludePreprocessor) { + if (sc.ch == '>') { + sc.ForwardSetState(SCE_C_DEFAULT|activitySet); + isIncludePreprocessor = false; + } + } else if (sc.ch == '\\') { + if (options.escapeSequence) { + sc.SetState(SCE_C_ESCAPESEQUENCE|activitySet); + escapeSeq.resetEscapeState(sc.chNext); + } + sc.Forward(); // Skip all characters after the backslash + } else if (sc.ch == '\"') { + if (sc.chNext == '_') { + sc.ChangeState(SCE_C_USERLITERAL|activitySet); + } else { + sc.ForwardSetState(SCE_C_DEFAULT|activitySet); + } + } + break; + case SCE_C_ESCAPESEQUENCE: + escapeSeq.digitsLeft--; + if (!escapeSeq.atEscapeEnd(sc.ch)) { + break; + } + if (sc.ch == '"') { + sc.SetState(SCE_C_STRING|activitySet); + sc.ForwardSetState(SCE_C_DEFAULT|activitySet); + } else if (sc.ch == '\\') { + escapeSeq.resetEscapeState(sc.chNext); + sc.Forward(); + } else { + sc.SetState(SCE_C_STRING|activitySet); + if (sc.atLineEnd) { + sc.ChangeState(SCE_C_STRINGEOL|activitySet); + } + } + break; + case SCE_C_HASHQUOTEDSTRING: + if (sc.ch == '\\') { + if (sc.chNext == '\"' || sc.chNext == '\'' || sc.chNext == '\\') { + sc.Forward(); + } + } else if (sc.ch == '\"') { + sc.ForwardSetState(SCE_C_DEFAULT|activitySet); + } + break; + case SCE_C_STRINGRAW: + if (sc.Match(rawStringTerminator.c_str())) { + for (size_t termPos=rawStringTerminator.size(); termPos; termPos--) + sc.Forward(); + sc.SetState(SCE_C_DEFAULT|activitySet); + rawStringTerminator = ""; + } + break; + case SCE_C_CHARACTER: + if (sc.atLineEnd) { + sc.ChangeState(SCE_C_STRINGEOL|activitySet); + } else if (sc.ch == '\\') { + if (sc.chNext == '\"' || sc.chNext == '\'' || sc.chNext == '\\') { + sc.Forward(); + } + } else if (sc.ch == '\'') { + if (sc.chNext == '_') { + sc.ChangeState(SCE_C_USERLITERAL|activitySet); + } else { + sc.ForwardSetState(SCE_C_DEFAULT|activitySet); + } + } + break; + case SCE_C_REGEX: + if (sc.atLineStart) { + sc.SetState(SCE_C_DEFAULT|activitySet); + } else if (! inRERange && sc.ch == '/') { + sc.Forward(); + while ((sc.ch < 0x80) && islower(sc.ch)) + sc.Forward(); // gobble regex flags + sc.SetState(SCE_C_DEFAULT|activitySet); + } else if (sc.ch == '\\' && (static_cast(sc.currentPos+1) < lineEndNext)) { + // Gobble up the escaped character + sc.Forward(); + } else if (sc.ch == '[') { + inRERange = true; + } else if (sc.ch == ']') { + inRERange = false; + } + break; + case SCE_C_STRINGEOL: + if (sc.atLineStart) { + sc.SetState(SCE_C_DEFAULT|activitySet); + } + break; + case SCE_C_VERBATIM: + if (options.verbatimStringsAllowEscapes && (sc.ch == '\\')) { + sc.Forward(); // Skip all characters after the backslash + } else if (sc.ch == '\"') { + if (sc.chNext == '\"') { + sc.Forward(); + } else { + sc.ForwardSetState(SCE_C_DEFAULT|activitySet); + } + } + break; + case SCE_C_TRIPLEVERBATIM: + if (sc.Match(R"(""")")) { + while (sc.Match('"')) { + sc.Forward(); + } + sc.SetState(SCE_C_DEFAULT|activitySet); + } + break; + case SCE_C_UUID: + if (sc.atLineEnd || sc.ch == ')') { + sc.SetState(SCE_C_DEFAULT|activitySet); + } + break; + case SCE_C_TASKMARKER: + if (isoperator(sc.ch) || IsASpace(sc.ch)) { + sc.SetState(styleBeforeTaskMarker|activitySet); + styleBeforeTaskMarker = SCE_C_DEFAULT; + } + } + + if (sc.atLineEnd && !atLineEndBeforeSwitch) { + // State exit processing consumed characters up to end of line. + lineCurrent++; + lineEndNext = styler.LineEnd(lineCurrent); + vlls.Add(lineCurrent, preproc); + } + + // Determine if a new state should be entered. + if (MaskActive(sc.state) == SCE_C_DEFAULT) { + if (sc.Match('@', '\"')) { + sc.SetState(SCE_C_VERBATIM|activitySet); + sc.Forward(); + } else if (options.triplequotedStrings && sc.Match(R"(""")")) { + sc.SetState(SCE_C_TRIPLEVERBATIM|activitySet); + sc.Forward(2); + } else if (options.hashquotedStrings && sc.Match('#', '\"')) { + sc.SetState(SCE_C_HASHQUOTEDSTRING|activitySet); + sc.Forward(); + } else if (options.backQuotedStrings && sc.Match('`')) { + sc.SetState(SCE_C_STRINGRAW|activitySet); + rawStringTerminator = "`"; + } else if (IsADigit(sc.ch) || (sc.ch == '.' && IsADigit(sc.chNext))) { + if (lastWordWasUUID) { + sc.SetState(SCE_C_UUID|activitySet); + lastWordWasUUID = false; + } else { + sc.SetState(SCE_C_NUMBER|activitySet); + } + } else if (!sc.atLineEnd && (setWordStart.Contains(sc.ch) || (sc.ch == '@'))) { + if (lastWordWasUUID) { + sc.SetState(SCE_C_UUID|activitySet); + lastWordWasUUID = false; + } else { + sc.SetState(SCE_C_IDENTIFIER|activitySet); + } + } else if (sc.Match('/', '*')) { + if (sc.Match("/**") || sc.Match("/*!")) { // Support of Qt/Doxygen doc. style + sc.SetState(SCE_C_COMMENTDOC|activitySet); + } else { + sc.SetState(SCE_C_COMMENT|activitySet); + } + sc.Forward(); // Eat the * so it isn't used for the end of the comment + } else if (sc.Match('/', '/')) { + if ((sc.Match("///") && !sc.Match("////")) || sc.Match("//!")) + // Support of Qt/Doxygen doc. style + sc.SetState(SCE_C_COMMENTLINEDOC|activitySet); + else + sc.SetState(SCE_C_COMMENTLINE|activitySet); + } else if (sc.ch == '/' + && (setOKBeforeRE.Contains(chPrevNonWhite) + || followsReturnKeyword(sc, styler)) + && (!setCouldBePostOp.Contains(chPrevNonWhite) + || !FollowsPostfixOperator(sc, styler))) { + sc.SetState(SCE_C_REGEX|activitySet); // JavaScript's RegEx + inRERange = false; + } else if (sc.ch == '\"') { + if (sc.chPrev == 'R') { + styler.Flush(); + if (MaskActive(styler.StyleAt(sc.currentPos - 1)) == SCE_C_STRINGRAW) { + sc.SetState(SCE_C_STRINGRAW|activitySet); + rawStringTerminator = ")"; + for (Sci_Position termPos = sc.currentPos + 1;; termPos++) { + const char chTerminator = styler.SafeGetCharAt(termPos, '('); + if (chTerminator == '(') + break; + rawStringTerminator += chTerminator; + } + rawStringTerminator += '\"'; + } else { + sc.SetState(SCE_C_STRING|activitySet); + } + } else { + sc.SetState(SCE_C_STRING|activitySet); + } + isIncludePreprocessor = false; // ensure that '>' won't end the string + } else if (isIncludePreprocessor && sc.ch == '<') { + sc.SetState(SCE_C_STRING|activitySet); + } else if (sc.ch == '\'') { + sc.SetState(SCE_C_CHARACTER|activitySet); + } else if (sc.ch == '#' && visibleChars == 0) { + // Preprocessor commands are alone on their line + sc.SetState(SCE_C_PREPROCESSOR|activitySet); + // Skip whitespace between # and preprocessor word + do { + sc.Forward(); + } while ((sc.ch == ' ' || sc.ch == '\t') && sc.More()); + if (sc.atLineEnd) { + sc.SetState(SCE_C_DEFAULT|activitySet); + } else if (sc.Match("include")) { + isIncludePreprocessor = true; + } else { + if (options.trackPreprocessor) { + if (sc.Match("ifdef") || sc.Match("ifndef")) { + const bool isIfDef = sc.Match("ifdef"); + const int startRest = isIfDef ? 5 : 6; + std::string restOfLine = GetRestOfLine(styler, sc.currentPos + startRest + 1, false); + bool foundDef = preprocessorDefinitions.find(restOfLine) != preprocessorDefinitions.end(); + preproc.StartSection(isIfDef == foundDef); + } else if (sc.Match("if")) { + std::string restOfLine = GetRestOfLine(styler, sc.currentPos + 2, true); + const bool ifGood = EvaluateExpression(restOfLine, preprocessorDefinitions); + preproc.StartSection(ifGood); + } else if (sc.Match("else")) { + if (!preproc.CurrentIfTaken()) { + preproc.InvertCurrentLevel(); + activitySet = preproc.IsInactive() ? activeFlag : 0; + if (!activitySet) + sc.ChangeState(SCE_C_PREPROCESSOR|activitySet); + } else if (!preproc.IsInactive()) { + preproc.InvertCurrentLevel(); + activitySet = preproc.IsInactive() ? activeFlag : 0; + if (!activitySet) + sc.ChangeState(SCE_C_PREPROCESSOR|activitySet); + } + } else if (sc.Match("elif")) { + // Ensure only one chosen out of #if .. #elif .. #elif .. #else .. #endif + if (!preproc.CurrentIfTaken()) { + // Similar to #if + std::string restOfLine = GetRestOfLine(styler, sc.currentPos + 4, true); + const bool ifGood = EvaluateExpression(restOfLine, preprocessorDefinitions); + if (ifGood) { + preproc.InvertCurrentLevel(); + activitySet = preproc.IsInactive() ? activeFlag : 0; + if (!activitySet) + sc.ChangeState(SCE_C_PREPROCESSOR|activitySet); + } + } else if (!preproc.IsInactive()) { + preproc.InvertCurrentLevel(); + activitySet = preproc.IsInactive() ? activeFlag : 0; + if (!activitySet) + sc.ChangeState(SCE_C_PREPROCESSOR|activitySet); + } + } else if (sc.Match("endif")) { + preproc.EndSection(); + activitySet = preproc.IsInactive() ? activeFlag : 0; + sc.ChangeState(SCE_C_PREPROCESSOR|activitySet); + } else if (sc.Match("define")) { + if (options.updatePreprocessor && !preproc.IsInactive()) { + std::string restOfLine = GetRestOfLine(styler, sc.currentPos + 6, true); + size_t startName = 0; + while ((startName < restOfLine.length()) && IsSpaceOrTab(restOfLine[startName])) + startName++; + size_t endName = startName; + while ((endName < restOfLine.length()) && setWord.Contains(static_cast(restOfLine[endName]))) + endName++; + std::string key = restOfLine.substr(startName, endName-startName); + if ((endName < restOfLine.length()) && (restOfLine.at(endName) == '(')) { + // Macro + size_t endArgs = endName; + while ((endArgs < restOfLine.length()) && (restOfLine[endArgs] != ')')) + endArgs++; + std::string args = restOfLine.substr(endName + 1, endArgs - endName - 1); + size_t startValue = endArgs+1; + while ((startValue < restOfLine.length()) && IsSpaceOrTab(restOfLine[startValue])) + startValue++; + std::string value; + if (startValue < restOfLine.length()) + value = restOfLine.substr(startValue); + preprocessorDefinitions[key] = SymbolValue(value, args); + ppDefineHistory.push_back(PPDefinition(lineCurrent, key, value, false, args)); + definitionsChanged = true; + } else { + // Value + size_t startValue = endName; + while ((startValue < restOfLine.length()) && IsSpaceOrTab(restOfLine[startValue])) + startValue++; + std::string value = restOfLine.substr(startValue); + if (OnlySpaceOrTab(value)) + value = "1"; // No value defaults to 1 + preprocessorDefinitions[key] = value; + ppDefineHistory.push_back(PPDefinition(lineCurrent, key, value)); + definitionsChanged = true; + } + } + } else if (sc.Match("undef")) { + if (options.updatePreprocessor && !preproc.IsInactive()) { + const std::string restOfLine = GetRestOfLine(styler, sc.currentPos + 5, false); + std::vector tokens = Tokenize(restOfLine); + if (tokens.size() >= 1) { + const std::string key = tokens[0]; + preprocessorDefinitions.erase(key); + ppDefineHistory.push_back(PPDefinition(lineCurrent, key, "", true)); + definitionsChanged = true; + } + } + } + } + } + } else if (isoperator(sc.ch)) { + sc.SetState(SCE_C_OPERATOR|activitySet); + } + } + + if (!IsASpace(sc.ch) && !IsSpaceEquiv(MaskActive(sc.state))) { + chPrevNonWhite = sc.ch; + visibleChars++; + } + continuationLine = false; + sc.Forward(); + } + const bool rawStringsChanged = rawStringTerminators.Merge(rawSTNew, lineCurrent); + if (definitionsChanged || rawStringsChanged) + styler.ChangeLexerState(startPos, startPos + length); + sc.Complete(); +} + +// Store both the current line's fold level and the next lines in the +// level store to make it easy to pick up with each increment +// and to make it possible to fiddle the current level for "} else {". + +void SCI_METHOD LexerCPP::Fold(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess) { + + if (!options.fold) + return; + + LexAccessor styler(pAccess); + + const Sci_PositionU endPos = startPos + length; + int visibleChars = 0; + bool inLineComment = false; + Sci_Position lineCurrent = styler.GetLine(startPos); + int levelCurrent = SC_FOLDLEVELBASE; + if (lineCurrent > 0) + levelCurrent = styler.LevelAt(lineCurrent-1) >> 16; + Sci_PositionU lineStartNext = styler.LineStart(lineCurrent+1); + int levelMinCurrent = levelCurrent; + int levelNext = levelCurrent; + char chNext = styler[startPos]; + int styleNext = MaskActive(styler.StyleAt(startPos)); + int style = MaskActive(initStyle); + const bool userDefinedFoldMarkers = !options.foldExplicitStart.empty() && !options.foldExplicitEnd.empty(); + for (Sci_PositionU i = startPos; i < endPos; i++) { + const char ch = chNext; + chNext = styler.SafeGetCharAt(i + 1); + const int stylePrev = style; + style = styleNext; + styleNext = MaskActive(styler.StyleAt(i + 1)); + const bool atEOL = i == (lineStartNext-1); + if ((style == SCE_C_COMMENTLINE) || (style == SCE_C_COMMENTLINEDOC)) + inLineComment = true; + if (options.foldComment && options.foldCommentMultiline && IsStreamCommentStyle(style) && !inLineComment) { + if (!IsStreamCommentStyle(stylePrev)) { + levelNext++; + } else if (!IsStreamCommentStyle(styleNext) && !atEOL) { + // Comments don't end at end of line and the next character may be unstyled. + levelNext--; + } + } + if (options.foldComment && options.foldCommentExplicit && ((style == SCE_C_COMMENTLINE) || options.foldExplicitAnywhere)) { + if (userDefinedFoldMarkers) { + if (styler.Match(i, options.foldExplicitStart.c_str())) { + levelNext++; + } else if (styler.Match(i, options.foldExplicitEnd.c_str())) { + levelNext--; + } + } else { + if ((ch == '/') && (chNext == '/')) { + const char chNext2 = styler.SafeGetCharAt(i + 2); + if (chNext2 == '{') { + levelNext++; + } else if (chNext2 == '}') { + levelNext--; + } + } + } + } + if (options.foldPreprocessor && (style == SCE_C_PREPROCESSOR)) { + if (ch == '#') { + Sci_PositionU j = i + 1; + while ((j < endPos) && IsASpaceOrTab(styler.SafeGetCharAt(j))) { + j++; + } + if (styler.Match(j, "region") || styler.Match(j, "if")) { + levelNext++; + } else if (styler.Match(j, "end")) { + levelNext--; + } + + if (options.foldPreprocessorAtElse && (styler.Match(j, "else") || styler.Match(j, "elif"))) { + levelMinCurrent--; + } + } + } + if (options.foldSyntaxBased && (style == SCE_C_OPERATOR)) { + if (ch == '{' || ch == '[' || ch == '(') { + // Measure the minimum before a '{' to allow + // folding on "} else {" + if (options.foldAtElse && levelMinCurrent > levelNext) { + levelMinCurrent = levelNext; + } + levelNext++; + } else if (ch == '}' || ch == ']' || ch == ')') { + levelNext--; + } + } + if (!IsASpace(ch)) + visibleChars++; + if (atEOL || (i == endPos-1)) { + int levelUse = levelCurrent; + if ((options.foldSyntaxBased && options.foldAtElse) || + (options.foldPreprocessor && options.foldPreprocessorAtElse) + ) { + levelUse = levelMinCurrent; + } + int lev = levelUse | levelNext << 16; + if (visibleChars == 0 && options.foldCompact) + lev |= SC_FOLDLEVELWHITEFLAG; + if (levelUse < levelNext) + lev |= SC_FOLDLEVELHEADERFLAG; + if (lev != styler.LevelAt(lineCurrent)) { + styler.SetLevel(lineCurrent, lev); + } + lineCurrent++; + lineStartNext = styler.LineStart(lineCurrent+1); + levelCurrent = levelNext; + levelMinCurrent = levelCurrent; + if (atEOL && (i == static_cast(styler.Length()-1))) { + // There is an empty line at end of file so give it same level and empty + styler.SetLevel(lineCurrent, (levelCurrent | levelCurrent << 16) | SC_FOLDLEVELWHITEFLAG); + } + visibleChars = 0; + inLineComment = false; + } + } +} + +void LexerCPP::EvaluateTokens(std::vector &tokens, const SymbolTable &preprocessorDefinitions) { + + // Remove whitespace tokens + tokens.erase(std::remove_if(tokens.begin(), tokens.end(), OnlySpaceOrTab), tokens.end()); + + // Evaluate defined statements to either 0 or 1 + for (size_t i=0; (i+1)) + SymbolTable::const_iterator it = preprocessorDefinitions.find(tokens[i+2]); + if (it != preprocessorDefinitions.end()) { + val = "1"; + } + tokens.erase(tokens.begin() + i + 1, tokens.begin() + i + 4); + } else { + // Spurious '(' so erase as more likely to result in false + tokens.erase(tokens.begin() + i + 1, tokens.begin() + i + 2); + } + } else { + // defined + SymbolTable::const_iterator it = preprocessorDefinitions.find(tokens[i+1]); + if (it != preprocessorDefinitions.end()) { + val = "1"; + } + tokens.erase(tokens.begin() + i + 1, tokens.begin() + i + 2); + } + tokens[i] = val; + } else { + i++; + } + } + + // Evaluate identifiers + const size_t maxIterations = 100; + size_t iterations = 0; // Limit number of iterations in case there is a recursive macro. + for (size_t i = 0; (i(tokens[i][0]))) { + SymbolTable::const_iterator it = preprocessorDefinitions.find(tokens[i]); + if (it != preprocessorDefinitions.end()) { + // Tokenize value + std::vector macroTokens = Tokenize(it->second.value); + if (it->second.IsMacro()) { + if ((i + 1 < tokens.size()) && (tokens.at(i + 1) == "(")) { + // Create map of argument name to value + std::vector argumentNames = StringSplit(it->second.arguments, ','); + std::map arguments; + size_t arg = 0; + size_t tok = i+2; + while ((tok < tokens.size()) && (arg < argumentNames.size()) && (tokens.at(tok) != ")")) { + if (tokens.at(tok) != ",") { + arguments[argumentNames.at(arg)] = tokens.at(tok); + arg++; + } + tok++; + } + + // Remove invocation + tokens.erase(tokens.begin() + i, tokens.begin() + tok + 1); + + // Substitute values into macro + macroTokens.erase(std::remove_if(macroTokens.begin(), macroTokens.end(), OnlySpaceOrTab), macroTokens.end()); + + for (size_t iMacro = 0; iMacro < macroTokens.size();) { + if (setWordStart.Contains(static_cast(macroTokens[iMacro][0]))) { + std::map::const_iterator itFind = arguments.find(macroTokens[iMacro]); + if (itFind != arguments.end()) { + // TODO: Possible that value will be expression so should insert tokenized form + macroTokens[iMacro] = itFind->second; + } + } + iMacro++; + } + + // Insert results back into tokens + tokens.insert(tokens.begin() + i, macroTokens.begin(), macroTokens.end()); + + } else { + i++; + } + } else { + // Remove invocation + tokens.erase(tokens.begin() + i); + // Insert results back into tokens + tokens.insert(tokens.begin() + i, macroTokens.begin(), macroTokens.end()); + } + } else { + // Identifier not found and value defaults to zero + tokens[i] = "0"; + } + } else { + i++; + } + } + + // Find bracketed subexpressions and recurse on them + BracketPair bracketPair = FindBracketPair(tokens); + while (bracketPair.itBracket != tokens.end()) { + std::vector inBracket(bracketPair.itBracket + 1, bracketPair.itEndBracket); + EvaluateTokens(inBracket, preprocessorDefinitions); + + // The insertion is done before the removal because there were failures with the opposite approach + tokens.insert(bracketPair.itBracket, inBracket.begin(), inBracket.end()); + + bracketPair = FindBracketPair(tokens); + tokens.erase(bracketPair.itBracket, bracketPair.itEndBracket + 1); + + bracketPair = FindBracketPair(tokens); + } + + // Evaluate logical negations + for (size_t j=0; (j+1)::iterator itInsert = + tokens.erase(tokens.begin() + j, tokens.begin() + j + 2); + tokens.insert(itInsert, isTrue ? "1" : "0"); + } else { + j++; + } + } + + // Evaluate expressions in precedence order + enum precedence { precArithmetic, precRelative, precLogical }; + for (int prec=precArithmetic; prec <= precLogical; prec++) { + // Looking at 3 tokens at a time so end at 2 before end + for (size_t k=0; (k+2)") + result = valA > valB; + else if (tokens[k+1] == ">=") + result = valA >= valB; + else if (tokens[k+1] == "==") + result = valA == valB; + else if (tokens[k+1] == "!=") + result = valA != valB; + else if (tokens[k+1] == "||") + result = valA || valB; + else if (tokens[k+1] == "&&") + result = valA && valB; + char sResult[30]; + sprintf(sResult, "%d", result); + std::vector::iterator itInsert = + tokens.erase(tokens.begin() + k, tokens.begin() + k + 3); + tokens.insert(itInsert, sResult); + } else { + k++; + } + } + } +} + +std::vector LexerCPP::Tokenize(const std::string &expr) const { + // Break into tokens + std::vector tokens; + const char *cp = expr.c_str(); + while (*cp) { + std::string word; + if (setWord.Contains(static_cast(*cp))) { + // Identifiers and numbers + while (setWord.Contains(static_cast(*cp))) { + word += *cp; + cp++; + } + } else if (IsSpaceOrTab(*cp)) { + while (IsSpaceOrTab(*cp)) { + word += *cp; + cp++; + } + } else if (setRelOp.Contains(static_cast(*cp))) { + word += *cp; + cp++; + if (setRelOp.Contains(static_cast(*cp))) { + word += *cp; + cp++; + } + } else if (setLogicalOp.Contains(static_cast(*cp))) { + word += *cp; + cp++; + if (setLogicalOp.Contains(static_cast(*cp))) { + word += *cp; + cp++; + } + } else { + // Should handle strings, characters, and comments here + word += *cp; + cp++; + } + tokens.push_back(word); + } + return tokens; +} + +bool LexerCPP::EvaluateExpression(const std::string &expr, const SymbolTable &preprocessorDefinitions) { + std::vector tokens = Tokenize(expr); + + EvaluateTokens(tokens, preprocessorDefinitions); + + // "0" or "" -> false else true + const bool isFalse = tokens.empty() || + ((tokens.size() == 1) && ((tokens[0] == "") || tokens[0] == "0")); + return !isFalse; +} + +LexerModule lmCPP(SCLEX_CPP, LexerCPP::LexerFactoryCPP, "cpp", cppWordLists); +LexerModule lmCPPNoCase(SCLEX_CPPNOCASE, LexerCPP::LexerFactoryCPPInsensitive, "cppnocase", cppWordLists); diff --git a/libs/qscintilla_2.14.1/scintilla/lexers/LexCSS.cpp b/libs/qscintilla_2.14.1/scintilla/lexers/LexCSS.cpp new file mode 100644 index 000000000..c1a86f537 --- /dev/null +++ b/libs/qscintilla_2.14.1/scintilla/lexers/LexCSS.cpp @@ -0,0 +1,567 @@ +// Scintilla source code edit control +// Encoding: UTF-8 +/** @file LexCSS.cxx + ** Lexer for Cascading Style Sheets + ** Written by Jakub Vrána + ** Improved by Philippe Lhoste (CSS2) + ** Improved by Ross McKay (SCSS mode; see http://sass-lang.com/ ) + **/ +// Copyright 1998-2002 by Neil Hodgson +// The License.txt file describes the conditions under which this software may be distributed. + +// TODO: handle SCSS nested properties like font: { weight: bold; size: 1em; } +// TODO: handle SCSS interpolation: #{} +// TODO: add features for Less if somebody feels like contributing; http://lesscss.org/ +// TODO: refactor this monster so that the next poor slob can read it! + +#include +#include +#include +#include +#include +#include + +#include "ILexer.h" +#include "Scintilla.h" +#include "SciLexer.h" + +#include "WordList.h" +#include "LexAccessor.h" +#include "Accessor.h" +#include "StyleContext.h" +#include "CharacterSet.h" +#include "LexerModule.h" + +using namespace Scintilla; + + +static inline bool IsAWordChar(const unsigned int ch) { + /* FIXME: + * The CSS spec allows "ISO 10646 characters U+00A1 and higher" to be treated as word chars. + * Unfortunately, we are only getting string bytes here, and not full unicode characters. We cannot guarantee + * that our byte is between U+0080 - U+00A0 (to return false), so we have to allow all characters U+0080 and higher + */ + return ch >= 0x80 || isalnum(ch) || ch == '-' || ch == '_'; +} + +inline bool IsCssOperator(const int ch) { + if (!((ch < 0x80) && isalnum(ch)) && + (ch == '{' || ch == '}' || ch == ':' || ch == ',' || ch == ';' || + ch == '.' || ch == '#' || ch == '!' || ch == '@' || + /* CSS2 */ + ch == '*' || ch == '>' || ch == '+' || ch == '=' || ch == '~' || ch == '|' || + ch == '[' || ch == ']' || ch == '(' || ch == ')')) { + return true; + } + return false; +} + +// look behind (from start of document to our start position) to determine current nesting level +inline int NestingLevelLookBehind(Sci_PositionU startPos, Accessor &styler) { + int ch; + int nestingLevel = 0; + + for (Sci_PositionU i = 0; i < startPos; i++) { + ch = styler.SafeGetCharAt(i); + if (ch == '{') + nestingLevel++; + else if (ch == '}') + nestingLevel--; + } + + return nestingLevel; +} + +static void ColouriseCssDoc(Sci_PositionU startPos, Sci_Position length, int initStyle, WordList *keywordlists[], Accessor &styler) { + WordList &css1Props = *keywordlists[0]; + WordList &pseudoClasses = *keywordlists[1]; + WordList &css2Props = *keywordlists[2]; + WordList &css3Props = *keywordlists[3]; + WordList &pseudoElements = *keywordlists[4]; + WordList &exProps = *keywordlists[5]; + WordList &exPseudoClasses = *keywordlists[6]; + WordList &exPseudoElements = *keywordlists[7]; + + StyleContext sc(startPos, length, initStyle, styler); + + int lastState = -1; // before operator + int lastStateC = -1; // before comment + int lastStateS = -1; // before single-quoted/double-quoted string + int lastStateVar = -1; // before variable (SCSS) + int lastStateVal = -1; // before value (SCSS) + int op = ' '; // last operator + int opPrev = ' '; // last operator + bool insideParentheses = false; // true if currently in a CSS url() or similar construct + + // property lexer.css.scss.language + // Set to 1 for Sassy CSS (.scss) + bool isScssDocument = styler.GetPropertyInt("lexer.css.scss.language") != 0; + + // property lexer.css.less.language + // Set to 1 for Less CSS (.less) + bool isLessDocument = styler.GetPropertyInt("lexer.css.less.language") != 0; + + // property lexer.css.hss.language + // Set to 1 for HSS (.hss) + bool isHssDocument = styler.GetPropertyInt("lexer.css.hss.language") != 0; + + // SCSS/LESS/HSS have the concept of variable + bool hasVariables = isScssDocument || isLessDocument || isHssDocument; + char varPrefix = 0; + if (hasVariables) + varPrefix = isLessDocument ? '@' : '$'; + + // SCSS/LESS/HSS support single-line comments + typedef enum _CommentModes { eCommentBlock = 0, eCommentLine = 1} CommentMode; + CommentMode comment_mode = eCommentBlock; + bool hasSingleLineComments = isScssDocument || isLessDocument || isHssDocument; + + // must keep track of nesting level in document types that support it (SCSS/LESS/HSS) + bool hasNesting = false; + int nestingLevel = 0; + if (isScssDocument || isLessDocument || isHssDocument) { + hasNesting = true; + nestingLevel = NestingLevelLookBehind(startPos, styler); + } + + // "the loop" + for (; sc.More(); sc.Forward()) { + if (sc.state == SCE_CSS_COMMENT && ((comment_mode == eCommentBlock && sc.Match('*', '/')) || (comment_mode == eCommentLine && sc.atLineEnd))) { + if (lastStateC == -1) { + // backtrack to get last state: + // comments are like whitespace, so we must return to the previous state + Sci_PositionU i = startPos; + for (; i > 0; i--) { + if ((lastStateC = styler.StyleAt(i-1)) != SCE_CSS_COMMENT) { + if (lastStateC == SCE_CSS_OPERATOR) { + op = styler.SafeGetCharAt(i-1); + opPrev = styler.SafeGetCharAt(i-2); + while (--i) { + lastState = styler.StyleAt(i-1); + if (lastState != SCE_CSS_OPERATOR && lastState != SCE_CSS_COMMENT) + break; + } + if (i == 0) + lastState = SCE_CSS_DEFAULT; + } + break; + } + } + if (i == 0) + lastStateC = SCE_CSS_DEFAULT; + } + if (comment_mode == eCommentBlock) { + sc.Forward(); + sc.ForwardSetState(lastStateC); + } else /* eCommentLine */ { + sc.SetState(lastStateC); + } + } + + if (sc.state == SCE_CSS_COMMENT) + continue; + + if (sc.state == SCE_CSS_DOUBLESTRING || sc.state == SCE_CSS_SINGLESTRING) { + if (sc.ch != (sc.state == SCE_CSS_DOUBLESTRING ? '\"' : '\'')) + continue; + Sci_PositionU i = sc.currentPos; + while (i && styler[i-1] == '\\') + i--; + if ((sc.currentPos - i) % 2 == 1) + continue; + sc.ForwardSetState(lastStateS); + } + + if (sc.state == SCE_CSS_OPERATOR) { + if (op == ' ') { + Sci_PositionU i = startPos; + op = styler.SafeGetCharAt(i-1); + opPrev = styler.SafeGetCharAt(i-2); + while (--i) { + lastState = styler.StyleAt(i-1); + if (lastState != SCE_CSS_OPERATOR && lastState != SCE_CSS_COMMENT) + break; + } + } + switch (op) { + case '@': + if (lastState == SCE_CSS_DEFAULT || hasNesting) + sc.SetState(SCE_CSS_DIRECTIVE); + break; + case '>': + case '+': + if (lastState == SCE_CSS_TAG || lastState == SCE_CSS_CLASS || lastState == SCE_CSS_ID || + lastState == SCE_CSS_PSEUDOCLASS || lastState == SCE_CSS_EXTENDED_PSEUDOCLASS || lastState == SCE_CSS_UNKNOWN_PSEUDOCLASS) + sc.SetState(SCE_CSS_DEFAULT); + break; + case '[': + if (lastState == SCE_CSS_TAG || lastState == SCE_CSS_DEFAULT || lastState == SCE_CSS_CLASS || lastState == SCE_CSS_ID || + lastState == SCE_CSS_PSEUDOCLASS || lastState == SCE_CSS_EXTENDED_PSEUDOCLASS || lastState == SCE_CSS_UNKNOWN_PSEUDOCLASS) + sc.SetState(SCE_CSS_ATTRIBUTE); + break; + case ']': + if (lastState == SCE_CSS_ATTRIBUTE) + sc.SetState(SCE_CSS_TAG); + break; + case '{': + nestingLevel++; + switch (lastState) { + case SCE_CSS_MEDIA: + sc.SetState(SCE_CSS_DEFAULT); + break; + case SCE_CSS_TAG: + case SCE_CSS_DIRECTIVE: + sc.SetState(SCE_CSS_IDENTIFIER); + break; + } + break; + case '}': + if (--nestingLevel < 0) + nestingLevel = 0; + switch (lastState) { + case SCE_CSS_DEFAULT: + case SCE_CSS_VALUE: + case SCE_CSS_IMPORTANT: + case SCE_CSS_IDENTIFIER: + case SCE_CSS_IDENTIFIER2: + case SCE_CSS_IDENTIFIER3: + if (hasNesting) + sc.SetState(nestingLevel > 0 ? SCE_CSS_IDENTIFIER : SCE_CSS_DEFAULT); + else + sc.SetState(SCE_CSS_DEFAULT); + break; + } + break; + case '(': + if (lastState == SCE_CSS_PSEUDOCLASS) + sc.SetState(SCE_CSS_TAG); + else if (lastState == SCE_CSS_EXTENDED_PSEUDOCLASS) + sc.SetState(SCE_CSS_EXTENDED_PSEUDOCLASS); + break; + case ')': + if (lastState == SCE_CSS_TAG || lastState == SCE_CSS_DEFAULT || lastState == SCE_CSS_CLASS || lastState == SCE_CSS_ID || + lastState == SCE_CSS_PSEUDOCLASS || lastState == SCE_CSS_EXTENDED_PSEUDOCLASS || lastState == SCE_CSS_UNKNOWN_PSEUDOCLASS || + lastState == SCE_CSS_PSEUDOELEMENT || lastState == SCE_CSS_EXTENDED_PSEUDOELEMENT) + sc.SetState(SCE_CSS_TAG); + break; + case ':': + switch (lastState) { + case SCE_CSS_TAG: + case SCE_CSS_DEFAULT: + case SCE_CSS_CLASS: + case SCE_CSS_ID: + case SCE_CSS_PSEUDOCLASS: + case SCE_CSS_EXTENDED_PSEUDOCLASS: + case SCE_CSS_UNKNOWN_PSEUDOCLASS: + case SCE_CSS_PSEUDOELEMENT: + case SCE_CSS_EXTENDED_PSEUDOELEMENT: + sc.SetState(SCE_CSS_PSEUDOCLASS); + break; + case SCE_CSS_IDENTIFIER: + case SCE_CSS_IDENTIFIER2: + case SCE_CSS_IDENTIFIER3: + case SCE_CSS_EXTENDED_IDENTIFIER: + case SCE_CSS_UNKNOWN_IDENTIFIER: + case SCE_CSS_VARIABLE: + sc.SetState(SCE_CSS_VALUE); + lastStateVal = lastState; + break; + } + break; + case '.': + if (lastState == SCE_CSS_TAG || lastState == SCE_CSS_DEFAULT || lastState == SCE_CSS_CLASS || lastState == SCE_CSS_ID || + lastState == SCE_CSS_PSEUDOCLASS || lastState == SCE_CSS_EXTENDED_PSEUDOCLASS || lastState == SCE_CSS_UNKNOWN_PSEUDOCLASS) + sc.SetState(SCE_CSS_CLASS); + break; + case '#': + if (lastState == SCE_CSS_TAG || lastState == SCE_CSS_DEFAULT || lastState == SCE_CSS_CLASS || lastState == SCE_CSS_ID || + lastState == SCE_CSS_PSEUDOCLASS || lastState == SCE_CSS_EXTENDED_PSEUDOCLASS || lastState == SCE_CSS_UNKNOWN_PSEUDOCLASS) + sc.SetState(SCE_CSS_ID); + break; + case ',': + case '|': + case '~': + if (lastState == SCE_CSS_TAG) + sc.SetState(SCE_CSS_DEFAULT); + break; + case ';': + switch (lastState) { + case SCE_CSS_DIRECTIVE: + if (hasNesting) { + sc.SetState(nestingLevel > 0 ? SCE_CSS_IDENTIFIER : SCE_CSS_DEFAULT); + } else { + sc.SetState(SCE_CSS_DEFAULT); + } + break; + case SCE_CSS_VALUE: + case SCE_CSS_IMPORTANT: + // data URLs can have semicolons; simplistically check for wrapping parentheses and move along + if (insideParentheses) { + sc.SetState(lastState); + } else { + if (lastStateVal == SCE_CSS_VARIABLE) { + sc.SetState(SCE_CSS_DEFAULT); + } else { + sc.SetState(SCE_CSS_IDENTIFIER); + } + } + break; + case SCE_CSS_VARIABLE: + if (lastStateVar == SCE_CSS_VALUE) { + // data URLs can have semicolons; simplistically check for wrapping parentheses and move along + if (insideParentheses) { + sc.SetState(SCE_CSS_VALUE); + } else { + sc.SetState(SCE_CSS_IDENTIFIER); + } + } else { + sc.SetState(SCE_CSS_DEFAULT); + } + break; + } + break; + case '!': + if (lastState == SCE_CSS_VALUE) + sc.SetState(SCE_CSS_IMPORTANT); + break; + } + } + + if (sc.ch == '*' && sc.state == SCE_CSS_DEFAULT) { + sc.SetState(SCE_CSS_TAG); + continue; + } + + // check for inside parentheses (whether part of an "operator" or not) + if (sc.ch == '(') + insideParentheses = true; + else if (sc.ch == ')') + insideParentheses = false; + + // SCSS special modes + if (hasVariables) { + // variable name + if (sc.ch == varPrefix) { + switch (sc.state) { + case SCE_CSS_DEFAULT: + if (isLessDocument) // give priority to pseudo elements + break; + // Falls through. + case SCE_CSS_VALUE: + lastStateVar = sc.state; + sc.SetState(SCE_CSS_VARIABLE); + continue; + } + } + if (sc.state == SCE_CSS_VARIABLE) { + if (IsAWordChar(sc.ch)) { + // still looking at the variable name + continue; + } + if (lastStateVar == SCE_CSS_VALUE) { + // not looking at the variable name any more, and it was part of a value + sc.SetState(SCE_CSS_VALUE); + } + } + + // nested rule parent selector + if (sc.ch == '&') { + switch (sc.state) { + case SCE_CSS_DEFAULT: + case SCE_CSS_IDENTIFIER: + sc.SetState(SCE_CSS_TAG); + continue; + } + } + } + + // nesting rules that apply to SCSS and Less + if (hasNesting) { + // check for nested rule selector + if (sc.state == SCE_CSS_IDENTIFIER && (IsAWordChar(sc.ch) || sc.ch == ':' || sc.ch == '.' || sc.ch == '#')) { + // look ahead to see whether { comes before next ; and } + Sci_PositionU endPos = startPos + length; + int ch; + + for (Sci_PositionU i = sc.currentPos; i < endPos; i++) { + ch = styler.SafeGetCharAt(i); + if (ch == ';' || ch == '}') + break; + if (ch == '{') { + sc.SetState(SCE_CSS_DEFAULT); + continue; + } + } + } + + } + + if (IsAWordChar(sc.ch)) { + if (sc.state == SCE_CSS_DEFAULT) + sc.SetState(SCE_CSS_TAG); + continue; + } + + if (IsAWordChar(sc.chPrev) && ( + sc.state == SCE_CSS_IDENTIFIER || sc.state == SCE_CSS_IDENTIFIER2 || + sc.state == SCE_CSS_IDENTIFIER3 || sc.state == SCE_CSS_EXTENDED_IDENTIFIER || + sc.state == SCE_CSS_UNKNOWN_IDENTIFIER || + sc.state == SCE_CSS_PSEUDOCLASS || sc.state == SCE_CSS_PSEUDOELEMENT || + sc.state == SCE_CSS_EXTENDED_PSEUDOCLASS || sc.state == SCE_CSS_EXTENDED_PSEUDOELEMENT || + sc.state == SCE_CSS_UNKNOWN_PSEUDOCLASS || + sc.state == SCE_CSS_IMPORTANT || + sc.state == SCE_CSS_DIRECTIVE + )) { + char s[100]; + sc.GetCurrentLowered(s, sizeof(s)); + char *s2 = s; + while (*s2 && !IsAWordChar(*s2)) + s2++; + switch (sc.state) { + case SCE_CSS_IDENTIFIER: + case SCE_CSS_IDENTIFIER2: + case SCE_CSS_IDENTIFIER3: + case SCE_CSS_EXTENDED_IDENTIFIER: + case SCE_CSS_UNKNOWN_IDENTIFIER: + if (css1Props.InList(s2)) + sc.ChangeState(SCE_CSS_IDENTIFIER); + else if (css2Props.InList(s2)) + sc.ChangeState(SCE_CSS_IDENTIFIER2); + else if (css3Props.InList(s2)) + sc.ChangeState(SCE_CSS_IDENTIFIER3); + else if (exProps.InList(s2)) + sc.ChangeState(SCE_CSS_EXTENDED_IDENTIFIER); + else + sc.ChangeState(SCE_CSS_UNKNOWN_IDENTIFIER); + break; + case SCE_CSS_PSEUDOCLASS: + case SCE_CSS_PSEUDOELEMENT: + case SCE_CSS_EXTENDED_PSEUDOCLASS: + case SCE_CSS_EXTENDED_PSEUDOELEMENT: + case SCE_CSS_UNKNOWN_PSEUDOCLASS: + if (op == ':' && opPrev != ':' && pseudoClasses.InList(s2)) + sc.ChangeState(SCE_CSS_PSEUDOCLASS); + else if (opPrev == ':' && pseudoElements.InList(s2)) + sc.ChangeState(SCE_CSS_PSEUDOELEMENT); + else if ((op == ':' || (op == '(' && lastState == SCE_CSS_EXTENDED_PSEUDOCLASS)) && opPrev != ':' && exPseudoClasses.InList(s2)) + sc.ChangeState(SCE_CSS_EXTENDED_PSEUDOCLASS); + else if (opPrev == ':' && exPseudoElements.InList(s2)) + sc.ChangeState(SCE_CSS_EXTENDED_PSEUDOELEMENT); + else + sc.ChangeState(SCE_CSS_UNKNOWN_PSEUDOCLASS); + break; + case SCE_CSS_IMPORTANT: + if (strcmp(s2, "important") != 0) + sc.ChangeState(SCE_CSS_VALUE); + break; + case SCE_CSS_DIRECTIVE: + if (op == '@' && strcmp(s2, "media") == 0) + sc.ChangeState(SCE_CSS_MEDIA); + break; + } + } + + if (sc.ch != '.' && sc.ch != ':' && sc.ch != '#' && ( + sc.state == SCE_CSS_CLASS || sc.state == SCE_CSS_ID || + (sc.ch != '(' && sc.ch != ')' && ( /* This line of the condition makes it possible to extend pseudo-classes with parentheses */ + sc.state == SCE_CSS_PSEUDOCLASS || sc.state == SCE_CSS_PSEUDOELEMENT || + sc.state == SCE_CSS_EXTENDED_PSEUDOCLASS || sc.state == SCE_CSS_EXTENDED_PSEUDOELEMENT || + sc.state == SCE_CSS_UNKNOWN_PSEUDOCLASS + )) + )) + sc.SetState(SCE_CSS_TAG); + + if (sc.Match('/', '*')) { + lastStateC = sc.state; + comment_mode = eCommentBlock; + sc.SetState(SCE_CSS_COMMENT); + sc.Forward(); + } else if (hasSingleLineComments && sc.Match('/', '/') && !insideParentheses) { + // note that we've had to treat ([...]// as the start of a URL not a comment, e.g. url(http://example.com), url(//example.com) + lastStateC = sc.state; + comment_mode = eCommentLine; + sc.SetState(SCE_CSS_COMMENT); + sc.Forward(); + } else if ((sc.state == SCE_CSS_VALUE || sc.state == SCE_CSS_ATTRIBUTE) + && (sc.ch == '\"' || sc.ch == '\'')) { + lastStateS = sc.state; + sc.SetState((sc.ch == '\"' ? SCE_CSS_DOUBLESTRING : SCE_CSS_SINGLESTRING)); + } else if (IsCssOperator(sc.ch) + && (sc.state != SCE_CSS_ATTRIBUTE || sc.ch == ']') + && (sc.state != SCE_CSS_VALUE || sc.ch == ';' || sc.ch == '}' || sc.ch == '!') + && ((sc.state != SCE_CSS_DIRECTIVE && sc.state != SCE_CSS_MEDIA) || sc.ch == ';' || sc.ch == '{') + ) { + if (sc.state != SCE_CSS_OPERATOR) + lastState = sc.state; + sc.SetState(SCE_CSS_OPERATOR); + op = sc.ch; + opPrev = sc.chPrev; + } + } + + sc.Complete(); +} + +static void FoldCSSDoc(Sci_PositionU startPos, Sci_Position length, int, WordList *[], Accessor &styler) { + bool foldComment = styler.GetPropertyInt("fold.comment") != 0; + bool foldCompact = styler.GetPropertyInt("fold.compact", 1) != 0; + Sci_PositionU endPos = startPos + length; + int visibleChars = 0; + Sci_Position lineCurrent = styler.GetLine(startPos); + int levelPrev = styler.LevelAt(lineCurrent) & SC_FOLDLEVELNUMBERMASK; + int levelCurrent = levelPrev; + char chNext = styler[startPos]; + bool inComment = (styler.StyleAt(startPos-1) == SCE_CSS_COMMENT); + for (Sci_PositionU i = startPos; i < endPos; i++) { + char ch = chNext; + chNext = styler.SafeGetCharAt(i + 1); + int style = styler.StyleAt(i); + bool atEOL = (ch == '\r' && chNext != '\n') || (ch == '\n'); + if (foldComment) { + if (!inComment && (style == SCE_CSS_COMMENT)) + levelCurrent++; + else if (inComment && (style != SCE_CSS_COMMENT)) + levelCurrent--; + inComment = (style == SCE_CSS_COMMENT); + } + if (style == SCE_CSS_OPERATOR) { + if (ch == '{') { + levelCurrent++; + } else if (ch == '}') { + levelCurrent--; + } + } + if (atEOL) { + int lev = levelPrev; + if (visibleChars == 0 && foldCompact) + lev |= SC_FOLDLEVELWHITEFLAG; + if ((levelCurrent > levelPrev) && (visibleChars > 0)) + lev |= SC_FOLDLEVELHEADERFLAG; + if (lev != styler.LevelAt(lineCurrent)) { + styler.SetLevel(lineCurrent, lev); + } + lineCurrent++; + levelPrev = levelCurrent; + visibleChars = 0; + } + if (!isspacechar(ch)) + visibleChars++; + } + // Fill in the real level of the next line, keeping the current flags as they will be filled in later + int flagsNext = styler.LevelAt(lineCurrent) & ~SC_FOLDLEVELNUMBERMASK; + styler.SetLevel(lineCurrent, levelPrev | flagsNext); +} + +static const char * const cssWordListDesc[] = { + "CSS1 Properties", + "Pseudo-classes", + "CSS2 Properties", + "CSS3 Properties", + "Pseudo-elements", + "Browser-Specific CSS Properties", + "Browser-Specific Pseudo-classes", + "Browser-Specific Pseudo-elements", + 0 +}; + +LexerModule lmCss(SCLEX_CSS, ColouriseCssDoc, "css", FoldCSSDoc, cssWordListDesc); diff --git a/libs/qscintilla_2.14.1/scintilla/lexers/LexCaml.cpp b/libs/qscintilla_2.14.1/scintilla/lexers/LexCaml.cpp new file mode 100644 index 000000000..1339b5dcc --- /dev/null +++ b/libs/qscintilla_2.14.1/scintilla/lexers/LexCaml.cpp @@ -0,0 +1,460 @@ +// Scintilla source code edit control +/** @file LexCaml.cxx + ** Lexer for Objective Caml. + **/ +// Copyright 2005-2009 by Robert Roessler +// The License.txt file describes the conditions under which this software may be distributed. +/* Release History + 20050204 Initial release. + 20050205 Quick compiler standards/"cleanliness" adjustment. + 20050206 Added cast for IsLeadByte(). + 20050209 Changes to "external" build support. + 20050306 Fix for 1st-char-in-doc "corner" case. + 20050502 Fix for [harmless] one-past-the-end coloring. + 20050515 Refined numeric token recognition logic. + 20051125 Added 2nd "optional" keywords class. + 20051129 Support "magic" (read-only) comments for RCaml. + 20051204 Swtich to using StyleContext infrastructure. + 20090629 Add full Standard ML '97 support. +*/ + +#include +#include +#include +#include +#include +#include + +#include "ILexer.h" +#include "Scintilla.h" +#include "SciLexer.h" + +#include "PropSetSimple.h" +#include "WordList.h" +#include "LexAccessor.h" +#include "Accessor.h" +#include "StyleContext.h" +#include "CharacterSet.h" +#include "LexerModule.h" + +#if defined(__clang__) +#pragma clang diagnostic ignored "-Wcomma" +#endif + +// Since the Microsoft __iscsym[f] funcs are not ANSI... +inline int iscaml(int c) {return isalnum(c) || c == '_';} +inline int iscamlf(int c) {return isalpha(c) || c == '_';} + +static const int baseT[24] = { + 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* A - L */ + 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0,16 /* M - X */ +}; + +using namespace Scintilla; + +#ifdef BUILD_AS_EXTERNAL_LEXER +/* + (actually seems to work!) +*/ +#include +#include "WindowAccessor.h" +#include "ExternalLexer.h" + +#undef EXT_LEXER_DECL +#define EXT_LEXER_DECL __declspec( dllexport ) __stdcall + +#if PLAT_WIN +#include +#endif + +static void ColouriseCamlDoc( + Sci_PositionU startPos, Sci_Position length, + int initStyle, + WordList *keywordlists[], + Accessor &styler); + +static void FoldCamlDoc( + Sci_PositionU startPos, Sci_Position length, + int initStyle, + WordList *keywordlists[], + Accessor &styler); + +static void InternalLexOrFold(int lexOrFold, Sci_PositionU startPos, Sci_Position length, + int initStyle, char *words[], WindowID window, char *props); + +static const char* LexerName = "caml"; + +#ifdef TRACE +void Platform::DebugPrintf(const char *format, ...) { + char buffer[2000]; + va_list pArguments; + va_start(pArguments, format); + vsprintf(buffer,format,pArguments); + va_end(pArguments); + Platform::DebugDisplay(buffer); +} +#else +void Platform::DebugPrintf(const char *, ...) { +} +#endif + +bool Platform::IsDBCSLeadByte(int codePage, char ch) { + return ::IsDBCSLeadByteEx(codePage, ch) != 0; +} + +long Platform::SendScintilla(WindowID w, unsigned int msg, unsigned long wParam, long lParam) { + return ::SendMessage(reinterpret_cast(w), msg, wParam, lParam); +} + +long Platform::SendScintillaPointer(WindowID w, unsigned int msg, unsigned long wParam, void *lParam) { + return ::SendMessage(reinterpret_cast(w), msg, wParam, + reinterpret_cast(lParam)); +} + +void EXT_LEXER_DECL Fold(unsigned int lexer, Sci_PositionU startPos, Sci_Position length, + int initStyle, char *words[], WindowID window, char *props) +{ + // below useless evaluation(s) to supress "not used" warnings + lexer; + // build expected data structures and do the Fold + InternalLexOrFold(1, startPos, length, initStyle, words, window, props); + +} + +int EXT_LEXER_DECL GetLexerCount() +{ + return 1; // just us [Objective] Caml lexers here! +} + +void EXT_LEXER_DECL GetLexerName(unsigned int Index, char *name, int buflength) +{ + // below useless evaluation(s) to supress "not used" warnings + Index; + // return as much of our lexer name as will fit (what's up with Index?) + if (buflength > 0) { + buflength--; + int n = strlen(LexerName); + if (n > buflength) + n = buflength; + memcpy(name, LexerName, n), name[n] = '\0'; + } +} + +void EXT_LEXER_DECL Lex(unsigned int lexer, Sci_PositionU startPos, Sci_Position length, + int initStyle, char *words[], WindowID window, char *props) +{ + // below useless evaluation(s) to supress "not used" warnings + lexer; + // build expected data structures and do the Lex + InternalLexOrFold(0, startPos, length, initStyle, words, window, props); +} + +static void InternalLexOrFold(int foldOrLex, Sci_PositionU startPos, Sci_Position length, + int initStyle, char *words[], WindowID window, char *props) +{ + // create and initialize a WindowAccessor (including contained PropSet) + PropSetSimple ps; + ps.SetMultiple(props); + WindowAccessor wa(window, ps); + // create and initialize WordList(s) + int nWL = 0; + for (; words[nWL]; nWL++) ; // count # of WordList PTRs needed + WordList** wl = new WordList* [nWL + 1];// alloc WordList PTRs + int i = 0; + for (; i < nWL; i++) { + wl[i] = new WordList(); // (works or THROWS bad_alloc EXCEPTION) + wl[i]->Set(words[i]); + } + wl[i] = 0; + // call our "internal" folder/lexer (... then do Flush!) + if (foldOrLex) + FoldCamlDoc(startPos, length, initStyle, wl, wa); + else + ColouriseCamlDoc(startPos, length, initStyle, wl, wa); + wa.Flush(); + // clean up before leaving + for (i = nWL - 1; i >= 0; i--) + delete wl[i]; + delete [] wl; +} + +static +#endif /* BUILD_AS_EXTERNAL_LEXER */ + +void ColouriseCamlDoc( + Sci_PositionU startPos, Sci_Position length, + int initStyle, + WordList *keywordlists[], + Accessor &styler) +{ + // initialize styler + StyleContext sc(startPos, length, initStyle, styler); + + Sci_PositionU chToken = 0; + int chBase = 0, chLit = 0; + WordList& keywords = *keywordlists[0]; + WordList& keywords2 = *keywordlists[1]; + WordList& keywords3 = *keywordlists[2]; + const bool isSML = keywords.InList("andalso"); + const int useMagic = styler.GetPropertyInt("lexer.caml.magic", 0); + + // set up [initial] state info (terminating states that shouldn't "bleed") + const int state_ = sc.state & 0x0f; + if (state_ <= SCE_CAML_CHAR + || (isSML && state_ == SCE_CAML_STRING)) + sc.state = SCE_CAML_DEFAULT; + int nesting = (state_ >= SCE_CAML_COMMENT)? (state_ - SCE_CAML_COMMENT): 0; + + // foreach char in range... + while (sc.More()) { + // set up [per-char] state info + int state2 = -1; // (ASSUME no state change) + Sci_Position chColor = sc.currentPos - 1;// (ASSUME standard coloring range) + bool advance = true; // (ASSUME scanner "eats" 1 char) + + // step state machine + switch (sc.state & 0x0f) { + case SCE_CAML_DEFAULT: + chToken = sc.currentPos; // save [possible] token start (JIC) + // it's wide open; what do we have? + if (iscamlf(sc.ch)) + state2 = SCE_CAML_IDENTIFIER; + else if (!isSML && sc.Match('`') && iscamlf(sc.chNext)) + state2 = SCE_CAML_TAGNAME; + else if (!isSML && sc.Match('#') && isdigit(sc.chNext)) + state2 = SCE_CAML_LINENUM; + else if (isdigit(sc.ch)) { + // it's a number, assume base 10 + state2 = SCE_CAML_NUMBER, chBase = 10; + if (sc.Match('0')) { + // there MAY be a base specified... + const char* baseC = "bBoOxX"; + if (isSML) { + if (sc.chNext == 'w') + sc.Forward(); // (consume SML "word" indicator) + baseC = "x"; + } + // ... change to specified base AS REQUIRED + if (strchr(baseC, sc.chNext)) + chBase = baseT[tolower(sc.chNext) - 'a'], sc.Forward(); + } + } else if (!isSML && sc.Match('\'')) // (Caml char literal?) + state2 = SCE_CAML_CHAR, chLit = 0; + else if (isSML && sc.Match('#', '"')) // (SML char literal?) + state2 = SCE_CAML_CHAR, sc.Forward(); + else if (sc.Match('"')) + state2 = SCE_CAML_STRING; + else if (sc.Match('(', '*')) + state2 = SCE_CAML_COMMENT, sc.Forward(), sc.ch = ' '; // (*)... + else if (strchr("!?~" /* Caml "prefix-symbol" */ + "=<>@^|&+-*/$%" /* Caml "infix-symbol" */ + "()[]{};,:.#", sc.ch) // Caml "bracket" or ;,:.# + // SML "extra" ident chars + || (isSML && (sc.Match('\\') || sc.Match('`')))) + state2 = SCE_CAML_OPERATOR; + break; + + case SCE_CAML_IDENTIFIER: + // [try to] interpret as [additional] identifier char + if (!(iscaml(sc.ch) || sc.Match('\''))) { + const Sci_Position n = sc.currentPos - chToken; + if (n < 24) { + // length is believable as keyword, [re-]construct token + char t[24]; + for (Sci_Position i = -n; i < 0; i++) + t[n + i] = static_cast(sc.GetRelative(i)); + t[n] = '\0'; + // special-case "_" token as KEYWORD + if ((n == 1 && sc.chPrev == '_') || keywords.InList(t)) + sc.ChangeState(SCE_CAML_KEYWORD); + else if (keywords2.InList(t)) + sc.ChangeState(SCE_CAML_KEYWORD2); + else if (keywords3.InList(t)) + sc.ChangeState(SCE_CAML_KEYWORD3); + } + state2 = SCE_CAML_DEFAULT, advance = false; + } + break; + + case SCE_CAML_TAGNAME: + // [try to] interpret as [additional] tagname char + if (!(iscaml(sc.ch) || sc.Match('\''))) + state2 = SCE_CAML_DEFAULT, advance = false; + break; + + /*case SCE_CAML_KEYWORD: + case SCE_CAML_KEYWORD2: + case SCE_CAML_KEYWORD3: + // [try to] interpret as [additional] keyword char + if (!iscaml(ch)) + state2 = SCE_CAML_DEFAULT, advance = false; + break;*/ + + case SCE_CAML_LINENUM: + // [try to] interpret as [additional] linenum directive char + if (!isdigit(sc.ch)) + state2 = SCE_CAML_DEFAULT, advance = false; + break; + + case SCE_CAML_OPERATOR: { + // [try to] interpret as [additional] operator char + const char* o = 0; + if (iscaml(sc.ch) || isspace(sc.ch) // ident or whitespace + || (o = strchr(")]};,\'\"#", sc.ch),o) // "termination" chars + || (!isSML && sc.Match('`')) // Caml extra term char + || (!strchr("!$%&*+-./:<=>?@^|~", sc.ch)// "operator" chars + // SML extra ident chars + && !(isSML && (sc.Match('\\') || sc.Match('`'))))) { + // check for INCLUSIVE termination + if (o && strchr(")]};,", sc.ch)) { + if ((sc.Match(')') && sc.chPrev == '(') + || (sc.Match(']') && sc.chPrev == '[')) + // special-case "()" and "[]" tokens as KEYWORDS + sc.ChangeState(SCE_CAML_KEYWORD); + chColor++; + } else + advance = false; + state2 = SCE_CAML_DEFAULT; + } + break; + } + + case SCE_CAML_NUMBER: + // [try to] interpret as [additional] numeric literal char + if ((!isSML && sc.Match('_')) || IsADigit(sc.ch, chBase)) + break; + // how about an integer suffix? + if (!isSML && (sc.Match('l') || sc.Match('L') || sc.Match('n')) + && (sc.chPrev == '_' || IsADigit(sc.chPrev, chBase))) + break; + // or a floating-point literal? + if (chBase == 10) { + // with a decimal point? + if (sc.Match('.') + && ((!isSML && sc.chPrev == '_') + || IsADigit(sc.chPrev, chBase))) + break; + // with an exponent? (I) + if ((sc.Match('e') || sc.Match('E')) + && ((!isSML && (sc.chPrev == '.' || sc.chPrev == '_')) + || IsADigit(sc.chPrev, chBase))) + break; + // with an exponent? (II) + if (((!isSML && (sc.Match('+') || sc.Match('-'))) + || (isSML && sc.Match('~'))) + && (sc.chPrev == 'e' || sc.chPrev == 'E')) + break; + } + // it looks like we have run out of number + state2 = SCE_CAML_DEFAULT, advance = false; + break; + + case SCE_CAML_CHAR: + if (!isSML) { + // [try to] interpret as [additional] char literal char + if (sc.Match('\\')) { + chLit = 1; // (definitely IS a char literal) + if (sc.chPrev == '\\') + sc.ch = ' '; // (...\\') + // should we be terminating - one way or another? + } else if ((sc.Match('\'') && sc.chPrev != '\\') + || sc.atLineEnd) { + state2 = SCE_CAML_DEFAULT; + if (sc.Match('\'')) + chColor++; + else + sc.ChangeState(SCE_CAML_IDENTIFIER); + // ... maybe a char literal, maybe not + } else if (chLit < 1 && sc.currentPos - chToken >= 2) + sc.ChangeState(SCE_CAML_IDENTIFIER), advance = false; + break; + }/* else + // fall through for SML char literal (handle like string) */ + // Falls through. + + case SCE_CAML_STRING: + // [try to] interpret as [additional] [SML char/] string literal char + if (isSML && sc.Match('\\') && sc.chPrev != '\\' && isspace(sc.chNext)) + state2 = SCE_CAML_WHITE; + else if (sc.Match('\\') && sc.chPrev == '\\') + sc.ch = ' '; // (...\\") + // should we be terminating - one way or another? + else if ((sc.Match('"') && sc.chPrev != '\\') + || (isSML && sc.atLineEnd)) { + state2 = SCE_CAML_DEFAULT; + if (sc.Match('"')) + chColor++; + } + break; + + case SCE_CAML_WHITE: + // [try to] interpret as [additional] SML embedded whitespace char + if (sc.Match('\\')) { + // style this puppy NOW... + state2 = SCE_CAML_STRING, sc.ch = ' ' /* (...\") */, chColor++, + styler.ColourTo(chColor, SCE_CAML_WHITE), styler.Flush(); + // ... then backtrack to determine original SML literal type + Sci_Position p = chColor - 2; + for (; p >= 0 && styler.StyleAt(p) == SCE_CAML_WHITE; p--) ; + if (p >= 0) + state2 = static_cast(styler.StyleAt(p)); + // take care of state change NOW + sc.ChangeState(state2), state2 = -1; + } + break; + + case SCE_CAML_COMMENT: + case SCE_CAML_COMMENT1: + case SCE_CAML_COMMENT2: + case SCE_CAML_COMMENT3: + // we're IN a comment - does this start a NESTED comment? + if (sc.Match('(', '*')) + state2 = sc.state + 1, chToken = sc.currentPos, + sc.Forward(), sc.ch = ' ' /* (*)... */, nesting++; + // [try to] interpret as [additional] comment char + else if (sc.Match(')') && sc.chPrev == '*') { + if (nesting) + state2 = (sc.state & 0x0f) - 1, chToken = 0, nesting--; + else + state2 = SCE_CAML_DEFAULT; + chColor++; + // enable "magic" (read-only) comment AS REQUIRED + } else if (useMagic && sc.currentPos - chToken == 4 + && sc.Match('c') && sc.chPrev == 'r' && sc.GetRelative(-2) == '@') + sc.state |= 0x10; // (switch to read-only comment style) + break; + } + + // handle state change and char coloring AS REQUIRED + if (state2 >= 0) + styler.ColourTo(chColor, sc.state), sc.ChangeState(state2); + // move to next char UNLESS re-scanning current char + if (advance) + sc.Forward(); + } + + // do any required terminal char coloring (JIC) + sc.Complete(); +} + +#ifdef BUILD_AS_EXTERNAL_LEXER +static +#endif /* BUILD_AS_EXTERNAL_LEXER */ +void FoldCamlDoc( + Sci_PositionU, Sci_Position, + int, + WordList *[], + Accessor &) +{ +} + +static const char * const camlWordListDesc[] = { + "Keywords", // primary Objective Caml keywords + "Keywords2", // "optional" keywords (typically from Pervasives) + "Keywords3", // "optional" keywords (typically typenames) + 0 +}; + +#ifndef BUILD_AS_EXTERNAL_LEXER +LexerModule lmCaml(SCLEX_CAML, ColouriseCamlDoc, "caml", FoldCamlDoc, camlWordListDesc); +#endif /* BUILD_AS_EXTERNAL_LEXER */ diff --git a/libs/qscintilla_2.14.1/scintilla/lexers/LexCmake.cpp b/libs/qscintilla_2.14.1/scintilla/lexers/LexCmake.cpp new file mode 100644 index 000000000..b8fe15496 --- /dev/null +++ b/libs/qscintilla_2.14.1/scintilla/lexers/LexCmake.cpp @@ -0,0 +1,455 @@ +// Scintilla source code edit control +/** @file LexCmake.cxx + ** Lexer for Cmake + **/ +// Copyright 2007 by Cristian Adam +// based on the NSIS lexer +// The License.txt file describes the conditions under which this software may be distributed. + +#include +#include +#include +#include +#include +#include + +#include "ILexer.h" +#include "Scintilla.h" +#include "SciLexer.h" + +#include "WordList.h" +#include "LexAccessor.h" +#include "Accessor.h" +#include "StyleContext.h" +#include "CharacterSet.h" +#include "LexerModule.h" + +using namespace Scintilla; + +static bool isCmakeNumber(char ch) +{ + return(ch >= '0' && ch <= '9'); +} + +static bool isCmakeChar(char ch) +{ + return(ch == '.' ) || (ch == '_' ) || isCmakeNumber(ch) || (ch >= 'A' && ch <= 'Z') || (ch >= 'a' && ch <= 'z'); +} + +static bool isCmakeLetter(char ch) +{ + return(ch >= 'A' && ch <= 'Z') || (ch >= 'a' && ch <= 'z'); +} + +static bool CmakeNextLineHasElse(Sci_PositionU start, Sci_PositionU end, Accessor &styler) +{ + Sci_Position nNextLine = -1; + for ( Sci_PositionU i = start; i < end; i++ ) { + char cNext = styler.SafeGetCharAt( i ); + if ( cNext == '\n' ) { + nNextLine = i+1; + break; + } + } + + if ( nNextLine == -1 ) // We never foudn the next line... + return false; + + for ( Sci_PositionU firstChar = nNextLine; firstChar < end; firstChar++ ) { + char cNext = styler.SafeGetCharAt( firstChar ); + if ( cNext == ' ' ) + continue; + if ( cNext == '\t' ) + continue; + if ( styler.Match(firstChar, "ELSE") || styler.Match(firstChar, "else")) + return true; + break; + } + + return false; +} + +static int calculateFoldCmake(Sci_PositionU start, Sci_PositionU end, int foldlevel, Accessor &styler, bool bElse) +{ + // If the word is too long, it is not what we are looking for + if ( end - start > 20 ) + return foldlevel; + + int newFoldlevel = foldlevel; + + char s[20]; // The key word we are looking for has atmost 13 characters + for (unsigned int i = 0; i < end - start + 1 && i < 19; i++) { + s[i] = static_cast( styler[ start + i ] ); + s[i + 1] = '\0'; + } + + if ( CompareCaseInsensitive(s, "IF") == 0 || CompareCaseInsensitive(s, "WHILE") == 0 + || CompareCaseInsensitive(s, "MACRO") == 0 || CompareCaseInsensitive(s, "FOREACH") == 0 + || CompareCaseInsensitive(s, "ELSEIF") == 0 ) + newFoldlevel++; + else if ( CompareCaseInsensitive(s, "ENDIF") == 0 || CompareCaseInsensitive(s, "ENDWHILE") == 0 + || CompareCaseInsensitive(s, "ENDMACRO") == 0 || CompareCaseInsensitive(s, "ENDFOREACH") == 0) + newFoldlevel--; + else if ( bElse && CompareCaseInsensitive(s, "ELSEIF") == 0 ) + newFoldlevel++; + else if ( bElse && CompareCaseInsensitive(s, "ELSE") == 0 ) + newFoldlevel++; + + return newFoldlevel; +} + +static int classifyWordCmake(Sci_PositionU start, Sci_PositionU end, WordList *keywordLists[], Accessor &styler ) +{ + char word[100] = {0}; + char lowercaseWord[100] = {0}; + + WordList &Commands = *keywordLists[0]; + WordList &Parameters = *keywordLists[1]; + WordList &UserDefined = *keywordLists[2]; + + for (Sci_PositionU i = 0; i < end - start + 1 && i < 99; i++) { + word[i] = static_cast( styler[ start + i ] ); + lowercaseWord[i] = static_cast(tolower(word[i])); + } + + // Check for special words... + if ( CompareCaseInsensitive(word, "MACRO") == 0 || CompareCaseInsensitive(word, "ENDMACRO") == 0 ) + return SCE_CMAKE_MACRODEF; + + if ( CompareCaseInsensitive(word, "IF") == 0 || CompareCaseInsensitive(word, "ENDIF") == 0 ) + return SCE_CMAKE_IFDEFINEDEF; + + if ( CompareCaseInsensitive(word, "ELSEIF") == 0 || CompareCaseInsensitive(word, "ELSE") == 0 ) + return SCE_CMAKE_IFDEFINEDEF; + + if ( CompareCaseInsensitive(word, "WHILE") == 0 || CompareCaseInsensitive(word, "ENDWHILE") == 0) + return SCE_CMAKE_WHILEDEF; + + if ( CompareCaseInsensitive(word, "FOREACH") == 0 || CompareCaseInsensitive(word, "ENDFOREACH") == 0) + return SCE_CMAKE_FOREACHDEF; + + if ( Commands.InList(lowercaseWord) ) + return SCE_CMAKE_COMMANDS; + + if ( Parameters.InList(word) ) + return SCE_CMAKE_PARAMETERS; + + + if ( UserDefined.InList(word) ) + return SCE_CMAKE_USERDEFINED; + + if ( strlen(word) > 3 ) { + if ( word[1] == '{' && word[strlen(word)-1] == '}' ) + return SCE_CMAKE_VARIABLE; + } + + // To check for numbers + if ( isCmakeNumber( word[0] ) ) { + bool bHasSimpleCmakeNumber = true; + for (unsigned int j = 1; j < end - start + 1 && j < 99; j++) { + if ( !isCmakeNumber( word[j] ) ) { + bHasSimpleCmakeNumber = false; + break; + } + } + + if ( bHasSimpleCmakeNumber ) + return SCE_CMAKE_NUMBER; + } + + return SCE_CMAKE_DEFAULT; +} + +static void ColouriseCmakeDoc(Sci_PositionU startPos, Sci_Position length, int, WordList *keywordLists[], Accessor &styler) +{ + int state = SCE_CMAKE_DEFAULT; + if ( startPos > 0 ) + state = styler.StyleAt(startPos-1); // Use the style from the previous line, usually default, but could be commentbox + + styler.StartAt( startPos ); + styler.GetLine( startPos ); + + Sci_PositionU nLengthDoc = startPos + length; + styler.StartSegment( startPos ); + + char cCurrChar; + bool bVarInString = false; + bool bClassicVarInString = false; + + Sci_PositionU i; + for ( i = startPos; i < nLengthDoc; i++ ) { + cCurrChar = styler.SafeGetCharAt( i ); + char cNextChar = styler.SafeGetCharAt(i+1); + + switch (state) { + case SCE_CMAKE_DEFAULT: + if ( cCurrChar == '#' ) { // we have a comment line + styler.ColourTo(i-1, state ); + state = SCE_CMAKE_COMMENT; + break; + } + if ( cCurrChar == '"' ) { + styler.ColourTo(i-1, state ); + state = SCE_CMAKE_STRINGDQ; + bVarInString = false; + bClassicVarInString = false; + break; + } + if ( cCurrChar == '\'' ) { + styler.ColourTo(i-1, state ); + state = SCE_CMAKE_STRINGRQ; + bVarInString = false; + bClassicVarInString = false; + break; + } + if ( cCurrChar == '`' ) { + styler.ColourTo(i-1, state ); + state = SCE_CMAKE_STRINGLQ; + bVarInString = false; + bClassicVarInString = false; + break; + } + + // CMake Variable + if ( cCurrChar == '$' || isCmakeChar(cCurrChar)) { + styler.ColourTo(i-1,state); + state = SCE_CMAKE_VARIABLE; + + // If it is a number, we must check and set style here first... + if ( isCmakeNumber(cCurrChar) && (cNextChar == '\t' || cNextChar == ' ' || cNextChar == '\r' || cNextChar == '\n' ) ) + styler.ColourTo( i, SCE_CMAKE_NUMBER); + + break; + } + + break; + case SCE_CMAKE_COMMENT: + if ( cCurrChar == '\n' || cCurrChar == '\r' ) { + if ( styler.SafeGetCharAt(i-1) == '\\' ) { + styler.ColourTo(i-2,state); + styler.ColourTo(i-1,SCE_CMAKE_DEFAULT); + } + else { + styler.ColourTo(i-1,state); + state = SCE_CMAKE_DEFAULT; + } + } + break; + case SCE_CMAKE_STRINGDQ: + case SCE_CMAKE_STRINGLQ: + case SCE_CMAKE_STRINGRQ: + + if ( styler.SafeGetCharAt(i-1) == '\\' && styler.SafeGetCharAt(i-2) == '$' ) + break; // Ignore the next character, even if it is a quote of some sort + + if ( cCurrChar == '"' && state == SCE_CMAKE_STRINGDQ ) { + styler.ColourTo(i,state); + state = SCE_CMAKE_DEFAULT; + break; + } + + if ( cCurrChar == '`' && state == SCE_CMAKE_STRINGLQ ) { + styler.ColourTo(i,state); + state = SCE_CMAKE_DEFAULT; + break; + } + + if ( cCurrChar == '\'' && state == SCE_CMAKE_STRINGRQ ) { + styler.ColourTo(i,state); + state = SCE_CMAKE_DEFAULT; + break; + } + + if ( cNextChar == '\r' || cNextChar == '\n' ) { + Sci_Position nCurLine = styler.GetLine(i+1); + Sci_Position nBack = i; + // We need to check if the previous line has a \ in it... + bool bNextLine = false; + + while ( nBack > 0 ) { + if ( styler.GetLine(nBack) != nCurLine ) + break; + + char cTemp = styler.SafeGetCharAt(nBack, 'a'); // Letter 'a' is safe here + + if ( cTemp == '\\' ) { + bNextLine = true; + break; + } + if ( cTemp != '\r' && cTemp != '\n' && cTemp != '\t' && cTemp != ' ' ) + break; + + nBack--; + } + + if ( bNextLine ) { + styler.ColourTo(i+1,state); + } + if ( bNextLine == false ) { + styler.ColourTo(i,state); + state = SCE_CMAKE_DEFAULT; + } + } + break; + + case SCE_CMAKE_VARIABLE: + + // CMake Variable: + if ( cCurrChar == '$' ) + state = SCE_CMAKE_DEFAULT; + else if ( cCurrChar == '\\' && (cNextChar == 'n' || cNextChar == 'r' || cNextChar == 't' ) ) + state = SCE_CMAKE_DEFAULT; + else if ( (isCmakeChar(cCurrChar) && !isCmakeChar( cNextChar) && cNextChar != '}') || cCurrChar == '}' ) { + state = classifyWordCmake( styler.GetStartSegment(), i, keywordLists, styler ); + styler.ColourTo( i, state); + state = SCE_CMAKE_DEFAULT; + } + else if ( !isCmakeChar( cCurrChar ) && cCurrChar != '{' && cCurrChar != '}' ) { + if ( classifyWordCmake( styler.GetStartSegment(), i-1, keywordLists, styler) == SCE_CMAKE_NUMBER ) + styler.ColourTo( i-1, SCE_CMAKE_NUMBER ); + + state = SCE_CMAKE_DEFAULT; + + if ( cCurrChar == '"' ) { + state = SCE_CMAKE_STRINGDQ; + bVarInString = false; + bClassicVarInString = false; + } + else if ( cCurrChar == '`' ) { + state = SCE_CMAKE_STRINGLQ; + bVarInString = false; + bClassicVarInString = false; + } + else if ( cCurrChar == '\'' ) { + state = SCE_CMAKE_STRINGRQ; + bVarInString = false; + bClassicVarInString = false; + } + else if ( cCurrChar == '#' ) { + state = SCE_CMAKE_COMMENT; + } + } + break; + } + + if ( state == SCE_CMAKE_STRINGDQ || state == SCE_CMAKE_STRINGLQ || state == SCE_CMAKE_STRINGRQ ) { + bool bIngoreNextDollarSign = false; + + if ( bVarInString && cCurrChar == '$' ) { + bVarInString = false; + bIngoreNextDollarSign = true; + } + else if ( bVarInString && cCurrChar == '\\' && (cNextChar == 'n' || cNextChar == 'r' || cNextChar == 't' || cNextChar == '"' || cNextChar == '`' || cNextChar == '\'' ) ) { + styler.ColourTo( i+1, SCE_CMAKE_STRINGVAR); + bVarInString = false; + bIngoreNextDollarSign = false; + } + + else if ( bVarInString && !isCmakeChar(cNextChar) ) { + int nWordState = classifyWordCmake( styler.GetStartSegment(), i, keywordLists, styler); + if ( nWordState == SCE_CMAKE_VARIABLE ) + styler.ColourTo( i, SCE_CMAKE_STRINGVAR); + bVarInString = false; + } + // Covers "${TEST}..." + else if ( bClassicVarInString && cNextChar == '}' ) { + styler.ColourTo( i+1, SCE_CMAKE_STRINGVAR); + bClassicVarInString = false; + } + + // Start of var in string + if ( !bIngoreNextDollarSign && cCurrChar == '$' && cNextChar == '{' ) { + styler.ColourTo( i-1, state); + bClassicVarInString = true; + bVarInString = false; + } + else if ( !bIngoreNextDollarSign && cCurrChar == '$' ) { + styler.ColourTo( i-1, state); + bVarInString = true; + bClassicVarInString = false; + } + } + } + + // Colourise remaining document + styler.ColourTo(nLengthDoc-1,state); +} + +static void FoldCmakeDoc(Sci_PositionU startPos, Sci_Position length, int, WordList *[], Accessor &styler) +{ + // No folding enabled, no reason to continue... + if ( styler.GetPropertyInt("fold") == 0 ) + return; + + bool foldAtElse = styler.GetPropertyInt("fold.at.else", 0) == 1; + + Sci_Position lineCurrent = styler.GetLine(startPos); + Sci_PositionU safeStartPos = styler.LineStart( lineCurrent ); + + bool bArg1 = true; + Sci_Position nWordStart = -1; + + int levelCurrent = SC_FOLDLEVELBASE; + if (lineCurrent > 0) + levelCurrent = styler.LevelAt(lineCurrent-1) >> 16; + int levelNext = levelCurrent; + + for (Sci_PositionU i = safeStartPos; i < startPos + length; i++) { + char chCurr = styler.SafeGetCharAt(i); + + if ( bArg1 ) { + if ( nWordStart == -1 && (isCmakeLetter(chCurr)) ) { + nWordStart = i; + } + else if ( isCmakeLetter(chCurr) == false && nWordStart > -1 ) { + int newLevel = calculateFoldCmake( nWordStart, i-1, levelNext, styler, foldAtElse); + + if ( newLevel == levelNext ) { + if ( foldAtElse ) { + if ( CmakeNextLineHasElse(i, startPos + length, styler) ) + levelNext--; + } + } + else + levelNext = newLevel; + bArg1 = false; + } + } + + if ( chCurr == '\n' ) { + if ( bArg1 && foldAtElse) { + if ( CmakeNextLineHasElse(i, startPos + length, styler) ) + levelNext--; + } + + // If we are on a new line... + int levelUse = levelCurrent; + int lev = levelUse | levelNext << 16; + if (levelUse < levelNext ) + lev |= SC_FOLDLEVELHEADERFLAG; + if (lev != styler.LevelAt(lineCurrent)) + styler.SetLevel(lineCurrent, lev); + + lineCurrent++; + levelCurrent = levelNext; + bArg1 = true; // New line, lets look at first argument again + nWordStart = -1; + } + } + + int levelUse = levelCurrent; + int lev = levelUse | levelNext << 16; + if (levelUse < levelNext) + lev |= SC_FOLDLEVELHEADERFLAG; + if (lev != styler.LevelAt(lineCurrent)) + styler.SetLevel(lineCurrent, lev); +} + +static const char * const cmakeWordLists[] = { + "Commands", + "Parameters", + "UserDefined", + 0, + 0,}; + +LexerModule lmCmake(SCLEX_CMAKE, ColouriseCmakeDoc, "cmake", FoldCmakeDoc, cmakeWordLists); diff --git a/libs/qscintilla_2.14.1/scintilla/lexers/LexCoffeeScript.cpp b/libs/qscintilla_2.14.1/scintilla/lexers/LexCoffeeScript.cpp new file mode 100644 index 000000000..a00162335 --- /dev/null +++ b/libs/qscintilla_2.14.1/scintilla/lexers/LexCoffeeScript.cpp @@ -0,0 +1,483 @@ +// Scintilla source code edit control +/** @file LexCoffeeScript.cxx + ** Lexer for CoffeeScript. + **/ +// Copyright 1998-2011 by Neil Hodgson +// Based on the Scintilla C++ Lexer +// Written by Eric Promislow in 2011 for the Komodo IDE +// The License.txt file describes the conditions under which this software may be distributed. + +#include +#include +#include +#include +#include +#include + +#include + +#include "ILexer.h" +#include "Scintilla.h" +#include "SciLexer.h" + +#include "WordList.h" +#include "LexAccessor.h" +#include "Accessor.h" +#include "StyleContext.h" +#include "CharacterSet.h" +#include "LexerModule.h" + +using namespace Scintilla; + +static bool IsSpaceEquiv(int state) { + return (state == SCE_COFFEESCRIPT_DEFAULT + || state == SCE_COFFEESCRIPT_COMMENTLINE + || state == SCE_COFFEESCRIPT_COMMENTBLOCK + || state == SCE_COFFEESCRIPT_VERBOSE_REGEX + || state == SCE_COFFEESCRIPT_VERBOSE_REGEX_COMMENT + || state == SCE_COFFEESCRIPT_WORD + || state == SCE_COFFEESCRIPT_REGEX); +} + +// Store the current lexer state and brace count prior to starting a new +// `#{}` interpolation level. +// Based on LexRuby.cxx. +static void enterInnerExpression(int *p_inner_string_types, + int *p_inner_expn_brace_counts, + int& inner_string_count, + int state, + int& brace_counts + ) { + p_inner_string_types[inner_string_count] = state; + p_inner_expn_brace_counts[inner_string_count] = brace_counts; + brace_counts = 0; + ++inner_string_count; +} + +// Restore the lexer state and brace count for the previous `#{}` interpolation +// level upon returning to it. +// Note the previous lexer state is the return value and needs to be restored +// manually by the StyleContext. +// Based on LexRuby.cxx. +static int exitInnerExpression(int *p_inner_string_types, + int *p_inner_expn_brace_counts, + int& inner_string_count, + int& brace_counts + ) { + --inner_string_count; + brace_counts = p_inner_expn_brace_counts[inner_string_count]; + return p_inner_string_types[inner_string_count]; +} + +// Preconditions: sc.currentPos points to a character after '+' or '-'. +// The test for pos reaching 0 should be redundant, +// and is in only for safety measures. +// Limitation: this code will give the incorrect answer for code like +// a = b+++/ptn/... +// Putting a space between the '++' post-inc operator and the '+' binary op +// fixes this, and is highly recommended for readability anyway. +static bool FollowsPostfixOperator(StyleContext &sc, Accessor &styler) { + Sci_Position pos = (Sci_Position) sc.currentPos; + while (--pos > 0) { + char ch = styler[pos]; + if (ch == '+' || ch == '-') { + return styler[pos - 1] == ch; + } + } + return false; +} + +static bool followsKeyword(StyleContext &sc, Accessor &styler) { + Sci_Position pos = (Sci_Position) sc.currentPos; + Sci_Position currentLine = styler.GetLine(pos); + Sci_Position lineStartPos = styler.LineStart(currentLine); + while (--pos > lineStartPos) { + char ch = styler.SafeGetCharAt(pos); + if (ch != ' ' && ch != '\t') { + break; + } + } + styler.Flush(); + return styler.StyleAt(pos) == SCE_COFFEESCRIPT_WORD; +} + +static void ColouriseCoffeeScriptDoc(Sci_PositionU startPos, Sci_Position length, int initStyle, WordList *keywordlists[], + Accessor &styler) { + + WordList &keywords = *keywordlists[0]; + WordList &keywords2 = *keywordlists[1]; + WordList &keywords4 = *keywordlists[3]; + + CharacterSet setOKBeforeRE(CharacterSet::setNone, "([{=,:;!%^&*|?~+-"); + CharacterSet setCouldBePostOp(CharacterSet::setNone, "+-"); + + CharacterSet setWordStart(CharacterSet::setAlpha, "_$@", 0x80, true); + CharacterSet setWord(CharacterSet::setAlphaNum, "._$", 0x80, true); + + int chPrevNonWhite = ' '; + int visibleChars = 0; + + // String/Regex interpolation variables, based on LexRuby.cxx. + // In most cases a value of 2 should be ample for the code the user is + // likely to enter. For example, + // "Filling the #{container} with #{liquid}..." + // from the CoffeeScript homepage nests to a level of 2 + // If the user actually hits a 6th occurrence of '#{' in a double-quoted + // string (including regexes), it will stay as a string. The problem with + // this is that quotes might flip, a 7th '#{' will look like a comment, + // and code-folding might be wrong. +#define INNER_STRINGS_MAX_COUNT 5 + // These vars track our instances of "...#{,,,'..#{,,,}...',,,}..." + int inner_string_types[INNER_STRINGS_MAX_COUNT]; + // Track # braces when we push a new #{ thing + int inner_expn_brace_counts[INNER_STRINGS_MAX_COUNT]; + int inner_string_count = 0; + int brace_counts = 0; // Number of #{ ... } things within an expression + for (int i = 0; i < INNER_STRINGS_MAX_COUNT; i++) { + inner_string_types[i] = 0; + inner_expn_brace_counts[i] = 0; + } + + // look back to set chPrevNonWhite properly for better regex colouring + Sci_Position endPos = startPos + length; + if (startPos > 0 && IsSpaceEquiv(initStyle)) { + Sci_PositionU back = startPos; + styler.Flush(); + while (back > 0 && IsSpaceEquiv(styler.StyleAt(--back))) + ; + if (styler.StyleAt(back) == SCE_COFFEESCRIPT_OPERATOR) { + chPrevNonWhite = styler.SafeGetCharAt(back); + } + if (startPos != back) { + initStyle = styler.StyleAt(back); + if (IsSpaceEquiv(initStyle)) { + initStyle = SCE_COFFEESCRIPT_DEFAULT; + } + } + startPos = back; + } + + StyleContext sc(startPos, endPos - startPos, initStyle, styler); + + for (; sc.More();) { + + if (sc.atLineStart) { + // Reset states to beginning of colourise so no surprises + // if different sets of lines lexed. + visibleChars = 0; + } + + // Determine if the current state should terminate. + switch (sc.state) { + case SCE_COFFEESCRIPT_OPERATOR: + sc.SetState(SCE_COFFEESCRIPT_DEFAULT); + break; + case SCE_COFFEESCRIPT_NUMBER: + // We accept almost anything because of hex. and number suffixes + if (!setWord.Contains(sc.ch) || sc.Match('.', '.')) { + sc.SetState(SCE_COFFEESCRIPT_DEFAULT); + } + break; + case SCE_COFFEESCRIPT_IDENTIFIER: + if (!setWord.Contains(sc.ch) || (sc.ch == '.') || (sc.ch == '$')) { + char s[1000]; + sc.GetCurrent(s, sizeof(s)); + if (keywords.InList(s)) { + sc.ChangeState(SCE_COFFEESCRIPT_WORD); + } else if (keywords2.InList(s)) { + sc.ChangeState(SCE_COFFEESCRIPT_WORD2); + } else if (keywords4.InList(s)) { + sc.ChangeState(SCE_COFFEESCRIPT_GLOBALCLASS); + } else if (sc.LengthCurrent() > 0 && s[0] == '@') { + sc.ChangeState(SCE_COFFEESCRIPT_INSTANCEPROPERTY); + } + sc.SetState(SCE_COFFEESCRIPT_DEFAULT); + } + break; + case SCE_COFFEESCRIPT_WORD: + case SCE_COFFEESCRIPT_WORD2: + case SCE_COFFEESCRIPT_GLOBALCLASS: + case SCE_COFFEESCRIPT_INSTANCEPROPERTY: + if (!setWord.Contains(sc.ch)) { + sc.SetState(SCE_COFFEESCRIPT_DEFAULT); + } + break; + case SCE_COFFEESCRIPT_COMMENTLINE: + if (sc.atLineStart) { + sc.SetState(SCE_COFFEESCRIPT_DEFAULT); + } + break; + case SCE_COFFEESCRIPT_STRING: + if (sc.ch == '\\') { + if (sc.chNext == '\"' || sc.chNext == '\'' || sc.chNext == '\\') { + sc.Forward(); + } + } else if (sc.ch == '\"') { + sc.ForwardSetState(SCE_COFFEESCRIPT_DEFAULT); + } else if (sc.ch == '#' && sc.chNext == '{' && inner_string_count < INNER_STRINGS_MAX_COUNT) { + // process interpolated code #{ ... } + enterInnerExpression(inner_string_types, + inner_expn_brace_counts, + inner_string_count, + sc.state, + brace_counts); + sc.SetState(SCE_COFFEESCRIPT_OPERATOR); + sc.ForwardSetState(SCE_COFFEESCRIPT_DEFAULT); + } + break; + case SCE_COFFEESCRIPT_CHARACTER: + if (sc.ch == '\\') { + if (sc.chNext == '\"' || sc.chNext == '\'' || sc.chNext == '\\') { + sc.Forward(); + } + } else if (sc.ch == '\'') { + sc.ForwardSetState(SCE_COFFEESCRIPT_DEFAULT); + } + break; + case SCE_COFFEESCRIPT_REGEX: + if (sc.atLineStart) { + sc.SetState(SCE_COFFEESCRIPT_DEFAULT); + } else if (sc.ch == '/') { + sc.Forward(); + while ((sc.ch < 0x80) && islower(sc.ch)) + sc.Forward(); // gobble regex flags + sc.SetState(SCE_COFFEESCRIPT_DEFAULT); + } else if (sc.ch == '\\') { + // Gobble up the quoted character + if (sc.chNext == '\\' || sc.chNext == '/') { + sc.Forward(); + } + } + break; + case SCE_COFFEESCRIPT_STRINGEOL: + if (sc.atLineStart) { + sc.SetState(SCE_COFFEESCRIPT_DEFAULT); + } + break; + case SCE_COFFEESCRIPT_COMMENTBLOCK: + if (sc.Match("###")) { + sc.Forward(); + sc.Forward(); + sc.ForwardSetState(SCE_COFFEESCRIPT_DEFAULT); + } else if (sc.ch == '\\') { + sc.Forward(); + } + break; + case SCE_COFFEESCRIPT_VERBOSE_REGEX: + if (sc.Match("///")) { + sc.Forward(); + sc.Forward(); + sc.ForwardSetState(SCE_COFFEESCRIPT_DEFAULT); + } else if (sc.Match('#')) { + sc.SetState(SCE_COFFEESCRIPT_VERBOSE_REGEX_COMMENT); + } else if (sc.ch == '\\') { + sc.Forward(); + } + break; + case SCE_COFFEESCRIPT_VERBOSE_REGEX_COMMENT: + if (sc.atLineStart) { + sc.SetState(SCE_COFFEESCRIPT_VERBOSE_REGEX); + } + break; + } + + // Determine if a new state should be entered. + if (sc.state == SCE_COFFEESCRIPT_DEFAULT) { + if (IsADigit(sc.ch) || (sc.ch == '.' && IsADigit(sc.chNext))) { + sc.SetState(SCE_COFFEESCRIPT_NUMBER); + } else if (setWordStart.Contains(sc.ch)) { + sc.SetState(SCE_COFFEESCRIPT_IDENTIFIER); + } else if (sc.Match("///")) { + sc.SetState(SCE_COFFEESCRIPT_VERBOSE_REGEX); + sc.Forward(); + sc.Forward(); + } else if (sc.ch == '/' + && (setOKBeforeRE.Contains(chPrevNonWhite) + || followsKeyword(sc, styler)) + && (!setCouldBePostOp.Contains(chPrevNonWhite) + || !FollowsPostfixOperator(sc, styler))) { + sc.SetState(SCE_COFFEESCRIPT_REGEX); // JavaScript's RegEx + } else if (sc.ch == '\"') { + sc.SetState(SCE_COFFEESCRIPT_STRING); + } else if (sc.ch == '\'') { + sc.SetState(SCE_COFFEESCRIPT_CHARACTER); + } else if (sc.ch == '#') { + if (sc.Match("###")) { + sc.SetState(SCE_COFFEESCRIPT_COMMENTBLOCK); + sc.Forward(); + sc.Forward(); + } else { + sc.SetState(SCE_COFFEESCRIPT_COMMENTLINE); + } + } else if (isoperator(static_cast(sc.ch))) { + sc.SetState(SCE_COFFEESCRIPT_OPERATOR); + // Handle '..' and '...' operators correctly. + if (sc.ch == '.') { + for (int i = 0; i < 2 && sc.chNext == '.'; i++, sc.Forward()) ; + } else if (sc.ch == '{') { + ++brace_counts; + } else if (sc.ch == '}' && --brace_counts <= 0 && inner_string_count > 0) { + // Return to previous state before #{ ... } + sc.ForwardSetState(exitInnerExpression(inner_string_types, + inner_expn_brace_counts, + inner_string_count, + brace_counts)); + continue; // skip sc.Forward() at loop end + } + } + } + + if (!IsASpace(sc.ch) && !IsSpaceEquiv(sc.state)) { + chPrevNonWhite = sc.ch; + visibleChars++; + } + sc.Forward(); + } + sc.Complete(); +} + +static bool IsCommentLine(Sci_Position line, Accessor &styler) { + Sci_Position pos = styler.LineStart(line); + Sci_Position eol_pos = styler.LineStart(line + 1) - 1; + for (Sci_Position i = pos; i < eol_pos; i++) { + char ch = styler[i]; + if (ch == '#') + return true; + else if (ch != ' ' && ch != '\t') + return false; + } + return false; +} + +static void FoldCoffeeScriptDoc(Sci_PositionU startPos, Sci_Position length, int, + WordList *[], Accessor &styler) { + // A simplified version of FoldPyDoc + const Sci_Position maxPos = startPos + length; + const Sci_Position maxLines = styler.GetLine(maxPos - 1); // Requested last line + const Sci_Position docLines = styler.GetLine(styler.Length() - 1); // Available last line + + // property fold.coffeescript.comment + const bool foldComment = styler.GetPropertyInt("fold.coffeescript.comment") != 0; + + const bool foldCompact = styler.GetPropertyInt("fold.compact") != 0; + + // Backtrack to previous non-blank line so we can determine indent level + // for any white space lines + // and so we can fix any preceding fold level (which is why we go back + // at least one line in all cases) + int spaceFlags = 0; + Sci_Position lineCurrent = styler.GetLine(startPos); + int indentCurrent = styler.IndentAmount(lineCurrent, &spaceFlags, NULL); + while (lineCurrent > 0) { + lineCurrent--; + indentCurrent = styler.IndentAmount(lineCurrent, &spaceFlags, NULL); + if (!(indentCurrent & SC_FOLDLEVELWHITEFLAG) + && !IsCommentLine(lineCurrent, styler)) + break; + } + int indentCurrentLevel = indentCurrent & SC_FOLDLEVELNUMBERMASK; + + // Set up initial loop state + int prevComment = 0; + if (lineCurrent >= 1) + prevComment = foldComment && IsCommentLine(lineCurrent - 1, styler); + + // Process all characters to end of requested range + // or comment that hangs over the end of the range. Cap processing in all cases + // to end of document (in case of comment at end). + while ((lineCurrent <= docLines) && ((lineCurrent <= maxLines) || prevComment)) { + + // Gather info + int lev = indentCurrent; + Sci_Position lineNext = lineCurrent + 1; + int indentNext = indentCurrent; + if (lineNext <= docLines) { + // Information about next line is only available if not at end of document + indentNext = styler.IndentAmount(lineNext, &spaceFlags, NULL); + } + const int comment = foldComment && IsCommentLine(lineCurrent, styler); + const int comment_start = (comment && !prevComment && (lineNext <= docLines) && + IsCommentLine(lineNext, styler) && (lev > SC_FOLDLEVELBASE)); + const int comment_continue = (comment && prevComment); + if (!comment) + indentCurrentLevel = indentCurrent & SC_FOLDLEVELNUMBERMASK; + if (indentNext & SC_FOLDLEVELWHITEFLAG) + indentNext = SC_FOLDLEVELWHITEFLAG | indentCurrentLevel; + + if (comment_start) { + // Place fold point at start of a block of comments + lev |= SC_FOLDLEVELHEADERFLAG; + } else if (comment_continue) { + // Add level to rest of lines in the block + lev = lev + 1; + } + + // Skip past any blank lines for next indent level info; we skip also + // comments (all comments, not just those starting in column 0) + // which effectively folds them into surrounding code rather + // than screwing up folding. + + while ((lineNext < docLines) && + ((indentNext & SC_FOLDLEVELWHITEFLAG) || + (lineNext <= docLines && IsCommentLine(lineNext, styler)))) { + + lineNext++; + indentNext = styler.IndentAmount(lineNext, &spaceFlags, NULL); + } + + const int levelAfterComments = indentNext & SC_FOLDLEVELNUMBERMASK; + const int levelBeforeComments = std::max(indentCurrentLevel,levelAfterComments); + + // Now set all the indent levels on the lines we skipped + // Do this from end to start. Once we encounter one line + // which is indented more than the line after the end of + // the comment-block, use the level of the block before + + Sci_Position skipLine = lineNext; + int skipLevel = levelAfterComments; + + while (--skipLine > lineCurrent) { + int skipLineIndent = styler.IndentAmount(skipLine, &spaceFlags, NULL); + + if (foldCompact) { + if ((skipLineIndent & SC_FOLDLEVELNUMBERMASK) > levelAfterComments) + skipLevel = levelBeforeComments; + + int whiteFlag = skipLineIndent & SC_FOLDLEVELWHITEFLAG; + + styler.SetLevel(skipLine, skipLevel | whiteFlag); + } else { + if ((skipLineIndent & SC_FOLDLEVELNUMBERMASK) > levelAfterComments && + !(skipLineIndent & SC_FOLDLEVELWHITEFLAG) && + !IsCommentLine(skipLine, styler)) + skipLevel = levelBeforeComments; + + styler.SetLevel(skipLine, skipLevel); + } + } + + // Set fold header on non-comment line + if (!comment && !(indentCurrent & SC_FOLDLEVELWHITEFLAG)) { + if ((indentCurrent & SC_FOLDLEVELNUMBERMASK) < (indentNext & SC_FOLDLEVELNUMBERMASK)) + lev |= SC_FOLDLEVELHEADERFLAG; + } + + // Keep track of block comment state of previous line + prevComment = comment_start || comment_continue; + + // Set fold level for this line and move to next line + styler.SetLevel(lineCurrent, lev); + indentCurrent = indentNext; + lineCurrent = lineNext; + } +} + +static const char *const csWordLists[] = { + "Keywords", + "Secondary keywords", + "Unused", + "Global classes", + 0, +}; + +LexerModule lmCoffeeScript(SCLEX_COFFEESCRIPT, ColouriseCoffeeScriptDoc, "coffeescript", FoldCoffeeScriptDoc, csWordLists); diff --git a/libs/qscintilla_2.14.1/scintilla/lexers/LexConf.cpp b/libs/qscintilla_2.14.1/scintilla/lexers/LexConf.cpp new file mode 100644 index 000000000..73fbe46ef --- /dev/null +++ b/libs/qscintilla_2.14.1/scintilla/lexers/LexConf.cpp @@ -0,0 +1,190 @@ +// Scintilla source code edit control +/** @file LexConf.cxx + ** Lexer for Apache Configuration Files. + ** + ** First working version contributed by Ahmad Zawawi on October 28, 2000. + ** i created this lexer because i needed something pretty when dealing + ** when Apache Configuration files... + **/ +// Copyright 1998-2001 by Neil Hodgson +// The License.txt file describes the conditions under which this software may be distributed. + +#include +#include +#include +#include +#include +#include + +#include "ILexer.h" +#include "Scintilla.h" +#include "SciLexer.h" + +#include "WordList.h" +#include "LexAccessor.h" +#include "Accessor.h" +#include "StyleContext.h" +#include "CharacterSet.h" +#include "LexerModule.h" + +using namespace Scintilla; + +static void ColouriseConfDoc(Sci_PositionU startPos, Sci_Position length, int, WordList *keywordLists[], Accessor &styler) +{ + int state = SCE_CONF_DEFAULT; + char chNext = styler[startPos]; + Sci_Position lengthDoc = startPos + length; + // create a buffer large enough to take the largest chunk... + char *buffer = new char[length+1]; + Sci_Position bufferCount = 0; + + // this assumes that we have 2 keyword list in conf.properties + WordList &directives = *keywordLists[0]; + WordList ¶ms = *keywordLists[1]; + + // go through all provided text segment + // using the hand-written state machine shown below + styler.StartAt(startPos); + styler.StartSegment(startPos); + for (Sci_Position i = startPos; i < lengthDoc; i++) { + char ch = chNext; + chNext = styler.SafeGetCharAt(i + 1); + + if (styler.IsLeadByte(ch)) { + chNext = styler.SafeGetCharAt(i + 2); + i++; + continue; + } + switch(state) { + case SCE_CONF_DEFAULT: + if( ch == '\n' || ch == '\r' || ch == '\t' || ch == ' ') { + // whitespace is simply ignored here... + styler.ColourTo(i,SCE_CONF_DEFAULT); + break; + } else if( ch == '#' ) { + // signals the start of a comment... + state = SCE_CONF_COMMENT; + styler.ColourTo(i,SCE_CONF_COMMENT); + } else if( ch == '.' /*|| ch == '/'*/) { + // signals the start of a file... + state = SCE_CONF_EXTENSION; + styler.ColourTo(i,SCE_CONF_EXTENSION); + } else if( ch == '"') { + state = SCE_CONF_STRING; + styler.ColourTo(i,SCE_CONF_STRING); + } else if( IsASCII(ch) && ispunct(ch) ) { + // signals an operator... + // no state jump necessary for this + // simple case... + styler.ColourTo(i,SCE_CONF_OPERATOR); + } else if( IsASCII(ch) && isalpha(ch) ) { + // signals the start of an identifier + bufferCount = 0; + buffer[bufferCount++] = static_cast(tolower(ch)); + state = SCE_CONF_IDENTIFIER; + } else if( IsASCII(ch) && isdigit(ch) ) { + // signals the start of a number + bufferCount = 0; + buffer[bufferCount++] = ch; + //styler.ColourTo(i,SCE_CONF_NUMBER); + state = SCE_CONF_NUMBER; + } else { + // style it the default style.. + styler.ColourTo(i,SCE_CONF_DEFAULT); + } + break; + + case SCE_CONF_COMMENT: + // if we find a newline here, + // we simply go to default state + // else continue to work on it... + if( ch == '\n' || ch == '\r' ) { + state = SCE_CONF_DEFAULT; + } else { + styler.ColourTo(i,SCE_CONF_COMMENT); + } + break; + + case SCE_CONF_EXTENSION: + // if we find a non-alphanumeric char, + // we simply go to default state + // else we're still dealing with an extension... + if( (IsASCII(ch) && isalnum(ch)) || (ch == '_') || + (ch == '-') || (ch == '$') || + (ch == '/') || (ch == '.') || (ch == '*') ) + { + styler.ColourTo(i,SCE_CONF_EXTENSION); + } else { + state = SCE_CONF_DEFAULT; + chNext = styler[i--]; + } + break; + + case SCE_CONF_STRING: + // if we find the end of a string char, we simply go to default state + // else we're still dealing with an string... + if( (ch == '"' && styler.SafeGetCharAt(i-1)!='\\') || (ch == '\n') || (ch == '\r') ) { + state = SCE_CONF_DEFAULT; + } + styler.ColourTo(i,SCE_CONF_STRING); + break; + + case SCE_CONF_IDENTIFIER: + // stay in CONF_IDENTIFIER state until we find a non-alphanumeric + if( (IsASCII(ch) && isalnum(ch)) || (ch == '_') || (ch == '-') || (ch == '/') || (ch == '$') || (ch == '.') || (ch == '*')) { + buffer[bufferCount++] = static_cast(tolower(ch)); + } else { + state = SCE_CONF_DEFAULT; + buffer[bufferCount] = '\0'; + + // check if the buffer contains a keyword, and highlight it if it is a keyword... + if(directives.InList(buffer)) { + styler.ColourTo(i-1,SCE_CONF_DIRECTIVE ); + } else if(params.InList(buffer)) { + styler.ColourTo(i-1,SCE_CONF_PARAMETER ); + } else if(strchr(buffer,'/') || strchr(buffer,'.')) { + styler.ColourTo(i-1,SCE_CONF_EXTENSION); + } else { + styler.ColourTo(i-1,SCE_CONF_DEFAULT); + } + + // push back the faulty character + chNext = styler[i--]; + + } + break; + + case SCE_CONF_NUMBER: + // stay in CONF_NUMBER state until we find a non-numeric + if( (IsASCII(ch) && isdigit(ch)) || ch == '.') { + buffer[bufferCount++] = ch; + } else { + state = SCE_CONF_DEFAULT; + buffer[bufferCount] = '\0'; + + // Colourize here... + if( strchr(buffer,'.') ) { + // it is an IP address... + styler.ColourTo(i-1,SCE_CONF_IP); + } else { + // normal number + styler.ColourTo(i-1,SCE_CONF_NUMBER); + } + + // push back a character + chNext = styler[i--]; + } + break; + + } + } + delete []buffer; +} + +static const char * const confWordListDesc[] = { + "Directives", + "Parameters", + 0 +}; + +LexerModule lmConf(SCLEX_CONF, ColouriseConfDoc, "conf", 0, confWordListDesc); diff --git a/libs/qscintilla_2.14.1/scintilla/lexers/LexCrontab.cpp b/libs/qscintilla_2.14.1/scintilla/lexers/LexCrontab.cpp new file mode 100644 index 000000000..7f6d5fb0c --- /dev/null +++ b/libs/qscintilla_2.14.1/scintilla/lexers/LexCrontab.cpp @@ -0,0 +1,224 @@ +// Scintilla source code edit control +/** @file LexCrontab.cxx + ** Lexer to use with extended crontab files used by a powerful + ** Windows scheduler/event monitor/automation manager nnCron. + ** (http://nemtsev.eserv.ru/) + **/ +// Copyright 1998-2001 by Neil Hodgson +// The License.txt file describes the conditions under which this software may be distributed. + +#include +#include +#include +#include +#include +#include + +#include "ILexer.h" +#include "Scintilla.h" +#include "SciLexer.h" + +#include "WordList.h" +#include "LexAccessor.h" +#include "Accessor.h" +#include "StyleContext.h" +#include "CharacterSet.h" +#include "LexerModule.h" + +using namespace Scintilla; + +static void ColouriseNncrontabDoc(Sci_PositionU startPos, Sci_Position length, int, WordList +*keywordLists[], Accessor &styler) +{ + int state = SCE_NNCRONTAB_DEFAULT; + char chNext = styler[startPos]; + Sci_Position lengthDoc = startPos + length; + // create a buffer large enough to take the largest chunk... + char *buffer = new char[length+1]; + Sci_Position bufferCount = 0; + // used when highliting environment variables inside quoted string: + bool insideString = false; + + // this assumes that we have 3 keyword list in conf.properties + WordList §ion = *keywordLists[0]; + WordList &keyword = *keywordLists[1]; + WordList &modifier = *keywordLists[2]; + + // go through all provided text segment + // using the hand-written state machine shown below + styler.StartAt(startPos); + styler.StartSegment(startPos); + for (Sci_Position i = startPos; i < lengthDoc; i++) { + char ch = chNext; + chNext = styler.SafeGetCharAt(i + 1); + + if (styler.IsLeadByte(ch)) { + chNext = styler.SafeGetCharAt(i + 2); + i++; + continue; + } + switch(state) { + case SCE_NNCRONTAB_DEFAULT: + if( ch == '\n' || ch == '\r' || ch == '\t' || ch == ' ') { + // whitespace is simply ignored here... + styler.ColourTo(i,SCE_NNCRONTAB_DEFAULT); + break; + } else if( ch == '#' && styler.SafeGetCharAt(i+1) == '(') { + // signals the start of a task... + state = SCE_NNCRONTAB_TASK; + styler.ColourTo(i,SCE_NNCRONTAB_TASK); + } + else if( ch == '\\' && (styler.SafeGetCharAt(i+1) == ' ' || + styler.SafeGetCharAt(i+1) == '\t')) { + // signals the start of an extended comment... + state = SCE_NNCRONTAB_COMMENT; + styler.ColourTo(i,SCE_NNCRONTAB_COMMENT); + } else if( ch == '#' ) { + // signals the start of a plain comment... + state = SCE_NNCRONTAB_COMMENT; + styler.ColourTo(i,SCE_NNCRONTAB_COMMENT); + } else if( ch == ')' && styler.SafeGetCharAt(i+1) == '#') { + // signals the end of a task... + state = SCE_NNCRONTAB_TASK; + styler.ColourTo(i,SCE_NNCRONTAB_TASK); + } else if( ch == '"') { + state = SCE_NNCRONTAB_STRING; + styler.ColourTo(i,SCE_NNCRONTAB_STRING); + } else if( ch == '%') { + // signals environment variables + state = SCE_NNCRONTAB_ENVIRONMENT; + styler.ColourTo(i,SCE_NNCRONTAB_ENVIRONMENT); + } else if( ch == '<' && styler.SafeGetCharAt(i+1) == '%') { + // signals environment variables + state = SCE_NNCRONTAB_ENVIRONMENT; + styler.ColourTo(i,SCE_NNCRONTAB_ENVIRONMENT); + } else if( ch == '*' ) { + // signals an asterisk + // no state jump necessary for this simple case... + styler.ColourTo(i,SCE_NNCRONTAB_ASTERISK); + } else if( (IsASCII(ch) && isalpha(ch)) || ch == '<' ) { + // signals the start of an identifier + bufferCount = 0; + buffer[bufferCount++] = ch; + state = SCE_NNCRONTAB_IDENTIFIER; + } else if( IsASCII(ch) && isdigit(ch) ) { + // signals the start of a number + bufferCount = 0; + buffer[bufferCount++] = ch; + state = SCE_NNCRONTAB_NUMBER; + } else { + // style it the default style.. + styler.ColourTo(i,SCE_NNCRONTAB_DEFAULT); + } + break; + + case SCE_NNCRONTAB_COMMENT: + // if we find a newline here, + // we simply go to default state + // else continue to work on it... + if( ch == '\n' || ch == '\r' ) { + state = SCE_NNCRONTAB_DEFAULT; + } else { + styler.ColourTo(i,SCE_NNCRONTAB_COMMENT); + } + break; + + case SCE_NNCRONTAB_TASK: + // if we find a newline here, + // we simply go to default state + // else continue to work on it... + if( ch == '\n' || ch == '\r' ) { + state = SCE_NNCRONTAB_DEFAULT; + } else { + styler.ColourTo(i,SCE_NNCRONTAB_TASK); + } + break; + + case SCE_NNCRONTAB_STRING: + if( ch == '%' ) { + state = SCE_NNCRONTAB_ENVIRONMENT; + insideString = true; + styler.ColourTo(i-1,SCE_NNCRONTAB_STRING); + break; + } + // if we find the end of a string char, we simply go to default state + // else we're still dealing with an string... + if( (ch == '"' && styler.SafeGetCharAt(i-1)!='\\') || + (ch == '\n') || (ch == '\r') ) { + state = SCE_NNCRONTAB_DEFAULT; + } + styler.ColourTo(i,SCE_NNCRONTAB_STRING); + break; + + case SCE_NNCRONTAB_ENVIRONMENT: + // if we find the end of a string char, we simply go to default state + // else we're still dealing with an string... + if( ch == '%' && insideString ) { + state = SCE_NNCRONTAB_STRING; + insideString = false; + break; + } + if( (ch == '%' && styler.SafeGetCharAt(i-1)!='\\') + || (ch == '\n') || (ch == '\r') || (ch == '>') ) { + state = SCE_NNCRONTAB_DEFAULT; + styler.ColourTo(i,SCE_NNCRONTAB_ENVIRONMENT); + break; + } + styler.ColourTo(i+1,SCE_NNCRONTAB_ENVIRONMENT); + break; + + case SCE_NNCRONTAB_IDENTIFIER: + // stay in CONF_IDENTIFIER state until we find a non-alphanumeric + if( (IsASCII(ch) && isalnum(ch)) || (ch == '_') || (ch == '-') || (ch == '/') || + (ch == '$') || (ch == '.') || (ch == '<') || (ch == '>') || + (ch == '@') ) { + buffer[bufferCount++] = ch; + } else { + state = SCE_NNCRONTAB_DEFAULT; + buffer[bufferCount] = '\0'; + + // check if the buffer contains a keyword, + // and highlight it if it is a keyword... + if(section.InList(buffer)) { + styler.ColourTo(i,SCE_NNCRONTAB_SECTION ); + } else if(keyword.InList(buffer)) { + styler.ColourTo(i-1,SCE_NNCRONTAB_KEYWORD ); + } // else if(strchr(buffer,'/') || strchr(buffer,'.')) { + // styler.ColourTo(i-1,SCE_NNCRONTAB_EXTENSION); + // } + else if(modifier.InList(buffer)) { + styler.ColourTo(i-1,SCE_NNCRONTAB_MODIFIER ); + } else { + styler.ColourTo(i-1,SCE_NNCRONTAB_DEFAULT); + } + // push back the faulty character + chNext = styler[i--]; + } + break; + + case SCE_NNCRONTAB_NUMBER: + // stay in CONF_NUMBER state until we find a non-numeric + if( IsASCII(ch) && isdigit(ch) /* || ch == '.' */ ) { + buffer[bufferCount++] = ch; + } else { + state = SCE_NNCRONTAB_DEFAULT; + buffer[bufferCount] = '\0'; + // Colourize here... (normal number) + styler.ColourTo(i-1,SCE_NNCRONTAB_NUMBER); + // push back a character + chNext = styler[i--]; + } + break; + } + } + delete []buffer; +} + +static const char * const cronWordListDesc[] = { + "Section keywords and Forth words", + "nnCrontab keywords", + "Modifiers", + 0 +}; + +LexerModule lmNncrontab(SCLEX_NNCRONTAB, ColouriseNncrontabDoc, "nncrontab", 0, cronWordListDesc); diff --git a/libs/qscintilla_2.14.1/scintilla/lexers/LexCsound.cpp b/libs/qscintilla_2.14.1/scintilla/lexers/LexCsound.cpp new file mode 100644 index 000000000..24603801e --- /dev/null +++ b/libs/qscintilla_2.14.1/scintilla/lexers/LexCsound.cpp @@ -0,0 +1,212 @@ +// Scintilla source code edit control +/** @file LexCsound.cxx + ** Lexer for Csound (Orchestra & Score) + ** Written by Georg Ritter - + **/ +// Copyright 1998-2003 by Neil Hodgson +// The License.txt file describes the conditions under which this software may be distributed. + +#include +#include +#include +#include +#include +#include + +#include "ILexer.h" +#include "Scintilla.h" +#include "SciLexer.h" + +#include "WordList.h" +#include "LexAccessor.h" +#include "Accessor.h" +#include "StyleContext.h" +#include "CharacterSet.h" +#include "LexerModule.h" + +using namespace Scintilla; + +static inline bool IsAWordChar(const int ch) { + return (ch < 0x80) && (isalnum(ch) || ch == '.' || + ch == '_' || ch == '?'); +} + +static inline bool IsAWordStart(const int ch) { + return (ch < 0x80) && (isalnum(ch) || ch == '_' || ch == '.' || + ch == '%' || ch == '@' || ch == '$' || ch == '?'); +} + +static inline bool IsCsoundOperator(char ch) { + if (IsASCII(ch) && isalnum(ch)) + return false; + // '.' left out as it is used to make up numbers + if (ch == '*' || ch == '/' || ch == '-' || ch == '+' || + ch == '(' || ch == ')' || ch == '=' || ch == '^' || + ch == '[' || ch == ']' || ch == '<' || ch == '&' || + ch == '>' || ch == ',' || ch == '|' || ch == '~' || + ch == '%' || ch == ':') + return true; + return false; +} + +static void ColouriseCsoundDoc(Sci_PositionU startPos, Sci_Position length, int initStyle, WordList *keywordlists[], + Accessor &styler) { + + WordList &opcode = *keywordlists[0]; + WordList &headerStmt = *keywordlists[1]; + WordList &otherKeyword = *keywordlists[2]; + + // Do not leak onto next line + if (initStyle == SCE_CSOUND_STRINGEOL) + initStyle = SCE_CSOUND_DEFAULT; + + StyleContext sc(startPos, length, initStyle, styler); + + for (; sc.More(); sc.Forward()) + { + // Handle line continuation generically. + if (sc.ch == '\\') { + if (sc.chNext == '\n' || sc.chNext == '\r') { + sc.Forward(); + if (sc.ch == '\r' && sc.chNext == '\n') { + sc.Forward(); + } + continue; + } + } + + // Determine if the current state should terminate. + if (sc.state == SCE_CSOUND_OPERATOR) { + if (!IsCsoundOperator(static_cast(sc.ch))) { + sc.SetState(SCE_CSOUND_DEFAULT); + } + }else if (sc.state == SCE_CSOUND_NUMBER) { + if (!IsAWordChar(sc.ch)) { + sc.SetState(SCE_CSOUND_DEFAULT); + } + } else if (sc.state == SCE_CSOUND_IDENTIFIER) { + if (!IsAWordChar(sc.ch) ) { + char s[100]; + sc.GetCurrent(s, sizeof(s)); + + if (opcode.InList(s)) { + sc.ChangeState(SCE_CSOUND_OPCODE); + } else if (headerStmt.InList(s)) { + sc.ChangeState(SCE_CSOUND_HEADERSTMT); + } else if (otherKeyword.InList(s)) { + sc.ChangeState(SCE_CSOUND_USERKEYWORD); + } else if (s[0] == 'p') { + sc.ChangeState(SCE_CSOUND_PARAM); + } else if (s[0] == 'a') { + sc.ChangeState(SCE_CSOUND_ARATE_VAR); + } else if (s[0] == 'k') { + sc.ChangeState(SCE_CSOUND_KRATE_VAR); + } else if (s[0] == 'i') { // covers both i-rate variables and i-statements + sc.ChangeState(SCE_CSOUND_IRATE_VAR); + } else if (s[0] == 'g') { + sc.ChangeState(SCE_CSOUND_GLOBAL_VAR); + } + sc.SetState(SCE_CSOUND_DEFAULT); + } + } + else if (sc.state == SCE_CSOUND_COMMENT ) { + if (sc.atLineEnd) { + sc.SetState(SCE_CSOUND_DEFAULT); + } + } + else if ((sc.state == SCE_CSOUND_ARATE_VAR) || + (sc.state == SCE_CSOUND_KRATE_VAR) || + (sc.state == SCE_CSOUND_IRATE_VAR)) { + if (!IsAWordChar(sc.ch)) { + sc.SetState(SCE_CSOUND_DEFAULT); + } + } + + // Determine if a new state should be entered. + if (sc.state == SCE_CSOUND_DEFAULT) { + if (sc.ch == ';'){ + sc.SetState(SCE_CSOUND_COMMENT); + } else if (isdigit(sc.ch) || (sc.ch == '.' && isdigit(sc.chNext))) { + sc.SetState(SCE_CSOUND_NUMBER); + } else if (IsAWordStart(sc.ch)) { + sc.SetState(SCE_CSOUND_IDENTIFIER); + } else if (IsCsoundOperator(static_cast(sc.ch))) { + sc.SetState(SCE_CSOUND_OPERATOR); + } else if (sc.ch == 'p') { + sc.SetState(SCE_CSOUND_PARAM); + } else if (sc.ch == 'a') { + sc.SetState(SCE_CSOUND_ARATE_VAR); + } else if (sc.ch == 'k') { + sc.SetState(SCE_CSOUND_KRATE_VAR); + } else if (sc.ch == 'i') { // covers both i-rate variables and i-statements + sc.SetState(SCE_CSOUND_IRATE_VAR); + } else if (sc.ch == 'g') { + sc.SetState(SCE_CSOUND_GLOBAL_VAR); + } + } + } + sc.Complete(); +} + +static void FoldCsoundInstruments(Sci_PositionU startPos, Sci_Position length, int /* initStyle */, WordList *[], + Accessor &styler) { + Sci_PositionU lengthDoc = startPos + length; + int visibleChars = 0; + Sci_Position lineCurrent = styler.GetLine(startPos); + int levelPrev = styler.LevelAt(lineCurrent) & SC_FOLDLEVELNUMBERMASK; + int levelCurrent = levelPrev; + char chNext = styler[startPos]; + int stylePrev = 0; + int styleNext = styler.StyleAt(startPos); + for (Sci_PositionU i = startPos; i < lengthDoc; i++) { + char ch = chNext; + chNext = styler.SafeGetCharAt(i + 1); + int style = styleNext; + styleNext = styler.StyleAt(i + 1); + bool atEOL = (ch == '\r' && chNext != '\n') || (ch == '\n'); + if ((stylePrev != SCE_CSOUND_OPCODE) && (style == SCE_CSOUND_OPCODE)) { + char s[20]; + unsigned int j = 0; + while ((j < (sizeof(s) - 1)) && (iswordchar(styler[i + j]))) { + s[j] = styler[i + j]; + j++; + } + s[j] = '\0'; + + if (strcmp(s, "instr") == 0) + levelCurrent++; + if (strcmp(s, "endin") == 0) + levelCurrent--; + } + + if (atEOL) { + int lev = levelPrev; + if (visibleChars == 0) + lev |= SC_FOLDLEVELWHITEFLAG; + if ((levelCurrent > levelPrev) && (visibleChars > 0)) + lev |= SC_FOLDLEVELHEADERFLAG; + if (lev != styler.LevelAt(lineCurrent)) { + styler.SetLevel(lineCurrent, lev); + } + lineCurrent++; + levelPrev = levelCurrent; + visibleChars = 0; + } + if (!isspacechar(ch)) + visibleChars++; + stylePrev = style; + } + // Fill in the real level of the next line, keeping the current flags as they will be filled in later + int flagsNext = styler.LevelAt(lineCurrent) & ~SC_FOLDLEVELNUMBERMASK; + styler.SetLevel(lineCurrent, levelPrev | flagsNext); +} + + +static const char * const csoundWordListDesc[] = { + "Opcodes", + "Header Statements", + "User keywords", + 0 +}; + +LexerModule lmCsound(SCLEX_CSOUND, ColouriseCsoundDoc, "csound", FoldCsoundInstruments, csoundWordListDesc); diff --git a/libs/qscintilla_2.14.1/scintilla/lexers/LexD.cpp b/libs/qscintilla_2.14.1/scintilla/lexers/LexD.cpp new file mode 100644 index 000000000..acbf462ed --- /dev/null +++ b/libs/qscintilla_2.14.1/scintilla/lexers/LexD.cpp @@ -0,0 +1,567 @@ +/** @file LexD.cxx + ** Lexer for D. + ** + ** Copyright (c) 2006 by Waldemar Augustyn + ** Converted to lexer object and added further folding features/properties by "Udo Lechner" + **/ +// Copyright 1998-2005 by Neil Hodgson +// The License.txt file describes the conditions under which this software may be distributed. + +#include +#include +#include +#include +#include +#include + +#include +#include + +#include "ILexer.h" +#include "Scintilla.h" +#include "SciLexer.h" + +#include "WordList.h" +#include "LexAccessor.h" +#include "StyleContext.h" +#include "CharacterSet.h" +#include "LexerModule.h" +#include "OptionSet.h" +#include "DefaultLexer.h" + +using namespace Scintilla; + +/* Nested comments require keeping the value of the nesting level for every + position in the document. But since scintilla always styles line by line, + we only need to store one value per line. The non-negative number indicates + nesting level at the end of the line. +*/ + +// Underscore, letter, digit and universal alphas from C99 Appendix D. + +static bool IsWordStart(int ch) { + return (IsASCII(ch) && (isalpha(ch) || ch == '_')) || !IsASCII(ch); +} + +static bool IsWord(int ch) { + return (IsASCII(ch) && (isalnum(ch) || ch == '_')) || !IsASCII(ch); +} + +static bool IsDoxygen(int ch) { + if (IsASCII(ch) && islower(ch)) + return true; + if (ch == '$' || ch == '@' || ch == '\\' || + ch == '&' || ch == '#' || ch == '<' || ch == '>' || + ch == '{' || ch == '}' || ch == '[' || ch == ']') + return true; + return false; +} + +static bool IsStringSuffix(int ch) { + return ch == 'c' || ch == 'w' || ch == 'd'; +} + +static bool IsStreamCommentStyle(int style) { + return style == SCE_D_COMMENT || + style == SCE_D_COMMENTDOC || + style == SCE_D_COMMENTDOCKEYWORD || + style == SCE_D_COMMENTDOCKEYWORDERROR; +} + +// An individual named option for use in an OptionSet + +// Options used for LexerD +struct OptionsD { + bool fold; + bool foldSyntaxBased; + bool foldComment; + bool foldCommentMultiline; + bool foldCommentExplicit; + std::string foldExplicitStart; + std::string foldExplicitEnd; + bool foldExplicitAnywhere; + bool foldCompact; + int foldAtElseInt; + bool foldAtElse; + OptionsD() { + fold = false; + foldSyntaxBased = true; + foldComment = false; + foldCommentMultiline = true; + foldCommentExplicit = true; + foldExplicitStart = ""; + foldExplicitEnd = ""; + foldExplicitAnywhere = false; + foldCompact = true; + foldAtElseInt = -1; + foldAtElse = false; + } +}; + +static const char * const dWordLists[] = { + "Primary keywords and identifiers", + "Secondary keywords and identifiers", + "Documentation comment keywords", + "Type definitions and aliases", + "Keywords 5", + "Keywords 6", + "Keywords 7", + 0, + }; + +struct OptionSetD : public OptionSet { + OptionSetD() { + DefineProperty("fold", &OptionsD::fold); + + DefineProperty("fold.d.syntax.based", &OptionsD::foldSyntaxBased, + "Set this property to 0 to disable syntax based folding."); + + DefineProperty("fold.comment", &OptionsD::foldComment); + + DefineProperty("fold.d.comment.multiline", &OptionsD::foldCommentMultiline, + "Set this property to 0 to disable folding multi-line comments when fold.comment=1."); + + DefineProperty("fold.d.comment.explicit", &OptionsD::foldCommentExplicit, + "Set this property to 0 to disable folding explicit fold points when fold.comment=1."); + + DefineProperty("fold.d.explicit.start", &OptionsD::foldExplicitStart, + "The string to use for explicit fold start points, replacing the standard //{."); + + DefineProperty("fold.d.explicit.end", &OptionsD::foldExplicitEnd, + "The string to use for explicit fold end points, replacing the standard //}."); + + DefineProperty("fold.d.explicit.anywhere", &OptionsD::foldExplicitAnywhere, + "Set this property to 1 to enable explicit fold points anywhere, not just in line comments."); + + DefineProperty("fold.compact", &OptionsD::foldCompact); + + DefineProperty("lexer.d.fold.at.else", &OptionsD::foldAtElseInt, + "This option enables D folding on a \"} else {\" line of an if statement."); + + DefineProperty("fold.at.else", &OptionsD::foldAtElse); + + DefineWordListSets(dWordLists); + } +}; + +class LexerD : public DefaultLexer { + bool caseSensitive; + WordList keywords; + WordList keywords2; + WordList keywords3; + WordList keywords4; + WordList keywords5; + WordList keywords6; + WordList keywords7; + OptionsD options; + OptionSetD osD; +public: + LexerD(bool caseSensitive_) : + caseSensitive(caseSensitive_) { + } + virtual ~LexerD() { + } + void SCI_METHOD Release() override { + delete this; + } + int SCI_METHOD Version() const override { + return lvOriginal; + } + const char * SCI_METHOD PropertyNames() override { + return osD.PropertyNames(); + } + int SCI_METHOD PropertyType(const char *name) override { + return osD.PropertyType(name); + } + const char * SCI_METHOD DescribeProperty(const char *name) override { + return osD.DescribeProperty(name); + } + Sci_Position SCI_METHOD PropertySet(const char *key, const char *val) override; + const char * SCI_METHOD DescribeWordListSets() override { + return osD.DescribeWordListSets(); + } + Sci_Position SCI_METHOD WordListSet(int n, const char *wl) override; + void SCI_METHOD Lex(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess) override; + void SCI_METHOD Fold(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess) override; + + void * SCI_METHOD PrivateCall(int, void *) override { + return 0; + } + + static ILexer *LexerFactoryD() { + return new LexerD(true); + } + static ILexer *LexerFactoryDInsensitive() { + return new LexerD(false); + } +}; + +Sci_Position SCI_METHOD LexerD::PropertySet(const char *key, const char *val) { + if (osD.PropertySet(&options, key, val)) { + return 0; + } + return -1; +} + +Sci_Position SCI_METHOD LexerD::WordListSet(int n, const char *wl) { + WordList *wordListN = 0; + switch (n) { + case 0: + wordListN = &keywords; + break; + case 1: + wordListN = &keywords2; + break; + case 2: + wordListN = &keywords3; + break; + case 3: + wordListN = &keywords4; + break; + case 4: + wordListN = &keywords5; + break; + case 5: + wordListN = &keywords6; + break; + case 6: + wordListN = &keywords7; + break; + } + Sci_Position firstModification = -1; + if (wordListN) { + WordList wlNew; + wlNew.Set(wl); + if (*wordListN != wlNew) { + wordListN->Set(wl); + firstModification = 0; + } + } + return firstModification; +} + +void SCI_METHOD LexerD::Lex(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess) { + LexAccessor styler(pAccess); + + int styleBeforeDCKeyword = SCE_D_DEFAULT; + + StyleContext sc(startPos, length, initStyle, styler); + + Sci_Position curLine = styler.GetLine(startPos); + int curNcLevel = curLine > 0? styler.GetLineState(curLine-1): 0; + bool numFloat = false; // Float literals have '+' and '-' signs + bool numHex = false; + + for (; sc.More(); sc.Forward()) { + + if (sc.atLineStart) { + curLine = styler.GetLine(sc.currentPos); + styler.SetLineState(curLine, curNcLevel); + } + + // Determine if the current state should terminate. + switch (sc.state) { + case SCE_D_OPERATOR: + sc.SetState(SCE_D_DEFAULT); + break; + case SCE_D_NUMBER: + // We accept almost anything because of hex. and number suffixes + if (IsASCII(sc.ch) && (isalnum(sc.ch) || sc.ch == '_')) { + continue; + } else if (sc.ch == '.' && sc.chNext != '.' && !numFloat) { + // Don't parse 0..2 as number. + numFloat=true; + continue; + } else if ( ( sc.ch == '-' || sc.ch == '+' ) && ( /*sign and*/ + ( !numHex && ( sc.chPrev == 'e' || sc.chPrev == 'E' ) ) || /*decimal or*/ + ( sc.chPrev == 'p' || sc.chPrev == 'P' ) ) ) { /*hex*/ + // Parse exponent sign in float literals: 2e+10 0x2e+10 + continue; + } else { + sc.SetState(SCE_D_DEFAULT); + } + break; + case SCE_D_IDENTIFIER: + if (!IsWord(sc.ch)) { + char s[1000]; + if (caseSensitive) { + sc.GetCurrent(s, sizeof(s)); + } else { + sc.GetCurrentLowered(s, sizeof(s)); + } + if (keywords.InList(s)) { + sc.ChangeState(SCE_D_WORD); + } else if (keywords2.InList(s)) { + sc.ChangeState(SCE_D_WORD2); + } else if (keywords4.InList(s)) { + sc.ChangeState(SCE_D_TYPEDEF); + } else if (keywords5.InList(s)) { + sc.ChangeState(SCE_D_WORD5); + } else if (keywords6.InList(s)) { + sc.ChangeState(SCE_D_WORD6); + } else if (keywords7.InList(s)) { + sc.ChangeState(SCE_D_WORD7); + } + sc.SetState(SCE_D_DEFAULT); + } + break; + case SCE_D_COMMENT: + if (sc.Match('*', '/')) { + sc.Forward(); + sc.ForwardSetState(SCE_D_DEFAULT); + } + break; + case SCE_D_COMMENTDOC: + if (sc.Match('*', '/')) { + sc.Forward(); + sc.ForwardSetState(SCE_D_DEFAULT); + } else if (sc.ch == '@' || sc.ch == '\\') { // JavaDoc and Doxygen support + // Verify that we have the conditions to mark a comment-doc-keyword + if ((IsASpace(sc.chPrev) || sc.chPrev == '*') && (!IsASpace(sc.chNext))) { + styleBeforeDCKeyword = SCE_D_COMMENTDOC; + sc.SetState(SCE_D_COMMENTDOCKEYWORD); + } + } + break; + case SCE_D_COMMENTLINE: + if (sc.atLineStart) { + sc.SetState(SCE_D_DEFAULT); + } + break; + case SCE_D_COMMENTLINEDOC: + if (sc.atLineStart) { + sc.SetState(SCE_D_DEFAULT); + } else if (sc.ch == '@' || sc.ch == '\\') { // JavaDoc and Doxygen support + // Verify that we have the conditions to mark a comment-doc-keyword + if ((IsASpace(sc.chPrev) || sc.chPrev == '/' || sc.chPrev == '!') && (!IsASpace(sc.chNext))) { + styleBeforeDCKeyword = SCE_D_COMMENTLINEDOC; + sc.SetState(SCE_D_COMMENTDOCKEYWORD); + } + } + break; + case SCE_D_COMMENTDOCKEYWORD: + if ((styleBeforeDCKeyword == SCE_D_COMMENTDOC) && sc.Match('*', '/')) { + sc.ChangeState(SCE_D_COMMENTDOCKEYWORDERROR); + sc.Forward(); + sc.ForwardSetState(SCE_D_DEFAULT); + } else if (!IsDoxygen(sc.ch)) { + char s[100]; + if (caseSensitive) { + sc.GetCurrent(s, sizeof(s)); + } else { + sc.GetCurrentLowered(s, sizeof(s)); + } + if (!IsASpace(sc.ch) || !keywords3.InList(s + 1)) { + sc.ChangeState(SCE_D_COMMENTDOCKEYWORDERROR); + } + sc.SetState(styleBeforeDCKeyword); + } + break; + case SCE_D_COMMENTNESTED: + if (sc.Match('+', '/')) { + if (curNcLevel > 0) + curNcLevel -= 1; + curLine = styler.GetLine(sc.currentPos); + styler.SetLineState(curLine, curNcLevel); + sc.Forward(); + if (curNcLevel == 0) { + sc.ForwardSetState(SCE_D_DEFAULT); + } + } else if (sc.Match('/','+')) { + curNcLevel += 1; + curLine = styler.GetLine(sc.currentPos); + styler.SetLineState(curLine, curNcLevel); + sc.Forward(); + } + break; + case SCE_D_STRING: + if (sc.ch == '\\') { + if (sc.chNext == '"' || sc.chNext == '\\') { + sc.Forward(); + } + } else if (sc.ch == '"') { + if(IsStringSuffix(sc.chNext)) + sc.Forward(); + sc.ForwardSetState(SCE_D_DEFAULT); + } + break; + case SCE_D_CHARACTER: + if (sc.atLineEnd) { + sc.ChangeState(SCE_D_STRINGEOL); + } else if (sc.ch == '\\') { + if (sc.chNext == '\'' || sc.chNext == '\\') { + sc.Forward(); + } + } else if (sc.ch == '\'') { + // Char has no suffixes + sc.ForwardSetState(SCE_D_DEFAULT); + } + break; + case SCE_D_STRINGEOL: + if (sc.atLineStart) { + sc.SetState(SCE_D_DEFAULT); + } + break; + case SCE_D_STRINGB: + if (sc.ch == '`') { + if(IsStringSuffix(sc.chNext)) + sc.Forward(); + sc.ForwardSetState(SCE_D_DEFAULT); + } + break; + case SCE_D_STRINGR: + if (sc.ch == '"') { + if(IsStringSuffix(sc.chNext)) + sc.Forward(); + sc.ForwardSetState(SCE_D_DEFAULT); + } + break; + } + + // Determine if a new state should be entered. + if (sc.state == SCE_D_DEFAULT) { + if (IsADigit(sc.ch) || (sc.ch == '.' && IsADigit(sc.chNext))) { + sc.SetState(SCE_D_NUMBER); + numFloat = sc.ch == '.'; + // Remember hex literal + numHex = sc.ch == '0' && ( sc.chNext == 'x' || sc.chNext == 'X' ); + } else if ( (sc.ch == 'r' || sc.ch == 'x' || sc.ch == 'q') + && sc.chNext == '"' ) { + // Limited support for hex and delimited strings: parse as r"" + sc.SetState(SCE_D_STRINGR); + sc.Forward(); + } else if (IsWordStart(sc.ch) || sc.ch == '$') { + sc.SetState(SCE_D_IDENTIFIER); + } else if (sc.Match('/','+')) { + curNcLevel += 1; + curLine = styler.GetLine(sc.currentPos); + styler.SetLineState(curLine, curNcLevel); + sc.SetState(SCE_D_COMMENTNESTED); + sc.Forward(); + } else if (sc.Match('/', '*')) { + if (sc.Match("/**") || sc.Match("/*!")) { // Support of Qt/Doxygen doc. style + sc.SetState(SCE_D_COMMENTDOC); + } else { + sc.SetState(SCE_D_COMMENT); + } + sc.Forward(); // Eat the * so it isn't used for the end of the comment + } else if (sc.Match('/', '/')) { + if ((sc.Match("///") && !sc.Match("////")) || sc.Match("//!")) + // Support of Qt/Doxygen doc. style + sc.SetState(SCE_D_COMMENTLINEDOC); + else + sc.SetState(SCE_D_COMMENTLINE); + } else if (sc.ch == '"') { + sc.SetState(SCE_D_STRING); + } else if (sc.ch == '\'') { + sc.SetState(SCE_D_CHARACTER); + } else if (sc.ch == '`') { + sc.SetState(SCE_D_STRINGB); + } else if (isoperator(static_cast(sc.ch))) { + sc.SetState(SCE_D_OPERATOR); + if (sc.ch == '.' && sc.chNext == '.') sc.Forward(); // Range operator + } + } + } + sc.Complete(); +} + +// Store both the current line's fold level and the next lines in the +// level store to make it easy to pick up with each increment +// and to make it possible to fiddle the current level for "} else {". + +void SCI_METHOD LexerD::Fold(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess) { + + if (!options.fold) + return; + + LexAccessor styler(pAccess); + + Sci_PositionU endPos = startPos + length; + int visibleChars = 0; + Sci_Position lineCurrent = styler.GetLine(startPos); + int levelCurrent = SC_FOLDLEVELBASE; + if (lineCurrent > 0) + levelCurrent = styler.LevelAt(lineCurrent-1) >> 16; + int levelMinCurrent = levelCurrent; + int levelNext = levelCurrent; + char chNext = styler[startPos]; + int styleNext = styler.StyleAt(startPos); + int style = initStyle; + bool foldAtElse = options.foldAtElseInt >= 0 ? options.foldAtElseInt != 0 : options.foldAtElse; + const bool userDefinedFoldMarkers = !options.foldExplicitStart.empty() && !options.foldExplicitEnd.empty(); + for (Sci_PositionU i = startPos; i < endPos; i++) { + char ch = chNext; + chNext = styler.SafeGetCharAt(i + 1); + int stylePrev = style; + style = styleNext; + styleNext = styler.StyleAt(i + 1); + bool atEOL = (ch == '\r' && chNext != '\n') || (ch == '\n'); + if (options.foldComment && options.foldCommentMultiline && IsStreamCommentStyle(style)) { + if (!IsStreamCommentStyle(stylePrev)) { + levelNext++; + } else if (!IsStreamCommentStyle(styleNext) && !atEOL) { + // Comments don't end at end of line and the next character may be unstyled. + levelNext--; + } + } + if (options.foldComment && options.foldCommentExplicit && ((style == SCE_D_COMMENTLINE) || options.foldExplicitAnywhere)) { + if (userDefinedFoldMarkers) { + if (styler.Match(i, options.foldExplicitStart.c_str())) { + levelNext++; + } else if (styler.Match(i, options.foldExplicitEnd.c_str())) { + levelNext--; + } + } else { + if ((ch == '/') && (chNext == '/')) { + char chNext2 = styler.SafeGetCharAt(i + 2); + if (chNext2 == '{') { + levelNext++; + } else if (chNext2 == '}') { + levelNext--; + } + } + } + } + if (options.foldSyntaxBased && (style == SCE_D_OPERATOR)) { + if (ch == '{') { + // Measure the minimum before a '{' to allow + // folding on "} else {" + if (levelMinCurrent > levelNext) { + levelMinCurrent = levelNext; + } + levelNext++; + } else if (ch == '}') { + levelNext--; + } + } + if (atEOL || (i == endPos-1)) { + if (options.foldComment && options.foldCommentMultiline) { // Handle nested comments + int nc; + nc = styler.GetLineState(lineCurrent); + nc -= lineCurrent>0? styler.GetLineState(lineCurrent-1): 0; + levelNext += nc; + } + int levelUse = levelCurrent; + if (options.foldSyntaxBased && foldAtElse) { + levelUse = levelMinCurrent; + } + int lev = levelUse | levelNext << 16; + if (visibleChars == 0 && options.foldCompact) + lev |= SC_FOLDLEVELWHITEFLAG; + if (levelUse < levelNext) + lev |= SC_FOLDLEVELHEADERFLAG; + if (lev != styler.LevelAt(lineCurrent)) { + styler.SetLevel(lineCurrent, lev); + } + lineCurrent++; + levelCurrent = levelNext; + levelMinCurrent = levelCurrent; + visibleChars = 0; + } + if (!IsASpace(ch)) + visibleChars++; + } +} + +LexerModule lmD(SCLEX_D, LexerD::LexerFactoryD, "d", dWordLists); diff --git a/libs/qscintilla_2.14.1/scintilla/lexers/LexDMAP.cpp b/libs/qscintilla_2.14.1/scintilla/lexers/LexDMAP.cpp new file mode 100644 index 000000000..91b10c29b --- /dev/null +++ b/libs/qscintilla_2.14.1/scintilla/lexers/LexDMAP.cpp @@ -0,0 +1,226 @@ +// Scintilla source code edit control +/** @file LexDMAP.cxx + ** Lexer for MSC Nastran DMAP. + ** Written by Mark Robinson, based on the Fortran lexer by Chuan-jian Shen, Last changed Aug. 2013 + **/ +// Copyright 1998-2001 by Neil Hodgson +// The License.txt file describes the conditions under which this software may be distributed. +/***************************************/ +#include +#include +#include +#include +#include +#include +/***************************************/ +#include "ILexer.h" +#include "Scintilla.h" +#include "SciLexer.h" + +#include "WordList.h" +#include "LexAccessor.h" +#include "Accessor.h" +#include "StyleContext.h" +#include "CharacterSet.h" +#include "LexerModule.h" +/***************************************/ + +using namespace Scintilla; + +/***********************************************/ +static inline bool IsAWordChar(const int ch) { + return (ch < 0x80) && (isalnum(ch) || ch == '_' || ch == '%'); +} +/**********************************************/ +static inline bool IsAWordStart(const int ch) { + return (ch < 0x80) && (isalnum(ch)); +} +/***************************************/ +static void ColouriseDMAPDoc(Sci_PositionU startPos, Sci_Position length, int initStyle, + WordList *keywordlists[], Accessor &styler) { + WordList &keywords = *keywordlists[0]; + WordList &keywords2 = *keywordlists[1]; + WordList &keywords3 = *keywordlists[2]; + /***************************************/ + Sci_Position posLineStart = 0, numNonBlank = 0; + Sci_Position endPos = startPos + length; + /***************************************/ + // backtrack to the nearest keyword + while ((startPos > 1) && (styler.StyleAt(startPos) != SCE_DMAP_WORD)) { + startPos--; + } + startPos = styler.LineStart(styler.GetLine(startPos)); + initStyle = styler.StyleAt(startPos - 1); + StyleContext sc(startPos, endPos-startPos, initStyle, styler); + /***************************************/ + for (; sc.More(); sc.Forward()) { + // remember the start position of the line + if (sc.atLineStart) { + posLineStart = sc.currentPos; + numNonBlank = 0; + sc.SetState(SCE_DMAP_DEFAULT); + } + if (!IsASpaceOrTab(sc.ch)) numNonBlank ++; + /***********************************************/ + // Handle data appearing after column 72; it is ignored + Sci_Position toLineStart = sc.currentPos - posLineStart; + if (toLineStart >= 72 || sc.ch == '$') { + sc.SetState(SCE_DMAP_COMMENT); + while (!sc.atLineEnd && sc.More()) sc.Forward(); // Until line end + continue; + } + /***************************************/ + // Determine if the current state should terminate. + if (sc.state == SCE_DMAP_OPERATOR) { + sc.SetState(SCE_DMAP_DEFAULT); + } else if (sc.state == SCE_DMAP_NUMBER) { + if (!(IsAWordChar(sc.ch) || sc.ch=='\'' || sc.ch=='\"' || sc.ch=='.')) { + sc.SetState(SCE_DMAP_DEFAULT); + } + } else if (sc.state == SCE_DMAP_IDENTIFIER) { + if (!IsAWordChar(sc.ch) || (sc.ch == '%')) { + char s[100]; + sc.GetCurrentLowered(s, sizeof(s)); + if (keywords.InList(s)) { + sc.ChangeState(SCE_DMAP_WORD); + } else if (keywords2.InList(s)) { + sc.ChangeState(SCE_DMAP_WORD2); + } else if (keywords3.InList(s)) { + sc.ChangeState(SCE_DMAP_WORD3); + } + sc.SetState(SCE_DMAP_DEFAULT); + } + } else if (sc.state == SCE_DMAP_COMMENT) { + if (sc.ch == '\r' || sc.ch == '\n') { + sc.SetState(SCE_DMAP_DEFAULT); + } + } else if (sc.state == SCE_DMAP_STRING1) { + if (sc.ch == '\'') { + if (sc.chNext == '\'') { + sc.Forward(); + } else { + sc.ForwardSetState(SCE_DMAP_DEFAULT); + } + } else if (sc.atLineEnd) { + sc.ChangeState(SCE_DMAP_STRINGEOL); + sc.ForwardSetState(SCE_DMAP_DEFAULT); + } + } else if (sc.state == SCE_DMAP_STRING2) { + if (sc.atLineEnd) { + sc.ChangeState(SCE_DMAP_STRINGEOL); + sc.ForwardSetState(SCE_DMAP_DEFAULT); + } else if (sc.ch == '\"') { + if (sc.chNext == '\"') { + sc.Forward(); + } else { + sc.ForwardSetState(SCE_DMAP_DEFAULT); + } + } + } + /***************************************/ + // Determine if a new state should be entered. + if (sc.state == SCE_DMAP_DEFAULT) { + if (sc.ch == '$') { + sc.SetState(SCE_DMAP_COMMENT); + } else if (IsADigit(sc.ch) || (sc.ch == '.' && IsADigit(sc.chNext)) || (sc.ch == '-' && IsADigit(sc.chNext))) { + sc.SetState(SCE_F_NUMBER); + } else if (IsAWordStart(sc.ch)) { + sc.SetState(SCE_DMAP_IDENTIFIER); + } else if (sc.ch == '\"') { + sc.SetState(SCE_DMAP_STRING2); + } else if (sc.ch == '\'') { + sc.SetState(SCE_DMAP_STRING1); + } else if (isoperator(static_cast(sc.ch))) { + sc.SetState(SCE_DMAP_OPERATOR); + } + } + } + sc.Complete(); +} +/***************************************/ +// To determine the folding level depending on keywords +static int classifyFoldPointDMAP(const char* s, const char* prevWord) { + int lev = 0; + if ((strcmp(prevWord, "else") == 0 && strcmp(s, "if") == 0) || strcmp(s, "enddo") == 0 || strcmp(s, "endif") == 0) { + lev = -1; + } else if ((strcmp(prevWord, "do") == 0 && strcmp(s, "while") == 0) || strcmp(s, "then") == 0) { + lev = 1; + } + return lev; +} +// Folding the code +static void FoldDMAPDoc(Sci_PositionU startPos, Sci_Position length, int initStyle, + WordList *[], Accessor &styler) { + // + // bool foldComment = styler.GetPropertyInt("fold.comment") != 0; + // Do not know how to fold the comment at the moment. + // + bool foldCompact = styler.GetPropertyInt("fold.compact", 1) != 0; + Sci_PositionU endPos = startPos + length; + int visibleChars = 0; + Sci_Position lineCurrent = styler.GetLine(startPos); + int levelPrev = styler.LevelAt(lineCurrent) & SC_FOLDLEVELNUMBERMASK; + int levelCurrent = levelPrev; + char chNext = styler[startPos]; + int styleNext = styler.StyleAt(startPos); + int style = initStyle; + /***************************************/ + Sci_Position lastStart = 0; + char prevWord[32] = ""; + /***************************************/ + for (Sci_PositionU i = startPos; i < endPos; i++) { + char ch = chNext; + chNext = styler.SafeGetCharAt(i + 1); + int stylePrev = style; + style = styleNext; + styleNext = styler.StyleAt(i + 1); + bool atEOL = (ch == '\r' && chNext != '\n') || (ch == '\n'); + // + if ((stylePrev == SCE_DMAP_DEFAULT || stylePrev == SCE_DMAP_OPERATOR || stylePrev == SCE_DMAP_COMMENT) && (style == SCE_DMAP_WORD)) { + // Store last word and label start point. + lastStart = i; + } + /***************************************/ + if (style == SCE_DMAP_WORD) { + if(iswordchar(ch) && !iswordchar(chNext)) { + char s[32]; + Sci_PositionU k; + for(k=0; (k<31 ) && (k(tolower(styler[lastStart+k])); + } + s[k] = '\0'; + levelCurrent += classifyFoldPointDMAP(s, prevWord); + strcpy(prevWord, s); + } + } + if (atEOL) { + int lev = levelPrev; + if (visibleChars == 0 && foldCompact) + lev |= SC_FOLDLEVELWHITEFLAG; + if ((levelCurrent > levelPrev) && (visibleChars > 0)) + lev |= SC_FOLDLEVELHEADERFLAG; + if (lev != styler.LevelAt(lineCurrent)) { + styler.SetLevel(lineCurrent, lev); + } + lineCurrent++; + levelPrev = levelCurrent; + visibleChars = 0; + strcpy(prevWord, ""); + } + /***************************************/ + if (!isspacechar(ch)) visibleChars++; + } + /***************************************/ + // Fill in the real level of the next line, keeping the current flags as they will be filled in later + int flagsNext = styler.LevelAt(lineCurrent) & ~SC_FOLDLEVELNUMBERMASK; + styler.SetLevel(lineCurrent, levelPrev | flagsNext); +} +/***************************************/ +static const char * const DMAPWordLists[] = { + "Primary keywords and identifiers", + "Intrinsic functions", + "Extended and user defined functions", + 0, +}; +/***************************************/ +LexerModule lmDMAP(SCLEX_DMAP, ColouriseDMAPDoc, "DMAP", FoldDMAPDoc, DMAPWordLists); diff --git a/libs/qscintilla_2.14.1/scintilla/lexers/LexDMIS.cpp b/libs/qscintilla_2.14.1/scintilla/lexers/LexDMIS.cpp new file mode 100644 index 000000000..fa024e9e7 --- /dev/null +++ b/libs/qscintilla_2.14.1/scintilla/lexers/LexDMIS.cpp @@ -0,0 +1,354 @@ +// Scintilla source code edit control +/** @file LexDMIS.cxx + ** Lexer for DMIS. + **/ +// Copyright 1998-2005 by Neil Hodgson +// Copyright 2013-2014 by Andreas Tscharner +// The License.txt file describes the conditions under which this software may be distributed. + + +#include +#include +#include +#include + +#include "ILexer.h" +#include "Scintilla.h" +#include "SciLexer.h" + +#include "WordList.h" +#include "LexAccessor.h" +#include "StyleContext.h" +#include "CharacterSet.h" +#include "LexerModule.h" +#include "DefaultLexer.h" + +using namespace Scintilla; + + +static const char *const DMISWordListDesc[] = { + "DMIS Major Words", + "DMIS Minor Words", + "Unsupported DMIS Major Words", + "Unsupported DMIS Minor Words", + "Keywords for code folding start", + "Corresponding keywords for code folding end", + 0 +}; + + +class LexerDMIS : public DefaultLexer +{ + private: + char *m_wordListSets; + WordList m_majorWords; + WordList m_minorWords; + WordList m_unsupportedMajor; + WordList m_unsupportedMinor; + WordList m_codeFoldingStart; + WordList m_codeFoldingEnd; + + char * SCI_METHOD UpperCase(char *item); + void SCI_METHOD InitWordListSets(void); + + public: + LexerDMIS(void); + virtual ~LexerDMIS(void); + + int SCI_METHOD Version() const override { + return lvOriginal; + } + + void SCI_METHOD Release() override { + delete this; + } + + const char * SCI_METHOD PropertyNames() override { + return NULL; + } + + int SCI_METHOD PropertyType(const char *) override { + return -1; + } + + const char * SCI_METHOD DescribeProperty(const char *) override { + return NULL; + } + + Sci_Position SCI_METHOD PropertySet(const char *, const char *) override { + return -1; + } + + Sci_Position SCI_METHOD WordListSet(int n, const char *wl) override; + + void * SCI_METHOD PrivateCall(int, void *) override { + return NULL; + } + + static ILexer *LexerFactoryDMIS() { + return new LexerDMIS; + } + + const char * SCI_METHOD DescribeWordListSets() override; + void SCI_METHOD Lex(Sci_PositionU startPos, Sci_Position lengthDoc, int initStyle, IDocument *pAccess) override; + void SCI_METHOD Fold(Sci_PositionU startPos, Sci_Position lengthDoc, int initStyle, IDocument *pAccess) override; +}; + + +char * SCI_METHOD LexerDMIS::UpperCase(char *item) +{ + char *itemStart; + + + itemStart = item; + while (item && *item) { + *item = toupper(*item); + item++; + }; + return itemStart; +} + +void SCI_METHOD LexerDMIS::InitWordListSets(void) +{ + size_t totalLen = 0; + + + for (int i=0; DMISWordListDesc[i]; i++) { + totalLen += strlen(DMISWordListDesc[i]); + totalLen++; + }; + + totalLen++; + this->m_wordListSets = new char[totalLen]; + memset(this->m_wordListSets, 0, totalLen); + + for (int i=0; DMISWordListDesc[i]; i++) { + strcat(this->m_wordListSets, DMISWordListDesc[i]); + strcat(this->m_wordListSets, "\n"); + }; +} + + +LexerDMIS::LexerDMIS(void) { + this->InitWordListSets(); + + this->m_majorWords.Clear(); + this->m_minorWords.Clear(); + this->m_unsupportedMajor.Clear(); + this->m_unsupportedMinor.Clear(); + this->m_codeFoldingStart.Clear(); + this->m_codeFoldingEnd.Clear(); +} + +LexerDMIS::~LexerDMIS(void) { + delete[] this->m_wordListSets; +} + +Sci_Position SCI_METHOD LexerDMIS::WordListSet(int n, const char *wl) +{ + switch (n) { + case 0: + this->m_majorWords.Clear(); + this->m_majorWords.Set(wl); + break; + case 1: + this->m_minorWords.Clear(); + this->m_minorWords.Set(wl); + break; + case 2: + this->m_unsupportedMajor.Clear(); + this->m_unsupportedMajor.Set(wl); + break; + case 3: + this->m_unsupportedMinor.Clear(); + this->m_unsupportedMinor.Set(wl); + break; + case 4: + this->m_codeFoldingStart.Clear(); + this->m_codeFoldingStart.Set(wl); + break; + case 5: + this->m_codeFoldingEnd.Clear(); + this->m_codeFoldingEnd.Set(wl); + break; + default: + return -1; + break; + } + + return 0; +} + +const char * SCI_METHOD LexerDMIS::DescribeWordListSets() +{ + return this->m_wordListSets; +} + +void SCI_METHOD LexerDMIS::Lex(Sci_PositionU startPos, Sci_Position lengthDoc, int initStyle, IDocument *pAccess) +{ + const Sci_PositionU MAX_STR_LEN = 100; + + LexAccessor styler(pAccess); + StyleContext scCTX(startPos, lengthDoc, initStyle, styler); + CharacterSet setDMISNumber(CharacterSet::setDigits, ".-+eE"); + CharacterSet setDMISWordStart(CharacterSet::setAlpha, "-234", 0x80, true); + CharacterSet setDMISWord(CharacterSet::setAlpha); + + + bool isIFLine = false; + + for (; scCTX.More(); scCTX.Forward()) { + if (scCTX.atLineEnd) { + isIFLine = false; + }; + + switch (scCTX.state) { + case SCE_DMIS_DEFAULT: + if (scCTX.Match('$', '$')) { + scCTX.SetState(SCE_DMIS_COMMENT); + scCTX.Forward(); + }; + if (scCTX.Match('\'')) { + scCTX.SetState(SCE_DMIS_STRING); + }; + if (IsADigit(scCTX.ch) || ((scCTX.Match('-') || scCTX.Match('+')) && IsADigit(scCTX.chNext))) { + scCTX.SetState(SCE_DMIS_NUMBER); + break; + }; + if (setDMISWordStart.Contains(scCTX.ch)) { + scCTX.SetState(SCE_DMIS_KEYWORD); + }; + if (scCTX.Match('(') && (!isIFLine)) { + scCTX.SetState(SCE_DMIS_LABEL); + }; + break; + + case SCE_DMIS_COMMENT: + if (scCTX.atLineEnd) { + scCTX.SetState(SCE_DMIS_DEFAULT); + }; + break; + + case SCE_DMIS_STRING: + if (scCTX.Match('\'')) { + scCTX.SetState(SCE_DMIS_DEFAULT); + }; + break; + + case SCE_DMIS_NUMBER: + if (!setDMISNumber.Contains(scCTX.ch)) { + scCTX.SetState(SCE_DMIS_DEFAULT); + }; + break; + + case SCE_DMIS_KEYWORD: + if (!setDMISWord.Contains(scCTX.ch)) { + char tmpStr[MAX_STR_LEN]; + memset(tmpStr, 0, MAX_STR_LEN*sizeof(char)); + scCTX.GetCurrent(tmpStr, (MAX_STR_LEN-1)); + strncpy(tmpStr, this->UpperCase(tmpStr), (MAX_STR_LEN-1)); + + if (this->m_minorWords.InList(tmpStr)) { + scCTX.ChangeState(SCE_DMIS_MINORWORD); + }; + if (this->m_majorWords.InList(tmpStr)) { + isIFLine = (strcmp(tmpStr, "IF") == 0); + scCTX.ChangeState(SCE_DMIS_MAJORWORD); + }; + if (this->m_unsupportedMajor.InList(tmpStr)) { + scCTX.ChangeState(SCE_DMIS_UNSUPPORTED_MAJOR); + }; + if (this->m_unsupportedMinor.InList(tmpStr)) { + scCTX.ChangeState(SCE_DMIS_UNSUPPORTED_MINOR); + }; + + if (scCTX.Match('(') && (!isIFLine)) { + scCTX.SetState(SCE_DMIS_LABEL); + } else { + scCTX.SetState(SCE_DMIS_DEFAULT); + }; + }; + break; + + case SCE_DMIS_LABEL: + if (scCTX.Match(')')) { + scCTX.SetState(SCE_DMIS_DEFAULT); + }; + break; + }; + }; + scCTX.Complete(); +} + +void SCI_METHOD LexerDMIS::Fold(Sci_PositionU startPos, Sci_Position lengthDoc, int, IDocument *pAccess) +{ + const int MAX_STR_LEN = 100; + + LexAccessor styler(pAccess); + Sci_PositionU endPos = startPos + lengthDoc; + char chNext = styler[startPos]; + Sci_Position lineCurrent = styler.GetLine(startPos); + int levelPrev = styler.LevelAt(lineCurrent) & SC_FOLDLEVELNUMBERMASK; + int levelCurrent = levelPrev; + int strPos = 0; + bool foldWordPossible = false; + CharacterSet setDMISFoldWord(CharacterSet::setAlpha); + char *tmpStr; + + + tmpStr = new char[MAX_STR_LEN]; + memset(tmpStr, 0, MAX_STR_LEN*sizeof(char)); + + for (Sci_PositionU i=startPos; i= (MAX_STR_LEN-1)) { + strPos = MAX_STR_LEN-1; + }; + + int style = styler.StyleAt(i); + bool noFoldPos = ((style == SCE_DMIS_COMMENT) || (style == SCE_DMIS_STRING)); + + if (foldWordPossible) { + if (setDMISFoldWord.Contains(ch)) { + tmpStr[strPos++] = ch; + } else { + tmpStr = this->UpperCase(tmpStr); + if (this->m_codeFoldingStart.InList(tmpStr) && (!noFoldPos)) { + levelCurrent++; + }; + if (this->m_codeFoldingEnd.InList(tmpStr) && (!noFoldPos)) { + levelCurrent--; + }; + memset(tmpStr, 0, MAX_STR_LEN*sizeof(char)); + strPos = 0; + foldWordPossible = false; + }; + } else { + if (setDMISFoldWord.Contains(ch)) { + tmpStr[strPos++] = ch; + foldWordPossible = true; + }; + }; + + if (atEOL || (i == (endPos-1))) { + int lev = levelPrev; + + if (levelCurrent > levelPrev) { + lev |= SC_FOLDLEVELHEADERFLAG; + }; + if (lev != styler.LevelAt(lineCurrent)) { + styler.SetLevel(lineCurrent, lev); + }; + lineCurrent++; + levelPrev = levelCurrent; + }; + }; + delete[] tmpStr; +} + + +LexerModule lmDMIS(SCLEX_DMIS, LexerDMIS::LexerFactoryDMIS, "DMIS", DMISWordListDesc); diff --git a/libs/qscintilla_2.14.1/scintilla/lexers/LexDiff.cpp b/libs/qscintilla_2.14.1/scintilla/lexers/LexDiff.cpp new file mode 100644 index 000000000..dd008c5cb --- /dev/null +++ b/libs/qscintilla_2.14.1/scintilla/lexers/LexDiff.cpp @@ -0,0 +1,161 @@ +// Scintilla source code edit control +/** @file LexDiff.cxx + ** Lexer for diff results. + **/ +// Copyright 1998-2001 by Neil Hodgson +// The License.txt file describes the conditions under which this software may be distributed. + +#include +#include +#include +#include +#include +#include + +#include "ILexer.h" +#include "Scintilla.h" +#include "SciLexer.h" + +#include "WordList.h" +#include "LexAccessor.h" +#include "Accessor.h" +#include "StyleContext.h" +#include "CharacterSet.h" +#include "LexerModule.h" + +using namespace Scintilla; + +static inline bool AtEOL(Accessor &styler, Sci_PositionU i) { + return (styler[i] == '\n') || + ((styler[i] == '\r') && (styler.SafeGetCharAt(i + 1) != '\n')); +} + +#define DIFF_BUFFER_START_SIZE 16 +// Note that ColouriseDiffLine analyzes only the first DIFF_BUFFER_START_SIZE +// characters of each line to classify the line. + +static void ColouriseDiffLine(char *lineBuffer, Sci_Position endLine, Accessor &styler) { + // It is needed to remember the current state to recognize starting + // comment lines before the first "diff " or "--- ". If a real + // difference starts then each line starting with ' ' is a whitespace + // otherwise it is considered a comment (Only in..., Binary file...) + if (0 == strncmp(lineBuffer, "diff ", 5)) { + styler.ColourTo(endLine, SCE_DIFF_COMMAND); + } else if (0 == strncmp(lineBuffer, "Index: ", 7)) { // For subversion's diff + styler.ColourTo(endLine, SCE_DIFF_COMMAND); + } else if (0 == strncmp(lineBuffer, "---", 3) && lineBuffer[3] != '-') { + // In a context diff, --- appears in both the header and the position markers + if (lineBuffer[3] == ' ' && atoi(lineBuffer + 4) && !strchr(lineBuffer, '/')) + styler.ColourTo(endLine, SCE_DIFF_POSITION); + else if (lineBuffer[3] == '\r' || lineBuffer[3] == '\n') + styler.ColourTo(endLine, SCE_DIFF_POSITION); + else if (lineBuffer[3] == ' ') + styler.ColourTo(endLine, SCE_DIFF_HEADER); + else + styler.ColourTo(endLine, SCE_DIFF_DELETED); + } else if (0 == strncmp(lineBuffer, "+++ ", 4)) { + // I don't know of any diff where "+++ " is a position marker, but for + // consistency, do the same as with "--- " and "*** ". + if (atoi(lineBuffer+4) && !strchr(lineBuffer, '/')) + styler.ColourTo(endLine, SCE_DIFF_POSITION); + else + styler.ColourTo(endLine, SCE_DIFF_HEADER); + } else if (0 == strncmp(lineBuffer, "====", 4)) { // For p4's diff + styler.ColourTo(endLine, SCE_DIFF_HEADER); + } else if (0 == strncmp(lineBuffer, "***", 3)) { + // In a context diff, *** appears in both the header and the position markers. + // Also ******** is a chunk header, but here it's treated as part of the + // position marker since there is no separate style for a chunk header. + if (lineBuffer[3] == ' ' && atoi(lineBuffer+4) && !strchr(lineBuffer, '/')) + styler.ColourTo(endLine, SCE_DIFF_POSITION); + else if (lineBuffer[3] == '*') + styler.ColourTo(endLine, SCE_DIFF_POSITION); + else + styler.ColourTo(endLine, SCE_DIFF_HEADER); + } else if (0 == strncmp(lineBuffer, "? ", 2)) { // For difflib + styler.ColourTo(endLine, SCE_DIFF_HEADER); + } else if (lineBuffer[0] == '@') { + styler.ColourTo(endLine, SCE_DIFF_POSITION); + } else if (lineBuffer[0] >= '0' && lineBuffer[0] <= '9') { + styler.ColourTo(endLine, SCE_DIFF_POSITION); + } else if (0 == strncmp(lineBuffer, "++", 2)) { + styler.ColourTo(endLine, SCE_DIFF_PATCH_ADD); + } else if (0 == strncmp(lineBuffer, "+-", 2)) { + styler.ColourTo(endLine, SCE_DIFF_PATCH_DELETE); + } else if (0 == strncmp(lineBuffer, "-+", 2)) { + styler.ColourTo(endLine, SCE_DIFF_REMOVED_PATCH_ADD); + } else if (0 == strncmp(lineBuffer, "--", 2)) { + styler.ColourTo(endLine, SCE_DIFF_REMOVED_PATCH_DELETE); + } else if (lineBuffer[0] == '-' || lineBuffer[0] == '<') { + styler.ColourTo(endLine, SCE_DIFF_DELETED); + } else if (lineBuffer[0] == '+' || lineBuffer[0] == '>') { + styler.ColourTo(endLine, SCE_DIFF_ADDED); + } else if (lineBuffer[0] == '!') { + styler.ColourTo(endLine, SCE_DIFF_CHANGED); + } else if (lineBuffer[0] != ' ') { + styler.ColourTo(endLine, SCE_DIFF_COMMENT); + } else { + styler.ColourTo(endLine, SCE_DIFF_DEFAULT); + } +} + +static void ColouriseDiffDoc(Sci_PositionU startPos, Sci_Position length, int, WordList *[], Accessor &styler) { + char lineBuffer[DIFF_BUFFER_START_SIZE] = ""; + styler.StartAt(startPos); + styler.StartSegment(startPos); + Sci_PositionU linePos = 0; + for (Sci_PositionU i = startPos; i < startPos + length; i++) { + if (AtEOL(styler, i)) { + if (linePos < DIFF_BUFFER_START_SIZE) { + lineBuffer[linePos] = 0; + } + ColouriseDiffLine(lineBuffer, i, styler); + linePos = 0; + } else if (linePos < DIFF_BUFFER_START_SIZE - 1) { + lineBuffer[linePos++] = styler[i]; + } else if (linePos == DIFF_BUFFER_START_SIZE - 1) { + lineBuffer[linePos++] = 0; + } + } + if (linePos > 0) { // Last line does not have ending characters + if (linePos < DIFF_BUFFER_START_SIZE) { + lineBuffer[linePos] = 0; + } + ColouriseDiffLine(lineBuffer, startPos + length - 1, styler); + } +} + +static void FoldDiffDoc(Sci_PositionU startPos, Sci_Position length, int, WordList *[], Accessor &styler) { + Sci_Position curLine = styler.GetLine(startPos); + Sci_Position curLineStart = styler.LineStart(curLine); + int prevLevel = curLine > 0 ? styler.LevelAt(curLine - 1) : SC_FOLDLEVELBASE; + int nextLevel; + + do { + const int lineType = styler.StyleAt(curLineStart); + if (lineType == SCE_DIFF_COMMAND) + nextLevel = SC_FOLDLEVELBASE | SC_FOLDLEVELHEADERFLAG; + else if (lineType == SCE_DIFF_HEADER) + nextLevel = (SC_FOLDLEVELBASE + 1) | SC_FOLDLEVELHEADERFLAG; + else if (lineType == SCE_DIFF_POSITION && styler[curLineStart] != '-') + nextLevel = (SC_FOLDLEVELBASE + 2) | SC_FOLDLEVELHEADERFLAG; + else if (prevLevel & SC_FOLDLEVELHEADERFLAG) + nextLevel = (prevLevel & SC_FOLDLEVELNUMBERMASK) + 1; + else + nextLevel = prevLevel; + + if ((nextLevel & SC_FOLDLEVELHEADERFLAG) && (nextLevel == prevLevel)) + styler.SetLevel(curLine-1, prevLevel & ~SC_FOLDLEVELHEADERFLAG); + + styler.SetLevel(curLine, nextLevel); + prevLevel = nextLevel; + + curLineStart = styler.LineStart(++curLine); + } while (static_cast(startPos)+length > curLineStart); +} + +static const char *const emptyWordListDesc[] = { + 0 +}; + +LexerModule lmDiff(SCLEX_DIFF, ColouriseDiffDoc, "diff", FoldDiffDoc, emptyWordListDesc); diff --git a/libs/qscintilla_2.14.1/scintilla/lexers/LexECL.cpp b/libs/qscintilla_2.14.1/scintilla/lexers/LexECL.cpp new file mode 100644 index 000000000..6c916bce4 --- /dev/null +++ b/libs/qscintilla_2.14.1/scintilla/lexers/LexECL.cpp @@ -0,0 +1,519 @@ +// Scintilla source code edit control +/** @file LexECL.cxx + ** Lexer for ECL. + **/ +// Copyright 1998-2001 by Neil Hodgson +// The License.txt file describes the conditions under which this software may be distributed. + +#include +#include +#include +#include +#include +#include + +#ifdef _MSC_VER +#pragma warning(disable: 4786) +#endif +#ifdef __BORLANDC__ +// Borland C++ displays warnings in vector header without this +#pragma option -w-ccc -w-rch +#endif + +#include +#include +#include +#include + +#include "ILexer.h" +#include "Scintilla.h" +#include "SciLexer.h" + +#include "PropSetSimple.h" +#include "WordList.h" +#include "LexAccessor.h" +#include "Accessor.h" +#include "StyleContext.h" +#include "CharacterSet.h" +#include "LexerModule.h" +#include "OptionSet.h" + +#define SET_LOWER "abcdefghijklmnopqrstuvwxyz" +#define SET_UPPER "ABCDEFGHIJKLMNOPQRSTUVWXYZ" +#define SET_DIGITS "0123456789" + +using namespace Scintilla; + +static bool IsSpaceEquiv(int state) { + switch (state) { + case SCE_ECL_DEFAULT: + case SCE_ECL_COMMENT: + case SCE_ECL_COMMENTLINE: + case SCE_ECL_COMMENTLINEDOC: + case SCE_ECL_COMMENTDOCKEYWORD: + case SCE_ECL_COMMENTDOCKEYWORDERROR: + case SCE_ECL_COMMENTDOC: + return true; + + default: + return false; + } +} + +static void ColouriseEclDoc(Sci_PositionU startPos, Sci_Position length, int initStyle, WordList *keywordlists[], + Accessor &styler) { + WordList &keywords0 = *keywordlists[0]; + WordList &keywords1 = *keywordlists[1]; + WordList &keywords2 = *keywordlists[2]; + WordList &keywords3 = *keywordlists[3]; //Value Types + WordList &keywords4 = *keywordlists[4]; + WordList &keywords5 = *keywordlists[5]; + WordList &keywords6 = *keywordlists[6]; //Javadoc Tags + WordList cplusplus; + cplusplus.Set("beginc endc"); + + bool stylingWithinPreprocessor = false; + + CharacterSet setOKBeforeRE(CharacterSet::setNone, "(=,"); + CharacterSet setDoxygen(CharacterSet::setLower, "$@\\&<>#{}[]"); + CharacterSet setWordStart(CharacterSet::setAlpha, "_", 0x80, true); + CharacterSet setWord(CharacterSet::setAlphaNum, "._", 0x80, true); + CharacterSet setQualified(CharacterSet::setNone, "uUxX"); + + int chPrevNonWhite = ' '; + int visibleChars = 0; + bool lastWordWasUUID = false; + int styleBeforeDCKeyword = SCE_ECL_DEFAULT; + bool continuationLine = false; + + if (initStyle == SCE_ECL_PREPROCESSOR) { + // Set continuationLine if last character of previous line is '\' + Sci_Position lineCurrent = styler.GetLine(startPos); + if (lineCurrent > 0) { + int chBack = styler.SafeGetCharAt(startPos-1, 0); + int chBack2 = styler.SafeGetCharAt(startPos-2, 0); + int lineEndChar = '!'; + if (chBack2 == '\r' && chBack == '\n') { + lineEndChar = styler.SafeGetCharAt(startPos-3, 0); + } else if (chBack == '\n' || chBack == '\r') { + lineEndChar = chBack2; + } + continuationLine = lineEndChar == '\\'; + } + } + + // look back to set chPrevNonWhite properly for better regex colouring + if (startPos > 0) { + Sci_Position back = startPos; + while (--back && IsSpaceEquiv(styler.StyleAt(back))) + ; + if (styler.StyleAt(back) == SCE_ECL_OPERATOR) { + chPrevNonWhite = styler.SafeGetCharAt(back); + } + } + + StyleContext sc(startPos, length, initStyle, styler); + + for (; sc.More(); sc.Forward()) { + if (sc.atLineStart) { + if (sc.state == SCE_ECL_STRING) { + // Prevent SCE_ECL_STRINGEOL from leaking back to previous line which + // ends with a line continuation by locking in the state upto this position. + sc.SetState(SCE_ECL_STRING); + } + // Reset states to begining of colourise so no surprises + // if different sets of lines lexed. + visibleChars = 0; + lastWordWasUUID = false; + } + + // Handle line continuation generically. + if (sc.ch == '\\') { + if (sc.chNext == '\n' || sc.chNext == '\r') { + sc.Forward(); + if (sc.ch == '\r' && sc.chNext == '\n') { + sc.Forward(); + } + continuationLine = true; + continue; + } + } + + // Determine if the current state should terminate. + switch (sc.state) { + case SCE_ECL_ADDED: + case SCE_ECL_DELETED: + case SCE_ECL_CHANGED: + case SCE_ECL_MOVED: + if (sc.atLineStart) + sc.SetState(SCE_ECL_DEFAULT); + break; + case SCE_ECL_OPERATOR: + sc.SetState(SCE_ECL_DEFAULT); + break; + case SCE_ECL_NUMBER: + // We accept almost anything because of hex. and number suffixes + if (!setWord.Contains(sc.ch)) { + sc.SetState(SCE_ECL_DEFAULT); + } + break; + case SCE_ECL_IDENTIFIER: + if (!setWord.Contains(sc.ch) || (sc.ch == '.')) { + char s[1000]; + sc.GetCurrentLowered(s, sizeof(s)); + if (keywords0.InList(s)) { + lastWordWasUUID = strcmp(s, "uuid") == 0; + sc.ChangeState(SCE_ECL_WORD0); + } else if (keywords1.InList(s)) { + sc.ChangeState(SCE_ECL_WORD1); + } else if (keywords2.InList(s)) { + sc.ChangeState(SCE_ECL_WORD2); + } else if (keywords4.InList(s)) { + sc.ChangeState(SCE_ECL_WORD4); + } else if (keywords5.InList(s)) { + sc.ChangeState(SCE_ECL_WORD5); + } + else //Data types are of from KEYWORD## + { + int i = static_cast(strlen(s)) - 1; + while(i >= 0 && (isdigit(s[i]) || s[i] == '_')) + --i; + + char s2[1000]; + strncpy(s2, s, i + 1); + s2[i + 1] = 0; + if (keywords3.InList(s2)) { + sc.ChangeState(SCE_ECL_WORD3); + } + } + sc.SetState(SCE_ECL_DEFAULT); + } + break; + case SCE_ECL_PREPROCESSOR: + if (sc.atLineStart && !continuationLine) { + sc.SetState(SCE_ECL_DEFAULT); + } else if (stylingWithinPreprocessor) { + if (IsASpace(sc.ch)) { + sc.SetState(SCE_ECL_DEFAULT); + } + } else { + if (sc.Match('/', '*') || sc.Match('/', '/')) { + sc.SetState(SCE_ECL_DEFAULT); + } + } + break; + case SCE_ECL_COMMENT: + if (sc.Match('*', '/')) { + sc.Forward(); + sc.ForwardSetState(SCE_ECL_DEFAULT); + } + break; + case SCE_ECL_COMMENTDOC: + if (sc.Match('*', '/')) { + sc.Forward(); + sc.ForwardSetState(SCE_ECL_DEFAULT); + } else if (sc.ch == '@' || sc.ch == '\\') { // JavaDoc and Doxygen support + // Verify that we have the conditions to mark a comment-doc-keyword + if ((IsASpace(sc.chPrev) || sc.chPrev == '*') && (!IsASpace(sc.chNext))) { + styleBeforeDCKeyword = SCE_ECL_COMMENTDOC; + sc.SetState(SCE_ECL_COMMENTDOCKEYWORD); + } + } + break; + case SCE_ECL_COMMENTLINE: + if (sc.atLineStart) { + sc.SetState(SCE_ECL_DEFAULT); + } + break; + case SCE_ECL_COMMENTLINEDOC: + if (sc.atLineStart) { + sc.SetState(SCE_ECL_DEFAULT); + } else if (sc.ch == '@' || sc.ch == '\\') { // JavaDoc and Doxygen support + // Verify that we have the conditions to mark a comment-doc-keyword + if ((IsASpace(sc.chPrev) || sc.chPrev == '/' || sc.chPrev == '!') && (!IsASpace(sc.chNext))) { + styleBeforeDCKeyword = SCE_ECL_COMMENTLINEDOC; + sc.SetState(SCE_ECL_COMMENTDOCKEYWORD); + } + } + break; + case SCE_ECL_COMMENTDOCKEYWORD: + if ((styleBeforeDCKeyword == SCE_ECL_COMMENTDOC) && sc.Match('*', '/')) { + sc.ChangeState(SCE_ECL_COMMENTDOCKEYWORDERROR); + sc.Forward(); + sc.ForwardSetState(SCE_ECL_DEFAULT); + } else if (!setDoxygen.Contains(sc.ch)) { + char s[1000]; + sc.GetCurrentLowered(s, sizeof(s)); + if (!IsASpace(sc.ch) || !keywords6.InList(s+1)) { + sc.ChangeState(SCE_ECL_COMMENTDOCKEYWORDERROR); + } + sc.SetState(styleBeforeDCKeyword); + } + break; + case SCE_ECL_STRING: + if (sc.atLineEnd) { + sc.ChangeState(SCE_ECL_STRINGEOL); + } else if (sc.ch == '\\') { + if (sc.chNext == '\"' || sc.chNext == '\'' || sc.chNext == '\\') { + sc.Forward(); + } + } else if (sc.ch == '\"') { + sc.ForwardSetState(SCE_ECL_DEFAULT); + } + break; + case SCE_ECL_CHARACTER: + if (sc.atLineEnd) { + sc.ChangeState(SCE_ECL_STRINGEOL); + } else if (sc.ch == '\\') { + if (sc.chNext == '\"' || sc.chNext == '\'' || sc.chNext == '\\') { + sc.Forward(); + } + } else if (sc.ch == '\'') { + sc.ForwardSetState(SCE_ECL_DEFAULT); + } + break; + case SCE_ECL_REGEX: + if (sc.atLineStart) { + sc.SetState(SCE_ECL_DEFAULT); + } else if (sc.ch == '/') { + sc.Forward(); + while ((sc.ch < 0x80) && islower(sc.ch)) + sc.Forward(); // gobble regex flags + sc.SetState(SCE_ECL_DEFAULT); + } else if (sc.ch == '\\') { + // Gobble up the quoted character + if (sc.chNext == '\\' || sc.chNext == '/') { + sc.Forward(); + } + } + break; + case SCE_ECL_STRINGEOL: + if (sc.atLineStart) { + sc.SetState(SCE_ECL_DEFAULT); + } + break; + case SCE_ECL_VERBATIM: + if (sc.ch == '\"') { + if (sc.chNext == '\"') { + sc.Forward(); + } else { + sc.ForwardSetState(SCE_ECL_DEFAULT); + } + } + break; + case SCE_ECL_UUID: + if (sc.ch == '\r' || sc.ch == '\n' || sc.ch == ')') { + sc.SetState(SCE_ECL_DEFAULT); + } + break; + } + + // Determine if a new state should be entered. + Sci_Position lineCurrent = styler.GetLine(sc.currentPos); + int lineState = styler.GetLineState(lineCurrent); + if (sc.state == SCE_ECL_DEFAULT) { + if (lineState) { + sc.SetState(lineState); + } + else if (sc.Match('@', '\"')) { + sc.SetState(SCE_ECL_VERBATIM); + sc.Forward(); + } else if (setQualified.Contains(sc.ch) && sc.chNext == '\'') { + sc.SetState(SCE_ECL_CHARACTER); + sc.Forward(); + } else if (IsADigit(sc.ch) || (sc.ch == '.' && IsADigit(sc.chNext))) { + if (lastWordWasUUID) { + sc.SetState(SCE_ECL_UUID); + lastWordWasUUID = false; + } else { + sc.SetState(SCE_ECL_NUMBER); + } + } else if (setWordStart.Contains(sc.ch) || (sc.ch == '@')) { + if (lastWordWasUUID) { + sc.SetState(SCE_ECL_UUID); + lastWordWasUUID = false; + } else { + sc.SetState(SCE_ECL_IDENTIFIER); + } + } else if (sc.Match('/', '*')) { + if (sc.Match("/**") || sc.Match("/*!")) { // Support of Qt/Doxygen doc. style + sc.SetState(SCE_ECL_COMMENTDOC); + } else { + sc.SetState(SCE_ECL_COMMENT); + } + sc.Forward(); // Eat the * so it isn't used for the end of the comment + } else if (sc.Match('/', '/')) { + if ((sc.Match("///") && !sc.Match("////")) || sc.Match("//!")) + // Support of Qt/Doxygen doc. style + sc.SetState(SCE_ECL_COMMENTLINEDOC); + else + sc.SetState(SCE_ECL_COMMENTLINE); + } else if (sc.ch == '/' && setOKBeforeRE.Contains(chPrevNonWhite)) { + sc.SetState(SCE_ECL_REGEX); // JavaScript's RegEx +// } else if (sc.ch == '\"') { +// sc.SetState(SCE_ECL_STRING); + } else if (sc.ch == '\'') { + sc.SetState(SCE_ECL_CHARACTER); + } else if (sc.ch == '#' && visibleChars == 0) { + // Preprocessor commands are alone on their line + sc.SetState(SCE_ECL_PREPROCESSOR); + // Skip whitespace between # and preprocessor word + do { + sc.Forward(); + } while ((sc.ch == ' ' || sc.ch == '\t') && sc.More()); + if (sc.atLineEnd) { + sc.SetState(SCE_ECL_DEFAULT); + } + } else if (isoperator(static_cast(sc.ch))) { + sc.SetState(SCE_ECL_OPERATOR); + } + } + + if (!IsASpace(sc.ch) && !IsSpaceEquiv(sc.state)) { + chPrevNonWhite = sc.ch; + visibleChars++; + } + continuationLine = false; + } + sc.Complete(); + +} + +static bool IsStreamCommentStyle(int style) { + return style == SCE_ECL_COMMENT || + style == SCE_ECL_COMMENTDOC || + style == SCE_ECL_COMMENTDOCKEYWORD || + style == SCE_ECL_COMMENTDOCKEYWORDERROR; +} + +static bool MatchNoCase(Accessor & styler, Sci_PositionU & pos, const char *s) { + Sci_Position i=0; + for (; *s; i++) { + char compare_char = tolower(*s); + char styler_char = tolower(styler.SafeGetCharAt(pos+i)); + if (compare_char != styler_char) + return false; + s++; + } + pos+=i-1; + return true; +} + + +// Store both the current line's fold level and the next lines in the +// level store to make it easy to pick up with each increment +// and to make it possible to fiddle the current level for "} else {". +static void FoldEclDoc(Sci_PositionU startPos, Sci_Position length, int initStyle, + WordList *[], Accessor &styler) { + bool foldComment = true; + bool foldPreprocessor = true; + bool foldCompact = true; + bool foldAtElse = true; + Sci_PositionU endPos = startPos + length; + int visibleChars = 0; + Sci_Position lineCurrent = styler.GetLine(startPos); + int levelCurrent = SC_FOLDLEVELBASE; + if (lineCurrent > 0) + levelCurrent = styler.LevelAt(lineCurrent-1) >> 16; + int levelMinCurrent = levelCurrent; + int levelNext = levelCurrent; + char chNext = styler[startPos]; + int styleNext = styler.StyleAt(startPos); + int style = initStyle; + for (Sci_PositionU i = startPos; i < endPos; i++) { + char ch = chNext; + chNext = styler.SafeGetCharAt(i + 1); + int stylePrev = style; + style = styleNext; + styleNext = styler.StyleAt(i + 1); + bool atEOL = (ch == '\r' && chNext != '\n') || (ch == '\n'); + if (foldComment && IsStreamCommentStyle(style)) { + if (!IsStreamCommentStyle(stylePrev) && (stylePrev != SCE_ECL_COMMENTLINEDOC)) { + levelNext++; + } else if (!IsStreamCommentStyle(styleNext) && (styleNext != SCE_ECL_COMMENTLINEDOC) && !atEOL) { + // Comments don't end at end of line and the next character may be unstyled. + levelNext--; + } + } + if (foldComment && (style == SCE_ECL_COMMENTLINE)) { + if ((ch == '/') && (chNext == '/')) { + char chNext2 = styler.SafeGetCharAt(i + 2); + if (chNext2 == '{') { + levelNext++; + } else if (chNext2 == '}') { + levelNext--; + } + } + } + if (foldPreprocessor && (style == SCE_ECL_PREPROCESSOR)) { + if (ch == '#') { + Sci_PositionU j = i + 1; + while ((j < endPos) && IsASpaceOrTab(styler.SafeGetCharAt(j))) { + j++; + } + if (MatchNoCase(styler, j, "region") || MatchNoCase(styler, j, "if")) { + levelNext++; + } else if (MatchNoCase(styler, j, "endregion") || MatchNoCase(styler, j, "end")) { + levelNext--; + } + } + } + if (style == SCE_ECL_OPERATOR) { + if (ch == '{') { + // Measure the minimum before a '{' to allow + // folding on "} else {" + if (levelMinCurrent > levelNext) { + levelMinCurrent = levelNext; + } + levelNext++; + } else if (ch == '}') { + levelNext--; + } + } + if (style == SCE_ECL_WORD2) { + if (MatchNoCase(styler, i, "record") || MatchNoCase(styler, i, "transform") || MatchNoCase(styler, i, "type") || MatchNoCase(styler, i, "function") || + MatchNoCase(styler, i, "module") || MatchNoCase(styler, i, "service") || MatchNoCase(styler, i, "interface") || MatchNoCase(styler, i, "ifblock") || + MatchNoCase(styler, i, "macro") || MatchNoCase(styler, i, "beginc++")) { + levelNext++; + } else if (MatchNoCase(styler, i, "endmacro") || MatchNoCase(styler, i, "endc++") || MatchNoCase(styler, i, "end")) { + levelNext--; + } + } + if (atEOL || (i == endPos-1)) { + int levelUse = levelCurrent; + if (foldAtElse) { + levelUse = levelMinCurrent; + } + int lev = levelUse | levelNext << 16; + if (visibleChars == 0 && foldCompact) + lev |= SC_FOLDLEVELWHITEFLAG; + if (levelUse < levelNext) + lev |= SC_FOLDLEVELHEADERFLAG; + if (lev != styler.LevelAt(lineCurrent)) { + styler.SetLevel(lineCurrent, lev); + } + lineCurrent++; + levelCurrent = levelNext; + levelMinCurrent = levelCurrent; + if (atEOL && (i == static_cast(styler.Length()-1))) { + // There is an empty line at end of file so give it same level and empty + styler.SetLevel(lineCurrent, (levelCurrent | levelCurrent << 16) | SC_FOLDLEVELWHITEFLAG); + } + visibleChars = 0; + } + if (!IsASpace(ch)) + visibleChars++; + } +} + +static const char * const EclWordListDesc[] = { + "Keywords", + 0 +}; + +LexerModule lmECL( + SCLEX_ECL, + ColouriseEclDoc, + "ecl", + FoldEclDoc, + EclWordListDesc); diff --git a/libs/qscintilla_2.14.1/scintilla/lexers/LexEDIFACT.cpp b/libs/qscintilla_2.14.1/scintilla/lexers/LexEDIFACT.cpp new file mode 100644 index 000000000..6da0759a0 --- /dev/null +++ b/libs/qscintilla_2.14.1/scintilla/lexers/LexEDIFACT.cpp @@ -0,0 +1,336 @@ +// Scintilla Lexer for EDIFACT +// Written by Iain Clarke, IMCSoft & Inobiz AB. +// EDIFACT documented here: https://www.unece.org/cefact/edifact/welcome.html +// and more readably here: https://en.wikipedia.org/wiki/EDIFACT +// This code is subject to the same license terms as the rest of the scintilla project: +// The License.txt file describes the conditions under which this software may be distributed. +// + +// Header order must match order in scripts/HeaderOrder.txt +#include +#include +#include +#include + +#include "ILexer.h" +#include "Scintilla.h" +#include "SciLexer.h" + +#include "LexAccessor.h" +#include "LexerModule.h" +#include "DefaultLexer.h" + +using namespace Scintilla; + +class LexerEDIFACT : public DefaultLexer +{ +public: + LexerEDIFACT(); + virtual ~LexerEDIFACT() {} // virtual destructor, as we inherit from ILexer + + static ILexer *Factory() { + return new LexerEDIFACT; + } + + int SCI_METHOD Version() const override + { + return lvOriginal; + } + void SCI_METHOD Release() override + { + delete this; + } + + const char * SCI_METHOD PropertyNames() override + { + return "fold\nlexer.edifact.highlight.un.all"; + } + int SCI_METHOD PropertyType(const char *) override + { + return SC_TYPE_BOOLEAN; // Only one property! + } + const char * SCI_METHOD DescribeProperty(const char *name) override + { + if (!strcmp(name, "fold")) + return "Whether to apply folding to document or not"; + if (!strcmp(name, "lexer.edifact.highlight.un.all")) + return "Whether to apply UN* highlighting to all UN segments, or just to UNH"; + return NULL; + } + + Sci_Position SCI_METHOD PropertySet(const char *key, const char *val) override + { + if (!strcmp(key, "fold")) + { + m_bFold = strcmp(val, "0") ? true : false; + return 0; + } + if (!strcmp(key, "lexer.edifact.highlight.un.all")) // GetProperty + { + m_bHighlightAllUN = strcmp(val, "0") ? true : false; + return 0; + } + return -1; + } + const char * SCI_METHOD DescribeWordListSets() override + { + return NULL; + } + Sci_Position SCI_METHOD WordListSet(int, const char *) override + { + return -1; + } + void SCI_METHOD Lex(Sci_PositionU startPos, Sci_Position lengthDoc, int initStyle, IDocument *pAccess) override; + void SCI_METHOD Fold(Sci_PositionU startPos, Sci_Position lengthDoc, int initStyle, IDocument *pAccess) override; + void * SCI_METHOD PrivateCall(int, void *) override + { + return NULL; + } + +protected: + Sci_Position InitialiseFromUNA(IDocument *pAccess, Sci_PositionU MaxLength); + Sci_Position FindPreviousEnd(IDocument *pAccess, Sci_Position startPos) const; + Sci_Position ForwardPastWhitespace(IDocument *pAccess, Sci_Position startPos, Sci_Position MaxLength) const; + int DetectSegmentHeader(char SegmentHeader[3]) const; + + bool m_bFold; + + // property lexer.edifact.highlight.un.all + // Set to 0 to highlight only UNA segments, or 1 to highlight all UNx segments. + bool m_bHighlightAllUN; + + char m_chComponent; + char m_chData; + char m_chDecimal; + char m_chRelease; + char m_chSegment; +}; + +LexerModule lmEDIFACT(SCLEX_EDIFACT, LexerEDIFACT::Factory, "edifact"); + +/////////////////////////////////////////////////////////////////////////////// + + + +/////////////////////////////////////////////////////////////////////////////// + +LexerEDIFACT::LexerEDIFACT() +{ + m_bFold = false; + m_bHighlightAllUN = false; + m_chComponent = ':'; + m_chData = '+'; + m_chDecimal = '.'; + m_chRelease = '?'; + m_chSegment = '\''; +} + +void LexerEDIFACT::Lex(Sci_PositionU startPos, Sci_Position lengthDoc, int, IDocument *pAccess) +{ + Sci_PositionU posFinish = startPos + lengthDoc; + InitialiseFromUNA(pAccess, posFinish); + + // Look backwards for a ' or a document beginning + Sci_PositionU posCurrent = FindPreviousEnd(pAccess, startPos); + // And jump past the ' if this was not the beginning of the document + if (posCurrent != 0) + posCurrent++; + + // Style buffer, so we're not issuing loads of notifications + LexAccessor styler (pAccess); + pAccess->StartStyling(posCurrent, '\377'); + styler.StartSegment(posCurrent); + Sci_Position posSegmentStart = -1; + + while ((posCurrent < posFinish) && (posSegmentStart == -1)) + { + posCurrent = ForwardPastWhitespace(pAccess, posCurrent, posFinish); + // Mark whitespace as default + styler.ColourTo(posCurrent - 1, SCE_EDI_DEFAULT); + if (posCurrent >= posFinish) + break; + + // Does is start with 3 charaters? ie, UNH + char SegmentHeader[4] = { 0 }; + pAccess->GetCharRange(SegmentHeader, posCurrent, 3); + + int SegmentStyle = DetectSegmentHeader(SegmentHeader); + if (SegmentStyle == SCE_EDI_BADSEGMENT) + break; + if (SegmentStyle == SCE_EDI_UNA) + { + posCurrent += 9; + styler.ColourTo(posCurrent - 1, SCE_EDI_UNA); // UNA + continue; + } + posSegmentStart = posCurrent; + posCurrent += 3; + + styler.ColourTo(posCurrent - 1, SegmentStyle); // UNH etc + + // Colour in the rest of the segment + for (char c; posCurrent < posFinish; posCurrent++) + { + pAccess->GetCharRange(&c, posCurrent, 1); + + if (c == m_chRelease) // ? escape character, check first, in case of ?' + posCurrent++; + else if (c == m_chSegment) // ' + { + // Make sure the whole segment is on one line. styler won't let us go back in time, so we'll settle for marking the ' as bad. + Sci_Position lineSegmentStart = pAccess->LineFromPosition(posSegmentStart); + Sci_Position lineSegmentEnd = pAccess->LineFromPosition(posCurrent); + if (lineSegmentStart == lineSegmentEnd) + styler.ColourTo(posCurrent, SCE_EDI_SEGMENTEND); + else + styler.ColourTo(posCurrent, SCE_EDI_BADSEGMENT); + posSegmentStart = -1; + posCurrent++; + break; + } + else if (c == m_chComponent) // : + styler.ColourTo(posCurrent, SCE_EDI_SEP_COMPOSITE); + else if (c == m_chData) // + + styler.ColourTo(posCurrent, SCE_EDI_SEP_ELEMENT); + else + styler.ColourTo(posCurrent, SCE_EDI_DEFAULT); + } + } + styler.Flush(); + + if (posSegmentStart == -1) + return; + + pAccess->StartStyling(posSegmentStart, -1); + pAccess->SetStyleFor(posFinish - posSegmentStart, SCE_EDI_BADSEGMENT); +} + +void LexerEDIFACT::Fold(Sci_PositionU startPos, Sci_Position lengthDoc, int, IDocument *pAccess) +{ + if (!m_bFold) + return; + + // Fold at UNx lines. ie, UNx segments = 0, other segments = 1. + // There's no sub folding, so we can be quite simple. + Sci_Position endPos = startPos + lengthDoc; + char SegmentHeader[4] = { 0 }; + + int iIndentPrevious = 0; + Sci_Position lineLast = pAccess->LineFromPosition(endPos); + + for (Sci_Position lineCurrent = pAccess->LineFromPosition(startPos); lineCurrent <= lineLast; lineCurrent++) + { + Sci_Position posLineStart = pAccess->LineStart(lineCurrent); + posLineStart = ForwardPastWhitespace(pAccess, posLineStart, endPos); + Sci_Position lineDataStart = pAccess->LineFromPosition(posLineStart); + // Fill in whitespace lines? + for (; lineCurrent < lineDataStart; lineCurrent++) + pAccess->SetLevel(lineCurrent, SC_FOLDLEVELBASE | SC_FOLDLEVELWHITEFLAG | iIndentPrevious); + pAccess->GetCharRange(SegmentHeader, posLineStart, 3); + //if (DetectSegmentHeader(SegmentHeader) == SCE_EDI_BADSEGMENT) // Abort if this is not a proper segment header + + int level = 0; + if (memcmp(SegmentHeader, "UNH", 3) == 0) // UNH starts blocks + level = SC_FOLDLEVELBASE | SC_FOLDLEVELHEADERFLAG; + // Check for UNA,B and Z. All others are inside messages + else if (!memcmp(SegmentHeader, "UNA", 3) || !memcmp(SegmentHeader, "UNB", 3) || !memcmp(SegmentHeader, "UNZ", 3)) + level = SC_FOLDLEVELBASE; + else + level = SC_FOLDLEVELBASE | 1; + pAccess->SetLevel(lineCurrent, level); + iIndentPrevious = level & SC_FOLDLEVELNUMBERMASK; + } +} + +Sci_Position LexerEDIFACT::InitialiseFromUNA(IDocument *pAccess, Sci_PositionU MaxLength) +{ + MaxLength -= 9; // drop 9 chars, to give us room for UNA:+.? ' + + Sci_PositionU startPos = 0; + startPos += ForwardPastWhitespace(pAccess, 0, MaxLength); + if (startPos < MaxLength) + { + char bufUNA[9]; + pAccess->GetCharRange(bufUNA, startPos, 9); + + // Check it's UNA segment + if (!memcmp(bufUNA, "UNA", 3)) + { + m_chComponent = bufUNA[3]; + m_chData = bufUNA[4]; + m_chDecimal = bufUNA[5]; + m_chRelease = bufUNA[6]; + // bufUNA [7] should be space - reserved. + m_chSegment = bufUNA[8]; + + return 0; // success! + } + } + + // We failed to find a UNA, so drop to defaults + m_chComponent = ':'; + m_chData = '+'; + m_chDecimal = '.'; + m_chRelease = '?'; + m_chSegment = '\''; + + return -1; +} + +Sci_Position LexerEDIFACT::ForwardPastWhitespace(IDocument *pAccess, Sci_Position startPos, Sci_Position MaxLength) const +{ + char c; + + while (startPos < MaxLength) + { + pAccess->GetCharRange(&c, startPos, 1); + switch (c) + { + case '\t': + case '\r': + case '\n': + case ' ': + break; + default: + return startPos; + } + + startPos++; + } + + return MaxLength; +} + +int LexerEDIFACT::DetectSegmentHeader(char SegmentHeader[3]) const +{ + if ( + SegmentHeader[0] < 'A' || SegmentHeader[0] > 'Z' || + SegmentHeader[1] < 'A' || SegmentHeader[1] > 'Z' || + SegmentHeader[2] < 'A' || SegmentHeader[2] > 'Z') + return SCE_EDI_BADSEGMENT; + + if (!memcmp(SegmentHeader, "UNA", 3)) + return SCE_EDI_UNA; + + if (m_bHighlightAllUN && !memcmp(SegmentHeader, "UN", 2)) + return SCE_EDI_UNH; + else if (memcmp(SegmentHeader, "UNH", 3) == 0) + return SCE_EDI_UNH; + + return SCE_EDI_SEGMENTSTART; +} + +// Look backwards for a ' or a document beginning +Sci_Position LexerEDIFACT::FindPreviousEnd(IDocument *pAccess, Sci_Position startPos) const +{ + for (char c; startPos > 0; startPos--) + { + pAccess->GetCharRange(&c, startPos, 1); + if (c == m_chSegment) + return startPos; + } + // We didn't find a ', so just go with the beginning + return 0; +} + + diff --git a/libs/qscintilla_2.14.1/scintilla/lexers/LexEScript.cpp b/libs/qscintilla_2.14.1/scintilla/lexers/LexEScript.cpp new file mode 100644 index 000000000..0cba29858 --- /dev/null +++ b/libs/qscintilla_2.14.1/scintilla/lexers/LexEScript.cpp @@ -0,0 +1,274 @@ +// Scintilla source code edit control +/** @file LexESCRIPT.cxx + ** Lexer for ESCRIPT + **/ +// Copyright 2003 by Patrizio Bekerle (patrizio@bekerle.com) + +#include +#include +#include +#include +#include +#include + +#include "ILexer.h" +#include "Scintilla.h" +#include "SciLexer.h" + +#include "WordList.h" +#include "LexAccessor.h" +#include "Accessor.h" +#include "StyleContext.h" +#include "CharacterSet.h" +#include "LexerModule.h" + +using namespace Scintilla; + + +static inline bool IsAWordChar(const int ch) { + return (ch < 0x80) && (isalnum(ch) || ch == '.' || ch == '_'); +} + +static inline bool IsAWordStart(const int ch) { + return (ch < 0x80) && (isalnum(ch) || ch == '_'); +} + + + +static void ColouriseESCRIPTDoc(Sci_PositionU startPos, Sci_Position length, int initStyle, WordList *keywordlists[], + Accessor &styler) { + + WordList &keywords = *keywordlists[0]; + WordList &keywords2 = *keywordlists[1]; + WordList &keywords3 = *keywordlists[2]; + + // Do not leak onto next line + /*if (initStyle == SCE_ESCRIPT_STRINGEOL) + initStyle = SCE_ESCRIPT_DEFAULT;*/ + + StyleContext sc(startPos, length, initStyle, styler); + + bool caseSensitive = styler.GetPropertyInt("escript.case.sensitive", 0) != 0; + + for (; sc.More(); sc.Forward()) { + + /*if (sc.atLineStart && (sc.state == SCE_ESCRIPT_STRING)) { + // Prevent SCE_ESCRIPT_STRINGEOL from leaking back to previous line + sc.SetState(SCE_ESCRIPT_STRING); + }*/ + + // Handle line continuation generically. + if (sc.ch == '\\') { + if (sc.chNext == '\n' || sc.chNext == '\r') { + sc.Forward(); + if (sc.ch == '\r' && sc.chNext == '\n') { + sc.Forward(); + } + continue; + } + } + + // Determine if the current state should terminate. + if (sc.state == SCE_ESCRIPT_OPERATOR || sc.state == SCE_ESCRIPT_BRACE) { + sc.SetState(SCE_ESCRIPT_DEFAULT); + } else if (sc.state == SCE_ESCRIPT_NUMBER) { + if (!IsADigit(sc.ch) || sc.ch != '.') { + sc.SetState(SCE_ESCRIPT_DEFAULT); + } + } else if (sc.state == SCE_ESCRIPT_IDENTIFIER) { + if (!IsAWordChar(sc.ch) || (sc.ch == '.')) { + char s[100]; + if (caseSensitive) { + sc.GetCurrent(s, sizeof(s)); + } else { + sc.GetCurrentLowered(s, sizeof(s)); + } + +// sc.GetCurrentLowered(s, sizeof(s)); + + if (keywords.InList(s)) { + sc.ChangeState(SCE_ESCRIPT_WORD); + } else if (keywords2.InList(s)) { + sc.ChangeState(SCE_ESCRIPT_WORD2); + } else if (keywords3.InList(s)) { + sc.ChangeState(SCE_ESCRIPT_WORD3); + // sc.state = SCE_ESCRIPT_IDENTIFIER; + } + sc.SetState(SCE_ESCRIPT_DEFAULT); + } + } else if (sc.state == SCE_ESCRIPT_COMMENT) { + if (sc.Match('*', '/')) { + sc.Forward(); + sc.ForwardSetState(SCE_ESCRIPT_DEFAULT); + } + } else if (sc.state == SCE_ESCRIPT_COMMENTDOC) { + if (sc.Match('*', '/')) { + sc.Forward(); + sc.ForwardSetState(SCE_ESCRIPT_DEFAULT); + } + } else if (sc.state == SCE_ESCRIPT_COMMENTLINE) { + if (sc.atLineEnd) { + sc.SetState(SCE_ESCRIPT_DEFAULT); + } + } else if (sc.state == SCE_ESCRIPT_STRING) { + if (sc.ch == '\\') { + if (sc.chNext == '\"' || sc.chNext == '\\') { + sc.Forward(); + } + } else if (sc.ch == '\"') { + sc.ForwardSetState(SCE_ESCRIPT_DEFAULT); + } + } + + // Determine if a new state should be entered. + if (sc.state == SCE_ESCRIPT_DEFAULT) { + if (IsADigit(sc.ch) || (sc.ch == '.' && IsADigit(sc.chNext))) { + sc.SetState(SCE_ESCRIPT_NUMBER); + } else if (IsAWordStart(sc.ch) || (sc.ch == '#')) { + sc.SetState(SCE_ESCRIPT_IDENTIFIER); + } else if (sc.Match('/', '*')) { + sc.SetState(SCE_ESCRIPT_COMMENT); + sc.Forward(); // Eat the * so it isn't used for the end of the comment + } else if (sc.Match('/', '/')) { + sc.SetState(SCE_ESCRIPT_COMMENTLINE); + } else if (sc.ch == '\"') { + sc.SetState(SCE_ESCRIPT_STRING); + //} else if (isoperator(static_cast(sc.ch))) { + } else if (sc.ch == '+' || sc.ch == '-' || sc.ch == '*' || sc.ch == '/' || sc.ch == '=' || sc.ch == '<' || sc.ch == '>' || sc.ch == '&' || sc.ch == '|' || sc.ch == '!' || sc.ch == '?' || sc.ch == ':') { + sc.SetState(SCE_ESCRIPT_OPERATOR); + } else if (sc.ch == '{' || sc.ch == '}') { + sc.SetState(SCE_ESCRIPT_BRACE); + } + } + + } + sc.Complete(); +} + + +static int classifyFoldPointESCRIPT(const char* s, const char* prevWord) { + int lev = 0; + if (strcmp(prevWord, "end") == 0) return lev; + if ((strcmp(prevWord, "else") == 0 && strcmp(s, "if") == 0) || strcmp(s, "elseif") == 0) + return -1; + + if (strcmp(s, "for") == 0 || strcmp(s, "foreach") == 0 + || strcmp(s, "program") == 0 || strcmp(s, "function") == 0 + || strcmp(s, "while") == 0 || strcmp(s, "case") == 0 + || strcmp(s, "if") == 0 ) { + lev = 1; + } else if ( strcmp(s, "endfor") == 0 || strcmp(s, "endforeach") == 0 + || strcmp(s, "endprogram") == 0 || strcmp(s, "endfunction") == 0 + || strcmp(s, "endwhile") == 0 || strcmp(s, "endcase") == 0 + || strcmp(s, "endif") == 0 ) { + lev = -1; + } + + return lev; +} + + +static bool IsStreamCommentStyle(int style) { + return style == SCE_ESCRIPT_COMMENT || + style == SCE_ESCRIPT_COMMENTDOC || + style == SCE_ESCRIPT_COMMENTLINE; +} + +static void FoldESCRIPTDoc(Sci_PositionU startPos, Sci_Position length, int initStyle, WordList *[], Accessor &styler) { + //~ bool foldComment = styler.GetPropertyInt("fold.comment") != 0; + // Do not know how to fold the comment at the moment. + bool foldCompact = styler.GetPropertyInt("fold.compact", 1) != 0; + bool foldComment = true; + Sci_PositionU endPos = startPos + length; + int visibleChars = 0; + Sci_Position lineCurrent = styler.GetLine(startPos); + int levelPrev = styler.LevelAt(lineCurrent) & SC_FOLDLEVELNUMBERMASK; + int levelCurrent = levelPrev; + char chNext = styler[startPos]; + int styleNext = styler.StyleAt(startPos); + int style = initStyle; + + Sci_Position lastStart = 0; + char prevWord[32] = ""; + + for (Sci_PositionU i = startPos; i < endPos; i++) { + char ch = chNext; + chNext = styler.SafeGetCharAt(i + 1); + int stylePrev = style; + style = styleNext; + styleNext = styler.StyleAt(i + 1); + bool atEOL = (ch == '\r' && chNext != '\n') || (ch == '\n'); + + + if (foldComment && IsStreamCommentStyle(style)) { + if (!IsStreamCommentStyle(stylePrev)) { + levelCurrent++; + } else if (!IsStreamCommentStyle(styleNext) && !atEOL) { + // Comments don't end at end of line and the next character may be unstyled. + levelCurrent--; + } + } + + if (foldComment && (style == SCE_ESCRIPT_COMMENTLINE)) { + if ((ch == '/') && (chNext == '/')) { + char chNext2 = styler.SafeGetCharAt(i + 2); + if (chNext2 == '{') { + levelCurrent++; + } else if (chNext2 == '}') { + levelCurrent--; + } + } + } + + if (stylePrev == SCE_ESCRIPT_DEFAULT && style == SCE_ESCRIPT_WORD3) + { + // Store last word start point. + lastStart = i; + } + + if (style == SCE_ESCRIPT_WORD3) { + if(iswordchar(ch) && !iswordchar(chNext)) { + char s[32]; + Sci_PositionU j; + for(j = 0; ( j < 31 ) && ( j < i-lastStart+1 ); j++) { + s[j] = static_cast(tolower(styler[lastStart + j])); + } + s[j] = '\0'; + levelCurrent += classifyFoldPointESCRIPT(s, prevWord); + strcpy(prevWord, s); + } + } + if (atEOL) { + int lev = levelPrev; + if (visibleChars == 0 && foldCompact) + lev |= SC_FOLDLEVELWHITEFLAG; + if ((levelCurrent > levelPrev) && (visibleChars > 0)) + lev |= SC_FOLDLEVELHEADERFLAG; + if (lev != styler.LevelAt(lineCurrent)) { + styler.SetLevel(lineCurrent, lev); + } + lineCurrent++; + levelPrev = levelCurrent; + visibleChars = 0; + strcpy(prevWord, ""); + } + + if (!isspacechar(ch)) + visibleChars++; + } + + // Fill in the real level of the next line, keeping the current flags as they will be filled in later + int flagsNext = styler.LevelAt(lineCurrent) & ~SC_FOLDLEVELNUMBERMASK; + styler.SetLevel(lineCurrent, levelPrev | flagsNext); +} + + + +static const char * const ESCRIPTWordLists[] = { + "Primary keywords and identifiers", + "Intrinsic functions", + "Extended and user defined functions", + 0, +}; + +LexerModule lmESCRIPT(SCLEX_ESCRIPT, ColouriseESCRIPTDoc, "escript", FoldESCRIPTDoc, ESCRIPTWordLists); diff --git a/libs/qscintilla_2.14.1/scintilla/lexers/LexEiffel.cpp b/libs/qscintilla_2.14.1/scintilla/lexers/LexEiffel.cpp new file mode 100644 index 000000000..d1d42a960 --- /dev/null +++ b/libs/qscintilla_2.14.1/scintilla/lexers/LexEiffel.cpp @@ -0,0 +1,239 @@ +// Scintilla source code edit control +/** @file LexEiffel.cxx + ** Lexer for Eiffel. + **/ +// Copyright 1998-2001 by Neil Hodgson +// The License.txt file describes the conditions under which this software may be distributed. + +#include +#include +#include +#include +#include +#include + +#include "ILexer.h" +#include "Scintilla.h" +#include "SciLexer.h" + +#include "WordList.h" +#include "LexAccessor.h" +#include "Accessor.h" +#include "StyleContext.h" +#include "CharacterSet.h" +#include "LexerModule.h" + +using namespace Scintilla; + +static inline bool isEiffelOperator(unsigned int ch) { + // '.' left out as it is used to make up numbers + return ch == '*' || ch == '/' || ch == '\\' || ch == '-' || ch == '+' || + ch == '(' || ch == ')' || ch == '=' || + ch == '{' || ch == '}' || ch == '~' || + ch == '[' || ch == ']' || ch == ';' || + ch == '<' || ch == '>' || ch == ',' || + ch == '.' || ch == '^' || ch == '%' || ch == ':' || + ch == '!' || ch == '@' || ch == '?'; +} + +static inline bool IsAWordChar(unsigned int ch) { + return (ch < 0x80) && (isalnum(ch) || ch == '_'); +} + +static inline bool IsAWordStart(unsigned int ch) { + return (ch < 0x80) && (isalnum(ch) || ch == '_'); +} + +static void ColouriseEiffelDoc(Sci_PositionU startPos, + Sci_Position length, + int initStyle, + WordList *keywordlists[], + Accessor &styler) { + + WordList &keywords = *keywordlists[0]; + + StyleContext sc(startPos, length, initStyle, styler); + + for (; sc.More(); sc.Forward()) { + + if (sc.state == SCE_EIFFEL_STRINGEOL) { + if (sc.ch != '\r' && sc.ch != '\n') { + sc.SetState(SCE_EIFFEL_DEFAULT); + } + } else if (sc.state == SCE_EIFFEL_OPERATOR) { + sc.SetState(SCE_EIFFEL_DEFAULT); + } else if (sc.state == SCE_EIFFEL_WORD) { + if (!IsAWordChar(sc.ch)) { + char s[100]; + sc.GetCurrentLowered(s, sizeof(s)); + if (!keywords.InList(s)) { + sc.ChangeState(SCE_EIFFEL_IDENTIFIER); + } + sc.SetState(SCE_EIFFEL_DEFAULT); + } + } else if (sc.state == SCE_EIFFEL_NUMBER) { + if (!IsAWordChar(sc.ch)) { + sc.SetState(SCE_EIFFEL_DEFAULT); + } + } else if (sc.state == SCE_EIFFEL_COMMENTLINE) { + if (sc.ch == '\r' || sc.ch == '\n') { + sc.SetState(SCE_EIFFEL_DEFAULT); + } + } else if (sc.state == SCE_EIFFEL_STRING) { + if (sc.ch == '%') { + sc.Forward(); + } else if (sc.ch == '\"') { + sc.Forward(); + sc.SetState(SCE_EIFFEL_DEFAULT); + } + } else if (sc.state == SCE_EIFFEL_CHARACTER) { + if (sc.ch == '\r' || sc.ch == '\n') { + sc.SetState(SCE_EIFFEL_STRINGEOL); + } else if (sc.ch == '%') { + sc.Forward(); + } else if (sc.ch == '\'') { + sc.Forward(); + sc.SetState(SCE_EIFFEL_DEFAULT); + } + } + + if (sc.state == SCE_EIFFEL_DEFAULT) { + if (sc.ch == '-' && sc.chNext == '-') { + sc.SetState(SCE_EIFFEL_COMMENTLINE); + } else if (sc.ch == '\"') { + sc.SetState(SCE_EIFFEL_STRING); + } else if (sc.ch == '\'') { + sc.SetState(SCE_EIFFEL_CHARACTER); + } else if (IsADigit(sc.ch) || (sc.ch == '.')) { + sc.SetState(SCE_EIFFEL_NUMBER); + } else if (IsAWordStart(sc.ch)) { + sc.SetState(SCE_EIFFEL_WORD); + } else if (isEiffelOperator(sc.ch)) { + sc.SetState(SCE_EIFFEL_OPERATOR); + } + } + } + sc.Complete(); +} + +static bool IsEiffelComment(Accessor &styler, Sci_Position pos, Sci_Position len) { + return len>1 && styler[pos]=='-' && styler[pos+1]=='-'; +} + +static void FoldEiffelDocIndent(Sci_PositionU startPos, Sci_Position length, int, + WordList *[], Accessor &styler) { + Sci_Position lengthDoc = startPos + length; + + // Backtrack to previous line in case need to fix its fold status + Sci_Position lineCurrent = styler.GetLine(startPos); + if (startPos > 0) { + if (lineCurrent > 0) { + lineCurrent--; + startPos = styler.LineStart(lineCurrent); + } + } + int spaceFlags = 0; + int indentCurrent = styler.IndentAmount(lineCurrent, &spaceFlags, IsEiffelComment); + char chNext = styler[startPos]; + for (Sci_Position i = startPos; i < lengthDoc; i++) { + char ch = chNext; + chNext = styler.SafeGetCharAt(i + 1); + + if ((ch == '\r' && chNext != '\n') || (ch == '\n') || (i == lengthDoc)) { + int lev = indentCurrent; + int indentNext = styler.IndentAmount(lineCurrent + 1, &spaceFlags, IsEiffelComment); + if (!(indentCurrent & SC_FOLDLEVELWHITEFLAG)) { + // Only non whitespace lines can be headers + if ((indentCurrent & SC_FOLDLEVELNUMBERMASK) < (indentNext & SC_FOLDLEVELNUMBERMASK)) { + lev |= SC_FOLDLEVELHEADERFLAG; + } else if (indentNext & SC_FOLDLEVELWHITEFLAG) { + // Line after is blank so check the next - maybe should continue further? + int spaceFlags2 = 0; + int indentNext2 = styler.IndentAmount(lineCurrent + 2, &spaceFlags2, IsEiffelComment); + if ((indentCurrent & SC_FOLDLEVELNUMBERMASK) < (indentNext2 & SC_FOLDLEVELNUMBERMASK)) { + lev |= SC_FOLDLEVELHEADERFLAG; + } + } + } + indentCurrent = indentNext; + styler.SetLevel(lineCurrent, lev); + lineCurrent++; + } + } +} + +static void FoldEiffelDocKeyWords(Sci_PositionU startPos, Sci_Position length, int /* initStyle */, WordList *[], + Accessor &styler) { + Sci_PositionU lengthDoc = startPos + length; + int visibleChars = 0; + Sci_Position lineCurrent = styler.GetLine(startPos); + int levelPrev = styler.LevelAt(lineCurrent) & SC_FOLDLEVELNUMBERMASK; + int levelCurrent = levelPrev; + char chNext = styler[startPos]; + int stylePrev = 0; + int styleNext = styler.StyleAt(startPos); + // lastDeferred should be determined by looking back to last keyword in case + // the "deferred" is on a line before "class" + bool lastDeferred = false; + for (Sci_PositionU i = startPos; i < lengthDoc; i++) { + char ch = chNext; + chNext = styler.SafeGetCharAt(i + 1); + int style = styleNext; + styleNext = styler.StyleAt(i + 1); + bool atEOL = (ch == '\r' && chNext != '\n') || (ch == '\n'); + if ((stylePrev != SCE_EIFFEL_WORD) && (style == SCE_EIFFEL_WORD)) { + char s[20]; + Sci_PositionU j = 0; + while ((j < (sizeof(s) - 1)) && (iswordchar(styler[i + j]))) { + s[j] = styler[i + j]; + j++; + } + s[j] = '\0'; + + if ( + (strcmp(s, "check") == 0) || + (strcmp(s, "debug") == 0) || + (strcmp(s, "deferred") == 0) || + (strcmp(s, "do") == 0) || + (strcmp(s, "from") == 0) || + (strcmp(s, "if") == 0) || + (strcmp(s, "inspect") == 0) || + (strcmp(s, "once") == 0) + ) + levelCurrent++; + if (!lastDeferred && (strcmp(s, "class") == 0)) + levelCurrent++; + if (strcmp(s, "end") == 0) + levelCurrent--; + lastDeferred = strcmp(s, "deferred") == 0; + } + + if (atEOL) { + int lev = levelPrev; + if (visibleChars == 0) + lev |= SC_FOLDLEVELWHITEFLAG; + if ((levelCurrent > levelPrev) && (visibleChars > 0)) + lev |= SC_FOLDLEVELHEADERFLAG; + if (lev != styler.LevelAt(lineCurrent)) { + styler.SetLevel(lineCurrent, lev); + } + lineCurrent++; + levelPrev = levelCurrent; + visibleChars = 0; + } + if (!isspacechar(ch)) + visibleChars++; + stylePrev = style; + } + // Fill in the real level of the next line, keeping the current flags as they will be filled in later + int flagsNext = styler.LevelAt(lineCurrent) & ~SC_FOLDLEVELNUMBERMASK; + styler.SetLevel(lineCurrent, levelPrev | flagsNext); +} + +static const char * const eiffelWordListDesc[] = { + "Keywords", + 0 +}; + +LexerModule lmEiffel(SCLEX_EIFFEL, ColouriseEiffelDoc, "eiffel", FoldEiffelDocIndent, eiffelWordListDesc); +LexerModule lmEiffelkw(SCLEX_EIFFELKW, ColouriseEiffelDoc, "eiffelkw", FoldEiffelDocKeyWords, eiffelWordListDesc); diff --git a/libs/qscintilla_2.14.1/scintilla/lexers/LexErlang.cpp b/libs/qscintilla_2.14.1/scintilla/lexers/LexErlang.cpp new file mode 100644 index 000000000..4ca5962c3 --- /dev/null +++ b/libs/qscintilla_2.14.1/scintilla/lexers/LexErlang.cpp @@ -0,0 +1,624 @@ +// Scintilla source code edit control +// Encoding: UTF-8 +// Copyright 1998-2001 by Neil Hodgson +// The License.txt file describes the conditions under which this software may be distributed. +/** @file LexErlang.cxx + ** Lexer for Erlang. + ** Enhanced by Etienne 'Lenain' Girondel (lenaing@gmail.com) + ** Originally wrote by Peter-Henry Mander, + ** based on Matlab lexer by José Fonseca. + **/ + +#include +#include +#include +#include +#include +#include + +#include "ILexer.h" +#include "Scintilla.h" +#include "SciLexer.h" + +#include "WordList.h" +#include "LexAccessor.h" +#include "Accessor.h" +#include "StyleContext.h" +#include "CharacterSet.h" +#include "LexerModule.h" + +using namespace Scintilla; + +static int is_radix(int radix, int ch) { + int digit; + + if (36 < radix || 2 > radix) + return 0; + + if (isdigit(ch)) { + digit = ch - '0'; + } else if (isalnum(ch)) { + digit = toupper(ch) - 'A' + 10; + } else { + return 0; + } + + return (digit < radix); +} + +typedef enum { + STATE_NULL, + COMMENT, + COMMENT_FUNCTION, + COMMENT_MODULE, + COMMENT_DOC, + COMMENT_DOC_MACRO, + ATOM_UNQUOTED, + ATOM_QUOTED, + NODE_NAME_UNQUOTED, + NODE_NAME_QUOTED, + MACRO_START, + MACRO_UNQUOTED, + MACRO_QUOTED, + RECORD_START, + RECORD_UNQUOTED, + RECORD_QUOTED, + NUMERAL_START, + NUMERAL_BASE_VALUE, + NUMERAL_FLOAT, + NUMERAL_EXPONENT, + PREPROCESSOR +} atom_parse_state_t; + +static inline bool IsAWordChar(const int ch) { + return (ch < 0x80) && (ch != ' ') && (isalnum(ch) || ch == '_'); +} + +static void ColouriseErlangDoc(Sci_PositionU startPos, Sci_Position length, int initStyle, + WordList *keywordlists[], Accessor &styler) { + + StyleContext sc(startPos, length, initStyle, styler); + WordList &reservedWords = *keywordlists[0]; + WordList &erlangBIFs = *keywordlists[1]; + WordList &erlangPreproc = *keywordlists[2]; + WordList &erlangModulesAtt = *keywordlists[3]; + WordList &erlangDoc = *keywordlists[4]; + WordList &erlangDocMacro = *keywordlists[5]; + int radix_digits = 0; + int exponent_digits = 0; + atom_parse_state_t parse_state = STATE_NULL; + atom_parse_state_t old_parse_state = STATE_NULL; + bool to_late_to_comment = false; + char cur[100]; + int old_style = SCE_ERLANG_DEFAULT; + + styler.StartAt(startPos); + + for (; sc.More(); sc.Forward()) { + int style = SCE_ERLANG_DEFAULT; + if (STATE_NULL != parse_state) { + + switch (parse_state) { + + case STATE_NULL : sc.SetState(SCE_ERLANG_DEFAULT); break; + + /* COMMENTS ------------------------------------------------------*/ + case COMMENT : { + if (sc.ch != '%') { + to_late_to_comment = true; + } else if (!to_late_to_comment && sc.ch == '%') { + // Switch to comment level 2 (Function) + sc.ChangeState(SCE_ERLANG_COMMENT_FUNCTION); + old_style = SCE_ERLANG_COMMENT_FUNCTION; + parse_state = COMMENT_FUNCTION; + sc.Forward(); + } + } + // V--- Falling through! + // Falls through. + case COMMENT_FUNCTION : { + if (sc.ch != '%') { + to_late_to_comment = true; + } else if (!to_late_to_comment && sc.ch == '%') { + // Switch to comment level 3 (Module) + sc.ChangeState(SCE_ERLANG_COMMENT_MODULE); + old_style = SCE_ERLANG_COMMENT_MODULE; + parse_state = COMMENT_MODULE; + sc.Forward(); + } + } + // V--- Falling through! + // Falls through. + case COMMENT_MODULE : { + if (parse_state != COMMENT) { + // Search for comment documentation + if (sc.chNext == '@') { + old_parse_state = parse_state; + parse_state = ('{' == sc.ch) + ? COMMENT_DOC_MACRO + : COMMENT_DOC; + sc.ForwardSetState(sc.state); + } + } + + // All comments types fall here. + if (sc.atLineEnd) { + to_late_to_comment = false; + sc.SetState(SCE_ERLANG_DEFAULT); + parse_state = STATE_NULL; + } + } break; + + case COMMENT_DOC : + // V--- Falling through! + case COMMENT_DOC_MACRO : { + + if (!isalnum(sc.ch)) { + // Try to match documentation comment + sc.GetCurrent(cur, sizeof(cur)); + + if (parse_state == COMMENT_DOC_MACRO + && erlangDocMacro.InList(cur)) { + sc.ChangeState(SCE_ERLANG_COMMENT_DOC_MACRO); + while (sc.ch != '}' && !sc.atLineEnd) + sc.Forward(); + } else if (erlangDoc.InList(cur)) { + sc.ChangeState(SCE_ERLANG_COMMENT_DOC); + } else { + sc.ChangeState(old_style); + } + + // Switch back to old state + sc.SetState(old_style); + parse_state = old_parse_state; + } + + if (sc.atLineEnd) { + to_late_to_comment = false; + sc.ChangeState(old_style); + sc.SetState(SCE_ERLANG_DEFAULT); + parse_state = STATE_NULL; + } + } break; + + /* -------------------------------------------------------------- */ + /* Atoms ---------------------------------------------------------*/ + case ATOM_UNQUOTED : { + if ('@' == sc.ch){ + parse_state = NODE_NAME_UNQUOTED; + } else if (sc.ch == ':') { + // Searching for module name + if (sc.chNext == ' ') { + // error + sc.ChangeState(SCE_ERLANG_UNKNOWN); + parse_state = STATE_NULL; + } else { + sc.Forward(); + if (isalnum(sc.ch)) { + sc.GetCurrent(cur, sizeof(cur)); + sc.ChangeState(SCE_ERLANG_MODULES); + sc.SetState(SCE_ERLANG_MODULES); + } + } + } else if (!IsAWordChar(sc.ch)) { + + sc.GetCurrent(cur, sizeof(cur)); + if (reservedWords.InList(cur)) { + style = SCE_ERLANG_KEYWORD; + } else if (erlangBIFs.InList(cur) + && strcmp(cur,"erlang:")){ + style = SCE_ERLANG_BIFS; + } else if (sc.ch == '(' || '/' == sc.ch){ + style = SCE_ERLANG_FUNCTION_NAME; + } else { + style = SCE_ERLANG_ATOM; + } + + sc.ChangeState(style); + sc.SetState(SCE_ERLANG_DEFAULT); + parse_state = STATE_NULL; + } + + } break; + + case ATOM_QUOTED : { + if ( '@' == sc.ch ){ + parse_state = NODE_NAME_QUOTED; + } else if ('\'' == sc.ch && '\\' != sc.chPrev) { + sc.ChangeState(SCE_ERLANG_ATOM); + sc.ForwardSetState(SCE_ERLANG_DEFAULT); + parse_state = STATE_NULL; + } + } break; + + /* -------------------------------------------------------------- */ + /* Node names ----------------------------------------------------*/ + case NODE_NAME_UNQUOTED : { + if ('@' == sc.ch) { + sc.SetState(SCE_ERLANG_DEFAULT); + parse_state = STATE_NULL; + } else if (!IsAWordChar(sc.ch)) { + sc.ChangeState(SCE_ERLANG_NODE_NAME); + sc.SetState(SCE_ERLANG_DEFAULT); + parse_state = STATE_NULL; + } + } break; + + case NODE_NAME_QUOTED : { + if ('@' == sc.ch) { + sc.SetState(SCE_ERLANG_DEFAULT); + parse_state = STATE_NULL; + } else if ('\'' == sc.ch && '\\' != sc.chPrev) { + sc.ChangeState(SCE_ERLANG_NODE_NAME_QUOTED); + sc.ForwardSetState(SCE_ERLANG_DEFAULT); + parse_state = STATE_NULL; + } + } break; + + /* -------------------------------------------------------------- */ + /* Records -------------------------------------------------------*/ + case RECORD_START : { + if ('\'' == sc.ch) { + parse_state = RECORD_QUOTED; + } else if (isalpha(sc.ch) && islower(sc.ch)) { + parse_state = RECORD_UNQUOTED; + } else { // error + sc.SetState(SCE_ERLANG_DEFAULT); + parse_state = STATE_NULL; + } + } break; + + case RECORD_UNQUOTED : { + if (!IsAWordChar(sc.ch)) { + sc.ChangeState(SCE_ERLANG_RECORD); + sc.SetState(SCE_ERLANG_DEFAULT); + parse_state = STATE_NULL; + } + } break; + + case RECORD_QUOTED : { + if ('\'' == sc.ch && '\\' != sc.chPrev) { + sc.ChangeState(SCE_ERLANG_RECORD_QUOTED); + sc.ForwardSetState(SCE_ERLANG_DEFAULT); + parse_state = STATE_NULL; + } + } break; + + /* -------------------------------------------------------------- */ + /* Macros --------------------------------------------------------*/ + case MACRO_START : { + if ('\'' == sc.ch) { + parse_state = MACRO_QUOTED; + } else if (isalpha(sc.ch)) { + parse_state = MACRO_UNQUOTED; + } else { // error + sc.SetState(SCE_ERLANG_DEFAULT); + parse_state = STATE_NULL; + } + } break; + + case MACRO_UNQUOTED : { + if (!IsAWordChar(sc.ch)) { + sc.ChangeState(SCE_ERLANG_MACRO); + sc.SetState(SCE_ERLANG_DEFAULT); + parse_state = STATE_NULL; + } + } break; + + case MACRO_QUOTED : { + if ('\'' == sc.ch && '\\' != sc.chPrev) { + sc.ChangeState(SCE_ERLANG_MACRO_QUOTED); + sc.ForwardSetState(SCE_ERLANG_DEFAULT); + parse_state = STATE_NULL; + } + } break; + + /* -------------------------------------------------------------- */ + /* Numerics ------------------------------------------------------*/ + /* Simple integer */ + case NUMERAL_START : { + if (isdigit(sc.ch)) { + radix_digits *= 10; + radix_digits += sc.ch - '0'; // Assuming ASCII here! + } else if ('#' == sc.ch) { + if (2 > radix_digits || 36 < radix_digits) { + sc.SetState(SCE_ERLANG_DEFAULT); + parse_state = STATE_NULL; + } else { + parse_state = NUMERAL_BASE_VALUE; + } + } else if ('.' == sc.ch && isdigit(sc.chNext)) { + radix_digits = 0; + parse_state = NUMERAL_FLOAT; + } else if ('e' == sc.ch || 'E' == sc.ch) { + exponent_digits = 0; + parse_state = NUMERAL_EXPONENT; + } else { + radix_digits = 0; + sc.ChangeState(SCE_ERLANG_NUMBER); + sc.SetState(SCE_ERLANG_DEFAULT); + parse_state = STATE_NULL; + } + } break; + + /* Integer in other base than 10 (x#yyy) */ + case NUMERAL_BASE_VALUE : { + if (!is_radix(radix_digits,sc.ch)) { + radix_digits = 0; + + if (!isalnum(sc.ch)) + sc.ChangeState(SCE_ERLANG_NUMBER); + + sc.SetState(SCE_ERLANG_DEFAULT); + parse_state = STATE_NULL; + } + } break; + + /* Float (x.yyy) */ + case NUMERAL_FLOAT : { + if ('e' == sc.ch || 'E' == sc.ch) { + exponent_digits = 0; + parse_state = NUMERAL_EXPONENT; + } else if (!isdigit(sc.ch)) { + sc.ChangeState(SCE_ERLANG_NUMBER); + sc.SetState(SCE_ERLANG_DEFAULT); + parse_state = STATE_NULL; + } + } break; + + /* Exponent, either integer or float (xEyy, x.yyEzzz) */ + case NUMERAL_EXPONENT : { + if (('-' == sc.ch || '+' == sc.ch) + && (isdigit(sc.chNext))) { + sc.Forward(); + } else if (!isdigit(sc.ch)) { + if (0 < exponent_digits) + sc.ChangeState(SCE_ERLANG_NUMBER); + sc.SetState(SCE_ERLANG_DEFAULT); + parse_state = STATE_NULL; + } else { + ++exponent_digits; + } + } break; + + /* -------------------------------------------------------------- */ + /* Preprocessor --------------------------------------------------*/ + case PREPROCESSOR : { + if (!IsAWordChar(sc.ch)) { + + sc.GetCurrent(cur, sizeof(cur)); + if (erlangPreproc.InList(cur)) { + style = SCE_ERLANG_PREPROC; + } else if (erlangModulesAtt.InList(cur)) { + style = SCE_ERLANG_MODULES_ATT; + } + + sc.ChangeState(style); + sc.SetState(SCE_ERLANG_DEFAULT); + parse_state = STATE_NULL; + } + } break; + + } + + } /* End of : STATE_NULL != parse_state */ + else + { + switch (sc.state) { + case SCE_ERLANG_VARIABLE : { + if (!IsAWordChar(sc.ch)) + sc.SetState(SCE_ERLANG_DEFAULT); + } break; + case SCE_ERLANG_STRING : { + if (sc.ch == '\"' && sc.chPrev != '\\') + sc.ForwardSetState(SCE_ERLANG_DEFAULT); + } break; + case SCE_ERLANG_COMMENT : { + if (sc.atLineEnd) + sc.SetState(SCE_ERLANG_DEFAULT); + } break; + case SCE_ERLANG_CHARACTER : { + if (sc.chPrev == '\\') { + sc.ForwardSetState(SCE_ERLANG_DEFAULT); + } else if (sc.ch != '\\') { + sc.ForwardSetState(SCE_ERLANG_DEFAULT); + } + } break; + case SCE_ERLANG_OPERATOR : { + if (sc.chPrev == '.') { + if (sc.ch == '*' || sc.ch == '/' || sc.ch == '\\' + || sc.ch == '^') { + sc.ForwardSetState(SCE_ERLANG_DEFAULT); + } else if (sc.ch == '\'') { + sc.ForwardSetState(SCE_ERLANG_DEFAULT); + } else { + sc.SetState(SCE_ERLANG_DEFAULT); + } + } else { + sc.SetState(SCE_ERLANG_DEFAULT); + } + } break; + } + } + + if (sc.state == SCE_ERLANG_DEFAULT) { + bool no_new_state = false; + + switch (sc.ch) { + case '\"' : sc.SetState(SCE_ERLANG_STRING); break; + case '$' : sc.SetState(SCE_ERLANG_CHARACTER); break; + case '%' : { + parse_state = COMMENT; + sc.SetState(SCE_ERLANG_COMMENT); + } break; + case '#' : { + parse_state = RECORD_START; + sc.SetState(SCE_ERLANG_UNKNOWN); + } break; + case '?' : { + parse_state = MACRO_START; + sc.SetState(SCE_ERLANG_UNKNOWN); + } break; + case '\'' : { + parse_state = ATOM_QUOTED; + sc.SetState(SCE_ERLANG_UNKNOWN); + } break; + case '+' : + case '-' : { + if (IsADigit(sc.chNext)) { + parse_state = NUMERAL_START; + radix_digits = 0; + sc.SetState(SCE_ERLANG_UNKNOWN); + } else if (sc.ch != '+') { + parse_state = PREPROCESSOR; + sc.SetState(SCE_ERLANG_UNKNOWN); + } + } break; + default : no_new_state = true; + } + + if (no_new_state) { + if (isdigit(sc.ch)) { + parse_state = NUMERAL_START; + radix_digits = sc.ch - '0'; + sc.SetState(SCE_ERLANG_UNKNOWN); + } else if (isupper(sc.ch) || '_' == sc.ch) { + sc.SetState(SCE_ERLANG_VARIABLE); + } else if (isalpha(sc.ch)) { + parse_state = ATOM_UNQUOTED; + sc.SetState(SCE_ERLANG_UNKNOWN); + } else if (isoperator(static_cast(sc.ch)) + || sc.ch == '\\') { + sc.SetState(SCE_ERLANG_OPERATOR); + } + } + } + + } + sc.Complete(); +} + +static int ClassifyErlangFoldPoint( + Accessor &styler, + int styleNext, + Sci_Position keyword_start +) { + int lev = 0; + if (styler.Match(keyword_start,"case") + || ( + styler.Match(keyword_start,"fun") + && (SCE_ERLANG_FUNCTION_NAME != styleNext) + ) + || styler.Match(keyword_start,"if") + || styler.Match(keyword_start,"query") + || styler.Match(keyword_start,"receive") + ) { + ++lev; + } else if (styler.Match(keyword_start,"end")) { + --lev; + } + + return lev; +} + +static void FoldErlangDoc( + Sci_PositionU startPos, Sci_Position length, int initStyle, + WordList** /*keywordlists*/, Accessor &styler +) { + Sci_PositionU endPos = startPos + length; + Sci_Position currentLine = styler.GetLine(startPos); + int lev; + int previousLevel = styler.LevelAt(currentLine) & SC_FOLDLEVELNUMBERMASK; + int currentLevel = previousLevel; + int styleNext = styler.StyleAt(startPos); + int style = initStyle; + int stylePrev; + Sci_Position keyword_start = 0; + char ch; + char chNext = styler.SafeGetCharAt(startPos); + bool atEOL; + + for (Sci_PositionU i = startPos; i < endPos; i++) { + ch = chNext; + chNext = styler.SafeGetCharAt(i + 1); + + // Get styles + stylePrev = style; + style = styleNext; + styleNext = styler.StyleAt(i + 1); + atEOL = ((ch == '\r') && (chNext != '\n')) || (ch == '\n'); + + if (stylePrev != SCE_ERLANG_KEYWORD + && style == SCE_ERLANG_KEYWORD) { + keyword_start = i; + } + + // Fold on keywords + if (stylePrev == SCE_ERLANG_KEYWORD + && style != SCE_ERLANG_KEYWORD + && style != SCE_ERLANG_ATOM + ) { + currentLevel += ClassifyErlangFoldPoint(styler, + styleNext, + keyword_start); + } + + // Fold on comments + if (style == SCE_ERLANG_COMMENT + || style == SCE_ERLANG_COMMENT_MODULE + || style == SCE_ERLANG_COMMENT_FUNCTION) { + + if (ch == '%' && chNext == '{') { + currentLevel++; + } else if (ch == '%' && chNext == '}') { + currentLevel--; + } + } + + // Fold on braces + if (style == SCE_ERLANG_OPERATOR) { + if (ch == '{' || ch == '(' || ch == '[') { + currentLevel++; + } else if (ch == '}' || ch == ')' || ch == ']') { + currentLevel--; + } + } + + + if (atEOL) { + lev = previousLevel; + + if (currentLevel > previousLevel) + lev |= SC_FOLDLEVELHEADERFLAG; + + if (lev != styler.LevelAt(currentLine)) + styler.SetLevel(currentLine, lev); + + currentLine++; + previousLevel = currentLevel; + } + + } + + // Fill in the real level of the next line, keeping the current flags as they will be filled in later + styler.SetLevel(currentLine, + previousLevel + | (styler.LevelAt(currentLine) & ~SC_FOLDLEVELNUMBERMASK)); +} + +static const char * const erlangWordListDesc[] = { + "Erlang Reserved words", + "Erlang BIFs", + "Erlang Preprocessor", + "Erlang Module Attributes", + "Erlang Documentation", + "Erlang Documentation Macro", + 0 +}; + +LexerModule lmErlang( + SCLEX_ERLANG, + ColouriseErlangDoc, + "erlang", + FoldErlangDoc, + erlangWordListDesc); diff --git a/libs/qscintilla_2.14.1/scintilla/lexers/LexErrorList.cpp b/libs/qscintilla_2.14.1/scintilla/lexers/LexErrorList.cpp new file mode 100644 index 000000000..b3dcd2a59 --- /dev/null +++ b/libs/qscintilla_2.14.1/scintilla/lexers/LexErrorList.cpp @@ -0,0 +1,393 @@ +// Scintilla source code edit control +/** @file LexErrorList.cxx + ** Lexer for error lists. Used for the output pane in SciTE. + **/ +// Copyright 1998-2001 by Neil Hodgson +// The License.txt file describes the conditions under which this software may be distributed. + +#include +#include +#include +#include +#include +#include + +#include "ILexer.h" +#include "Scintilla.h" +#include "SciLexer.h" + +#include "WordList.h" +#include "LexAccessor.h" +#include "Accessor.h" +#include "StyleContext.h" +#include "CharacterSet.h" +#include "LexerModule.h" + +using namespace Scintilla; + +static bool strstart(const char *haystack, const char *needle) { + return strncmp(haystack, needle, strlen(needle)) == 0; +} + +static bool Is0To9(char ch) { + return (ch >= '0') && (ch <= '9'); +} + +static bool Is1To9(char ch) { + return (ch >= '1') && (ch <= '9'); +} + +static bool IsAlphabetic(int ch) { + return IsASCII(ch) && isalpha(ch); +} + +static inline bool AtEOL(Accessor &styler, Sci_PositionU i) { + return (styler[i] == '\n') || + ((styler[i] == '\r') && (styler.SafeGetCharAt(i + 1) != '\n')); +} + +static int RecogniseErrorListLine(const char *lineBuffer, Sci_PositionU lengthLine, Sci_Position &startValue) { + if (lineBuffer[0] == '>') { + // Command or return status + return SCE_ERR_CMD; + } else if (lineBuffer[0] == '<') { + // Diff removal. + return SCE_ERR_DIFF_DELETION; + } else if (lineBuffer[0] == '!') { + return SCE_ERR_DIFF_CHANGED; + } else if (lineBuffer[0] == '+') { + if (strstart(lineBuffer, "+++ ")) { + return SCE_ERR_DIFF_MESSAGE; + } else { + return SCE_ERR_DIFF_ADDITION; + } + } else if (lineBuffer[0] == '-') { + if (strstart(lineBuffer, "--- ")) { + return SCE_ERR_DIFF_MESSAGE; + } else { + return SCE_ERR_DIFF_DELETION; + } + } else if (strstart(lineBuffer, "cf90-")) { + // Absoft Pro Fortran 90/95 v8.2 error and/or warning message + return SCE_ERR_ABSF; + } else if (strstart(lineBuffer, "fortcom:")) { + // Intel Fortran Compiler v8.0 error/warning message + return SCE_ERR_IFORT; + } else if (strstr(lineBuffer, "File \"") && strstr(lineBuffer, ", line ")) { + return SCE_ERR_PYTHON; + } else if (strstr(lineBuffer, " in ") && strstr(lineBuffer, " on line ")) { + return SCE_ERR_PHP; + } else if ((strstart(lineBuffer, "Error ") || + strstart(lineBuffer, "Warning ")) && + strstr(lineBuffer, " at (") && + strstr(lineBuffer, ") : ") && + (strstr(lineBuffer, " at (") < strstr(lineBuffer, ") : "))) { + // Intel Fortran Compiler error/warning message + return SCE_ERR_IFC; + } else if (strstart(lineBuffer, "Error ")) { + // Borland error message + return SCE_ERR_BORLAND; + } else if (strstart(lineBuffer, "Warning ")) { + // Borland warning message + return SCE_ERR_BORLAND; + } else if (strstr(lineBuffer, "at line ") && + (strstr(lineBuffer, "at line ") < (lineBuffer + lengthLine)) && + strstr(lineBuffer, "file ") && + (strstr(lineBuffer, "file ") < (lineBuffer + lengthLine))) { + // Lua 4 error message + return SCE_ERR_LUA; + } else if (strstr(lineBuffer, " at ") && + (strstr(lineBuffer, " at ") < (lineBuffer + lengthLine)) && + strstr(lineBuffer, " line ") && + (strstr(lineBuffer, " line ") < (lineBuffer + lengthLine)) && + (strstr(lineBuffer, " at ") + 4 < (strstr(lineBuffer, " line ")))) { + // perl error message: + // at line + return SCE_ERR_PERL; + } else if ((lengthLine >= 6) && + (memcmp(lineBuffer, " at ", 6) == 0) && + strstr(lineBuffer, ":line ")) { + // A .NET traceback + return SCE_ERR_NET; + } else if (strstart(lineBuffer, "Line ") && + strstr(lineBuffer, ", file ")) { + // Essential Lahey Fortran error message + return SCE_ERR_ELF; + } else if (strstart(lineBuffer, "line ") && + strstr(lineBuffer, " column ")) { + // HTML tidy style: line 42 column 1 + return SCE_ERR_TIDY; + } else if (strstart(lineBuffer, "\tat ") && + strstr(lineBuffer, "(") && + strstr(lineBuffer, ".java:")) { + // Java stack back trace + return SCE_ERR_JAVA_STACK; + } else if (strstart(lineBuffer, "In file included from ") || + strstart(lineBuffer, " from ")) { + // GCC showing include path to following error + return SCE_ERR_GCC_INCLUDED_FROM; + } else if (strstr(lineBuffer, "warning LNK")) { + // Microsoft linker warning: + // { : } warning LNK9999 + return SCE_ERR_MS; + } else { + // Look for one of the following formats: + // GCC: :: + // Microsoft: () : + // Common: (): warning|error|note|remark|catastrophic|fatal + // Common: () warning|error|note|remark|catastrophic|fatal + // Microsoft: (,) + // CTags: \t\t + // Lua 5 traceback: \t:: + // Lua 5.1: : :: + const bool initialTab = (lineBuffer[0] == '\t'); + bool initialColonPart = false; + bool canBeCtags = !initialTab; // For ctags must have an identifier with no spaces then a tab + enum { stInitial, + stGccStart, stGccDigit, stGccColumn, stGcc, + stMsStart, stMsDigit, stMsBracket, stMsVc, stMsDigitComma, stMsDotNet, + stCtagsStart, stCtagsFile, stCtagsStartString, stCtagsStringDollar, stCtags, + stUnrecognized + } state = stInitial; + for (Sci_PositionU i = 0; i < lengthLine; i++) { + const char ch = lineBuffer[i]; + char chNext = ' '; + if ((i + 1) < lengthLine) + chNext = lineBuffer[i + 1]; + if (state == stInitial) { + if (ch == ':') { + // May be GCC, or might be Lua 5 (Lua traceback same but with tab prefix) + if ((chNext != '\\') && (chNext != '/') && (chNext != ' ')) { + // This check is not completely accurate as may be on + // GTK+ with a file name that includes ':'. + state = stGccStart; + } else if (chNext == ' ') { // indicates a Lua 5.1 error message + initialColonPart = true; + } + } else if ((ch == '(') && Is1To9(chNext) && (!initialTab)) { + // May be Microsoft + // Check against '0' often removes phone numbers + state = stMsStart; + } else if ((ch == '\t') && canBeCtags) { + // May be CTags + state = stCtagsStart; + } else if (ch == ' ') { + canBeCtags = false; + } + } else if (state == stGccStart) { // : + state = Is0To9(ch) ? stGccDigit : stUnrecognized; + } else if (state == stGccDigit) { // : + if (ch == ':') { + state = stGccColumn; // :9.*: is GCC + startValue = i + 1; + } else if (!Is0To9(ch)) { + state = stUnrecognized; + } + } else if (state == stGccColumn) { // :: + if (!Is0To9(ch)) { + state = stGcc; + if (ch == ':') + startValue = i + 1; + break; + } + } else if (state == stMsStart) { // ( + state = Is0To9(ch) ? stMsDigit : stUnrecognized; + } else if (state == stMsDigit) { // ( + if (ch == ',') { + state = stMsDigitComma; + } else if (ch == ')') { + state = stMsBracket; + } else if ((ch != ' ') && !Is0To9(ch)) { + state = stUnrecognized; + } + } else if (state == stMsBracket) { // () + if ((ch == ' ') && (chNext == ':')) { + state = stMsVc; + } else if ((ch == ':' && chNext == ' ') || (ch == ' ')) { + // Possibly Delphi.. don't test against chNext as it's one of the strings below. + char word[512]; + Sci_PositionU j, chPos; + unsigned numstep; + chPos = 0; + if (ch == ' ') + numstep = 1; // ch was ' ', handle as if it's a delphi errorline, only add 1 to i. + else + numstep = 2; // otherwise add 2. + for (j = i + numstep; j < lengthLine && IsAlphabetic(lineBuffer[j]) && chPos < sizeof(word) - 1; j++) + word[chPos++] = lineBuffer[j]; + word[chPos] = 0; + if (!CompareCaseInsensitive(word, "error") || !CompareCaseInsensitive(word, "warning") || + !CompareCaseInsensitive(word, "fatal") || !CompareCaseInsensitive(word, "catastrophic") || + !CompareCaseInsensitive(word, "note") || !CompareCaseInsensitive(word, "remark")) { + state = stMsVc; + } else { + state = stUnrecognized; + } + } else { + state = stUnrecognized; + } + } else if (state == stMsDigitComma) { // (, + if (ch == ')') { + state = stMsDotNet; + break; + } else if ((ch != ' ') && !Is0To9(ch)) { + state = stUnrecognized; + } + } else if (state == stCtagsStart) { + if (ch == '\t') { + state = stCtagsFile; + } + } else if (state == stCtagsFile) { + if ((lineBuffer[i - 1] == '\t') && + ((ch == '/' && chNext == '^') || Is0To9(ch))) { + state = stCtags; + break; + } else if ((ch == '/') && (chNext == '^')) { + state = stCtagsStartString; + } + } else if ((state == stCtagsStartString) && ((lineBuffer[i] == '$') && (lineBuffer[i + 1] == '/'))) { + state = stCtagsStringDollar; + break; + } + } + if (state == stGcc) { + return initialColonPart ? SCE_ERR_LUA : SCE_ERR_GCC; + } else if ((state == stMsVc) || (state == stMsDotNet)) { + return SCE_ERR_MS; + } else if ((state == stCtagsStringDollar) || (state == stCtags)) { + return SCE_ERR_CTAG; + } else if (initialColonPart && strstr(lineBuffer, ": warning C")) { + // Microsoft warning without line number + // : warning C9999 + return SCE_ERR_MS; + } else { + return SCE_ERR_DEFAULT; + } + } +} + +#define CSI "\033[" + +namespace { + +bool SequenceEnd(int ch) { + return (ch == 0) || ((ch >= '@') && (ch <= '~')); +} + +int StyleFromSequence(const char *seq) { + int bold = 0; + int colour = 0; + while (!SequenceEnd(*seq)) { + if (Is0To9(*seq)) { + int base = *seq - '0'; + if (Is0To9(seq[1])) { + base = base * 10; + base += seq[1] - '0'; + seq++; + } + if (base == 0) { + colour = 0; + bold = 0; + } + else if (base == 1) { + bold = 1; + } + else if (base >= 30 && base <= 37) { + colour = base - 30; + } + } + seq++; + } + return SCE_ERR_ES_BLACK + bold * 8 + colour; +} + +} + +static void ColouriseErrorListLine( + char *lineBuffer, + Sci_PositionU lengthLine, + Sci_PositionU endPos, + Accessor &styler, + bool valueSeparate, + bool escapeSequences) { + Sci_Position startValue = -1; + int style = RecogniseErrorListLine(lineBuffer, lengthLine, startValue); + if (escapeSequences && strstr(lineBuffer, CSI)) { + const Sci_Position startPos = endPos - lengthLine; + const char *linePortion = lineBuffer; + Sci_Position startPortion = startPos; + int portionStyle = style; + while (const char *startSeq = strstr(linePortion, CSI)) { + if (startSeq > linePortion) { + styler.ColourTo(startPortion + static_cast(startSeq - linePortion), portionStyle); + } + const char *endSeq = startSeq + 2; + while (!SequenceEnd(*endSeq)) + endSeq++; + const Sci_Position endSeqPosition = startPortion + static_cast(endSeq - linePortion) + 1; + switch (*endSeq) { + case 0: + styler.ColourTo(endPos, SCE_ERR_ESCSEQ_UNKNOWN); + return; + case 'm': // Colour command + styler.ColourTo(endSeqPosition, SCE_ERR_ESCSEQ); + portionStyle = StyleFromSequence(startSeq+2); + break; + case 'K': // Erase to end of line -> ignore + styler.ColourTo(endSeqPosition, SCE_ERR_ESCSEQ); + break; + default: + styler.ColourTo(endSeqPosition, SCE_ERR_ESCSEQ_UNKNOWN); + portionStyle = style; + } + startPortion = endSeqPosition; + linePortion = endSeq + 1; + } + styler.ColourTo(endPos, portionStyle); + } else { + if (valueSeparate && (startValue >= 0)) { + styler.ColourTo(endPos - (lengthLine - startValue), style); + styler.ColourTo(endPos, SCE_ERR_VALUE); + } else { + styler.ColourTo(endPos, style); + } + } +} + +static void ColouriseErrorListDoc(Sci_PositionU startPos, Sci_Position length, int, WordList *[], Accessor &styler) { + char lineBuffer[10000]; + styler.StartAt(startPos); + styler.StartSegment(startPos); + Sci_PositionU linePos = 0; + + // property lexer.errorlist.value.separate + // For lines in the output pane that are matches from Find in Files or GCC-style + // diagnostics, style the path and line number separately from the rest of the + // line with style 21 used for the rest of the line. + // This allows matched text to be more easily distinguished from its location. + const bool valueSeparate = styler.GetPropertyInt("lexer.errorlist.value.separate", 0) != 0; + + // property lexer.errorlist.escape.sequences + // Set to 1 to interpret escape sequences. + const bool escapeSequences = styler.GetPropertyInt("lexer.errorlist.escape.sequences") != 0; + + for (Sci_PositionU i = startPos; i < startPos + length; i++) { + lineBuffer[linePos++] = styler[i]; + if (AtEOL(styler, i) || (linePos >= sizeof(lineBuffer) - 1)) { + // End of line (or of line buffer) met, colourise it + lineBuffer[linePos] = '\0'; + ColouriseErrorListLine(lineBuffer, linePos, i, styler, valueSeparate, escapeSequences); + linePos = 0; + } + } + if (linePos > 0) { // Last line does not have ending characters + lineBuffer[linePos] = '\0'; + ColouriseErrorListLine(lineBuffer, linePos, startPos + length - 1, styler, valueSeparate, escapeSequences); + } +} + +static const char *const emptyWordListDesc[] = { + 0 +}; + +LexerModule lmErrorList(SCLEX_ERRORLIST, ColouriseErrorListDoc, "errorlist", 0, emptyWordListDesc); diff --git a/libs/qscintilla_2.14.1/scintilla/lexers/LexFlagship.cpp b/libs/qscintilla_2.14.1/scintilla/lexers/LexFlagship.cpp new file mode 100644 index 000000000..b73c1aa1e --- /dev/null +++ b/libs/qscintilla_2.14.1/scintilla/lexers/LexFlagship.cpp @@ -0,0 +1,352 @@ +// Scintilla source code edit control +/** @file LexFlagShip.cxx + ** Lexer for Harbour and FlagShip. + ** (Syntactically compatible to other xBase dialects, like Clipper, dBase, Clip, FoxPro etc.) + **/ +// Copyright 2005 by Randy Butler +// Copyright 2010 by Xavi (Harbour) +// Copyright 1998-2003 by Neil Hodgson +// The License.txt file describes the conditions under which this software may be distributed. + +#include +#include +#include +#include +#include +#include + +#include "ILexer.h" +#include "Scintilla.h" +#include "SciLexer.h" + +#include "WordList.h" +#include "LexAccessor.h" +#include "Accessor.h" +#include "StyleContext.h" +#include "CharacterSet.h" +#include "LexerModule.h" + +using namespace Scintilla; + +// Extended to accept accented characters +static inline bool IsAWordChar(int ch) +{ + return ch >= 0x80 || + (isalnum(ch) || ch == '_'); +} + +static void ColouriseFlagShipDoc(Sci_PositionU startPos, Sci_Position length, int initStyle, + WordList *keywordlists[], Accessor &styler) +{ + + WordList &keywords = *keywordlists[0]; + WordList &keywords2 = *keywordlists[1]; + WordList &keywords3 = *keywordlists[2]; + WordList &keywords4 = *keywordlists[3]; + WordList &keywords5 = *keywordlists[4]; + + // property lexer.flagship.styling.within.preprocessor + // For Harbour code, determines whether all preprocessor code is styled in the preprocessor style (0) or only from the + // initial # to the end of the command word(1, the default). It also determines how to present text, dump, and disabled code. + bool stylingWithinPreprocessor = styler.GetPropertyInt("lexer.flagship.styling.within.preprocessor", 1) != 0; + + CharacterSet setDoxygen(CharacterSet::setAlpha, "$@\\&<>#{}[]"); + + int visibleChars = 0; + int closeStringChar = 0; + int styleBeforeDCKeyword = SCE_FS_DEFAULT; + bool bEnableCode = initStyle < SCE_FS_DISABLEDCODE; + + StyleContext sc(startPos, length, initStyle, styler); + + for (; sc.More(); sc.Forward()) { + + // Determine if the current state should terminate. + switch (sc.state) { + case SCE_FS_OPERATOR: + case SCE_FS_OPERATOR_C: + case SCE_FS_WORDOPERATOR: + sc.SetState(bEnableCode ? SCE_FS_DEFAULT : SCE_FS_DEFAULT_C); + break; + case SCE_FS_IDENTIFIER: + case SCE_FS_IDENTIFIER_C: + if (!IsAWordChar(sc.ch)) { + char s[64]; + sc.GetCurrentLowered(s, sizeof(s)); + if (keywords.InList(s)) { + sc.ChangeState(bEnableCode ? SCE_FS_KEYWORD : SCE_FS_KEYWORD_C); + } else if (keywords2.InList(s)) { + sc.ChangeState(bEnableCode ? SCE_FS_KEYWORD2 : SCE_FS_KEYWORD2_C); + } else if (bEnableCode && keywords3.InList(s)) { + sc.ChangeState(SCE_FS_KEYWORD3); + } else if (bEnableCode && keywords4.InList(s)) { + sc.ChangeState(SCE_FS_KEYWORD4); + }// Else, it is really an identifier... + sc.SetState(bEnableCode ? SCE_FS_DEFAULT : SCE_FS_DEFAULT_C); + } + break; + case SCE_FS_NUMBER: + if (!IsAWordChar(sc.ch) && !(sc.ch == '.' && IsADigit(sc.chNext))) { + sc.SetState(SCE_FS_DEFAULT); + } + break; + case SCE_FS_NUMBER_C: + if (!IsAWordChar(sc.ch) && sc.ch != '.') { + sc.SetState(SCE_FS_DEFAULT_C); + } + break; + case SCE_FS_CONSTANT: + if (!IsAWordChar(sc.ch)) { + sc.SetState(SCE_FS_DEFAULT); + } + break; + case SCE_FS_STRING: + case SCE_FS_STRING_C: + if (sc.ch == closeStringChar) { + sc.ForwardSetState(bEnableCode ? SCE_FS_DEFAULT : SCE_FS_DEFAULT_C); + } else if (sc.atLineEnd) { + sc.ChangeState(bEnableCode ? SCE_FS_STRINGEOL : SCE_FS_STRINGEOL_C); + } + break; + case SCE_FS_STRINGEOL: + case SCE_FS_STRINGEOL_C: + if (sc.atLineStart) { + sc.SetState(bEnableCode ? SCE_FS_DEFAULT : SCE_FS_DEFAULT_C); + } + break; + case SCE_FS_COMMENTDOC: + case SCE_FS_COMMENTDOC_C: + if (sc.Match('*', '/')) { + sc.Forward(); + sc.ForwardSetState(bEnableCode ? SCE_FS_DEFAULT : SCE_FS_DEFAULT_C); + } else if (sc.ch == '@' || sc.ch == '\\') { // JavaDoc and Doxygen support + // Verify that we have the conditions to mark a comment-doc-keyword + if ((IsASpace(sc.chPrev) || sc.chPrev == '*') && (!IsASpace(sc.chNext))) { + styleBeforeDCKeyword = bEnableCode ? SCE_FS_COMMENTDOC : SCE_FS_COMMENTDOC_C; + sc.SetState(SCE_FS_COMMENTDOCKEYWORD); + } + } + break; + case SCE_FS_COMMENT: + case SCE_FS_COMMENTLINE: + if (sc.atLineStart) { + sc.SetState(SCE_FS_DEFAULT); + } + break; + case SCE_FS_COMMENTLINEDOC: + case SCE_FS_COMMENTLINEDOC_C: + if (sc.atLineStart) { + sc.SetState(bEnableCode ? SCE_FS_DEFAULT : SCE_FS_DEFAULT_C); + } else if (sc.ch == '@' || sc.ch == '\\') { // JavaDoc and Doxygen support + // Verify that we have the conditions to mark a comment-doc-keyword + if ((IsASpace(sc.chPrev) || sc.chPrev == '/' || sc.chPrev == '!') && (!IsASpace(sc.chNext))) { + styleBeforeDCKeyword = bEnableCode ? SCE_FS_COMMENTLINEDOC : SCE_FS_COMMENTLINEDOC_C; + sc.SetState(SCE_FS_COMMENTDOCKEYWORD); + } + } + break; + case SCE_FS_COMMENTDOCKEYWORD: + if ((styleBeforeDCKeyword == SCE_FS_COMMENTDOC || styleBeforeDCKeyword == SCE_FS_COMMENTDOC_C) && + sc.Match('*', '/')) { + sc.ChangeState(SCE_FS_COMMENTDOCKEYWORDERROR); + sc.Forward(); + sc.ForwardSetState(bEnableCode ? SCE_FS_DEFAULT : SCE_FS_DEFAULT_C); + } else if (!setDoxygen.Contains(sc.ch)) { + char s[64]; + sc.GetCurrentLowered(s, sizeof(s)); + if (!IsASpace(sc.ch) || !keywords5.InList(s + 1)) { + sc.ChangeState(SCE_FS_COMMENTDOCKEYWORDERROR); + } + sc.SetState(styleBeforeDCKeyword); + } + break; + case SCE_FS_PREPROCESSOR: + case SCE_FS_PREPROCESSOR_C: + if (sc.atLineEnd) { + if (!(sc.chPrev == ';' || sc.GetRelative(-2) == ';')) { + sc.SetState(bEnableCode ? SCE_FS_DEFAULT : SCE_FS_DEFAULT_C); + } + } else if (stylingWithinPreprocessor) { + if (IsASpaceOrTab(sc.ch)) { + sc.SetState(bEnableCode ? SCE_FS_DEFAULT : SCE_FS_DEFAULT_C); + } + } else if (sc.Match('/', '*') || sc.Match('/', '/') || sc.Match('&', '&')) { + sc.SetState(bEnableCode ? SCE_FS_DEFAULT : SCE_FS_DEFAULT_C); + } + break; + case SCE_FS_DISABLEDCODE: + if (sc.ch == '#' && visibleChars == 0) { + sc.SetState(bEnableCode ? SCE_FS_PREPROCESSOR : SCE_FS_PREPROCESSOR_C); + do { // Skip whitespace between # and preprocessor word + sc.Forward(); + } while (IsASpaceOrTab(sc.ch) && sc.More()); + if (sc.MatchIgnoreCase("pragma")) { + sc.Forward(6); + do { // Skip more whitespace until keyword + sc.Forward(); + } while (IsASpaceOrTab(sc.ch) && sc.More()); + if (sc.MatchIgnoreCase("enddump") || sc.MatchIgnoreCase("__endtext")) { + bEnableCode = true; + sc.SetState(SCE_FS_DISABLEDCODE); + sc.Forward(sc.ch == '_' ? 8 : 6); + sc.ForwardSetState(SCE_FS_DEFAULT); + } else { + sc.ChangeState(SCE_FS_DISABLEDCODE); + } + } else { + sc.ChangeState(SCE_FS_DISABLEDCODE); + } + } + break; + case SCE_FS_DATE: + if (sc.ch == '}') { + sc.ForwardSetState(SCE_FS_DEFAULT); + } else if (sc.atLineEnd) { + sc.ChangeState(SCE_FS_STRINGEOL); + } + } + + // Determine if a new state should be entered. + if (sc.state == SCE_FS_DEFAULT || sc.state == SCE_FS_DEFAULT_C) { + if (bEnableCode && + (sc.MatchIgnoreCase(".and.") || sc.MatchIgnoreCase(".not."))) { + sc.SetState(SCE_FS_WORDOPERATOR); + sc.Forward(4); + } else if (bEnableCode && sc.MatchIgnoreCase(".or.")) { + sc.SetState(SCE_FS_WORDOPERATOR); + sc.Forward(3); + } else if (bEnableCode && + (sc.MatchIgnoreCase(".t.") || sc.MatchIgnoreCase(".f.") || + (!IsAWordChar(sc.GetRelative(3)) && sc.MatchIgnoreCase("nil")))) { + sc.SetState(SCE_FS_CONSTANT); + sc.Forward(2); + } else if (sc.Match('/', '*')) { + sc.SetState(bEnableCode ? SCE_FS_COMMENTDOC : SCE_FS_COMMENTDOC_C); + sc.Forward(); + } else if (bEnableCode && sc.Match('&', '&')) { + sc.SetState(SCE_FS_COMMENTLINE); + sc.Forward(); + } else if (sc.Match('/', '/')) { + sc.SetState(bEnableCode ? SCE_FS_COMMENTLINEDOC : SCE_FS_COMMENTLINEDOC_C); + sc.Forward(); + } else if (bEnableCode && sc.ch == '*' && visibleChars == 0) { + sc.SetState(SCE_FS_COMMENT); + } else if (sc.ch == '\"' || sc.ch == '\'') { + sc.SetState(bEnableCode ? SCE_FS_STRING : SCE_FS_STRING_C); + closeStringChar = sc.ch; + } else if (closeStringChar == '>' && sc.ch == '<') { + sc.SetState(bEnableCode ? SCE_FS_STRING : SCE_FS_STRING_C); + } else if (sc.ch == '#' && visibleChars == 0) { + sc.SetState(bEnableCode ? SCE_FS_PREPROCESSOR : SCE_FS_PREPROCESSOR_C); + do { // Skip whitespace between # and preprocessor word + sc.Forward(); + } while (IsASpaceOrTab(sc.ch) && sc.More()); + if (sc.atLineEnd) { + sc.SetState(bEnableCode ? SCE_FS_DEFAULT : SCE_FS_DEFAULT_C); + } else if (sc.MatchIgnoreCase("include")) { + if (stylingWithinPreprocessor) { + closeStringChar = '>'; + } + } else if (sc.MatchIgnoreCase("pragma")) { + sc.Forward(6); + do { // Skip more whitespace until keyword + sc.Forward(); + } while (IsASpaceOrTab(sc.ch) && sc.More()); + if (sc.MatchIgnoreCase("begindump") || sc.MatchIgnoreCase("__cstream")) { + bEnableCode = false; + if (stylingWithinPreprocessor) { + sc.SetState(SCE_FS_DISABLEDCODE); + sc.Forward(8); + sc.ForwardSetState(SCE_FS_DEFAULT_C); + } else { + sc.SetState(SCE_FS_DISABLEDCODE); + } + } else if (sc.MatchIgnoreCase("enddump") || sc.MatchIgnoreCase("__endtext")) { + bEnableCode = true; + sc.SetState(SCE_FS_DISABLEDCODE); + sc.Forward(sc.ch == '_' ? 8 : 6); + sc.ForwardSetState(SCE_FS_DEFAULT); + } + } + } else if (bEnableCode && sc.ch == '{') { + Sci_Position p = 0; + int chSeek; + Sci_PositionU endPos(startPos + length); + do { // Skip whitespace + chSeek = sc.GetRelative(++p); + } while (IsASpaceOrTab(chSeek) && (sc.currentPos + p < endPos)); + if (chSeek == '^') { + sc.SetState(SCE_FS_DATE); + } else { + sc.SetState(SCE_FS_OPERATOR); + } + } else if (IsADigit(sc.ch) || (sc.ch == '.' && IsADigit(sc.chNext))) { + sc.SetState(bEnableCode ? SCE_FS_NUMBER : SCE_FS_NUMBER_C); + } else if (IsAWordChar(sc.ch)) { + sc.SetState(bEnableCode ? SCE_FS_IDENTIFIER : SCE_FS_IDENTIFIER_C); + } else if (isoperator(static_cast(sc.ch)) || (bEnableCode && sc.ch == '@')) { + sc.SetState(bEnableCode ? SCE_FS_OPERATOR : SCE_FS_OPERATOR_C); + } + } + + if (sc.atLineEnd) { + visibleChars = 0; + closeStringChar = 0; + } + if (!IsASpace(sc.ch)) { + visibleChars++; + } + } + sc.Complete(); +} + +static void FoldFlagShipDoc(Sci_PositionU startPos, Sci_Position length, int, + WordList *[], Accessor &styler) +{ + + Sci_Position endPos = startPos + length; + + // Backtrack to previous line in case need to fix its fold status + Sci_Position lineCurrent = styler.GetLine(startPos); + if (startPos > 0 && lineCurrent > 0) { + lineCurrent--; + startPos = styler.LineStart(lineCurrent); + } + int spaceFlags = 0; + int indentCurrent = styler.IndentAmount(lineCurrent, &spaceFlags); + char chNext = styler[startPos]; + for (Sci_Position i = startPos; i < endPos; i++) { + char ch = chNext; + chNext = styler.SafeGetCharAt(i + 1); + + if ((ch == '\r' && chNext != '\n') || (ch == '\n') || (i == endPos-1)) { + int lev = indentCurrent; + int indentNext = styler.IndentAmount(lineCurrent + 1, &spaceFlags); + if (!(indentCurrent & SC_FOLDLEVELWHITEFLAG)) { + if ((indentCurrent & SC_FOLDLEVELNUMBERMASK) < (indentNext & SC_FOLDLEVELNUMBERMASK)) { + lev |= SC_FOLDLEVELHEADERFLAG; + } else if (indentNext & SC_FOLDLEVELWHITEFLAG) { + int spaceFlags2 = 0; + int indentNext2 = styler.IndentAmount(lineCurrent + 2, &spaceFlags2); + if ((indentCurrent & SC_FOLDLEVELNUMBERMASK) < (indentNext2 & SC_FOLDLEVELNUMBERMASK)) { + lev |= SC_FOLDLEVELHEADERFLAG; + } + } + } + indentCurrent = indentNext; + styler.SetLevel(lineCurrent, lev); + lineCurrent++; + } + } +} + +static const char * const FSWordListDesc[] = { + "Keywords Commands", + "Std Library Functions", + "Procedure, return, exit", + "Class (oop)", + "Doxygen keywords", + 0 +}; + +LexerModule lmFlagShip(SCLEX_FLAGSHIP, ColouriseFlagShipDoc, "flagship", FoldFlagShipDoc, FSWordListDesc); diff --git a/libs/qscintilla_2.14.1/scintilla/lexers/LexForth.cpp b/libs/qscintilla_2.14.1/scintilla/lexers/LexForth.cpp new file mode 100644 index 000000000..80842097d --- /dev/null +++ b/libs/qscintilla_2.14.1/scintilla/lexers/LexForth.cpp @@ -0,0 +1,168 @@ +// Scintilla source code edit control +/** @file LexForth.cxx + ** Lexer for FORTH + **/ +// Copyright 1998-2003 by Neil Hodgson +// The License.txt file describes the conditions under which this software may be distributed. + +#include +#include +#include +#include +#include +#include + +#include "ILexer.h" +#include "Scintilla.h" +#include "SciLexer.h" + +#include "WordList.h" +#include "LexAccessor.h" +#include "Accessor.h" +#include "StyleContext.h" +#include "CharacterSet.h" +#include "LexerModule.h" + +using namespace Scintilla; + +static inline bool IsAWordStart(int ch) { + return (ch < 0x80) && (isalnum(ch) || ch == '_' || ch == '.'); +} + +static inline bool IsANumChar(int ch) { + return (ch < 0x80) && (isxdigit(ch) || ch == '.' || ch == 'e' || ch == 'E' ); +} + +static inline bool IsASpaceChar(int ch) { + return (ch < 0x80) && isspace(ch); +} + +static void ColouriseForthDoc(Sci_PositionU startPos, Sci_Position length, int initStyle, WordList *keywordLists[], + Accessor &styler) { + + WordList &control = *keywordLists[0]; + WordList &keyword = *keywordLists[1]; + WordList &defword = *keywordLists[2]; + WordList &preword1 = *keywordLists[3]; + WordList &preword2 = *keywordLists[4]; + WordList &strings = *keywordLists[5]; + + StyleContext sc(startPos, length, initStyle, styler); + + for (; sc.More(); sc.Forward()) + { + // Determine if the current state should terminate. + if (sc.state == SCE_FORTH_COMMENT) { + if (sc.atLineEnd) { + sc.SetState(SCE_FORTH_DEFAULT); + } + }else if (sc.state == SCE_FORTH_COMMENT_ML) { + if (sc.ch == ')') { + sc.ForwardSetState(SCE_FORTH_DEFAULT); + } + }else if (sc.state == SCE_FORTH_IDENTIFIER || sc.state == SCE_FORTH_NUMBER) { + // handle numbers here too, because what we thought was a number might + // turn out to be a keyword e.g. 2DUP + if (IsASpaceChar(sc.ch) ) { + char s[100]; + sc.GetCurrentLowered(s, sizeof(s)); + int newState = sc.state == SCE_FORTH_NUMBER ? SCE_FORTH_NUMBER : SCE_FORTH_DEFAULT; + if (control.InList(s)) { + sc.ChangeState(SCE_FORTH_CONTROL); + } else if (keyword.InList(s)) { + sc.ChangeState(SCE_FORTH_KEYWORD); + } else if (defword.InList(s)) { + sc.ChangeState(SCE_FORTH_DEFWORD); + } else if (preword1.InList(s)) { + sc.ChangeState(SCE_FORTH_PREWORD1); + } else if (preword2.InList(s)) { + sc.ChangeState(SCE_FORTH_PREWORD2); + } else if (strings.InList(s)) { + sc.ChangeState(SCE_FORTH_STRING); + newState = SCE_FORTH_STRING; + } + sc.SetState(newState); + } + if (sc.state == SCE_FORTH_NUMBER) { + if (IsASpaceChar(sc.ch)) { + sc.SetState(SCE_FORTH_DEFAULT); + } else if (!IsANumChar(sc.ch)) { + sc.ChangeState(SCE_FORTH_IDENTIFIER); + } + } + }else if (sc.state == SCE_FORTH_STRING) { + if (sc.ch == '\"') { + sc.ForwardSetState(SCE_FORTH_DEFAULT); + } + }else if (sc.state == SCE_FORTH_LOCALE) { + if (sc.ch == '}') { + sc.ForwardSetState(SCE_FORTH_DEFAULT); + } + }else if (sc.state == SCE_FORTH_DEFWORD) { + if (IsASpaceChar(sc.ch)) { + sc.SetState(SCE_FORTH_DEFAULT); + } + } + + // Determine if a new state should be entered. + if (sc.state == SCE_FORTH_DEFAULT) { + if (sc.ch == '\\'){ + sc.SetState(SCE_FORTH_COMMENT); + } else if (sc.ch == '(' && + (sc.atLineStart || IsASpaceChar(sc.chPrev)) && + (sc.atLineEnd || IsASpaceChar(sc.chNext))) { + sc.SetState(SCE_FORTH_COMMENT_ML); + } else if ( (sc.ch == '$' && (IsASCII(sc.chNext) && isxdigit(sc.chNext))) ) { + // number starting with $ is a hex number + sc.SetState(SCE_FORTH_NUMBER); + while(sc.More() && IsASCII(sc.chNext) && isxdigit(sc.chNext)) + sc.Forward(); + } else if ( (sc.ch == '%' && (IsASCII(sc.chNext) && (sc.chNext == '0' || sc.chNext == '1'))) ) { + // number starting with % is binary + sc.SetState(SCE_FORTH_NUMBER); + while(sc.More() && IsASCII(sc.chNext) && (sc.chNext == '0' || sc.chNext == '1')) + sc.Forward(); + } else if ( IsASCII(sc.ch) && + (isxdigit(sc.ch) || ((sc.ch == '.' || sc.ch == '-') && IsASCII(sc.chNext) && isxdigit(sc.chNext)) ) + ){ + sc.SetState(SCE_FORTH_NUMBER); + } else if (IsAWordStart(sc.ch)) { + sc.SetState(SCE_FORTH_IDENTIFIER); + } else if (sc.ch == '{') { + sc.SetState(SCE_FORTH_LOCALE); + } else if (sc.ch == ':' && IsASCII(sc.chNext) && isspace(sc.chNext)) { + // highlight word definitions e.g. : GCD ( n n -- n ) ..... ; + // ^ ^^^ + sc.SetState(SCE_FORTH_DEFWORD); + while(sc.More() && IsASCII(sc.chNext) && isspace(sc.chNext)) + sc.Forward(); + } else if (sc.ch == ';' && + (sc.atLineStart || IsASpaceChar(sc.chPrev)) && + (sc.atLineEnd || IsASpaceChar(sc.chNext)) ) { + // mark the ';' that ends a word + sc.SetState(SCE_FORTH_DEFWORD); + sc.ForwardSetState(SCE_FORTH_DEFAULT); + } + } + + } + sc.Complete(); +} + +static void FoldForthDoc(Sci_PositionU, Sci_Position, int, WordList *[], + Accessor &) { +} + +static const char * const forthWordLists[] = { + "control keywords", + "keywords", + "definition words", + "prewords with one argument", + "prewords with two arguments", + "string definition keywords", + 0, + }; + +LexerModule lmForth(SCLEX_FORTH, ColouriseForthDoc, "forth", FoldForthDoc, forthWordLists); + + diff --git a/libs/qscintilla_2.14.1/scintilla/lexers/LexFortran.cpp b/libs/qscintilla_2.14.1/scintilla/lexers/LexFortran.cpp new file mode 100644 index 000000000..28298b3ed --- /dev/null +++ b/libs/qscintilla_2.14.1/scintilla/lexers/LexFortran.cpp @@ -0,0 +1,721 @@ +// Scintilla source code edit control +/** @file LexFortran.cxx + ** Lexer for Fortran. + ** Written by Chuan-jian Shen, Last changed Sep. 2003 + **/ +// Copyright 1998-2001 by Neil Hodgson +// The License.txt file describes the conditions under which this software may be distributed. +/***************************************/ +#include +#include +#include +#include +#include +#include +/***************************************/ +#include "ILexer.h" +#include "Scintilla.h" +#include "SciLexer.h" + +#include "WordList.h" +#include "LexAccessor.h" +#include "Accessor.h" +#include "StyleContext.h" +#include "CharacterSet.h" +#include "LexerModule.h" +/***************************************/ + +using namespace Scintilla; + +/***********************************************/ +static inline bool IsAWordChar(const int ch) { + return (ch < 0x80) && (isalnum(ch) || ch == '_' || ch == '%'); +} +/**********************************************/ +static inline bool IsAWordStart(const int ch) { + return (ch < 0x80) && (isalnum(ch)); +} +/***************************************/ +static inline bool IsABlank(unsigned int ch) { + return (ch == ' ') || (ch == 0x09) || (ch == 0x0b) ; +} +/***************************************/ +static inline bool IsALineEnd(char ch) { + return ((ch == '\n') || (ch == '\r')) ; +} +/***************************************/ +static Sci_PositionU GetContinuedPos(Sci_PositionU pos, Accessor &styler) { + while (!IsALineEnd(styler.SafeGetCharAt(pos++))) continue; + if (styler.SafeGetCharAt(pos) == '\n') pos++; + while (IsABlank(styler.SafeGetCharAt(pos++))) continue; + char chCur = styler.SafeGetCharAt(pos); + if (chCur == '&') { + while (IsABlank(styler.SafeGetCharAt(++pos))) continue; + return pos; + } else { + return pos; + } +} +/***************************************/ +static void ColouriseFortranDoc(Sci_PositionU startPos, Sci_Position length, int initStyle, + WordList *keywordlists[], Accessor &styler, bool isFixFormat) { + WordList &keywords = *keywordlists[0]; + WordList &keywords2 = *keywordlists[1]; + WordList &keywords3 = *keywordlists[2]; + /***************************************/ + Sci_Position posLineStart = 0; + int numNonBlank = 0, prevState = 0; + Sci_Position endPos = startPos + length; + /***************************************/ + // backtrack to the nearest keyword + while ((startPos > 1) && (styler.StyleAt(startPos) != SCE_F_WORD)) { + startPos--; + } + startPos = styler.LineStart(styler.GetLine(startPos)); + initStyle = styler.StyleAt(startPos - 1); + StyleContext sc(startPos, endPos-startPos, initStyle, styler); + /***************************************/ + for (; sc.More(); sc.Forward()) { + // remember the start position of the line + if (sc.atLineStart) { + posLineStart = sc.currentPos; + numNonBlank = 0; + sc.SetState(SCE_F_DEFAULT); + } + if (!IsASpaceOrTab(sc.ch)) numNonBlank ++; + /***********************************************/ + // Handle the fix format generically + Sci_Position toLineStart = sc.currentPos - posLineStart; + if (isFixFormat && (toLineStart < 6 || toLineStart >= 72)) { + if ((toLineStart == 0 && (tolower(sc.ch) == 'c' || sc.ch == '*')) || sc.ch == '!') { + if (sc.MatchIgnoreCase("cdec$") || sc.MatchIgnoreCase("*dec$") || sc.MatchIgnoreCase("!dec$") || + sc.MatchIgnoreCase("cdir$") || sc.MatchIgnoreCase("*dir$") || sc.MatchIgnoreCase("!dir$") || + sc.MatchIgnoreCase("cms$") || sc.MatchIgnoreCase("*ms$") || sc.MatchIgnoreCase("!ms$") || + sc.chNext == '$') { + sc.SetState(SCE_F_PREPROCESSOR); + } else { + sc.SetState(SCE_F_COMMENT); + } + + while (!sc.atLineEnd && sc.More()) sc.Forward(); // Until line end + } else if (toLineStart >= 72) { + sc.SetState(SCE_F_COMMENT); + while (!sc.atLineEnd && sc.More()) sc.Forward(); // Until line end + } else if (toLineStart < 5) { + if (IsADigit(sc.ch)) + sc.SetState(SCE_F_LABEL); + else + sc.SetState(SCE_F_DEFAULT); + } else if (toLineStart == 5) { + //if (!IsASpace(sc.ch) && sc.ch != '0') { + if (sc.ch != '\r' && sc.ch != '\n') { + sc.SetState(SCE_F_CONTINUATION); + if (!IsASpace(sc.ch) && sc.ch != '0') + sc.ForwardSetState(prevState); + } else + sc.SetState(SCE_F_DEFAULT); + } + continue; + } + /***************************************/ + // Handle line continuation generically. + if (!isFixFormat && sc.ch == '&' && sc.state != SCE_F_COMMENT) { + char chTemp = ' '; + Sci_Position j = 1; + while (IsABlank(chTemp) && j<132) { + chTemp = static_cast(sc.GetRelative(j)); + j++; + } + if (chTemp == '!') { + sc.SetState(SCE_F_CONTINUATION); + if (sc.chNext == '!') sc.ForwardSetState(SCE_F_COMMENT); + } else if (chTemp == '\r' || chTemp == '\n') { + int currentState = sc.state; + sc.SetState(SCE_F_CONTINUATION); + sc.ForwardSetState(SCE_F_DEFAULT); + while (IsASpace(sc.ch) && sc.More()) { + sc.Forward(); + if (sc.atLineStart) numNonBlank = 0; + if (!IsASpaceOrTab(sc.ch)) numNonBlank ++; + } + if (sc.ch == '&') { + sc.SetState(SCE_F_CONTINUATION); + sc.Forward(); + } + sc.SetState(currentState); + } + } + /***************************************/ + // Hanndle preprocessor directives + if (sc.ch == '#' && numNonBlank == 1) + { + sc.SetState(SCE_F_PREPROCESSOR); + while (!sc.atLineEnd && sc.More()) + sc.Forward(); // Until line end + } + /***************************************/ + // Determine if the current state should terminate. + if (sc.state == SCE_F_OPERATOR) { + sc.SetState(SCE_F_DEFAULT); + } else if (sc.state == SCE_F_NUMBER) { + if (!(IsAWordChar(sc.ch) || sc.ch=='\'' || sc.ch=='\"' || sc.ch=='.')) { + sc.SetState(SCE_F_DEFAULT); + } + } else if (sc.state == SCE_F_IDENTIFIER) { + if (!IsAWordChar(sc.ch) || (sc.ch == '%')) { + char s[100]; + sc.GetCurrentLowered(s, sizeof(s)); + if (keywords.InList(s)) { + sc.ChangeState(SCE_F_WORD); + } else if (keywords2.InList(s)) { + sc.ChangeState(SCE_F_WORD2); + } else if (keywords3.InList(s)) { + sc.ChangeState(SCE_F_WORD3); + } + sc.SetState(SCE_F_DEFAULT); + } + } else if (sc.state == SCE_F_COMMENT || sc.state == SCE_F_PREPROCESSOR) { + if (sc.ch == '\r' || sc.ch == '\n') { + sc.SetState(SCE_F_DEFAULT); + } + } else if (sc.state == SCE_F_STRING1) { + prevState = sc.state; + if (sc.ch == '\'') { + if (sc.chNext == '\'') { + sc.Forward(); + } else { + sc.ForwardSetState(SCE_F_DEFAULT); + prevState = SCE_F_DEFAULT; + } + } else if (sc.atLineEnd) { + sc.ChangeState(SCE_F_STRINGEOL); + sc.ForwardSetState(SCE_F_DEFAULT); + } + } else if (sc.state == SCE_F_STRING2) { + prevState = sc.state; + if (sc.atLineEnd) { + sc.ChangeState(SCE_F_STRINGEOL); + sc.ForwardSetState(SCE_F_DEFAULT); + } else if (sc.ch == '\"') { + if (sc.chNext == '\"') { + sc.Forward(); + } else { + sc.ForwardSetState(SCE_F_DEFAULT); + prevState = SCE_F_DEFAULT; + } + } + } else if (sc.state == SCE_F_OPERATOR2) { + if (sc.ch == '.') { + sc.ForwardSetState(SCE_F_DEFAULT); + } + } else if (sc.state == SCE_F_CONTINUATION) { + sc.SetState(SCE_F_DEFAULT); + } else if (sc.state == SCE_F_LABEL) { + if (!IsADigit(sc.ch)) { + sc.SetState(SCE_F_DEFAULT); + } else { + if (isFixFormat && sc.currentPos-posLineStart > 4) + sc.SetState(SCE_F_DEFAULT); + else if (numNonBlank > 5) + sc.SetState(SCE_F_DEFAULT); + } + } + /***************************************/ + // Determine if a new state should be entered. + if (sc.state == SCE_F_DEFAULT) { + if (sc.ch == '!') { + if (sc.MatchIgnoreCase("!dec$") || sc.MatchIgnoreCase("!dir$") || + sc.MatchIgnoreCase("!ms$") || sc.chNext == '$') { + sc.SetState(SCE_F_PREPROCESSOR); + } else { + sc.SetState(SCE_F_COMMENT); + } + } else if ((!isFixFormat) && IsADigit(sc.ch) && numNonBlank == 1) { + sc.SetState(SCE_F_LABEL); + } else if (IsADigit(sc.ch) || (sc.ch == '.' && IsADigit(sc.chNext))) { + sc.SetState(SCE_F_NUMBER); + } else if ((tolower(sc.ch) == 'b' || tolower(sc.ch) == 'o' || + tolower(sc.ch) == 'z') && (sc.chNext == '\"' || sc.chNext == '\'')) { + sc.SetState(SCE_F_NUMBER); + sc.Forward(); + } else if (sc.ch == '.' && isalpha(sc.chNext)) { + sc.SetState(SCE_F_OPERATOR2); + } else if (IsAWordStart(sc.ch)) { + sc.SetState(SCE_F_IDENTIFIER); + } else if (sc.ch == '\"') { + sc.SetState(SCE_F_STRING2); + } else if (sc.ch == '\'') { + sc.SetState(SCE_F_STRING1); + } else if (isoperator(static_cast(sc.ch))) { + sc.SetState(SCE_F_OPERATOR); + } + } + } + sc.Complete(); +} +/***************************************/ +static void CheckLevelCommentLine(const unsigned int nComL, + Sci_Position nComColB[], Sci_Position nComColF[], Sci_Position &nComCur, + bool comLineB[], bool comLineF[], bool &comLineCur, + int &levelDeltaNext) { + levelDeltaNext = 0; + if (!comLineCur) { + return; + } + + if (!comLineF[0] || nComColF[0] != nComCur) { + unsigned int i=0; + for (; i= nLineTotal) { + return; + } + + for (int i=nComL-2; i>=0; i--) { + nComColB[i+1] = nComColB[i]; + comLineB[i+1] = comLineB[i]; + } + nComColB[0] = nComCur; + comLineB[0] = comLineCur; + nComCur = nComColF[0]; + comLineCur = comLineF[0]; + for (unsigned int i=0; i+1 0) { + lineCurrent--; + startPos = styler.LineStart(lineCurrent); + isPrevLine = true; + } else { + isPrevLine = false; + } + char chNext = styler[startPos]; + int styleNext = styler.StyleAt(startPos); + int style = initStyle; + int levelDeltaNext = 0; + + const unsigned int nComL = 3; // defines how many comment lines should be before they are folded + Sci_Position nComColB[nComL] = {}; + Sci_Position nComColF[nComL] = {}; + Sci_Position nComCur = 0; + bool comLineB[nComL] = {}; + bool comLineF[nComL] = {}; + bool comLineCur; + Sci_Position nLineTotal = styler.GetLine(styler.Length()-1) + 1; + if (foldComment) { + for (unsigned int i=0; i= nLineTotal) { + comLineF[i] = false; + break; + } + GetIfLineComment(styler, isFixFormat, chL, comLineF[i], nComColF[i]); + } + GetIfLineComment(styler, isFixFormat, lineCurrent, comLineCur, nComCur); + CheckBackComLines(styler, isFixFormat, lineCurrent, nComL, nComColB, nComColF, nComCur, + comLineB, comLineF, comLineCur); + } + int levelCurrent = styler.LevelAt(lineCurrent) & SC_FOLDLEVELNUMBERMASK; + + /***************************************/ + Sci_Position lastStart = 0; + char prevWord[32] = ""; + /***************************************/ + for (Sci_PositionU i = startPos; i < endPos; i++) { + char ch = chNext; + chNext = styler.SafeGetCharAt(i + 1); + char chNextNonBlank = chNext; + bool nextEOL = false; + if (IsALineEnd(chNextNonBlank)) { + nextEOL = true; + } + Sci_PositionU j=i+1; + while(IsABlank(chNextNonBlank) && j(tolower(styler[lastStart+k])); + } + s[k] = '\0'; + // Handle the forall and where statement and structure. + if (strcmp(s, "forall") == 0 || (strcmp(s, "where") == 0 && strcmp(prevWord, "else") != 0)) { + if (strcmp(prevWord, "end") != 0) { + j = i + 1; + char chBrace = '(', chSeek = ')', ch1 = styler.SafeGetCharAt(j); + // Find the position of the first ( + while (ch1 != chBrace && j 0) && (visibleChars > 0)) + lev |= SC_FOLDLEVELHEADERFLAG; + if (lev != styler.LevelAt(lineCurrent)) + styler.SetLevel(lineCurrent, lev); + + lineCurrent++; + levelCurrent += levelDeltaNext; + levelDeltaNext = 0; + visibleChars = 0; + strcpy(prevWord, ""); + isPrevLine = false; + + if (foldComment) { + StepCommentLine(styler, isFixFormat, lineCurrent, nComL, nComColB, nComColF, nComCur, + comLineB, comLineF, comLineCur); + } + } + /***************************************/ + if (!isspacechar(ch)) visibleChars++; + } + /***************************************/ +} +/***************************************/ +static const char * const FortranWordLists[] = { + "Primary keywords and identifiers", + "Intrinsic functions", + "Extended and user defined functions", + 0, +}; +/***************************************/ +static void ColouriseFortranDocFreeFormat(Sci_PositionU startPos, Sci_Position length, int initStyle, WordList *keywordlists[], + Accessor &styler) { + ColouriseFortranDoc(startPos, length, initStyle, keywordlists, styler, false); +} +/***************************************/ +static void ColouriseFortranDocFixFormat(Sci_PositionU startPos, Sci_Position length, int initStyle, WordList *keywordlists[], + Accessor &styler) { + ColouriseFortranDoc(startPos, length, initStyle, keywordlists, styler, true); +} +/***************************************/ +static void FoldFortranDocFreeFormat(Sci_PositionU startPos, Sci_Position length, int initStyle, + WordList *[], Accessor &styler) { + FoldFortranDoc(startPos, length, initStyle,styler, false); +} +/***************************************/ +static void FoldFortranDocFixFormat(Sci_PositionU startPos, Sci_Position length, int initStyle, + WordList *[], Accessor &styler) { + FoldFortranDoc(startPos, length, initStyle,styler, true); +} +/***************************************/ +LexerModule lmFortran(SCLEX_FORTRAN, ColouriseFortranDocFreeFormat, "fortran", FoldFortranDocFreeFormat, FortranWordLists); +LexerModule lmF77(SCLEX_F77, ColouriseFortranDocFixFormat, "f77", FoldFortranDocFixFormat, FortranWordLists); diff --git a/libs/qscintilla_2.14.1/scintilla/lexers/LexGAP.cpp b/libs/qscintilla_2.14.1/scintilla/lexers/LexGAP.cpp new file mode 100644 index 000000000..a2eca95ab --- /dev/null +++ b/libs/qscintilla_2.14.1/scintilla/lexers/LexGAP.cpp @@ -0,0 +1,264 @@ +// Scintilla source code edit control +/** @file LexGAP.cxx + ** Lexer for the GAP language. (The GAP System for Computational Discrete Algebra) + ** http://www.gap-system.org + **/ +// Copyright 2007 by Istvan Szollosi ( szteven gmail com ) +// The License.txt file describes the conditions under which this software may be distributed. + +#include +#include +#include +#include +#include +#include + +#include "ILexer.h" +#include "Scintilla.h" +#include "SciLexer.h" + +#include "WordList.h" +#include "LexAccessor.h" +#include "Accessor.h" +#include "StyleContext.h" +#include "CharacterSet.h" +#include "LexerModule.h" + +using namespace Scintilla; + +static inline bool IsGAPOperator(char ch) { + if (IsASCII(ch) && isalnum(ch)) return false; + if (ch == '+' || ch == '-' || ch == '*' || ch == '/' || + ch == '^' || ch == ',' || ch == '!' || ch == '.' || + ch == '=' || ch == '<' || ch == '>' || ch == '(' || + ch == ')' || ch == ';' || ch == '[' || ch == ']' || + ch == '{' || ch == '}' || ch == ':' ) + return true; + return false; +} + +static void GetRange(Sci_PositionU start, Sci_PositionU end, Accessor &styler, char *s, Sci_PositionU len) { + Sci_PositionU i = 0; + while ((i < end - start + 1) && (i < len-1)) { + s[i] = static_cast(styler[start + i]); + i++; + } + s[i] = '\0'; +} + +static void ColouriseGAPDoc(Sci_PositionU startPos, Sci_Position length, int initStyle, WordList *keywordlists[], Accessor &styler) { + + WordList &keywords1 = *keywordlists[0]; + WordList &keywords2 = *keywordlists[1]; + WordList &keywords3 = *keywordlists[2]; + WordList &keywords4 = *keywordlists[3]; + + // Do not leak onto next line + if (initStyle == SCE_GAP_STRINGEOL) initStyle = SCE_GAP_DEFAULT; + + StyleContext sc(startPos, length, initStyle, styler); + + for (; sc.More(); sc.Forward()) { + + // Prevent SCE_GAP_STRINGEOL from leaking back to previous line + if ( sc.atLineStart ) { + if (sc.state == SCE_GAP_STRING) sc.SetState(SCE_GAP_STRING); + if (sc.state == SCE_GAP_CHAR) sc.SetState(SCE_GAP_CHAR); + } + + // Handle line continuation generically + if (sc.ch == '\\' ) { + if (sc.chNext == '\n' || sc.chNext == '\r') { + sc.Forward(); + if (sc.ch == '\r' && sc.chNext == '\n') { + sc.Forward(); + } + continue; + } + } + + // Determine if the current state should terminate + switch (sc.state) { + case SCE_GAP_OPERATOR : + sc.SetState(SCE_GAP_DEFAULT); + break; + + case SCE_GAP_NUMBER : + if (!IsADigit(sc.ch)) { + if (sc.ch == '\\') { + if (!sc.atLineEnd) { + if (!IsADigit(sc.chNext)) { + sc.Forward(); + sc.ChangeState(SCE_GAP_IDENTIFIER); + } + } + } else if (isalpha(sc.ch) || sc.ch == '_') { + sc.ChangeState(SCE_GAP_IDENTIFIER); + } + else sc.SetState(SCE_GAP_DEFAULT); + } + break; + + case SCE_GAP_IDENTIFIER : + if (!(iswordstart(static_cast(sc.ch)) || sc.ch == '$')) { + if (sc.ch == '\\') sc.Forward(); + else { + char s[1000]; + sc.GetCurrent(s, sizeof(s)); + if (keywords1.InList(s)) { + sc.ChangeState(SCE_GAP_KEYWORD); + } else if (keywords2.InList(s)) { + sc.ChangeState(SCE_GAP_KEYWORD2); + } else if (keywords3.InList(s)) { + sc.ChangeState(SCE_GAP_KEYWORD3); + } else if (keywords4.InList(s)) { + sc.ChangeState(SCE_GAP_KEYWORD4); + } + sc.SetState(SCE_GAP_DEFAULT); + } + } + break; + + case SCE_GAP_COMMENT : + if (sc.atLineEnd) { + sc.SetState(SCE_GAP_DEFAULT); + } + break; + + case SCE_GAP_STRING: + if (sc.atLineEnd) { + sc.ChangeState(SCE_GAP_STRINGEOL); + } else if (sc.ch == '\\') { + if (sc.chNext == '\"' || sc.chNext == '\'' || sc.chNext == '\\') { + sc.Forward(); + } + } else if (sc.ch == '\"') { + sc.ForwardSetState(SCE_GAP_DEFAULT); + } + break; + + case SCE_GAP_CHAR: + if (sc.atLineEnd) { + sc.ChangeState(SCE_GAP_STRINGEOL); + } else if (sc.ch == '\\') { + if (sc.chNext == '\"' || sc.chNext == '\'' || sc.chNext == '\\') { + sc.Forward(); + } + } else if (sc.ch == '\'') { + sc.ForwardSetState(SCE_GAP_DEFAULT); + } + break; + + case SCE_GAP_STRINGEOL: + if (sc.atLineStart) { + sc.SetState(SCE_GAP_DEFAULT); + } + break; + } + + // Determine if a new state should be entered + if (sc.state == SCE_GAP_DEFAULT) { + if (IsGAPOperator(static_cast(sc.ch))) { + sc.SetState(SCE_GAP_OPERATOR); + } + else if (IsADigit(sc.ch)) { + sc.SetState(SCE_GAP_NUMBER); + } else if (isalpha(sc.ch) || sc.ch == '_' || sc.ch == '\\' || sc.ch == '$' || sc.ch == '~') { + sc.SetState(SCE_GAP_IDENTIFIER); + if (sc.ch == '\\') sc.Forward(); + } else if (sc.ch == '#') { + sc.SetState(SCE_GAP_COMMENT); + } else if (sc.ch == '\"') { + sc.SetState(SCE_GAP_STRING); + } else if (sc.ch == '\'') { + sc.SetState(SCE_GAP_CHAR); + } + } + + } + sc.Complete(); +} + +static int ClassifyFoldPointGAP(const char* s) { + int level = 0; + if (strcmp(s, "function") == 0 || + strcmp(s, "do") == 0 || + strcmp(s, "if") == 0 || + strcmp(s, "repeat") == 0 ) { + level = 1; + } else if (strcmp(s, "end") == 0 || + strcmp(s, "od") == 0 || + strcmp(s, "fi") == 0 || + strcmp(s, "until") == 0 ) { + level = -1; + } + return level; +} + +static void FoldGAPDoc( Sci_PositionU startPos, Sci_Position length, int initStyle, WordList** , Accessor &styler) { + Sci_PositionU endPos = startPos + length; + int visibleChars = 0; + Sci_Position lineCurrent = styler.GetLine(startPos); + int levelPrev = styler.LevelAt(lineCurrent) & SC_FOLDLEVELNUMBERMASK; + int levelCurrent = levelPrev; + char chNext = styler[startPos]; + int styleNext = styler.StyleAt(startPos); + int style = initStyle; + + Sci_Position lastStart = 0; + + for (Sci_PositionU i = startPos; i < endPos; i++) { + char ch = chNext; + chNext = styler.SafeGetCharAt(i + 1); + int stylePrev = style; + style = styleNext; + styleNext = styler.StyleAt(i + 1); + bool atEOL = (ch == '\r' && chNext != '\n') || (ch == '\n'); + + if (stylePrev != SCE_GAP_KEYWORD && style == SCE_GAP_KEYWORD) { + // Store last word start point. + lastStart = i; + } + + if (stylePrev == SCE_GAP_KEYWORD) { + if(iswordchar(ch) && !iswordchar(chNext)) { + char s[100]; + GetRange(lastStart, i, styler, s, sizeof(s)); + levelCurrent += ClassifyFoldPointGAP(s); + } + } + + if (atEOL) { + int lev = levelPrev; + if ((levelCurrent > levelPrev) && (visibleChars > 0)) + lev |= SC_FOLDLEVELHEADERFLAG; + if (lev != styler.LevelAt(lineCurrent)) { + styler.SetLevel(lineCurrent, lev); + } + lineCurrent++; + levelPrev = levelCurrent; + visibleChars = 0; + } + + if (!isspacechar(ch)) + visibleChars++; + } + + int flagsNext = styler.LevelAt(lineCurrent) & ~SC_FOLDLEVELNUMBERMASK; + styler.SetLevel(lineCurrent, levelPrev | flagsNext); +} + +static const char * const GAPWordListDesc[] = { + "Keywords 1", + "Keywords 2", + "Keywords 3 (unused)", + "Keywords 4 (unused)", + 0 +}; + +LexerModule lmGAP( + SCLEX_GAP, + ColouriseGAPDoc, + "gap", + FoldGAPDoc, + GAPWordListDesc); diff --git a/libs/qscintilla_2.14.1/scintilla/lexers/LexGui4Cli.cpp b/libs/qscintilla_2.14.1/scintilla/lexers/LexGui4Cli.cpp new file mode 100644 index 000000000..e321a5b85 --- /dev/null +++ b/libs/qscintilla_2.14.1/scintilla/lexers/LexGui4Cli.cpp @@ -0,0 +1,311 @@ +// Scintilla source code edit control +// Copyright 1998-2002 by Neil Hodgson +/* +This is the Lexer for Gui4Cli, included in SciLexer.dll +- by d. Keletsekis, 2/10/2003 + +To add to SciLexer.dll: +1. Add the values below to INCLUDE\Scintilla.iface +2. Run the scripts/HFacer.py script +3. Run the scripts/LexGen.py script + +val SCE_GC_DEFAULT=0 +val SCE_GC_COMMENTLINE=1 +val SCE_GC_COMMENTBLOCK=2 +val SCE_GC_GLOBAL=3 +val SCE_GC_EVENT=4 +val SCE_GC_ATTRIBUTE=5 +val SCE_GC_CONTROL=6 +val SCE_GC_COMMAND=7 +val SCE_GC_STRING=8 +val SCE_GC_OPERATOR=9 +*/ + +#include +#include +#include +#include +#include +#include + +#include "ILexer.h" +#include "Scintilla.h" +#include "SciLexer.h" + +#include "WordList.h" +#include "LexAccessor.h" +#include "Accessor.h" +#include "StyleContext.h" +#include "CharacterSet.h" +#include "LexerModule.h" + +using namespace Scintilla; + +#define debug Platform::DebugPrintf + +static inline bool IsAWordChar(const int ch) { + return (ch < 0x80) && (isalnum(ch) || ch == '.' || ch == '_' || ch =='\\'); +} + +inline bool isGCOperator(int ch) +{ if (isalnum(ch)) + return false; + // '.' left out as it is used to make up numbers + if (ch == '*' || ch == '/' || ch == '-' || ch == '+' || + ch == '(' || ch == ')' || ch == '=' || ch == '%' || + ch == '[' || ch == ']' || ch == '<' || ch == '>' || + ch == ',' || ch == ';' || ch == ':') + return true; + return false; +} + +#define isSpace(x) ((x)==' ' || (x)=='\t') +#define isNL(x) ((x)=='\n' || (x)=='\r') +#define isSpaceOrNL(x) (isSpace(x) || isNL(x)) +#define BUFFSIZE 500 +#define isFoldPoint(x) ((styler.LevelAt(x) & SC_FOLDLEVELNUMBERMASK) == 1024) + +static void colorFirstWord(WordList *keywordlists[], Accessor &styler, + StyleContext *sc, char *buff, Sci_Position length, Sci_Position) +{ + Sci_Position c = 0; + while (sc->More() && isSpaceOrNL(sc->ch)) + { sc->Forward(); + } + styler.ColourTo(sc->currentPos - 1, sc->state); + + if (!IsAWordChar(sc->ch)) // comment, marker, etc.. + return; + + while (sc->More() && !isSpaceOrNL(sc->ch) && (c < length-1) && !isGCOperator(sc->ch)) + { buff[c] = static_cast(sc->ch); + ++c; sc->Forward(); + } + buff[c] = '\0'; + char *p = buff; + while (*p) // capitalize.. + { if (islower(*p)) *p = static_cast(toupper(*p)); + ++p; + } + + WordList &kGlobal = *keywordlists[0]; // keyword lists set by the user + WordList &kEvent = *keywordlists[1]; + WordList &kAttribute = *keywordlists[2]; + WordList &kControl = *keywordlists[3]; + WordList &kCommand = *keywordlists[4]; + + int state = 0; + // int level = styler.LevelAt(line) & SC_FOLDLEVELNUMBERMASK; + // debug ("line = %d, level = %d", line, level); + + if (kGlobal.InList(buff)) state = SCE_GC_GLOBAL; + else if (kAttribute.InList(buff)) state = SCE_GC_ATTRIBUTE; + else if (kControl.InList(buff)) state = SCE_GC_CONTROL; + else if (kCommand.InList(buff)) state = SCE_GC_COMMAND; + else if (kEvent.InList(buff)) state = SCE_GC_EVENT; + + if (state) + { sc->ChangeState(state); + styler.ColourTo(sc->currentPos - 1, sc->state); + sc->ChangeState(SCE_GC_DEFAULT); + } + else + { sc->ChangeState(SCE_GC_DEFAULT); + styler.ColourTo(sc->currentPos - 1, sc->state); + } +} + +// Main colorizing function called by Scintilla +static void +ColouriseGui4CliDoc(Sci_PositionU startPos, Sci_Position length, int initStyle, + WordList *keywordlists[], Accessor &styler) +{ + styler.StartAt(startPos); + + Sci_Position currentline = styler.GetLine(startPos); + int quotestart = 0, oldstate; + styler.StartSegment(startPos); + bool noforward; + char buff[BUFFSIZE+1]; // buffer for command name + + StyleContext sc(startPos, length, initStyle, styler); + buff[0] = '\0'; // cbuff = 0; + + if (sc.state != SCE_GC_COMMENTBLOCK) // colorize 1st word.. + colorFirstWord(keywordlists, styler, &sc, buff, BUFFSIZE, currentline); + + while (sc.More()) + { noforward = 0; + + switch (sc.ch) + { + case '/': + if (sc.state == SCE_GC_COMMENTBLOCK || sc.state == SCE_GC_STRING) + break; + if (sc.chNext == '/') // line comment + { sc.SetState (SCE_GC_COMMENTLINE); + sc.Forward(); + styler.ColourTo(sc.currentPos, sc.state); + } + else if (sc.chNext == '*') // block comment + { sc.SetState(SCE_GC_COMMENTBLOCK); + sc.Forward(); + styler.ColourTo(sc.currentPos, sc.state); + } + else + styler.ColourTo(sc.currentPos, sc.state); + break; + + case '*': // end of comment block, or operator.. + if (sc.state == SCE_GC_STRING) + break; + if (sc.state == SCE_GC_COMMENTBLOCK && sc.chNext == '/') + { sc.Forward(); + styler.ColourTo(sc.currentPos, sc.state); + sc.ChangeState (SCE_GC_DEFAULT); + } + else + styler.ColourTo(sc.currentPos, sc.state); + break; + + case '\'': case '\"': // strings.. + if (sc.state == SCE_GC_COMMENTBLOCK || sc.state == SCE_GC_COMMENTLINE) + break; + if (sc.state == SCE_GC_STRING) + { if (sc.ch == quotestart) // match same quote char.. + { styler.ColourTo(sc.currentPos, sc.state); + sc.ChangeState(SCE_GC_DEFAULT); + quotestart = 0; + } } + else + { styler.ColourTo(sc.currentPos - 1, sc.state); + sc.ChangeState(SCE_GC_STRING); + quotestart = sc.ch; + } + break; + + case ';': // end of commandline character + if (sc.state != SCE_GC_COMMENTBLOCK && sc.state != SCE_GC_COMMENTLINE && + sc.state != SCE_GC_STRING) + { + styler.ColourTo(sc.currentPos - 1, sc.state); + styler.ColourTo(sc.currentPos, SCE_GC_OPERATOR); + sc.ChangeState(SCE_GC_DEFAULT); + sc.Forward(); + colorFirstWord(keywordlists, styler, &sc, buff, BUFFSIZE, currentline); + noforward = 1; // don't move forward - already positioned at next char.. + } + break; + + case '+': case '-': case '=': case '!': // operators.. + case '<': case '>': case '&': case '|': case '$': + if (sc.state != SCE_GC_COMMENTBLOCK && sc.state != SCE_GC_COMMENTLINE && + sc.state != SCE_GC_STRING) + { + styler.ColourTo(sc.currentPos - 1, sc.state); + styler.ColourTo(sc.currentPos, SCE_GC_OPERATOR); + sc.ChangeState(SCE_GC_DEFAULT); + } + break; + + case '\\': // escape - same as operator, but also mark in strings.. + if (sc.state != SCE_GC_COMMENTBLOCK && sc.state != SCE_GC_COMMENTLINE) + { + oldstate = sc.state; + styler.ColourTo(sc.currentPos - 1, sc.state); + sc.Forward(); // mark also the next char.. + styler.ColourTo(sc.currentPos, SCE_GC_OPERATOR); + sc.ChangeState(oldstate); + } + break; + + case '\n': case '\r': + ++currentline; + if (sc.state == SCE_GC_COMMENTLINE) + { styler.ColourTo(sc.currentPos, sc.state); + sc.ChangeState (SCE_GC_DEFAULT); + } + else if (sc.state != SCE_GC_COMMENTBLOCK) + { colorFirstWord(keywordlists, styler, &sc, buff, BUFFSIZE, currentline); + noforward = 1; // don't move forward - already positioned at next char.. + } + break; + +// case ' ': case '\t': +// default : + } + + if (!noforward) sc.Forward(); + + } + sc.Complete(); +} + +// Main folding function called by Scintilla - (based on props (.ini) files function) +static void FoldGui4Cli(Sci_PositionU startPos, Sci_Position length, int, + WordList *[], Accessor &styler) +{ + bool foldCompact = styler.GetPropertyInt("fold.compact", 1) != 0; + + Sci_PositionU endPos = startPos + length; + int visibleChars = 0; + Sci_Position lineCurrent = styler.GetLine(startPos); + + char chNext = styler[startPos]; + int styleNext = styler.StyleAt(startPos); + bool headerPoint = false; + + for (Sci_PositionU i = startPos; i < endPos; i++) + { + char ch = chNext; + chNext = styler[i+1]; + + int style = styleNext; + styleNext = styler.StyleAt(i + 1); + bool atEOL = (ch == '\r' && chNext != '\n') || (ch == '\n'); + + if (style == SCE_GC_EVENT || style == SCE_GC_GLOBAL) + { headerPoint = true; // fold at events and globals + } + + if (atEOL) + { int lev = SC_FOLDLEVELBASE+1; + + if (headerPoint) + lev = SC_FOLDLEVELBASE; + + if (visibleChars == 0 && foldCompact) + lev |= SC_FOLDLEVELWHITEFLAG; + + if (headerPoint) + lev |= SC_FOLDLEVELHEADERFLAG; + + if (lev != styler.LevelAt(lineCurrent)) // set level, if not already correct + { styler.SetLevel(lineCurrent, lev); + } + + lineCurrent++; // re-initialize our flags + visibleChars = 0; + headerPoint = false; + } + + if (!(isspacechar(ch))) // || (style == SCE_GC_COMMENTLINE) || (style != SCE_GC_COMMENTBLOCK))) + visibleChars++; + } + + int lev = headerPoint ? SC_FOLDLEVELBASE : SC_FOLDLEVELBASE+1; + int flagsNext = styler.LevelAt(lineCurrent) & ~SC_FOLDLEVELNUMBERMASK; + styler.SetLevel(lineCurrent, lev | flagsNext); +} + +// I have no idea what these are for.. probably accessible by some message. +static const char * const gui4cliWordListDesc[] = { + "Globals", "Events", "Attributes", "Control", "Commands", + 0 +}; + +// Declare language & pass our function pointers to Scintilla +LexerModule lmGui4Cli(SCLEX_GUI4CLI, ColouriseGui4CliDoc, "gui4cli", FoldGui4Cli, gui4cliWordListDesc); + +#undef debug + diff --git a/libs/qscintilla/lexers/LexHTML.cpp b/libs/qscintilla_2.14.1/scintilla/lexers/LexHTML.cpp similarity index 100% rename from libs/qscintilla/lexers/LexHTML.cpp rename to libs/qscintilla_2.14.1/scintilla/lexers/LexHTML.cpp diff --git a/libs/qscintilla_2.14.1/scintilla/lexers/LexHaskell.cpp b/libs/qscintilla_2.14.1/scintilla/lexers/LexHaskell.cpp new file mode 100644 index 000000000..680a0f296 --- /dev/null +++ b/libs/qscintilla_2.14.1/scintilla/lexers/LexHaskell.cpp @@ -0,0 +1,1110 @@ +/****************************************************************** + * LexHaskell.cxx + * + * A haskell lexer for the scintilla code control. + * Some stuff "lended" from LexPython.cxx and LexCPP.cxx. + * External lexer stuff inspired from the caml external lexer. + * Folder copied from Python's. + * + * Written by Tobias Engvall - tumm at dtek dot chalmers dot se + * + * Several bug fixes by Krasimir Angelov - kr.angelov at gmail.com + * + * Improved by kudah + * + * TODO: + * * A proper lexical folder to fold group declarations, comments, pragmas, + * #ifdefs, explicit layout, lists, tuples, quasi-quotes, splces, etc, etc, + * etc. + * + *****************************************************************/ +#include +#include +#include +#include +#include +#include + +#include +#include + +#include "ILexer.h" +#include "Scintilla.h" +#include "SciLexer.h" + +#include "PropSetSimple.h" +#include "WordList.h" +#include "LexAccessor.h" +#include "Accessor.h" +#include "StyleContext.h" +#include "CharacterSet.h" +#include "CharacterCategory.h" +#include "LexerModule.h" +#include "OptionSet.h" +#include "DefaultLexer.h" + +using namespace Scintilla; + +// See https://github.com/ghc/ghc/blob/master/compiler/parser/Lexer.x#L1682 +// Note, letter modifiers are prohibited. + +static int u_iswupper (int ch) { + CharacterCategory c = CategoriseCharacter(ch); + return c == ccLu || c == ccLt; +} + +static int u_iswalpha (int ch) { + CharacterCategory c = CategoriseCharacter(ch); + return c == ccLl || c == ccLu || c == ccLt || c == ccLo; +} + +static int u_iswalnum (int ch) { + CharacterCategory c = CategoriseCharacter(ch); + return c == ccLl || c == ccLu || c == ccLt || c == ccLo + || c == ccNd || c == ccNo; +} + +static int u_IsHaskellSymbol(int ch) { + CharacterCategory c = CategoriseCharacter(ch); + return c == ccPc || c == ccPd || c == ccPo + || c == ccSm || c == ccSc || c == ccSk || c == ccSo; +} + +static inline bool IsHaskellLetter(const int ch) { + if (IsASCII(ch)) { + return (ch >= 'a' && ch <= 'z') + || (ch >= 'A' && ch <= 'Z'); + } else { + return u_iswalpha(ch) != 0; + } +} + +static inline bool IsHaskellAlphaNumeric(const int ch) { + if (IsASCII(ch)) { + return IsAlphaNumeric(ch); + } else { + return u_iswalnum(ch) != 0; + } +} + +static inline bool IsHaskellUpperCase(const int ch) { + if (IsASCII(ch)) { + return ch >= 'A' && ch <= 'Z'; + } else { + return u_iswupper(ch) != 0; + } +} + +static inline bool IsAnHaskellOperatorChar(const int ch) { + if (IsASCII(ch)) { + return + ( ch == '!' || ch == '#' || ch == '$' || ch == '%' + || ch == '&' || ch == '*' || ch == '+' || ch == '-' + || ch == '.' || ch == '/' || ch == ':' || ch == '<' + || ch == '=' || ch == '>' || ch == '?' || ch == '@' + || ch == '^' || ch == '|' || ch == '~' || ch == '\\'); + } else { + return u_IsHaskellSymbol(ch) != 0; + } +} + +static inline bool IsAHaskellWordStart(const int ch) { + return IsHaskellLetter(ch) || ch == '_'; +} + +static inline bool IsAHaskellWordChar(const int ch) { + return ( IsHaskellAlphaNumeric(ch) + || ch == '_' + || ch == '\''); +} + +static inline bool IsCommentBlockStyle(int style) { + return (style >= SCE_HA_COMMENTBLOCK && style <= SCE_HA_COMMENTBLOCK3); +} + +static inline bool IsCommentStyle(int style) { + return (style >= SCE_HA_COMMENTLINE && style <= SCE_HA_COMMENTBLOCK3) + || ( style == SCE_HA_LITERATE_COMMENT + || style == SCE_HA_LITERATE_CODEDELIM); +} + +// styles which do not belong to Haskell, but to external tools +static inline bool IsExternalStyle(int style) { + return ( style == SCE_HA_PREPROCESSOR + || style == SCE_HA_LITERATE_COMMENT + || style == SCE_HA_LITERATE_CODEDELIM); +} + +static inline int CommentBlockStyleFromNestLevel(const unsigned int nestLevel) { + return SCE_HA_COMMENTBLOCK + (nestLevel % 3); +} + +// Mangled version of lexlib/Accessor.cxx IndentAmount. +// Modified to treat comment blocks as whitespace +// plus special case for commentline/preprocessor. +static int HaskellIndentAmount(Accessor &styler, const Sci_Position line) { + + // Determines the indentation level of the current line + // Comment blocks are treated as whitespace + + Sci_Position pos = styler.LineStart(line); + Sci_Position eol_pos = styler.LineStart(line + 1) - 1; + + char ch = styler[pos]; + int style = styler.StyleAt(pos); + + int indent = 0; + bool inPrevPrefix = line > 0; + + Sci_Position posPrev = inPrevPrefix ? styler.LineStart(line-1) : 0; + + while (( ch == ' ' || ch == '\t' + || IsCommentBlockStyle(style) + || style == SCE_HA_LITERATE_CODEDELIM) + && (pos < eol_pos)) { + if (inPrevPrefix) { + char chPrev = styler[posPrev++]; + if (chPrev != ' ' && chPrev != '\t') { + inPrevPrefix = false; + } + } + if (ch == '\t') { + indent = (indent / 8 + 1) * 8; + } else { // Space or comment block + indent++; + } + pos++; + ch = styler[pos]; + style = styler.StyleAt(pos); + } + + indent += SC_FOLDLEVELBASE; + // if completely empty line or the start of a comment or preprocessor... + if ( styler.LineStart(line) == styler.Length() + || ch == ' ' + || ch == '\t' + || ch == '\n' + || ch == '\r' + || IsCommentStyle(style) + || style == SCE_HA_PREPROCESSOR) + return indent | SC_FOLDLEVELWHITEFLAG; + else + return indent; +} + +struct OptionsHaskell { + bool magicHash; + bool allowQuotes; + bool implicitParams; + bool highlightSafe; + bool cpp; + bool stylingWithinPreprocessor; + bool fold; + bool foldComment; + bool foldCompact; + bool foldImports; + OptionsHaskell() { + magicHash = true; // Widespread use, enabled by default. + allowQuotes = true; // Widespread use, enabled by default. + implicitParams = false; // Fell out of favor, seldom used, disabled. + highlightSafe = true; // Moderately used, doesn't hurt to enable. + cpp = true; // Widespread use, enabled by default; + stylingWithinPreprocessor = false; + fold = false; + foldComment = false; + foldCompact = false; + foldImports = false; + } +}; + +static const char * const haskellWordListDesc[] = { + "Keywords", + "FFI", + "Reserved operators", + 0 +}; + +struct OptionSetHaskell : public OptionSet { + OptionSetHaskell() { + DefineProperty("lexer.haskell.allow.hash", &OptionsHaskell::magicHash, + "Set to 0 to disallow the '#' character at the end of identifiers and " + "literals with the haskell lexer " + "(GHC -XMagicHash extension)"); + + DefineProperty("lexer.haskell.allow.quotes", &OptionsHaskell::allowQuotes, + "Set to 0 to disable highlighting of Template Haskell name quotations " + "and promoted constructors " + "(GHC -XTemplateHaskell and -XDataKinds extensions)"); + + DefineProperty("lexer.haskell.allow.questionmark", &OptionsHaskell::implicitParams, + "Set to 1 to allow the '?' character at the start of identifiers " + "with the haskell lexer " + "(GHC & Hugs -XImplicitParams extension)"); + + DefineProperty("lexer.haskell.import.safe", &OptionsHaskell::highlightSafe, + "Set to 0 to disallow \"safe\" keyword in imports " + "(GHC -XSafe, -XTrustworthy, -XUnsafe extensions)"); + + DefineProperty("lexer.haskell.cpp", &OptionsHaskell::cpp, + "Set to 0 to disable C-preprocessor highlighting " + "(-XCPP extension)"); + + DefineProperty("styling.within.preprocessor", &OptionsHaskell::stylingWithinPreprocessor, + "For Haskell code, determines whether all preprocessor code is styled in the " + "preprocessor style (0, the default) or only from the initial # to the end " + "of the command word(1)." + ); + + DefineProperty("fold", &OptionsHaskell::fold); + + DefineProperty("fold.comment", &OptionsHaskell::foldComment); + + DefineProperty("fold.compact", &OptionsHaskell::foldCompact); + + DefineProperty("fold.haskell.imports", &OptionsHaskell::foldImports, + "Set to 1 to enable folding of import declarations"); + + DefineWordListSets(haskellWordListDesc); + } +}; + +class LexerHaskell : public DefaultLexer { + bool literate; + Sci_Position firstImportLine; + int firstImportIndent; + WordList keywords; + WordList ffi; + WordList reserved_operators; + OptionsHaskell options; + OptionSetHaskell osHaskell; + + enum HashCount { + oneHash + ,twoHashes + ,unlimitedHashes + }; + + enum KeywordMode { + HA_MODE_DEFAULT = 0 + ,HA_MODE_IMPORT1 = 1 // after "import", before "qualified" or "safe" or package name or module name. + ,HA_MODE_IMPORT2 = 2 // after module name, before "as" or "hiding". + ,HA_MODE_IMPORT3 = 3 // after "as", before "hiding" + ,HA_MODE_MODULE = 4 // after "module", before module name. + ,HA_MODE_FFI = 5 // after "foreign", before FFI keywords + ,HA_MODE_TYPE = 6 // after "type" or "data", before "family" + }; + + enum LiterateMode { + LITERATE_BIRD = 0 // if '>' is the first character on the line, + // color '>' as a codedelim and the rest of + // the line as code. + // else if "\begin{code}" is the only word on the + // line except whitespace, switch to LITERATE_BLOCK + // otherwise color the line as a literate comment. + ,LITERATE_BLOCK = 1 // if the string "\end{code}" is encountered at column + // 0 ignoring all later characters, color the line + // as a codedelim and switch to LITERATE_BIRD + // otherwise color the line as code. + }; + + struct HaskellLineInfo { + unsigned int nestLevel; // 22 bits ought to be enough for anybody + unsigned int nonexternalStyle; // 5 bits, widen if number of styles goes + // beyond 31. + bool pragma; + LiterateMode lmode; + KeywordMode mode; + + HaskellLineInfo(int state) : + nestLevel (state >> 10) + , nonexternalStyle ((state >> 5) & 0x1F) + , pragma ((state >> 4) & 0x1) + , lmode (static_cast((state >> 3) & 0x1)) + , mode (static_cast(state & 0x7)) + {} + + int ToLineState() { + return + (nestLevel << 10) + | (nonexternalStyle << 5) + | (pragma << 4) + | (lmode << 3) + | mode; + } + }; + + inline void skipMagicHash(StyleContext &sc, const HashCount hashes) const { + if (options.magicHash && sc.ch == '#') { + sc.Forward(); + if (hashes == twoHashes && sc.ch == '#') { + sc.Forward(); + } else if (hashes == unlimitedHashes) { + while (sc.ch == '#') { + sc.Forward(); + } + } + } + } + + bool LineContainsImport(const Sci_Position line, Accessor &styler) const { + if (options.foldImports) { + Sci_Position currentPos = styler.LineStart(line); + int style = styler.StyleAt(currentPos); + + Sci_Position eol_pos = styler.LineStart(line + 1) - 1; + + while (currentPos < eol_pos) { + int ch = styler[currentPos]; + style = styler.StyleAt(currentPos); + + if (ch == ' ' || ch == '\t' + || IsCommentBlockStyle(style) + || style == SCE_HA_LITERATE_CODEDELIM) { + currentPos++; + } else { + break; + } + } + + return (style == SCE_HA_KEYWORD + && styler.Match(currentPos, "import")); + } else { + return false; + } + } + + inline int IndentAmountWithOffset(Accessor &styler, const Sci_Position line) const { + const int indent = HaskellIndentAmount(styler, line); + const int indentLevel = indent & SC_FOLDLEVELNUMBERMASK; + return indentLevel <= ((firstImportIndent - 1) + SC_FOLDLEVELBASE) + ? indent + : (indentLevel + firstImportIndent) | (indent & ~SC_FOLDLEVELNUMBERMASK); + } + + inline int IndentLevelRemoveIndentOffset(const int indentLevel) const { + return indentLevel <= ((firstImportIndent - 1) + SC_FOLDLEVELBASE) + ? indentLevel + : indentLevel - firstImportIndent; + } + +public: + LexerHaskell(bool literate_) + : literate(literate_) + , firstImportLine(-1) + , firstImportIndent(0) + {} + virtual ~LexerHaskell() {} + + void SCI_METHOD Release() override { + delete this; + } + + int SCI_METHOD Version() const override { + return lvOriginal; + } + + const char * SCI_METHOD PropertyNames() override { + return osHaskell.PropertyNames(); + } + + int SCI_METHOD PropertyType(const char *name) override { + return osHaskell.PropertyType(name); + } + + const char * SCI_METHOD DescribeProperty(const char *name) override { + return osHaskell.DescribeProperty(name); + } + + Sci_Position SCI_METHOD PropertySet(const char *key, const char *val) override; + + const char * SCI_METHOD DescribeWordListSets() override { + return osHaskell.DescribeWordListSets(); + } + + Sci_Position SCI_METHOD WordListSet(int n, const char *wl) override; + + void SCI_METHOD Lex(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess) override; + + void SCI_METHOD Fold(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess) override; + + void * SCI_METHOD PrivateCall(int, void *) override { + return 0; + } + + static ILexer *LexerFactoryHaskell() { + return new LexerHaskell(false); + } + + static ILexer *LexerFactoryLiterateHaskell() { + return new LexerHaskell(true); + } +}; + +Sci_Position SCI_METHOD LexerHaskell::PropertySet(const char *key, const char *val) { + if (osHaskell.PropertySet(&options, key, val)) { + return 0; + } + return -1; +} + +Sci_Position SCI_METHOD LexerHaskell::WordListSet(int n, const char *wl) { + WordList *wordListN = 0; + switch (n) { + case 0: + wordListN = &keywords; + break; + case 1: + wordListN = &ffi; + break; + case 2: + wordListN = &reserved_operators; + break; + } + Sci_Position firstModification = -1; + if (wordListN) { + WordList wlNew; + wlNew.Set(wl); + if (*wordListN != wlNew) { + wordListN->Set(wl); + firstModification = 0; + } + } + return firstModification; +} + +void SCI_METHOD LexerHaskell::Lex(Sci_PositionU startPos, Sci_Position length, int initStyle + ,IDocument *pAccess) { + LexAccessor styler(pAccess); + + Sci_Position lineCurrent = styler.GetLine(startPos); + + HaskellLineInfo hs = HaskellLineInfo(lineCurrent ? styler.GetLineState(lineCurrent-1) : 0); + + // Do not leak onto next line + if (initStyle == SCE_HA_STRINGEOL) + initStyle = SCE_HA_DEFAULT; + else if (initStyle == SCE_HA_LITERATE_CODEDELIM) + initStyle = hs.nonexternalStyle; + + StyleContext sc(startPos, length, initStyle, styler); + + int base = 10; + bool dot = false; + + bool inDashes = false; + bool alreadyInTheMiddleOfOperator = false; + + assert(!(IsCommentBlockStyle(initStyle) && hs.nestLevel == 0)); + + while (sc.More()) { + // Check for state end + + if (!IsExternalStyle(sc.state)) { + hs.nonexternalStyle = sc.state; + } + + // For lexer to work, states should unconditionally forward at least one + // character. + // If they don't, they should still check if they are at line end and + // forward if so. + // If a state forwards more than one character, it should check every time + // that it is not a line end and cease forwarding otherwise. + if (sc.atLineEnd) { + // Remember the line state for future incremental lexing + styler.SetLineState(lineCurrent, hs.ToLineState()); + lineCurrent++; + } + + // Handle line continuation generically. + if (sc.ch == '\\' && (sc.chNext == '\n' || sc.chNext == '\r') + && ( sc.state == SCE_HA_STRING + || sc.state == SCE_HA_PREPROCESSOR)) { + // Remember the line state for future incremental lexing + styler.SetLineState(lineCurrent, hs.ToLineState()); + lineCurrent++; + + sc.Forward(); + if (sc.ch == '\r' && sc.chNext == '\n') { + sc.Forward(); + } + sc.Forward(); + + continue; + } + + if (sc.atLineStart) { + + if (sc.state == SCE_HA_STRING || sc.state == SCE_HA_CHARACTER) { + // Prevent SCE_HA_STRINGEOL from leaking back to previous line + sc.SetState(sc.state); + } + + if (literate && hs.lmode == LITERATE_BIRD) { + if (!IsExternalStyle(sc.state)) { + sc.SetState(SCE_HA_LITERATE_COMMENT); + } + } + } + + // External + // Literate + if ( literate && hs.lmode == LITERATE_BIRD && sc.atLineStart + && sc.ch == '>') { + sc.SetState(SCE_HA_LITERATE_CODEDELIM); + sc.ForwardSetState(hs.nonexternalStyle); + } + else if (literate && hs.lmode == LITERATE_BIRD && sc.atLineStart + && ( sc.ch == ' ' || sc.ch == '\t' + || sc.Match("\\begin{code}"))) { + sc.SetState(sc.state); + + while ((sc.ch == ' ' || sc.ch == '\t') && sc.More()) + sc.Forward(); + + if (sc.Match("\\begin{code}")) { + sc.Forward(static_cast(strlen("\\begin{code}"))); + + bool correct = true; + + while (!sc.atLineEnd && sc.More()) { + if (sc.ch != ' ' && sc.ch != '\t') { + correct = false; + } + sc.Forward(); + } + + if (correct) { + sc.ChangeState(SCE_HA_LITERATE_CODEDELIM); // color the line end + hs.lmode = LITERATE_BLOCK; + } + } + } + else if (literate && hs.lmode == LITERATE_BLOCK && sc.atLineStart + && sc.Match("\\end{code}")) { + sc.SetState(SCE_HA_LITERATE_CODEDELIM); + + sc.Forward(static_cast(strlen("\\end{code}"))); + + while (!sc.atLineEnd && sc.More()) { + sc.Forward(); + } + + sc.SetState(SCE_HA_LITERATE_COMMENT); + hs.lmode = LITERATE_BIRD; + } + // Preprocessor + else if (sc.atLineStart && sc.ch == '#' && options.cpp + && (!options.stylingWithinPreprocessor || sc.state == SCE_HA_DEFAULT)) { + sc.SetState(SCE_HA_PREPROCESSOR); + sc.Forward(); + } + // Literate + else if (sc.state == SCE_HA_LITERATE_COMMENT) { + sc.Forward(); + } + else if (sc.state == SCE_HA_LITERATE_CODEDELIM) { + sc.ForwardSetState(hs.nonexternalStyle); + } + // Preprocessor + else if (sc.state == SCE_HA_PREPROCESSOR) { + if (sc.atLineEnd) { + sc.SetState(options.stylingWithinPreprocessor + ? SCE_HA_DEFAULT + : hs.nonexternalStyle); + sc.Forward(); // prevent double counting a line + } else if (options.stylingWithinPreprocessor && !IsHaskellLetter(sc.ch)) { + sc.SetState(SCE_HA_DEFAULT); + } else { + sc.Forward(); + } + } + // Haskell + // Operator + else if (sc.state == SCE_HA_OPERATOR) { + int style = SCE_HA_OPERATOR; + + if ( sc.ch == ':' + && !alreadyInTheMiddleOfOperator + // except "::" + && !( sc.chNext == ':' + && !IsAnHaskellOperatorChar(sc.GetRelative(2)))) { + style = SCE_HA_CAPITAL; + } + + alreadyInTheMiddleOfOperator = false; + + while (IsAnHaskellOperatorChar(sc.ch)) + sc.Forward(); + + char s[100]; + sc.GetCurrent(s, sizeof(s)); + + if (reserved_operators.InList(s)) + style = SCE_HA_RESERVED_OPERATOR; + + sc.ChangeState(style); + sc.SetState(SCE_HA_DEFAULT); + } + // String + else if (sc.state == SCE_HA_STRING) { + if (sc.atLineEnd) { + sc.ChangeState(SCE_HA_STRINGEOL); + sc.ForwardSetState(SCE_HA_DEFAULT); + } else if (sc.ch == '\"') { + sc.Forward(); + skipMagicHash(sc, oneHash); + sc.SetState(SCE_HA_DEFAULT); + } else if (sc.ch == '\\') { + sc.Forward(2); + } else { + sc.Forward(); + } + } + // Char + else if (sc.state == SCE_HA_CHARACTER) { + if (sc.atLineEnd) { + sc.ChangeState(SCE_HA_STRINGEOL); + sc.ForwardSetState(SCE_HA_DEFAULT); + } else if (sc.ch == '\'') { + sc.Forward(); + skipMagicHash(sc, oneHash); + sc.SetState(SCE_HA_DEFAULT); + } else if (sc.ch == '\\') { + sc.Forward(2); + } else { + sc.Forward(); + } + } + // Number + else if (sc.state == SCE_HA_NUMBER) { + if (sc.atLineEnd) { + sc.SetState(SCE_HA_DEFAULT); + sc.Forward(); // prevent double counting a line + } else if (IsADigit(sc.ch, base)) { + sc.Forward(); + } else if (sc.ch=='.' && dot && IsADigit(sc.chNext, base)) { + sc.Forward(2); + dot = false; + } else if ((base == 10) && + (sc.ch == 'e' || sc.ch == 'E') && + (IsADigit(sc.chNext) || sc.chNext == '+' || sc.chNext == '-')) { + sc.Forward(); + if (sc.ch == '+' || sc.ch == '-') + sc.Forward(); + } else { + skipMagicHash(sc, twoHashes); + sc.SetState(SCE_HA_DEFAULT); + } + } + // Keyword or Identifier + else if (sc.state == SCE_HA_IDENTIFIER) { + int style = IsHaskellUpperCase(sc.ch) ? SCE_HA_CAPITAL : SCE_HA_IDENTIFIER; + + assert(IsAHaskellWordStart(sc.ch)); + + sc.Forward(); + + while (sc.More()) { + if (IsAHaskellWordChar(sc.ch)) { + sc.Forward(); + } else if (sc.ch == '.' && style == SCE_HA_CAPITAL) { + if (IsHaskellUpperCase(sc.chNext)) { + sc.Forward(); + style = SCE_HA_CAPITAL; + } else if (IsAHaskellWordStart(sc.chNext)) { + sc.Forward(); + style = SCE_HA_IDENTIFIER; + } else if (IsAnHaskellOperatorChar(sc.chNext)) { + sc.Forward(); + style = sc.ch == ':' ? SCE_HA_CAPITAL : SCE_HA_OPERATOR; + while (IsAnHaskellOperatorChar(sc.ch)) + sc.Forward(); + break; + } else { + break; + } + } else { + break; + } + } + + skipMagicHash(sc, unlimitedHashes); + + char s[100]; + sc.GetCurrent(s, sizeof(s)); + + KeywordMode new_mode = HA_MODE_DEFAULT; + + if (keywords.InList(s)) { + style = SCE_HA_KEYWORD; + } else if (style == SCE_HA_CAPITAL) { + if (hs.mode == HA_MODE_IMPORT1 || hs.mode == HA_MODE_IMPORT3) { + style = SCE_HA_MODULE; + new_mode = HA_MODE_IMPORT2; + } else if (hs.mode == HA_MODE_MODULE) { + style = SCE_HA_MODULE; + } + } else if (hs.mode == HA_MODE_IMPORT1 && + strcmp(s,"qualified") == 0) { + style = SCE_HA_KEYWORD; + new_mode = HA_MODE_IMPORT1; + } else if (options.highlightSafe && + hs.mode == HA_MODE_IMPORT1 && + strcmp(s,"safe") == 0) { + style = SCE_HA_KEYWORD; + new_mode = HA_MODE_IMPORT1; + } else if (hs.mode == HA_MODE_IMPORT2) { + if (strcmp(s,"as") == 0) { + style = SCE_HA_KEYWORD; + new_mode = HA_MODE_IMPORT3; + } else if (strcmp(s,"hiding") == 0) { + style = SCE_HA_KEYWORD; + } + } else if (hs.mode == HA_MODE_TYPE) { + if (strcmp(s,"family") == 0) + style = SCE_HA_KEYWORD; + } + + if (hs.mode == HA_MODE_FFI) { + if (ffi.InList(s)) { + style = SCE_HA_KEYWORD; + new_mode = HA_MODE_FFI; + } + } + + sc.ChangeState(style); + sc.SetState(SCE_HA_DEFAULT); + + if (strcmp(s,"import") == 0 && hs.mode != HA_MODE_FFI) + new_mode = HA_MODE_IMPORT1; + else if (strcmp(s,"module") == 0) + new_mode = HA_MODE_MODULE; + else if (strcmp(s,"foreign") == 0) + new_mode = HA_MODE_FFI; + else if (strcmp(s,"type") == 0 + || strcmp(s,"data") == 0) + new_mode = HA_MODE_TYPE; + + hs.mode = new_mode; + } + + // Comments + // Oneliner + else if (sc.state == SCE_HA_COMMENTLINE) { + if (sc.atLineEnd) { + sc.SetState(hs.pragma ? SCE_HA_PRAGMA : SCE_HA_DEFAULT); + sc.Forward(); // prevent double counting a line + } else if (inDashes && sc.ch != '-' && !hs.pragma) { + inDashes = false; + if (IsAnHaskellOperatorChar(sc.ch)) { + alreadyInTheMiddleOfOperator = true; + sc.ChangeState(SCE_HA_OPERATOR); + } + } else { + sc.Forward(); + } + } + // Nested + else if (IsCommentBlockStyle(sc.state)) { + if (sc.Match('{','-')) { + sc.SetState(CommentBlockStyleFromNestLevel(hs.nestLevel)); + sc.Forward(2); + hs.nestLevel++; + } else if (sc.Match('-','}')) { + sc.Forward(2); + assert(hs.nestLevel > 0); + if (hs.nestLevel > 0) + hs.nestLevel--; + sc.SetState( + hs.nestLevel == 0 + ? (hs.pragma ? SCE_HA_PRAGMA : SCE_HA_DEFAULT) + : CommentBlockStyleFromNestLevel(hs.nestLevel - 1)); + } else { + sc.Forward(); + } + } + // Pragma + else if (sc.state == SCE_HA_PRAGMA) { + if (sc.Match("#-}")) { + hs.pragma = false; + sc.Forward(3); + sc.SetState(SCE_HA_DEFAULT); + } else if (sc.Match('-','-')) { + sc.SetState(SCE_HA_COMMENTLINE); + sc.Forward(2); + inDashes = false; + } else if (sc.Match('{','-')) { + sc.SetState(CommentBlockStyleFromNestLevel(hs.nestLevel)); + sc.Forward(2); + hs.nestLevel = 1; + } else { + sc.Forward(); + } + } + // New state? + else if (sc.state == SCE_HA_DEFAULT) { + // Digit + if (IsADigit(sc.ch)) { + hs.mode = HA_MODE_DEFAULT; + + sc.SetState(SCE_HA_NUMBER); + if (sc.ch == '0' && (sc.chNext == 'X' || sc.chNext == 'x')) { + // Match anything starting with "0x" or "0X", too + sc.Forward(2); + base = 16; + dot = false; + } else if (sc.ch == '0' && (sc.chNext == 'O' || sc.chNext == 'o')) { + // Match anything starting with "0o" or "0O", too + sc.Forward(2); + base = 8; + dot = false; + } else { + sc.Forward(); + base = 10; + dot = true; + } + } + // Pragma + else if (sc.Match("{-#")) { + hs.pragma = true; + sc.SetState(SCE_HA_PRAGMA); + sc.Forward(3); + } + // Comment line + else if (sc.Match('-','-')) { + sc.SetState(SCE_HA_COMMENTLINE); + sc.Forward(2); + inDashes = true; + } + // Comment block + else if (sc.Match('{','-')) { + sc.SetState(CommentBlockStyleFromNestLevel(hs.nestLevel)); + sc.Forward(2); + hs.nestLevel = 1; + } + // String + else if (sc.ch == '\"') { + sc.SetState(SCE_HA_STRING); + sc.Forward(); + } + // Character or quoted name or promoted term + else if (sc.ch == '\'') { + hs.mode = HA_MODE_DEFAULT; + + sc.SetState(SCE_HA_CHARACTER); + sc.Forward(); + + if (options.allowQuotes) { + // Quoted type ''T + if (sc.ch=='\'' && IsAHaskellWordStart(sc.chNext)) { + sc.Forward(); + sc.ChangeState(SCE_HA_IDENTIFIER); + } else if (sc.chNext != '\'') { + // Quoted name 'n or promoted constructor 'N + if (IsAHaskellWordStart(sc.ch)) { + sc.ChangeState(SCE_HA_IDENTIFIER); + // Promoted constructor operator ':~> + } else if (sc.ch == ':') { + alreadyInTheMiddleOfOperator = false; + sc.ChangeState(SCE_HA_OPERATOR); + // Promoted list or tuple '[T] + } else if (sc.ch == '[' || sc.ch== '(') { + sc.ChangeState(SCE_HA_OPERATOR); + sc.ForwardSetState(SCE_HA_DEFAULT); + } + } + } + } + // Operator starting with '?' or an implicit parameter + else if (sc.ch == '?') { + hs.mode = HA_MODE_DEFAULT; + + alreadyInTheMiddleOfOperator = false; + sc.SetState(SCE_HA_OPERATOR); + + if ( options.implicitParams + && IsAHaskellWordStart(sc.chNext) + && !IsHaskellUpperCase(sc.chNext)) { + sc.Forward(); + sc.ChangeState(SCE_HA_IDENTIFIER); + } + } + // Operator + else if (IsAnHaskellOperatorChar(sc.ch)) { + hs.mode = HA_MODE_DEFAULT; + + sc.SetState(SCE_HA_OPERATOR); + } + // Braces and punctuation + else if (sc.ch == ',' || sc.ch == ';' + || sc.ch == '(' || sc.ch == ')' + || sc.ch == '[' || sc.ch == ']' + || sc.ch == '{' || sc.ch == '}') { + sc.SetState(SCE_HA_OPERATOR); + sc.ForwardSetState(SCE_HA_DEFAULT); + } + // Keyword or Identifier + else if (IsAHaskellWordStart(sc.ch)) { + sc.SetState(SCE_HA_IDENTIFIER); + // Something we don't care about + } else { + sc.Forward(); + } + } + // This branch should never be reached. + else { + assert(false); + sc.Forward(); + } + } + sc.Complete(); +} + +void SCI_METHOD LexerHaskell::Fold(Sci_PositionU startPos, Sci_Position length, int // initStyle + ,IDocument *pAccess) { + if (!options.fold) + return; + + Accessor styler(pAccess, NULL); + + Sci_Position lineCurrent = styler.GetLine(startPos); + + if (lineCurrent <= firstImportLine) { + firstImportLine = -1; // readjust first import position + firstImportIndent = 0; + } + + const Sci_Position maxPos = startPos + length; + const Sci_Position maxLines = + maxPos == styler.Length() + ? styler.GetLine(maxPos) + : styler.GetLine(maxPos - 1); // Requested last line + const Sci_Position docLines = styler.GetLine(styler.Length()); // Available last line + + // Backtrack to previous non-blank line so we can determine indent level + // for any white space lines + // and so we can fix any preceding fold level (which is why we go back + // at least one line in all cases) + bool importHere = LineContainsImport(lineCurrent, styler); + int indentCurrent = IndentAmountWithOffset(styler, lineCurrent); + + while (lineCurrent > 0) { + lineCurrent--; + importHere = LineContainsImport(lineCurrent, styler); + indentCurrent = IndentAmountWithOffset(styler, lineCurrent); + if (!(indentCurrent & SC_FOLDLEVELWHITEFLAG)) + break; + } + + int indentCurrentLevel = indentCurrent & SC_FOLDLEVELNUMBERMASK; + + if (importHere) { + indentCurrentLevel = IndentLevelRemoveIndentOffset(indentCurrentLevel); + if (firstImportLine == -1) { + firstImportLine = lineCurrent; + firstImportIndent = (1 + indentCurrentLevel) - SC_FOLDLEVELBASE; + } + if (firstImportLine != lineCurrent) { + indentCurrentLevel++; + } + } + + indentCurrent = indentCurrentLevel | (indentCurrent & ~SC_FOLDLEVELNUMBERMASK); + + // Process all characters to end of requested range + //that hangs over the end of the range. Cap processing in all cases + // to end of document. + while (lineCurrent <= docLines && lineCurrent <= maxLines) { + + // Gather info + Sci_Position lineNext = lineCurrent + 1; + importHere = false; + int indentNext = indentCurrent; + + if (lineNext <= docLines) { + // Information about next line is only available if not at end of document + importHere = LineContainsImport(lineNext, styler); + indentNext = IndentAmountWithOffset(styler, lineNext); + } + if (indentNext & SC_FOLDLEVELWHITEFLAG) + indentNext = SC_FOLDLEVELWHITEFLAG | indentCurrentLevel; + + // Skip past any blank lines for next indent level info; we skip also + // comments (all comments, not just those starting in column 0) + // which effectively folds them into surrounding code rather + // than screwing up folding. + + while (lineNext < docLines && (indentNext & SC_FOLDLEVELWHITEFLAG)) { + lineNext++; + importHere = LineContainsImport(lineNext, styler); + indentNext = IndentAmountWithOffset(styler, lineNext); + } + + int indentNextLevel = indentNext & SC_FOLDLEVELNUMBERMASK; + + if (importHere) { + indentNextLevel = IndentLevelRemoveIndentOffset(indentNextLevel); + if (firstImportLine == -1) { + firstImportLine = lineNext; + firstImportIndent = (1 + indentNextLevel) - SC_FOLDLEVELBASE; + } + if (firstImportLine != lineNext) { + indentNextLevel++; + } + } + + indentNext = indentNextLevel | (indentNext & ~SC_FOLDLEVELNUMBERMASK); + + const int levelBeforeComments = Maximum(indentCurrentLevel,indentNextLevel); + + // Now set all the indent levels on the lines we skipped + // Do this from end to start. Once we encounter one line + // which is indented more than the line after the end of + // the comment-block, use the level of the block before + + Sci_Position skipLine = lineNext; + int skipLevel = indentNextLevel; + + while (--skipLine > lineCurrent) { + int skipLineIndent = IndentAmountWithOffset(styler, skipLine); + + if (options.foldCompact) { + if ((skipLineIndent & SC_FOLDLEVELNUMBERMASK) > indentNextLevel) { + skipLevel = levelBeforeComments; + } + + int whiteFlag = skipLineIndent & SC_FOLDLEVELWHITEFLAG; + + styler.SetLevel(skipLine, skipLevel | whiteFlag); + } else { + if ( (skipLineIndent & SC_FOLDLEVELNUMBERMASK) > indentNextLevel + && !(skipLineIndent & SC_FOLDLEVELWHITEFLAG)) { + skipLevel = levelBeforeComments; + } + + styler.SetLevel(skipLine, skipLevel); + } + } + + int lev = indentCurrent; + + if (!(indentCurrent & SC_FOLDLEVELWHITEFLAG)) { + if ((indentCurrent & SC_FOLDLEVELNUMBERMASK) < (indentNext & SC_FOLDLEVELNUMBERMASK)) + lev |= SC_FOLDLEVELHEADERFLAG; + } + + // Set fold level for this line and move to next line + styler.SetLevel(lineCurrent, options.foldCompact ? lev : lev & ~SC_FOLDLEVELWHITEFLAG); + + indentCurrent = indentNext; + indentCurrentLevel = indentNextLevel; + lineCurrent = lineNext; + } + + // NOTE: Cannot set level of last line here because indentCurrent doesn't have + // header flag set; the loop above is crafted to take care of this case! + //styler.SetLevel(lineCurrent, indentCurrent); +} + +LexerModule lmHaskell(SCLEX_HASKELL, LexerHaskell::LexerFactoryHaskell, "haskell", haskellWordListDesc); +LexerModule lmLiterateHaskell(SCLEX_LITERATEHASKELL, LexerHaskell::LexerFactoryLiterateHaskell, "literatehaskell", haskellWordListDesc); diff --git a/libs/qscintilla_2.14.1/scintilla/lexers/LexHex.cpp b/libs/qscintilla_2.14.1/scintilla/lexers/LexHex.cpp new file mode 100644 index 000000000..6e1099786 --- /dev/null +++ b/libs/qscintilla_2.14.1/scintilla/lexers/LexHex.cpp @@ -0,0 +1,1045 @@ +// Scintilla source code edit control +/** @file LexHex.cxx + ** Lexers for Motorola S-Record, Intel HEX and Tektronix extended HEX. + ** + ** Written by Markus Heidelberg + **/ +// Copyright 1998-2001 by Neil Hodgson +// The License.txt file describes the conditions under which this software may be distributed. + +/* + * Motorola S-Record + * =============================== + * + * Each record (line) is built as follows: + * + * field digits states + * + * +----------+ + * | start | 1 ('S') SCE_HEX_RECSTART + * +----------+ + * | type | 1 SCE_HEX_RECTYPE, (SCE_HEX_RECTYPE_UNKNOWN) + * +----------+ + * | count | 2 SCE_HEX_BYTECOUNT, SCE_HEX_BYTECOUNT_WRONG + * +----------+ + * | address | 4/6/8 SCE_HEX_NOADDRESS, SCE_HEX_DATAADDRESS, SCE_HEX_RECCOUNT, SCE_HEX_STARTADDRESS, (SCE_HEX_ADDRESSFIELD_UNKNOWN) + * +----------+ + * | data | 0..504/502/500 SCE_HEX_DATA_ODD, SCE_HEX_DATA_EVEN, SCE_HEX_DATA_EMPTY, (SCE_HEX_DATA_UNKNOWN) + * +----------+ + * | checksum | 2 SCE_HEX_CHECKSUM, SCE_HEX_CHECKSUM_WRONG + * +----------+ + * + * + * Intel HEX + * =============================== + * + * Each record (line) is built as follows: + * + * field digits states + * + * +----------+ + * | start | 1 (':') SCE_HEX_RECSTART + * +----------+ + * | count | 2 SCE_HEX_BYTECOUNT, SCE_HEX_BYTECOUNT_WRONG + * +----------+ + * | address | 4 SCE_HEX_NOADDRESS, SCE_HEX_DATAADDRESS, (SCE_HEX_ADDRESSFIELD_UNKNOWN) + * +----------+ + * | type | 2 SCE_HEX_RECTYPE, (SCE_HEX_RECTYPE_UNKNOWN) + * +----------+ + * | data | 0..510 SCE_HEX_DATA_ODD, SCE_HEX_DATA_EVEN, SCE_HEX_DATA_EMPTY, SCE_HEX_EXTENDEDADDRESS, SCE_HEX_STARTADDRESS, (SCE_HEX_DATA_UNKNOWN) + * +----------+ + * | checksum | 2 SCE_HEX_CHECKSUM, SCE_HEX_CHECKSUM_WRONG + * +----------+ + * + * + * Folding: + * + * Data records (type 0x00), which follow an extended address record (type + * 0x02 or 0x04), can be folded. The extended address record is the fold + * point at fold level 0, the corresponding data records are set to level 1. + * + * Any record, which is not a data record, sets the fold level back to 0. + * Any line, which is not a record (blank lines and lines starting with a + * character other than ':'), leaves the fold level unchanged. + * + * + * Tektronix extended HEX + * =============================== + * + * Each record (line) is built as follows: + * + * field digits states + * + * +----------+ + * | start | 1 ('%') SCE_HEX_RECSTART + * +----------+ + * | length | 2 SCE_HEX_BYTECOUNT, SCE_HEX_BYTECOUNT_WRONG + * +----------+ + * | type | 1 SCE_HEX_RECTYPE, (SCE_HEX_RECTYPE_UNKNOWN) + * +----------+ + * | checksum | 2 SCE_HEX_CHECKSUM, SCE_HEX_CHECKSUM_WRONG + * +----------+ + * | address | 9 SCE_HEX_DATAADDRESS, SCE_HEX_STARTADDRESS, (SCE_HEX_ADDRESSFIELD_UNKNOWN) + * +----------+ + * | data | 0..241 SCE_HEX_DATA_ODD, SCE_HEX_DATA_EVEN + * +----------+ + * + * + * General notes for all lexers + * =============================== + * + * - Depending on where the helper functions are invoked, some of them have to + * read beyond the current position. In case of malformed data (record too + * short), it has to be ensured that this either does not have bad influence + * or will be captured deliberately. + * + * - States in parentheses in the upper format descriptions indicate that they + * should not appear in a valid hex file. + * + * - State SCE_HEX_GARBAGE means garbage data after the intended end of the + * record, the line is too long then. This state is used in all lexers. + */ + +#include +#include +#include +#include +#include +#include + +#include "ILexer.h" +#include "Scintilla.h" +#include "SciLexer.h" + +#include "WordList.h" +#include "LexAccessor.h" +#include "Accessor.h" +#include "StyleContext.h" +#include "CharacterSet.h" +#include "LexerModule.h" + +using namespace Scintilla; + +// prototypes for general helper functions +static inline bool IsNewline(const int ch); +static int GetHexaNibble(char hd); +static int GetHexaChar(char hd1, char hd2); +static int GetHexaChar(Sci_PositionU pos, Accessor &styler); +static bool ForwardWithinLine(StyleContext &sc, Sci_Position nb = 1); +static bool PosInSameRecord(Sci_PositionU pos1, Sci_PositionU pos2, Accessor &styler); +static Sci_Position CountByteCount(Sci_PositionU startPos, Sci_Position uncountedDigits, Accessor &styler); +static int CalcChecksum(Sci_PositionU startPos, Sci_Position cnt, bool twosCompl, Accessor &styler); + +// prototypes for file format specific helper functions +static Sci_PositionU GetSrecRecStartPosition(Sci_PositionU pos, Accessor &styler); +static int GetSrecByteCount(Sci_PositionU recStartPos, Accessor &styler); +static Sci_Position CountSrecByteCount(Sci_PositionU recStartPos, Accessor &styler); +static int GetSrecAddressFieldSize(Sci_PositionU recStartPos, Accessor &styler); +static int GetSrecAddressFieldType(Sci_PositionU recStartPos, Accessor &styler); +static int GetSrecDataFieldType(Sci_PositionU recStartPos, Accessor &styler); +static Sci_Position GetSrecRequiredDataFieldSize(Sci_PositionU recStartPos, Accessor &styler); +static int GetSrecChecksum(Sci_PositionU recStartPos, Accessor &styler); +static int CalcSrecChecksum(Sci_PositionU recStartPos, Accessor &styler); + +static Sci_PositionU GetIHexRecStartPosition(Sci_PositionU pos, Accessor &styler); +static int GetIHexByteCount(Sci_PositionU recStartPos, Accessor &styler); +static Sci_Position CountIHexByteCount(Sci_PositionU recStartPos, Accessor &styler); +static int GetIHexAddressFieldType(Sci_PositionU recStartPos, Accessor &styler); +static int GetIHexDataFieldType(Sci_PositionU recStartPos, Accessor &styler); +static int GetIHexRequiredDataFieldSize(Sci_PositionU recStartPos, Accessor &styler); +static int GetIHexChecksum(Sci_PositionU recStartPos, Accessor &styler); +static int CalcIHexChecksum(Sci_PositionU recStartPos, Accessor &styler); + +static int GetTEHexDigitCount(Sci_PositionU recStartPos, Accessor &styler); +static Sci_Position CountTEHexDigitCount(Sci_PositionU recStartPos, Accessor &styler); +static int GetTEHexAddressFieldType(Sci_PositionU recStartPos, Accessor &styler); +static int GetTEHexChecksum(Sci_PositionU recStartPos, Accessor &styler); +static int CalcTEHexChecksum(Sci_PositionU recStartPos, Accessor &styler); + +static inline bool IsNewline(const int ch) +{ + return (ch == '\n' || ch == '\r'); +} + +static int GetHexaNibble(char hd) +{ + int hexValue = 0; + + if (hd >= '0' && hd <= '9') { + hexValue += hd - '0'; + } else if (hd >= 'A' && hd <= 'F') { + hexValue += hd - 'A' + 10; + } else if (hd >= 'a' && hd <= 'f') { + hexValue += hd - 'a' + 10; + } else { + return -1; + } + + return hexValue; +} + +static int GetHexaChar(char hd1, char hd2) +{ + int hexValue = 0; + + if (hd1 >= '0' && hd1 <= '9') { + hexValue += 16 * (hd1 - '0'); + } else if (hd1 >= 'A' && hd1 <= 'F') { + hexValue += 16 * (hd1 - 'A' + 10); + } else if (hd1 >= 'a' && hd1 <= 'f') { + hexValue += 16 * (hd1 - 'a' + 10); + } else { + return -1; + } + + if (hd2 >= '0' && hd2 <= '9') { + hexValue += hd2 - '0'; + } else if (hd2 >= 'A' && hd2 <= 'F') { + hexValue += hd2 - 'A' + 10; + } else if (hd2 >= 'a' && hd2 <= 'f') { + hexValue += hd2 - 'a' + 10; + } else { + return -1; + } + + return hexValue; +} + +static int GetHexaChar(Sci_PositionU pos, Accessor &styler) +{ + char highNibble, lowNibble; + + highNibble = styler.SafeGetCharAt(pos); + lowNibble = styler.SafeGetCharAt(pos + 1); + + return GetHexaChar(highNibble, lowNibble); +} + +// Forward characters, but abort (and return false) if hitting the line +// end. Return true if forwarding within the line was possible. +// Avoids influence on highlighting of the subsequent line if the current line +// is malformed (too short). +static bool ForwardWithinLine(StyleContext &sc, Sci_Position nb) +{ + for (Sci_Position i = 0; i < nb; i++) { + if (sc.atLineEnd) { + // line is too short + sc.SetState(SCE_HEX_DEFAULT); + sc.Forward(); + return false; + } else { + sc.Forward(); + } + } + + return true; +} + +// Checks whether the given positions are in the same record. +static bool PosInSameRecord(Sci_PositionU pos1, Sci_PositionU pos2, Accessor &styler) +{ + return styler.GetLine(pos1) == styler.GetLine(pos2); +} + +// Count the number of digit pairs from till end of record, ignoring +// digits. +// If the record is too short, a negative count may be returned. +static Sci_Position CountByteCount(Sci_PositionU startPos, Sci_Position uncountedDigits, Accessor &styler) +{ + Sci_Position cnt; + Sci_PositionU pos; + + pos = startPos; + + while (!IsNewline(styler.SafeGetCharAt(pos, '\n'))) { + pos++; + } + + // number of digits in this line minus number of digits of uncounted fields + cnt = static_cast(pos - startPos) - uncountedDigits; + + // Prepare round up if odd (digit pair incomplete), this way the byte + // count is considered to be valid if the checksum is incomplete. + if (cnt >= 0) { + cnt++; + } + + // digit pairs + cnt /= 2; + + return cnt; +} + +// Calculate the checksum of the record. +// is the position of the first character of the starting digit +// pair, is the number of digit pairs. +static int CalcChecksum(Sci_PositionU startPos, Sci_Position cnt, bool twosCompl, Accessor &styler) +{ + int cs = 0; + + for (Sci_PositionU pos = startPos; pos < startPos + cnt; pos += 2) { + int val = GetHexaChar(pos, styler); + + if (val < 0) { + return val; + } + + // overflow does not matter + cs += val; + } + + if (twosCompl) { + // low byte of two's complement + return -cs & 0xFF; + } else { + // low byte of one's complement + return ~cs & 0xFF; + } +} + +// Get the position of the record "start" field (first character in line) in +// the record around position . +static Sci_PositionU GetSrecRecStartPosition(Sci_PositionU pos, Accessor &styler) +{ + while (styler.SafeGetCharAt(pos) != 'S') { + pos--; + } + + return pos; +} + +// Get the value of the "byte count" field, it counts the number of bytes in +// the subsequent fields ("address", "data" and "checksum" fields). +static int GetSrecByteCount(Sci_PositionU recStartPos, Accessor &styler) +{ + int val; + + val = GetHexaChar(recStartPos + 2, styler); + if (val < 0) { + val = 0; + } + + return val; +} + +// Count the number of digit pairs for the "address", "data" and "checksum" +// fields in this record. Has to be equal to the "byte count" field value. +// If the record is too short, a negative count may be returned. +static Sci_Position CountSrecByteCount(Sci_PositionU recStartPos, Accessor &styler) +{ + return CountByteCount(recStartPos, 4, styler); +} + +// Get the size of the "address" field. +static int GetSrecAddressFieldSize(Sci_PositionU recStartPos, Accessor &styler) +{ + switch (styler.SafeGetCharAt(recStartPos + 1)) { + case '0': + case '1': + case '5': + case '9': + return 2; // 16 bit + + case '2': + case '6': + case '8': + return 3; // 24 bit + + case '3': + case '7': + return 4; // 32 bit + + default: + return 0; + } +} + +// Get the type of the "address" field content. +static int GetSrecAddressFieldType(Sci_PositionU recStartPos, Accessor &styler) +{ + switch (styler.SafeGetCharAt(recStartPos + 1)) { + case '0': + return SCE_HEX_NOADDRESS; + + case '1': + case '2': + case '3': + return SCE_HEX_DATAADDRESS; + + case '5': + case '6': + return SCE_HEX_RECCOUNT; + + case '7': + case '8': + case '9': + return SCE_HEX_STARTADDRESS; + + default: // handle possible format extension in the future + return SCE_HEX_ADDRESSFIELD_UNKNOWN; + } +} + +// Get the type of the "data" field content. +static int GetSrecDataFieldType(Sci_PositionU recStartPos, Accessor &styler) +{ + switch (styler.SafeGetCharAt(recStartPos + 1)) { + case '0': + case '1': + case '2': + case '3': + return SCE_HEX_DATA_ODD; + + case '5': + case '6': + case '7': + case '8': + case '9': + return SCE_HEX_DATA_EMPTY; + + default: // handle possible format extension in the future + return SCE_HEX_DATA_UNKNOWN; + } +} + +// Get the required size of the "data" field. Useless for block header and +// ordinary data records (type S0, S1, S2, S3), return the value calculated +// from the "byte count" and "address field" size in this case. +static Sci_Position GetSrecRequiredDataFieldSize(Sci_PositionU recStartPos, Accessor &styler) +{ + switch (styler.SafeGetCharAt(recStartPos + 1)) { + case '5': + case '6': + case '7': + case '8': + case '9': + return 0; + + default: + return GetSrecByteCount(recStartPos, styler) + - GetSrecAddressFieldSize(recStartPos, styler) + - 1; // -1 for checksum field + } +} + +// Get the value of the "checksum" field. +static int GetSrecChecksum(Sci_PositionU recStartPos, Accessor &styler) +{ + int byteCount; + + byteCount = GetSrecByteCount(recStartPos, styler); + + return GetHexaChar(recStartPos + 2 + byteCount * 2, styler); +} + +// Calculate the checksum of the record. +static int CalcSrecChecksum(Sci_PositionU recStartPos, Accessor &styler) +{ + Sci_Position byteCount; + + byteCount = GetSrecByteCount(recStartPos, styler); + + // sum over "byte count", "address" and "data" fields (6..510 digits) + return CalcChecksum(recStartPos + 2, byteCount * 2, false, styler); +} + +// Get the position of the record "start" field (first character in line) in +// the record around position . +static Sci_PositionU GetIHexRecStartPosition(Sci_PositionU pos, Accessor &styler) +{ + while (styler.SafeGetCharAt(pos) != ':') { + pos--; + } + + return pos; +} + +// Get the value of the "byte count" field, it counts the number of bytes in +// the "data" field. +static int GetIHexByteCount(Sci_PositionU recStartPos, Accessor &styler) +{ + int val; + + val = GetHexaChar(recStartPos + 1, styler); + if (val < 0) { + val = 0; + } + + return val; +} + +// Count the number of digit pairs for the "data" field in this record. Has to +// be equal to the "byte count" field value. +// If the record is too short, a negative count may be returned. +static Sci_Position CountIHexByteCount(Sci_PositionU recStartPos, Accessor &styler) +{ + return CountByteCount(recStartPos, 11, styler); +} + +// Get the type of the "address" field content. +static int GetIHexAddressFieldType(Sci_PositionU recStartPos, Accessor &styler) +{ + if (!PosInSameRecord(recStartPos, recStartPos + 7, styler)) { + // malformed (record too short) + // type cannot be determined + return SCE_HEX_ADDRESSFIELD_UNKNOWN; + } + + switch (GetHexaChar(recStartPos + 7, styler)) { + case 0x00: + return SCE_HEX_DATAADDRESS; + + case 0x01: + case 0x02: + case 0x03: + case 0x04: + case 0x05: + return SCE_HEX_NOADDRESS; + + default: // handle possible format extension in the future + return SCE_HEX_ADDRESSFIELD_UNKNOWN; + } +} + +// Get the type of the "data" field content. +static int GetIHexDataFieldType(Sci_PositionU recStartPos, Accessor &styler) +{ + switch (GetHexaChar(recStartPos + 7, styler)) { + case 0x00: + return SCE_HEX_DATA_ODD; + + case 0x01: + return SCE_HEX_DATA_EMPTY; + + case 0x02: + case 0x04: + return SCE_HEX_EXTENDEDADDRESS; + + case 0x03: + case 0x05: + return SCE_HEX_STARTADDRESS; + + default: // handle possible format extension in the future + return SCE_HEX_DATA_UNKNOWN; + } +} + +// Get the required size of the "data" field. Useless for an ordinary data +// record (type 00), return the "byte count" in this case. +static int GetIHexRequiredDataFieldSize(Sci_PositionU recStartPos, Accessor &styler) +{ + switch (GetHexaChar(recStartPos + 7, styler)) { + case 0x01: + return 0; + + case 0x02: + case 0x04: + return 2; + + case 0x03: + case 0x05: + return 4; + + default: + return GetIHexByteCount(recStartPos, styler); + } +} + +// Get the value of the "checksum" field. +static int GetIHexChecksum(Sci_PositionU recStartPos, Accessor &styler) +{ + int byteCount; + + byteCount = GetIHexByteCount(recStartPos, styler); + + return GetHexaChar(recStartPos + 9 + byteCount * 2, styler); +} + +// Calculate the checksum of the record. +static int CalcIHexChecksum(Sci_PositionU recStartPos, Accessor &styler) +{ + int byteCount; + + byteCount = GetIHexByteCount(recStartPos, styler); + + // sum over "byte count", "address", "type" and "data" fields (8..518 digits) + return CalcChecksum(recStartPos + 1, 8 + byteCount * 2, true, styler); +} + + +// Get the value of the "record length" field, it counts the number of digits in +// the record excluding the percent. +static int GetTEHexDigitCount(Sci_PositionU recStartPos, Accessor &styler) +{ + int val = GetHexaChar(recStartPos + 1, styler); + if (val < 0) + val = 0; + + return val; +} + +// Count the number of digits in this record. Has to +// be equal to the "record length" field value. +static Sci_Position CountTEHexDigitCount(Sci_PositionU recStartPos, Accessor &styler) +{ + Sci_PositionU pos; + + pos = recStartPos+1; + + while (!IsNewline(styler.SafeGetCharAt(pos, '\n'))) { + pos++; + } + + return static_cast(pos - (recStartPos+1)); +} + +// Get the type of the "address" field content. +static int GetTEHexAddressFieldType(Sci_PositionU recStartPos, Accessor &styler) +{ + switch (styler.SafeGetCharAt(recStartPos + 3)) { + case '6': + return SCE_HEX_DATAADDRESS; + + case '8': + return SCE_HEX_STARTADDRESS; + + default: // handle possible format extension in the future + return SCE_HEX_ADDRESSFIELD_UNKNOWN; + } +} + +// Get the value of the "checksum" field. +static int GetTEHexChecksum(Sci_PositionU recStartPos, Accessor &styler) +{ + return GetHexaChar(recStartPos+4, styler); +} + +// Calculate the checksum of the record (excluding the checksum field). +static int CalcTEHexChecksum(Sci_PositionU recStartPos, Accessor &styler) +{ + Sci_PositionU pos = recStartPos +1; + Sci_PositionU length = GetTEHexDigitCount(recStartPos, styler); + + int cs = GetHexaNibble(styler.SafeGetCharAt(pos++));//length + cs += GetHexaNibble(styler.SafeGetCharAt(pos++));//length + + cs += GetHexaNibble(styler.SafeGetCharAt(pos++));//type + + pos += 2;// jump over CS field + + for (; pos <= recStartPos + length; ++pos) { + int val = GetHexaNibble(styler.SafeGetCharAt(pos)); + + if (val < 0) { + return val; + } + + // overflow does not matter + cs += val; + } + + // low byte + return cs & 0xFF; + +} + +static void ColouriseSrecDoc(Sci_PositionU startPos, Sci_Position length, int initStyle, WordList *[], Accessor &styler) +{ + StyleContext sc(startPos, length, initStyle, styler); + + while (sc.More()) { + Sci_PositionU recStartPos; + Sci_Position reqByteCount; + Sci_Position dataFieldSize; + int byteCount, addrFieldSize, addrFieldType, dataFieldType; + int cs1, cs2; + + switch (sc.state) { + case SCE_HEX_DEFAULT: + if (sc.atLineStart && sc.Match('S')) { + sc.SetState(SCE_HEX_RECSTART); + } + ForwardWithinLine(sc); + break; + + case SCE_HEX_RECSTART: + recStartPos = sc.currentPos - 1; + addrFieldType = GetSrecAddressFieldType(recStartPos, styler); + + if (addrFieldType == SCE_HEX_ADDRESSFIELD_UNKNOWN) { + sc.SetState(SCE_HEX_RECTYPE_UNKNOWN); + } else { + sc.SetState(SCE_HEX_RECTYPE); + } + + ForwardWithinLine(sc); + break; + + case SCE_HEX_RECTYPE: + case SCE_HEX_RECTYPE_UNKNOWN: + recStartPos = sc.currentPos - 2; + byteCount = GetSrecByteCount(recStartPos, styler); + reqByteCount = GetSrecAddressFieldSize(recStartPos, styler) + + GetSrecRequiredDataFieldSize(recStartPos, styler) + + 1; // +1 for checksum field + + if (byteCount == CountSrecByteCount(recStartPos, styler) + && byteCount == reqByteCount) { + sc.SetState(SCE_HEX_BYTECOUNT); + } else { + sc.SetState(SCE_HEX_BYTECOUNT_WRONG); + } + + ForwardWithinLine(sc, 2); + break; + + case SCE_HEX_BYTECOUNT: + case SCE_HEX_BYTECOUNT_WRONG: + recStartPos = sc.currentPos - 4; + addrFieldSize = GetSrecAddressFieldSize(recStartPos, styler); + addrFieldType = GetSrecAddressFieldType(recStartPos, styler); + + sc.SetState(addrFieldType); + ForwardWithinLine(sc, addrFieldSize * 2); + break; + + case SCE_HEX_NOADDRESS: + case SCE_HEX_DATAADDRESS: + case SCE_HEX_RECCOUNT: + case SCE_HEX_STARTADDRESS: + case SCE_HEX_ADDRESSFIELD_UNKNOWN: + recStartPos = GetSrecRecStartPosition(sc.currentPos, styler); + dataFieldType = GetSrecDataFieldType(recStartPos, styler); + + // Using the required size here if possible has the effect that the + // checksum is highlighted at a fixed position after this field for + // specific record types, independent on the "byte count" value. + dataFieldSize = GetSrecRequiredDataFieldSize(recStartPos, styler); + + sc.SetState(dataFieldType); + + if (dataFieldType == SCE_HEX_DATA_ODD) { + for (int i = 0; i < dataFieldSize * 2; i++) { + if ((i & 0x3) == 0) { + sc.SetState(SCE_HEX_DATA_ODD); + } else if ((i & 0x3) == 2) { + sc.SetState(SCE_HEX_DATA_EVEN); + } + + if (!ForwardWithinLine(sc)) { + break; + } + } + } else { + ForwardWithinLine(sc, dataFieldSize * 2); + } + break; + + case SCE_HEX_DATA_ODD: + case SCE_HEX_DATA_EVEN: + case SCE_HEX_DATA_EMPTY: + case SCE_HEX_DATA_UNKNOWN: + recStartPos = GetSrecRecStartPosition(sc.currentPos, styler); + cs1 = CalcSrecChecksum(recStartPos, styler); + cs2 = GetSrecChecksum(recStartPos, styler); + + if (cs1 != cs2 || cs1 < 0 || cs2 < 0) { + sc.SetState(SCE_HEX_CHECKSUM_WRONG); + } else { + sc.SetState(SCE_HEX_CHECKSUM); + } + + ForwardWithinLine(sc, 2); + break; + + case SCE_HEX_CHECKSUM: + case SCE_HEX_CHECKSUM_WRONG: + case SCE_HEX_GARBAGE: + // record finished or line too long + sc.SetState(SCE_HEX_GARBAGE); + ForwardWithinLine(sc); + break; + + default: + // prevent endless loop in faulty state + sc.SetState(SCE_HEX_DEFAULT); + break; + } + } + sc.Complete(); +} + +static void ColouriseIHexDoc(Sci_PositionU startPos, Sci_Position length, int initStyle, WordList *[], Accessor &styler) +{ + StyleContext sc(startPos, length, initStyle, styler); + + while (sc.More()) { + Sci_PositionU recStartPos; + int byteCount, addrFieldType, dataFieldSize, dataFieldType; + int cs1, cs2; + + switch (sc.state) { + case SCE_HEX_DEFAULT: + if (sc.atLineStart && sc.Match(':')) { + sc.SetState(SCE_HEX_RECSTART); + } + ForwardWithinLine(sc); + break; + + case SCE_HEX_RECSTART: + recStartPos = sc.currentPos - 1; + byteCount = GetIHexByteCount(recStartPos, styler); + dataFieldSize = GetIHexRequiredDataFieldSize(recStartPos, styler); + + if (byteCount == CountIHexByteCount(recStartPos, styler) + && byteCount == dataFieldSize) { + sc.SetState(SCE_HEX_BYTECOUNT); + } else { + sc.SetState(SCE_HEX_BYTECOUNT_WRONG); + } + + ForwardWithinLine(sc, 2); + break; + + case SCE_HEX_BYTECOUNT: + case SCE_HEX_BYTECOUNT_WRONG: + recStartPos = sc.currentPos - 3; + addrFieldType = GetIHexAddressFieldType(recStartPos, styler); + + sc.SetState(addrFieldType); + ForwardWithinLine(sc, 4); + break; + + case SCE_HEX_NOADDRESS: + case SCE_HEX_DATAADDRESS: + case SCE_HEX_ADDRESSFIELD_UNKNOWN: + recStartPos = sc.currentPos - 7; + addrFieldType = GetIHexAddressFieldType(recStartPos, styler); + + if (addrFieldType == SCE_HEX_ADDRESSFIELD_UNKNOWN) { + sc.SetState(SCE_HEX_RECTYPE_UNKNOWN); + } else { + sc.SetState(SCE_HEX_RECTYPE); + } + + ForwardWithinLine(sc, 2); + break; + + case SCE_HEX_RECTYPE: + case SCE_HEX_RECTYPE_UNKNOWN: + recStartPos = sc.currentPos - 9; + dataFieldType = GetIHexDataFieldType(recStartPos, styler); + + // Using the required size here if possible has the effect that the + // checksum is highlighted at a fixed position after this field for + // specific record types, independent on the "byte count" value. + dataFieldSize = GetIHexRequiredDataFieldSize(recStartPos, styler); + + sc.SetState(dataFieldType); + + if (dataFieldType == SCE_HEX_DATA_ODD) { + for (int i = 0; i < dataFieldSize * 2; i++) { + if ((i & 0x3) == 0) { + sc.SetState(SCE_HEX_DATA_ODD); + } else if ((i & 0x3) == 2) { + sc.SetState(SCE_HEX_DATA_EVEN); + } + + if (!ForwardWithinLine(sc)) { + break; + } + } + } else { + ForwardWithinLine(sc, dataFieldSize * 2); + } + break; + + case SCE_HEX_DATA_ODD: + case SCE_HEX_DATA_EVEN: + case SCE_HEX_DATA_EMPTY: + case SCE_HEX_EXTENDEDADDRESS: + case SCE_HEX_STARTADDRESS: + case SCE_HEX_DATA_UNKNOWN: + recStartPos = GetIHexRecStartPosition(sc.currentPos, styler); + cs1 = CalcIHexChecksum(recStartPos, styler); + cs2 = GetIHexChecksum(recStartPos, styler); + + if (cs1 != cs2 || cs1 < 0 || cs2 < 0) { + sc.SetState(SCE_HEX_CHECKSUM_WRONG); + } else { + sc.SetState(SCE_HEX_CHECKSUM); + } + + ForwardWithinLine(sc, 2); + break; + + case SCE_HEX_CHECKSUM: + case SCE_HEX_CHECKSUM_WRONG: + case SCE_HEX_GARBAGE: + // record finished or line too long + sc.SetState(SCE_HEX_GARBAGE); + ForwardWithinLine(sc); + break; + + default: + // prevent endless loop in faulty state + sc.SetState(SCE_HEX_DEFAULT); + break; + } + } + sc.Complete(); +} + +static void FoldIHexDoc(Sci_PositionU startPos, Sci_Position length, int, WordList *[], Accessor &styler) +{ + Sci_PositionU endPos = startPos + length; + + Sci_Position lineCurrent = styler.GetLine(startPos); + int levelCurrent = SC_FOLDLEVELBASE; + if (lineCurrent > 0) + levelCurrent = styler.LevelAt(lineCurrent - 1); + + Sci_PositionU lineStartNext = styler.LineStart(lineCurrent + 1); + int levelNext = SC_FOLDLEVELBASE; // default if no specific line found + + for (Sci_PositionU i = startPos; i < endPos; i++) { + bool atEOL = i == (lineStartNext - 1); + int style = styler.StyleAt(i); + + // search for specific lines + if (style == SCE_HEX_EXTENDEDADDRESS) { + // extended addres record + levelNext = SC_FOLDLEVELBASE | SC_FOLDLEVELHEADERFLAG; + } else if (style == SCE_HEX_DATAADDRESS + || (style == SCE_HEX_DEFAULT + && i == (Sci_PositionU)styler.LineStart(lineCurrent))) { + // data record or no record start code at all + if (levelCurrent & SC_FOLDLEVELHEADERFLAG) { + levelNext = SC_FOLDLEVELBASE + 1; + } else { + // continue level 0 or 1, no fold point + levelNext = levelCurrent; + } + } + + if (atEOL || (i == endPos - 1)) { + styler.SetLevel(lineCurrent, levelNext); + + lineCurrent++; + lineStartNext = styler.LineStart(lineCurrent + 1); + levelCurrent = levelNext; + levelNext = SC_FOLDLEVELBASE; + } + } +} + +static void ColouriseTEHexDoc(Sci_PositionU startPos, Sci_Position length, int initStyle, WordList *[], Accessor &styler) +{ + StyleContext sc(startPos, length, initStyle, styler); + + while (sc.More()) { + Sci_PositionU recStartPos; + int digitCount, addrFieldType; + int cs1, cs2; + + switch (sc.state) { + case SCE_HEX_DEFAULT: + if (sc.atLineStart && sc.Match('%')) { + sc.SetState(SCE_HEX_RECSTART); + } + ForwardWithinLine(sc); + break; + + case SCE_HEX_RECSTART: + + recStartPos = sc.currentPos - 1; + + if (GetTEHexDigitCount(recStartPos, styler) == CountTEHexDigitCount(recStartPos, styler)) { + sc.SetState(SCE_HEX_BYTECOUNT); + } else { + sc.SetState(SCE_HEX_BYTECOUNT_WRONG); + } + + ForwardWithinLine(sc, 2); + break; + + case SCE_HEX_BYTECOUNT: + case SCE_HEX_BYTECOUNT_WRONG: + recStartPos = sc.currentPos - 3; + addrFieldType = GetTEHexAddressFieldType(recStartPos, styler); + + if (addrFieldType == SCE_HEX_ADDRESSFIELD_UNKNOWN) { + sc.SetState(SCE_HEX_RECTYPE_UNKNOWN); + } else { + sc.SetState(SCE_HEX_RECTYPE); + } + + ForwardWithinLine(sc); + break; + + case SCE_HEX_RECTYPE: + case SCE_HEX_RECTYPE_UNKNOWN: + recStartPos = sc.currentPos - 4; + cs1 = CalcTEHexChecksum(recStartPos, styler); + cs2 = GetTEHexChecksum(recStartPos, styler); + + if (cs1 != cs2 || cs1 < 0 || cs2 < 0) { + sc.SetState(SCE_HEX_CHECKSUM_WRONG); + } else { + sc.SetState(SCE_HEX_CHECKSUM); + } + + ForwardWithinLine(sc, 2); + break; + + + case SCE_HEX_CHECKSUM: + case SCE_HEX_CHECKSUM_WRONG: + recStartPos = sc.currentPos - 6; + addrFieldType = GetTEHexAddressFieldType(recStartPos, styler); + + sc.SetState(addrFieldType); + ForwardWithinLine(sc, 9); + break; + + case SCE_HEX_DATAADDRESS: + case SCE_HEX_STARTADDRESS: + case SCE_HEX_ADDRESSFIELD_UNKNOWN: + recStartPos = sc.currentPos - 15; + digitCount = GetTEHexDigitCount(recStartPos, styler) - 14; + + sc.SetState(SCE_HEX_DATA_ODD); + + for (int i = 0; i < digitCount; i++) { + if ((i & 0x3) == 0) { + sc.SetState(SCE_HEX_DATA_ODD); + } else if ((i & 0x3) == 2) { + sc.SetState(SCE_HEX_DATA_EVEN); + } + + if (!ForwardWithinLine(sc)) { + break; + } + } + break; + + case SCE_HEX_DATA_ODD: + case SCE_HEX_DATA_EVEN: + case SCE_HEX_GARBAGE: + // record finished or line too long + sc.SetState(SCE_HEX_GARBAGE); + ForwardWithinLine(sc); + break; + + default: + // prevent endless loop in faulty state + sc.SetState(SCE_HEX_DEFAULT); + break; + } + } + sc.Complete(); +} + +LexerModule lmSrec(SCLEX_SREC, ColouriseSrecDoc, "srec", 0, NULL); +LexerModule lmIHex(SCLEX_IHEX, ColouriseIHexDoc, "ihex", FoldIHexDoc, NULL); +LexerModule lmTEHex(SCLEX_TEHEX, ColouriseTEHexDoc, "tehex", 0, NULL); diff --git a/libs/qscintilla_2.14.1/scintilla/lexers/LexIndent.cpp b/libs/qscintilla_2.14.1/scintilla/lexers/LexIndent.cpp new file mode 100644 index 000000000..053bdd928 --- /dev/null +++ b/libs/qscintilla_2.14.1/scintilla/lexers/LexIndent.cpp @@ -0,0 +1,71 @@ +// Scintilla source code edit control +/** @file LexIndent.cxx + ** Lexer for no language. Used for indentation-based folding of files. + **/ +// The License.txt file describes the conditions under which this software may be distributed. + +#include +#include +#include +#include +#include +#include + +#include "ILexer.h" +#include "Scintilla.h" +#include "SciLexer.h" + +#include "WordList.h" +#include "LexAccessor.h" +#include "Accessor.h" +#include "StyleContext.h" +#include "CharacterSet.h" +#include "LexerModule.h" + +using namespace Scintilla; + +static void ColouriseIndentDoc(Sci_PositionU startPos, Sci_Position length, int, WordList *[], + Accessor &styler) { + // Indent language means all style bytes are 0 so just mark the end - no need to fill in. + if (length > 0) { + styler.StartAt(startPos + length - 1); + styler.StartSegment(startPos + length - 1); + styler.ColourTo(startPos + length - 1, 0); + } +} + +static void FoldIndentDoc(Sci_PositionU startPos, Sci_Position length, int /* initStyle */, WordList *[], Accessor &styler) { + int visibleCharsCurrent, visibleCharsNext; + int levelCurrent, levelNext; + Sci_PositionU i, lineEnd; + Sci_PositionU lengthDoc = startPos + length; + Sci_Position lineCurrent = styler.GetLine(startPos); + + i = styler.LineStart(lineCurrent ); + lineEnd = styler.LineStart(lineCurrent+1)-1; + if(lineEnd>=lengthDoc) lineEnd = lengthDoc-1; + while(styler[lineEnd]=='\n' || styler[lineEnd]=='\r') lineEnd--; + for(visibleCharsCurrent=0, levelCurrent=SC_FOLDLEVELBASE; !visibleCharsCurrent && i<=lineEnd; i++){ + if(isspacechar(styler[i])) levelCurrent++; + else visibleCharsCurrent=1; + } + + for(; i=lengthDoc) lineEnd = lengthDoc-1; + while(styler[lineEnd]=='\n' || styler[lineEnd]=='\r') lineEnd--; + for(visibleCharsNext=0, levelNext=SC_FOLDLEVELBASE; !visibleCharsNext && i<=lineEnd; i++){ + if(isspacechar(styler[i])) levelNext++; + else visibleCharsNext=1; + } + int lev = levelCurrent; + if(!visibleCharsCurrent) lev |= SC_FOLDLEVELWHITEFLAG; + else if(levelNext > levelCurrent) lev |= SC_FOLDLEVELHEADERFLAG; + styler.SetLevel(lineCurrent, lev); + levelCurrent = levelNext; + visibleCharsCurrent = visibleCharsNext; + } +} + +LexerModule lmIndent(SCLEX_INDENT, ColouriseIndentDoc, "indent", FoldIndentDoc); diff --git a/libs/qscintilla_2.14.1/scintilla/lexers/LexInno.cpp b/libs/qscintilla_2.14.1/scintilla/lexers/LexInno.cpp new file mode 100644 index 000000000..5d01c0588 --- /dev/null +++ b/libs/qscintilla_2.14.1/scintilla/lexers/LexInno.cpp @@ -0,0 +1,288 @@ +// Scintilla source code edit control +/** @file LexInno.cxx + ** Lexer for Inno Setup scripts. + **/ +// Written by Friedrich Vedder , using code from LexOthers.cxx. +// The License.txt file describes the conditions under which this software may be distributed. + +#include +#include +#include +#include +#include +#include + +#include "ILexer.h" +#include "Scintilla.h" +#include "SciLexer.h" + +#include "WordList.h" +#include "LexAccessor.h" +#include "Accessor.h" +#include "StyleContext.h" +#include "CharacterSet.h" +#include "LexerModule.h" + +using namespace Scintilla; + +static void ColouriseInnoDoc(Sci_PositionU startPos, Sci_Position length, int, WordList *keywordLists[], Accessor &styler) { + int state = SCE_INNO_DEFAULT; + char chPrev; + char ch = 0; + char chNext = styler[startPos]; + Sci_Position lengthDoc = startPos + length; + char *buffer = new char[length+1]; + Sci_Position bufferCount = 0; + bool isBOL, isEOL, isWS, isBOLWS = 0; + bool isCStyleComment = false; + + WordList §ionKeywords = *keywordLists[0]; + WordList &standardKeywords = *keywordLists[1]; + WordList ¶meterKeywords = *keywordLists[2]; + WordList &preprocessorKeywords = *keywordLists[3]; + WordList &pascalKeywords = *keywordLists[4]; + WordList &userKeywords = *keywordLists[5]; + + Sci_Position curLine = styler.GetLine(startPos); + int curLineState = curLine > 0 ? styler.GetLineState(curLine - 1) : 0; + bool isCode = (curLineState == 1); + + // Go through all provided text segment + // using the hand-written state machine shown below + styler.StartAt(startPos); + styler.StartSegment(startPos); + for (Sci_Position i = startPos; i < lengthDoc; i++) { + chPrev = ch; + ch = chNext; + chNext = styler.SafeGetCharAt(i + 1); + + if (styler.IsLeadByte(ch)) { + chNext = styler.SafeGetCharAt(i + 2); + i++; + continue; + } + + isBOL = (chPrev == 0) || (chPrev == '\n') || (chPrev == '\r' && ch != '\n'); + isBOLWS = (isBOL) ? 1 : (isBOLWS && (chPrev == ' ' || chPrev == '\t')); + isEOL = (ch == '\n' || ch == '\r'); + isWS = (ch == ' ' || ch == '\t'); + + if ((ch == '\r' && chNext != '\n') || (ch == '\n')) { + // Remember the line state for future incremental lexing + curLine = styler.GetLine(i); + styler.SetLineState(curLine, (isCode ? 1 : 0)); + } + + switch(state) { + case SCE_INNO_DEFAULT: + if (!isCode && ch == ';' && isBOLWS) { + // Start of a comment + state = SCE_INNO_COMMENT; + } else if (ch == '[' && isBOLWS) { + // Start of a section name + bufferCount = 0; + state = SCE_INNO_SECTION; + } else if (ch == '#' && isBOLWS) { + // Start of a preprocessor directive + state = SCE_INNO_PREPROC; + } else if (!isCode && ch == '{' && chNext != '{' && chPrev != '{') { + // Start of an inline expansion + state = SCE_INNO_INLINE_EXPANSION; + } else if (isCode && (ch == '{' || (ch == '(' && chNext == '*'))) { + // Start of a Pascal comment + state = SCE_INNO_COMMENT_PASCAL; + isCStyleComment = false; + } else if (isCode && ch == '/' && chNext == '/') { + // Apparently, C-style comments are legal, too + state = SCE_INNO_COMMENT_PASCAL; + isCStyleComment = true; + } else if (ch == '"') { + // Start of a double-quote string + state = SCE_INNO_STRING_DOUBLE; + } else if (ch == '\'') { + // Start of a single-quote string + state = SCE_INNO_STRING_SINGLE; + } else if (IsASCII(ch) && (isalpha(ch) || (ch == '_'))) { + // Start of an identifier + bufferCount = 0; + buffer[bufferCount++] = static_cast(tolower(ch)); + state = SCE_INNO_IDENTIFIER; + } else { + // Style it the default style + styler.ColourTo(i,SCE_INNO_DEFAULT); + } + break; + + case SCE_INNO_COMMENT: + if (isEOL) { + state = SCE_INNO_DEFAULT; + styler.ColourTo(i,SCE_INNO_COMMENT); + } + break; + + case SCE_INNO_IDENTIFIER: + if (IsASCII(ch) && (isalnum(ch) || (ch == '_'))) { + buffer[bufferCount++] = static_cast(tolower(ch)); + } else { + state = SCE_INNO_DEFAULT; + buffer[bufferCount] = '\0'; + + // Check if the buffer contains a keyword + if (!isCode && standardKeywords.InList(buffer)) { + styler.ColourTo(i-1,SCE_INNO_KEYWORD); + } else if (!isCode && parameterKeywords.InList(buffer)) { + styler.ColourTo(i-1,SCE_INNO_PARAMETER); + } else if (isCode && pascalKeywords.InList(buffer)) { + styler.ColourTo(i-1,SCE_INNO_KEYWORD_PASCAL); + } else if (!isCode && userKeywords.InList(buffer)) { + styler.ColourTo(i-1,SCE_INNO_KEYWORD_USER); + } else { + styler.ColourTo(i-1,SCE_INNO_DEFAULT); + } + + // Push back the faulty character + chNext = styler[i--]; + ch = chPrev; + } + break; + + case SCE_INNO_SECTION: + if (ch == ']') { + state = SCE_INNO_DEFAULT; + buffer[bufferCount] = '\0'; + + // Check if the buffer contains a section name + if (sectionKeywords.InList(buffer)) { + styler.ColourTo(i,SCE_INNO_SECTION); + isCode = !CompareCaseInsensitive(buffer, "code"); + } else { + styler.ColourTo(i,SCE_INNO_DEFAULT); + } + } else if (IsASCII(ch) && (isalnum(ch) || (ch == '_'))) { + buffer[bufferCount++] = static_cast(tolower(ch)); + } else { + state = SCE_INNO_DEFAULT; + styler.ColourTo(i,SCE_INNO_DEFAULT); + } + break; + + case SCE_INNO_PREPROC: + if (isWS || isEOL) { + if (IsASCII(chPrev) && isalpha(chPrev)) { + state = SCE_INNO_DEFAULT; + buffer[bufferCount] = '\0'; + + // Check if the buffer contains a preprocessor directive + if (preprocessorKeywords.InList(buffer)) { + styler.ColourTo(i-1,SCE_INNO_PREPROC); + } else { + styler.ColourTo(i-1,SCE_INNO_DEFAULT); + } + + // Push back the faulty character + chNext = styler[i--]; + ch = chPrev; + } + } else if (IsASCII(ch) && isalpha(ch)) { + if (chPrev == '#' || chPrev == ' ' || chPrev == '\t') + bufferCount = 0; + buffer[bufferCount++] = static_cast(tolower(ch)); + } + break; + + case SCE_INNO_STRING_DOUBLE: + if (ch == '"' || isEOL) { + state = SCE_INNO_DEFAULT; + styler.ColourTo(i,SCE_INNO_STRING_DOUBLE); + } + break; + + case SCE_INNO_STRING_SINGLE: + if (ch == '\'' || isEOL) { + state = SCE_INNO_DEFAULT; + styler.ColourTo(i,SCE_INNO_STRING_SINGLE); + } + break; + + case SCE_INNO_INLINE_EXPANSION: + if (ch == '}') { + state = SCE_INNO_DEFAULT; + styler.ColourTo(i,SCE_INNO_INLINE_EXPANSION); + } else if (isEOL) { + state = SCE_INNO_DEFAULT; + styler.ColourTo(i,SCE_INNO_DEFAULT); + } + break; + + case SCE_INNO_COMMENT_PASCAL: + if (isCStyleComment) { + if (isEOL) { + state = SCE_INNO_DEFAULT; + styler.ColourTo(i,SCE_INNO_COMMENT_PASCAL); + } + } else { + if (ch == '}' || (ch == ')' && chPrev == '*')) { + state = SCE_INNO_DEFAULT; + styler.ColourTo(i,SCE_INNO_COMMENT_PASCAL); + } else if (isEOL) { + state = SCE_INNO_DEFAULT; + styler.ColourTo(i,SCE_INNO_DEFAULT); + } + } + break; + + } + } + delete []buffer; +} + +static const char * const innoWordListDesc[] = { + "Sections", + "Keywords", + "Parameters", + "Preprocessor directives", + "Pascal keywords", + "User defined keywords", + 0 +}; + +static void FoldInnoDoc(Sci_PositionU startPos, Sci_Position length, int, WordList *[], Accessor &styler) { + Sci_PositionU endPos = startPos + length; + char chNext = styler[startPos]; + + Sci_Position lineCurrent = styler.GetLine(startPos); + + bool sectionFlag = false; + int levelPrev = lineCurrent > 0 ? styler.LevelAt(lineCurrent - 1) : SC_FOLDLEVELBASE; + int level; + + for (Sci_PositionU i = startPos; i < endPos; i++) { + char ch = chNext; + chNext = styler[i+1]; + bool atEOL = (ch == '\r' && chNext != '\n') || (ch == '\n'); + int style = styler.StyleAt(i); + + if (style == SCE_INNO_SECTION) + sectionFlag = true; + + if (atEOL || i == endPos - 1) { + if (sectionFlag) { + level = SC_FOLDLEVELBASE | SC_FOLDLEVELHEADERFLAG; + if (level == levelPrev) + styler.SetLevel(lineCurrent - 1, levelPrev & ~SC_FOLDLEVELHEADERFLAG); + } else { + level = levelPrev & SC_FOLDLEVELNUMBERMASK; + if (levelPrev & SC_FOLDLEVELHEADERFLAG) + level++; + } + + styler.SetLevel(lineCurrent, level); + + levelPrev = level; + lineCurrent++; + sectionFlag = false; + } + } +} + +LexerModule lmInno(SCLEX_INNOSETUP, ColouriseInnoDoc, "inno", FoldInnoDoc, innoWordListDesc); diff --git a/libs/qscintilla/lexers/LexJSON.cpp b/libs/qscintilla_2.14.1/scintilla/lexers/LexJSON.cpp similarity index 100% rename from libs/qscintilla/lexers/LexJSON.cpp rename to libs/qscintilla_2.14.1/scintilla/lexers/LexJSON.cpp diff --git a/libs/qscintilla_2.14.1/scintilla/lexers/LexKVIrc.cpp b/libs/qscintilla_2.14.1/scintilla/lexers/LexKVIrc.cpp new file mode 100644 index 000000000..0cae2a234 --- /dev/null +++ b/libs/qscintilla_2.14.1/scintilla/lexers/LexKVIrc.cpp @@ -0,0 +1,471 @@ +// Scintilla source code edit control +/** @file LexKVIrc.cxx + ** Lexer for KVIrc script. + **/ +// Copyright 2013 by OmegaPhil , based in +// part from LexPython Copyright 1998-2002 by Neil Hodgson +// and LexCmake Copyright 2007 by Cristian Adam + +// The License.txt file describes the conditions under which this software may be distributed. + +#include +#include +#include +#include +#include +#include + +#include "ILexer.h" +#include "Scintilla.h" +#include "SciLexer.h" + +#include "WordList.h" +#include "LexAccessor.h" +#include "Accessor.h" +#include "StyleContext.h" +#include "CharacterSet.h" +#include "LexerModule.h" + +using namespace Scintilla; + + +/* KVIrc Script syntactic rules: http://www.kvirc.net/doc/doc_syntactic_rules.html */ + +/* Utility functions */ +static inline bool IsAWordChar(int ch) { + + /* Keyword list includes modules, i.e. words including '.', and + * alias namespaces include ':' */ + return (ch < 0x80) && (isalnum(ch) || ch == '_' || ch == '.' + || ch == ':'); +} +static inline bool IsAWordStart(int ch) { + + /* Functions (start with '$') are treated separately to keywords */ + return (ch < 0x80) && (isalnum(ch) || ch == '_' ); +} + +/* Interface function called by Scintilla to request some text to be + syntax highlighted */ +static void ColouriseKVIrcDoc(Sci_PositionU startPos, Sci_Position length, + int initStyle, WordList *keywordlists[], + Accessor &styler) +{ + /* Fetching style context */ + StyleContext sc(startPos, length, initStyle, styler); + + /* Accessing keywords and function-marking keywords */ + WordList &keywords = *keywordlists[0]; + WordList &functionKeywords = *keywordlists[1]; + + /* Looping for all characters - only automatically moving forward + * when asked for (transitions leaving strings and keywords do this + * already) */ + bool next = true; + for( ; sc.More(); next ? sc.Forward() : (void)0 ) + { + /* Resetting next */ + next = true; + + /* Dealing with different states */ + switch (sc.state) + { + case SCE_KVIRC_DEFAULT: + + /* Detecting single-line comments + * Unfortunately KVIrc script allows raw '#' to be used, and appending # to an array returns + * its length... + * Going for a compromise where single line comments not + * starting on a newline are allowed in all cases except + * when they are preceeded with an opening bracket or comma + * (this will probably be the most common style a valid + * string-less channel name will be used with), with the + * array length case included + */ + if ( + (sc.ch == '#' && sc.atLineStart) || + (sc.ch == '#' && ( + sc.chPrev != '(' && sc.chPrev != ',' && + sc.chPrev != ']') + ) + ) + { + sc.SetState(SCE_KVIRC_COMMENT); + break; + } + + /* Detecting multi-line comments */ + if (sc.Match('/', '*')) + { + sc.SetState(SCE_KVIRC_COMMENTBLOCK); + break; + } + + /* Detecting strings */ + if (sc.ch == '"') + { + sc.SetState(SCE_KVIRC_STRING); + break; + } + + /* Detecting functions */ + if (sc.ch == '$') + { + sc.SetState(SCE_KVIRC_FUNCTION); + break; + } + + /* Detecting variables */ + if (sc.ch == '%') + { + sc.SetState(SCE_KVIRC_VARIABLE); + break; + } + + /* Detecting numbers - isdigit is unsafe as it does not + * validate, use CharacterSet.h functions */ + if (IsADigit(sc.ch)) + { + sc.SetState(SCE_KVIRC_NUMBER); + break; + } + + /* Detecting words */ + if (IsAWordStart(sc.ch) && IsAWordChar(sc.chNext)) + { + sc.SetState(SCE_KVIRC_WORD); + sc.Forward(); + break; + } + + /* Detecting operators */ + if (isoperator(sc.ch)) + { + sc.SetState(SCE_KVIRC_OPERATOR); + break; + } + + break; + + case SCE_KVIRC_COMMENT: + + /* Breaking out of single line comment when a newline + * is introduced */ + if (sc.ch == '\r' || sc.ch == '\n') + { + sc.SetState(SCE_KVIRC_DEFAULT); + break; + } + + break; + + case SCE_KVIRC_COMMENTBLOCK: + + /* Detecting end of multi-line comment */ + if (sc.Match('*', '/')) + { + // Moving the current position forward two characters + // so that '*/' is included in the comment + sc.Forward(2); + sc.SetState(SCE_KVIRC_DEFAULT); + + /* Comment has been exited and the current position + * moved forward, yet the new current character + * has yet to be defined - loop without moving + * forward again */ + next = false; + break; + } + + break; + + case SCE_KVIRC_STRING: + + /* Detecting end of string - closing speechmarks */ + if (sc.ch == '"') + { + /* Allowing escaped speechmarks to pass */ + if (sc.chPrev == '\\') + break; + + /* Moving the current position forward to capture the + * terminating speechmarks, and ending string */ + sc.ForwardSetState(SCE_KVIRC_DEFAULT); + + /* String has been exited and the current position + * moved forward, yet the new current character + * has yet to be defined - loop without moving + * forward again */ + next = false; + break; + } + + /* Functions and variables are now highlighted in strings + * Detecting functions */ + if (sc.ch == '$') + { + /* Allowing escaped functions to pass */ + if (sc.chPrev == '\\') + break; + + sc.SetState(SCE_KVIRC_STRING_FUNCTION); + break; + } + + /* Detecting variables */ + if (sc.ch == '%') + { + /* Allowing escaped variables to pass */ + if (sc.chPrev == '\\') + break; + + sc.SetState(SCE_KVIRC_STRING_VARIABLE); + break; + } + + /* Breaking out of a string when a newline is introduced */ + if (sc.ch == '\r' || sc.ch == '\n') + { + /* Allowing escaped newlines */ + if (sc.chPrev == '\\') + break; + + sc.SetState(SCE_KVIRC_DEFAULT); + break; + } + + break; + + case SCE_KVIRC_FUNCTION: + case SCE_KVIRC_VARIABLE: + + /* Detecting the end of a function/variable (word) */ + if (!IsAWordChar(sc.ch)) + { + sc.SetState(SCE_KVIRC_DEFAULT); + + /* Word has been exited yet the current character + * has yet to be defined - loop without moving + * forward again */ + next = false; + break; + } + + break; + + case SCE_KVIRC_STRING_FUNCTION: + case SCE_KVIRC_STRING_VARIABLE: + + /* A function or variable in a string + * Detecting the end of a function/variable (word) */ + if (!IsAWordChar(sc.ch)) + { + sc.SetState(SCE_KVIRC_STRING); + + /* Word has been exited yet the current character + * has yet to be defined - loop without moving + * forward again */ + next = false; + break; + } + + break; + + case SCE_KVIRC_NUMBER: + + /* Detecting the end of a number */ + if (!IsADigit(sc.ch)) + { + sc.SetState(SCE_KVIRC_DEFAULT); + + /* Number has been exited yet the current character + * has yet to be defined - loop without moving + * forward */ + next = false; + break; + } + + break; + + case SCE_KVIRC_OPERATOR: + + /* Because '%' is an operator but is also the marker for + * a variable, I need to always treat operators as single + * character strings and therefore redo their detection + * after every character */ + sc.SetState(SCE_KVIRC_DEFAULT); + + /* Operator has been exited yet the current character + * has yet to be defined - loop without moving + * forward */ + next = false; + break; + + case SCE_KVIRC_WORD: + + /* Detecting the end of a word */ + if (!IsAWordChar(sc.ch)) + { + /* Checking if the word was actually a keyword - + * fetching the current word, NULL-terminated like + * the keyword list */ + char s[100]; + Sci_Position wordLen = sc.currentPos - styler.GetStartSegment(); + if (wordLen > 99) + wordLen = 99; /* Include '\0' in buffer */ + Sci_Position i; + for( i = 0; i < wordLen; ++i ) + { + s[i] = styler.SafeGetCharAt( styler.GetStartSegment() + i ); + } + s[wordLen] = '\0'; + + /* Actually detecting keywords and fixing the state */ + if (keywords.InList(s)) + { + /* The SetState call actually commits the + * previous keyword state */ + sc.ChangeState(SCE_KVIRC_KEYWORD); + } + else if (functionKeywords.InList(s)) + { + // Detecting function keywords and fixing the state + sc.ChangeState(SCE_KVIRC_FUNCTION_KEYWORD); + } + + /* Transitioning to default and committing the previous + * word state */ + sc.SetState(SCE_KVIRC_DEFAULT); + + /* Word has been exited yet the current character + * has yet to be defined - loop without moving + * forward again */ + next = false; + break; + } + + break; + } + } + + /* Indicating processing is complete */ + sc.Complete(); +} + +static void FoldKVIrcDoc(Sci_PositionU startPos, Sci_Position length, int /*initStyle - unused*/, + WordList *[], Accessor &styler) +{ + /* Based on CMake's folder */ + + /* Exiting if folding isnt enabled */ + if ( styler.GetPropertyInt("fold") == 0 ) + return; + + /* Obtaining current line number*/ + Sci_Position currentLine = styler.GetLine(startPos); + + /* Obtaining starting character - indentation is done on a line basis, + * not character */ + Sci_PositionU safeStartPos = styler.LineStart( currentLine ); + + /* Initialising current level - this is defined as indentation level + * in the low 12 bits, with flag bits in the upper four bits. + * It looks like two indentation states are maintained in the returned + * 32bit value - 'nextLevel' in the most-significant bits, 'currentLevel' + * in the least-significant bits. Since the next level is the most + * up to date, this must refer to the current state of indentation. + * So the code bitshifts the old current level out of existence to + * get at the actual current state of indentation + * Based on the LexerCPP.cxx line 958 comment */ + int currentLevel = SC_FOLDLEVELBASE; + if (currentLine > 0) + currentLevel = styler.LevelAt(currentLine - 1) >> 16; + int nextLevel = currentLevel; + + // Looping for characters in range + for (Sci_PositionU i = safeStartPos; i < startPos + length; ++i) + { + /* Folding occurs after syntax highlighting, meaning Scintilla + * already knows where the comments are + * Fetching the current state */ + int state = styler.StyleAt(i) & 31; + + switch( styler.SafeGetCharAt(i) ) + { + case '{': + + /* Indenting only when the braces are not contained in + * a comment */ + if (state != SCE_KVIRC_COMMENT && + state != SCE_KVIRC_COMMENTBLOCK) + ++nextLevel; + break; + + case '}': + + /* Outdenting only when the braces are not contained in + * a comment */ + if (state != SCE_KVIRC_COMMENT && + state != SCE_KVIRC_COMMENTBLOCK) + --nextLevel; + break; + + case '\n': + case '\r': + + /* Preparing indentation information to return - combining + * current and next level data */ + int lev = currentLevel | nextLevel << 16; + + /* If the next level increases the indent level, mark the + * current line as a fold point - current level data is + * in the least significant bits */ + if (nextLevel > currentLevel ) + lev |= SC_FOLDLEVELHEADERFLAG; + + /* Updating indentation level if needed */ + if (lev != styler.LevelAt(currentLine)) + styler.SetLevel(currentLine, lev); + + /* Updating variables */ + ++currentLine; + currentLevel = nextLevel; + + /* Dealing with problematic Windows newlines - + * incrementing to avoid the extra newline breaking the + * fold point */ + if (styler.SafeGetCharAt(i) == '\r' && + styler.SafeGetCharAt(i + 1) == '\n') + ++i; + break; + } + } + + /* At this point the data has ended, so presumably the end of the line? + * Preparing indentation information to return - combining current + * and next level data */ + int lev = currentLevel | nextLevel << 16; + + /* If the next level increases the indent level, mark the current + * line as a fold point - current level data is in the least + * significant bits */ + if (nextLevel > currentLevel ) + lev |= SC_FOLDLEVELHEADERFLAG; + + /* Updating indentation level if needed */ + if (lev != styler.LevelAt(currentLine)) + styler.SetLevel(currentLine, lev); +} + +/* Registering wordlists */ +static const char *const kvircWordListDesc[] = { + "primary", + "function_keywords", + 0 +}; + + +/* Registering functions and wordlists */ +LexerModule lmKVIrc(SCLEX_KVIRC, ColouriseKVIrcDoc, "kvirc", FoldKVIrcDoc, + kvircWordListDesc); diff --git a/libs/qscintilla_2.14.1/scintilla/lexers/LexKix.cpp b/libs/qscintilla_2.14.1/scintilla/lexers/LexKix.cpp new file mode 100644 index 000000000..bcd68137e --- /dev/null +++ b/libs/qscintilla_2.14.1/scintilla/lexers/LexKix.cpp @@ -0,0 +1,134 @@ +// Scintilla source code edit control +/** @file LexKix.cxx + ** Lexer for KIX-Scripts. + **/ +// Copyright 2004 by Manfred Becker +// The License.txt file describes the conditions under which this software may be distributed. +// Edited by Lee Wilmott (24-Jun-2014) added support for block comments + +#include +#include +#include +#include +#include +#include + +#include "ILexer.h" +#include "Scintilla.h" +#include "SciLexer.h" + +#include "WordList.h" +#include "LexAccessor.h" +#include "Accessor.h" +#include "StyleContext.h" +#include "CharacterSet.h" +#include "LexerModule.h" + +using namespace Scintilla; + +// Extended to accept accented characters +static inline bool IsAWordChar(int ch) { + return ch >= 0x80 || isalnum(ch) || ch == '_'; +} + +static inline bool IsOperator(const int ch) { + return (ch == '+' || ch == '-' || ch == '*' || ch == '/' || ch == '&' || ch == '|' || ch == '<' || ch == '>' || ch == '='); +} + +static void ColouriseKixDoc(Sci_PositionU startPos, Sci_Position length, int initStyle, + WordList *keywordlists[], Accessor &styler) { + + WordList &keywords = *keywordlists[0]; + WordList &keywords2 = *keywordlists[1]; + WordList &keywords3 = *keywordlists[2]; +// WordList &keywords4 = *keywordlists[3]; + + styler.StartAt(startPos); + + StyleContext sc(startPos, length, initStyle, styler); + + for (; sc.More(); sc.Forward()) { + + if (sc.state == SCE_KIX_COMMENT) { + if (sc.atLineEnd) { + sc.SetState(SCE_KIX_DEFAULT); + } + } else if (sc.state == SCE_KIX_COMMENTSTREAM) { + if (sc.ch == '/' && sc.chPrev == '*') { + sc.ForwardSetState(SCE_KIX_DEFAULT); + } + } else if (sc.state == SCE_KIX_STRING1) { + // This is a doubles quotes string + if (sc.ch == '\"') { + sc.ForwardSetState(SCE_KIX_DEFAULT); + } + } else if (sc.state == SCE_KIX_STRING2) { + // This is a single quote string + if (sc.ch == '\'') { + sc.ForwardSetState(SCE_KIX_DEFAULT); + } + } else if (sc.state == SCE_KIX_NUMBER) { + if (!IsADigit(sc.ch)) { + sc.SetState(SCE_KIX_DEFAULT); + } + } else if (sc.state == SCE_KIX_VAR) { + if (!IsAWordChar(sc.ch)) { + sc.SetState(SCE_KIX_DEFAULT); + } + } else if (sc.state == SCE_KIX_MACRO) { + if (!IsAWordChar(sc.ch) && !IsADigit(sc.ch)) { + char s[100]; + sc.GetCurrentLowered(s, sizeof(s)); + + if (!keywords3.InList(&s[1])) { + sc.ChangeState(SCE_KIX_DEFAULT); + } + sc.SetState(SCE_KIX_DEFAULT); + } + } else if (sc.state == SCE_KIX_OPERATOR) { + if (!IsOperator(sc.ch)) { + sc.SetState(SCE_KIX_DEFAULT); + } + } else if (sc.state == SCE_KIX_IDENTIFIER) { + if (!IsAWordChar(sc.ch)) { + char s[100]; + sc.GetCurrentLowered(s, sizeof(s)); + + if (keywords.InList(s)) { + sc.ChangeState(SCE_KIX_KEYWORD); + } else if (keywords2.InList(s)) { + sc.ChangeState(SCE_KIX_FUNCTIONS); + } + sc.SetState(SCE_KIX_DEFAULT); + } + } + + // Determine if a new state should be entered. + if (sc.state == SCE_KIX_DEFAULT) { + if (sc.ch == ';') { + sc.SetState(SCE_KIX_COMMENT); + } else if (sc.ch == '/' && sc.chNext == '*') { + sc.SetState(SCE_KIX_COMMENTSTREAM); + } else if (sc.ch == '\"') { + sc.SetState(SCE_KIX_STRING1); + } else if (sc.ch == '\'') { + sc.SetState(SCE_KIX_STRING2); + } else if (sc.ch == '$') { + sc.SetState(SCE_KIX_VAR); + } else if (sc.ch == '@') { + sc.SetState(SCE_KIX_MACRO); + } else if (IsADigit(sc.ch) || ((sc.ch == '.' || sc.ch == '&') && IsADigit(sc.chNext))) { + sc.SetState(SCE_KIX_NUMBER); + } else if (IsOperator(sc.ch)) { + sc.SetState(SCE_KIX_OPERATOR); + } else if (IsAWordChar(sc.ch)) { + sc.SetState(SCE_KIX_IDENTIFIER); + } + } + } + sc.Complete(); +} + + +LexerModule lmKix(SCLEX_KIX, ColouriseKixDoc, "kix"); + diff --git a/libs/qscintilla_2.14.1/scintilla/lexers/LexLPeg.cpp b/libs/qscintilla_2.14.1/scintilla/lexers/LexLPeg.cpp new file mode 100644 index 000000000..dfba76188 --- /dev/null +++ b/libs/qscintilla_2.14.1/scintilla/lexers/LexLPeg.cpp @@ -0,0 +1,799 @@ +/** + * Copyright 2006-2018 Mitchell mitchell.att.foicica.com. See License.txt. + * + * Lua-powered dynamic language lexer for Scintilla. + * + * For documentation on writing lexers, see *../doc/LPegLexer.html*. + */ + +#if LPEG_LEXER + +#include +#include +#include +#include +#include +#if CURSES +#include +#endif + +#include "ILexer.h" +#include "Scintilla.h" +#include "SciLexer.h" + +#include "PropSetSimple.h" +#include "LexAccessor.h" +#include "LexerModule.h" + +extern "C" { +#include "lua.h" +#include "lualib.h" +#include "lauxlib.h" +LUALIB_API int luaopen_lpeg(lua_State *L); +} + +#if _WIN32 +#define strcasecmp _stricmp +#endif +#define streq(s1, s2) (strcasecmp((s1), (s2)) == 0) + +using namespace Scintilla; + +#define l_setmetatable(l, k, mtf) \ + if (luaL_newmetatable(l, k)) { \ + lua_pushcfunction(l, mtf), lua_setfield(l, -2, "__index"); \ + lua_pushcfunction(l, mtf), lua_setfield(l, -2, "__newindex"); \ + } \ + lua_setmetatable(l, -2); +#define l_pushlexerp(l, mtf) do { \ + lua_newtable(l); \ + lua_pushvalue(l, 2), lua_setfield(l, -2, "property"); \ + l_setmetatable(l, "sci_lexerp", mtf); \ +} while(0) +#define l_getlexerobj(l) \ + lua_getfield(l, LUA_REGISTRYINDEX, "sci_lexers"); \ + lua_pushlightuserdata(l, reinterpret_cast(this)); \ + lua_gettable(l, -2), lua_replace(l, -2); +#define l_getlexerfield(l, k) \ + l_getlexerobj(l); \ + lua_getfield(l, -1, k), lua_replace(l, -2); +#if LUA_VERSION_NUM < 502 +#define l_openlib(f, s) \ + (lua_pushcfunction(L, f), lua_pushstring(L, s), lua_call(L, 1, 0)) +#define LUA_BASELIBNAME "" +#define lua_rawlen lua_objlen +#define LUA_OK 0 +#define lua_compare(l, a, b, _) lua_equal(l, a, b) +#define LUA_OPEQ 0 +#else +#define l_openlib(f, s) (luaL_requiref(L, s, f, 1), lua_pop(L, 1)) +#define LUA_BASELIBNAME "_G" +#endif +#define l_setfunction(l, f, k) (lua_pushcfunction(l, f), lua_setfield(l, -2, k)) +#define l_setconstant(l, c, k) (lua_pushinteger(l, c), lua_setfield(l, -2, k)) + +#if CURSES +#define A_COLORCHAR (A_COLOR | A_CHARTEXT) +#endif + +/** The LPeg Scintilla lexer. */ +class LexerLPeg : public ILexer { + /** + * The lexer's Lua state. + * It is cleared each time the lexer language changes unless `own_lua` is + * `true`. + */ + lua_State *L; + /** + * The flag indicating whether or not an existing Lua state was supplied as + * the lexer's Lua state. + */ + bool own_lua; + /** + * The set of properties for the lexer. + * The `lexer.name`, `lexer.lpeg.home`, and `lexer.lpeg.color.theme` + * properties must be defined before running the lexer. + */ + PropSetSimple props; + /** The function to send Scintilla messages with. */ + SciFnDirect SS; + /** The Scintilla object the lexer belongs to. */ + sptr_t sci; + /** + * The flag indicating whether or not the lexer needs to be re-initialized. + * Re-initialization is required after the lexer language changes. + */ + bool reinit; + /** + * The flag indicating whether or not the lexer language has embedded lexers. + */ + bool multilang; + /** + * The list of style numbers considered to be whitespace styles. + * This is used in multi-language lexers when backtracking to whitespace to + * determine which lexer grammar to use. + */ + bool ws[STYLE_MAX + 1]; + + /** + * Logs the given error message or a Lua error message, prints it, and clears + * the stack. + * Error messages are logged to the "lexer.lpeg.error" property. + * @param str The error message to log and print. If `NULL`, logs and prints + * the Lua error message at the top of the stack. + */ + static void l_error(lua_State *L, const char *str=NULL) { + lua_getfield(L, LUA_REGISTRYINDEX, "sci_props"); + PropSetSimple *props = static_cast(lua_touserdata(L, -1)); + lua_pop(L, 1); // props + const char *key = "lexer.lpeg.error"; + const char *value = str ? str : lua_tostring(L, -1); + props->Set(key, value, strlen(key), strlen(value)); + fprintf(stderr, "Lua Error: %s.\n", str ? str : lua_tostring(L, -1)); + lua_settop(L, 0); + } + + /** The lexer's `line_from_position` Lua function. */ + static int l_line_from_position(lua_State *L) { + lua_getfield(L, LUA_REGISTRYINDEX, "sci_buffer"); + IDocument *buffer = static_cast(lua_touserdata(L, -1)); + lua_pushinteger(L, buffer->LineFromPosition(luaL_checkinteger(L, 1) - 1)); + return 1; + } + + /** The lexer's `__index` Lua metatable. */ + static int llexer_property(lua_State *L) { + int newindex = (lua_gettop(L) == 3); + luaL_getmetatable(L, "sci_lexer"); + lua_getmetatable(L, 1); // metatable can be either sci_lexer or sci_lexerp + int is_lexer = lua_compare(L, -1, -2, LUA_OPEQ); + lua_pop(L, 2); // metatable, metatable + + lua_getfield(L, LUA_REGISTRYINDEX, "sci_buffer"); + IDocument *buffer = static_cast(lua_touserdata(L, -1)); + lua_getfield(L, LUA_REGISTRYINDEX, "sci_props"); + PropSetSimple *props = static_cast(lua_touserdata(L, -1)); + lua_pop(L, 2); // sci_props and sci_buffer + + if (is_lexer) + lua_pushvalue(L, 2); // key is given + else + lua_getfield(L, 1, "property"); // indexible property + const char *key = lua_tostring(L, -1); + if (strcmp(key, "fold_level") == 0) { + luaL_argcheck(L, !newindex, 3, "read-only property"); + if (is_lexer) + l_pushlexerp(L, llexer_property); + else + lua_pushinteger(L, buffer->GetLevel(luaL_checkinteger(L, 2))); + } else if (strcmp(key, "indent_amount") == 0) { + luaL_argcheck(L, !newindex, 3, "read-only property"); + if (is_lexer) + l_pushlexerp(L, llexer_property); + else + lua_pushinteger(L, buffer->GetLineIndentation(luaL_checkinteger(L, 2))); + } else if (strcmp(key, "property") == 0) { + luaL_argcheck(L, !is_lexer || !newindex, 3, "read-only property"); + if (is_lexer) + l_pushlexerp(L, llexer_property); + else if (!newindex) + lua_pushstring(L, props->Get(luaL_checkstring(L, 2))); + else + props->Set(luaL_checkstring(L, 2), luaL_checkstring(L, 3), + lua_rawlen(L, 2), lua_rawlen(L, 3)); + } else if (strcmp(key, "property_int") == 0) { + luaL_argcheck(L, !newindex, 3, "read-only property"); + if (is_lexer) + l_pushlexerp(L, llexer_property); + else { + lua_pushstring(L, props->Get(luaL_checkstring(L, 2))); + lua_pushinteger(L, lua_tointeger(L, -1)); + } + } else if (strcmp(key, "style_at") == 0) { + luaL_argcheck(L, !newindex, 3, "read-only property"); + if (is_lexer) + l_pushlexerp(L, llexer_property); + else { + int style = buffer->StyleAt(luaL_checkinteger(L, 2) - 1); + lua_getfield(L, LUA_REGISTRYINDEX, "sci_lexer_obj"); + lua_getfield(L, -1, "_TOKENSTYLES"), lua_replace(L, -2); + lua_pushnil(L); + while (lua_next(L, -2)) { + if (luaL_checkinteger(L, -1) == style) break; + lua_pop(L, 1); // value + } + lua_pop(L, 1); // style_num + } + } else if (strcmp(key, "line_state") == 0) { + luaL_argcheck(L, !is_lexer || !newindex, 3, "read-only property"); + if (is_lexer) + l_pushlexerp(L, llexer_property); + else if (!newindex) + lua_pushinteger(L, buffer->GetLineState(luaL_checkinteger(L, 2))); + else + buffer->SetLineState(luaL_checkinteger(L, 2), + luaL_checkinteger(L, 3)); + } else return !newindex ? (lua_rawget(L, 1), 1) : (lua_rawset(L, 1), 0); + return 1; + } + + /** + * Expands value of the string property key at index *index* and pushes the + * result onto the stack. + * @param L The Lua State. + * @param index The index the string property key. + */ + void lL_getexpanded(lua_State *L, int index) { + lua_getfield(L, LUA_REGISTRYINDEX, "_LOADED"), lua_getfield(L, -1, "lexer"); + lua_getfield(L, -1, "property_expanded"); + lua_pushvalue(L, (index > 0) ? index : index - 3), lua_gettable(L, -2); + lua_replace(L, -4), lua_pop(L, 2); // property_expanded and lexer module + } + + /** + * Parses the given style string to set the properties for the given style + * number. + * @param num The style number to set properties for. + * @param style The style string containing properties to set. + */ + void SetStyle(int num, const char *style) { + char *style_copy = static_cast(malloc(strlen(style) + 1)); + char *option = strcpy(style_copy, style), *next = NULL, *p = NULL; + while (option) { + if ((next = strchr(option, ','))) *next++ = '\0'; + if ((p = strchr(option, ':'))) *p++ = '\0'; + if (streq(option, "font") && p) + SS(sci, SCI_STYLESETFONT, num, reinterpret_cast(p)); + else if (streq(option, "size") && p) + SS(sci, SCI_STYLESETSIZE, num, static_cast(atoi(p))); + else if (streq(option, "bold") || streq(option, "notbold") || + streq(option, "weight")) { +#if !CURSES + int weight = SC_WEIGHT_NORMAL; + if (*option == 'b') + weight = SC_WEIGHT_BOLD; + else if (*option == 'w' && p) + weight = atoi(p); + SS(sci, SCI_STYLESETWEIGHT, num, weight); +#else + // Scintilla curses requires font attributes to be stored in the "font + // weight" style attribute. + // First, clear any existing SC_WEIGHT_NORMAL, SC_WEIGHT_SEMIBOLD, or + // SC_WEIGHT_BOLD values stored in the lower 16 bits. Then set the + // appropriate curses attr. + sptr_t weight = SS(sci, SCI_STYLEGETWEIGHT, num, 0) & ~A_COLORCHAR; + int bold = *option == 'b' || + (*option == 'w' && p && atoi(p) > SC_WEIGHT_NORMAL); + SS(sci, SCI_STYLESETWEIGHT, num, + bold ? weight | A_BOLD : weight & ~A_BOLD); +#endif + } else if (streq(option, "italics") || streq(option, "notitalics")) + SS(sci, SCI_STYLESETITALIC, num, *option == 'i'); + else if (streq(option, "underlined") || streq(option, "notunderlined")) { +#if !CURSES + SS(sci, SCI_STYLESETUNDERLINE, num, *option == 'u'); +#else + // Scintilla curses requires font attributes to be stored in the "font + // weight" style attribute. + // First, clear any existing SC_WEIGHT_NORMAL, SC_WEIGHT_SEMIBOLD, or + // SC_WEIGHT_BOLD values stored in the lower 16 bits. Then set the + // appropriate curses attr. + sptr_t weight = SS(sci, SCI_STYLEGETWEIGHT, num, 0) & ~A_COLORCHAR; + SS(sci, SCI_STYLESETWEIGHT, num, + (*option == 'u') ? weight | A_UNDERLINE : weight & ~A_UNDERLINE); +#endif + } else if ((streq(option, "fore") || streq(option, "back")) && p) { + int msg = (*option == 'f') ? SCI_STYLESETFORE : SCI_STYLESETBACK; + int color = static_cast(strtol(p, NULL, 0)); + if (*p == '#') { // #RRGGBB format; Scintilla format is 0xBBGGRR + color = static_cast(strtol(p + 1, NULL, 16)); + color = ((color & 0xFF0000) >> 16) | (color & 0xFF00) | + ((color & 0xFF) << 16); // convert to 0xBBGGRR + } + SS(sci, msg, num, color); + } else if (streq(option, "eolfilled") || streq(option, "noteolfilled")) + SS(sci, SCI_STYLESETEOLFILLED, num, *option == 'e'); + else if (streq(option, "characterset") && p) + SS(sci, SCI_STYLESETCHARACTERSET, num, static_cast(atoi(p))); + else if (streq(option, "case") && p) { + if (*p == 'u') + SS(sci, SCI_STYLESETCASE, num, SC_CASE_UPPER); + else if (*p == 'l') + SS(sci, SCI_STYLESETCASE, num, SC_CASE_LOWER); + } else if (streq(option, "visible") || streq(option, "notvisible")) + SS(sci, SCI_STYLESETVISIBLE, num, *option == 'v'); + else if (streq(option, "changeable") || streq(option, "notchangeable")) + SS(sci, SCI_STYLESETCHANGEABLE, num, *option == 'c'); + else if (streq(option, "hotspot") || streq(option, "nothotspot")) + SS(sci, SCI_STYLESETHOTSPOT, num, *option == 'h'); + option = next; + } + free(style_copy); + } + + /** + * Iterates through the lexer's `_TOKENSTYLES`, setting the style properties + * for all defined styles. + */ + bool SetStyles() { + // If the lexer defines additional styles, set their properties first (if + // the user has not already defined them). + l_getlexerfield(L, "_EXTRASTYLES"); + lua_pushnil(L); + while (lua_next(L, -2)) { + if (lua_isstring(L, -2) && lua_isstring(L, -1)) { + lua_pushstring(L, "style."), lua_pushvalue(L, -3), lua_concat(L, 2); + if (!*props.Get(lua_tostring(L, -1))) + props.Set(lua_tostring(L, -1), lua_tostring(L, -2), lua_rawlen(L, -1), + lua_rawlen(L, -2)); + lua_pop(L, 1); // style name + } + lua_pop(L, 1); // value + } + lua_pop(L, 1); // _EXTRASTYLES + + l_getlexerfield(L, "_TOKENSTYLES"); + if (!SS || !sci) { + lua_pop(L, 1); // _TOKENSTYLES + // Skip, but do not report an error since `reinit` would remain `false` + // and subsequent calls to `Lex()` and `Fold()` would repeatedly call this + // function and error. + return true; + } + lua_pushstring(L, "style.default"), lL_getexpanded(L, -1); + SetStyle(STYLE_DEFAULT, lua_tostring(L, -1)); + lua_pop(L, 2); // style and "style.default" + SS(sci, SCI_STYLECLEARALL, 0, 0); // set default styles + lua_pushnil(L); + while (lua_next(L, -2)) { + if (lua_isstring(L, -2) && lua_isnumber(L, -1) && + lua_tointeger(L, -1) != STYLE_DEFAULT) { + lua_pushstring(L, "style."), lua_pushvalue(L, -3), lua_concat(L, 2); + lL_getexpanded(L, -1), lua_replace(L, -2); + SetStyle(lua_tointeger(L, -2), lua_tostring(L, -1)); + lua_pop(L, 1); // style + } + lua_pop(L, 1); // value + } + lua_pop(L, 1); // _TOKENSTYLES + return true; + } + + /** + * Returns the style name for the given style number. + * @param style The style number to get the style name for. + * @return style name or NULL + */ + const char *GetStyleName(int style) { + if (!L) return NULL; + const char *name = NULL; + l_getlexerfield(L, "_TOKENSTYLES"); + lua_pushnil(L); + while (lua_next(L, -2)) + if (lua_tointeger(L, -1) == style) { + name = lua_tostring(L, -2); + lua_pop(L, 2); // value and key + break; + } else lua_pop(L, 1); // value + lua_pop(L, 1); // _TOKENSTYLES + return name; + } + + /** + * Initializes the lexer once the `lexer.lpeg.home` and `lexer.name` + * properties are set. + */ + bool Init() { + char home[FILENAME_MAX], lexer[50], theme[FILENAME_MAX]; + props.GetExpanded("lexer.lpeg.home", home); + props.GetExpanded("lexer.name", lexer); + props.GetExpanded("lexer.lpeg.color.theme", theme); + if (!*home || !*lexer || !L) return false; + + lua_pushlightuserdata(L, reinterpret_cast(&props)); + lua_setfield(L, LUA_REGISTRYINDEX, "sci_props"); + + // If necessary, load the lexer module and theme. + lua_getfield(L, LUA_REGISTRYINDEX, "_LOADED"), lua_getfield(L, -1, "lexer"); + if (lua_isnil(L, -1)) { + lua_pop(L, 2); // nil and _LOADED + + // Modify `package.path` to find lexers. + lua_getglobal(L, "package"), lua_getfield(L, -1, "path"); + int orig_path = luaL_ref(L, LUA_REGISTRYINDEX); // restore later + lua_pushstring(L, home), lua_pushstring(L, "/?.lua"), lua_concat(L, 2); + lua_setfield(L, -2, "path"), lua_pop(L, 1); // package + + // Load the lexer module. + lua_getglobal(L, "require"); + lua_pushstring(L, "lexer"); + if (lua_pcall(L, 1, 1, 0) != LUA_OK) return (l_error(L), false); + l_setfunction(L, l_line_from_position, "line_from_position"); + l_setconstant(L, SC_FOLDLEVELBASE, "FOLD_BASE"); + l_setconstant(L, SC_FOLDLEVELWHITEFLAG, "FOLD_BLANK"); + l_setconstant(L, SC_FOLDLEVELHEADERFLAG, "FOLD_HEADER"); + l_setmetatable(L, "sci_lexer", llexer_property); + if (*theme) { + // Load the theme. + if (!(strstr(theme, "/") || strstr(theme, "\\"))) { // theme name + lua_pushstring(L, home); + lua_pushstring(L, "/themes/"); + lua_pushstring(L, theme); + lua_pushstring(L, ".lua"); + lua_concat(L, 4); + } else lua_pushstring(L, theme); // path to theme + if (luaL_loadfile(L, lua_tostring(L, -1)) != LUA_OK || + lua_pcall(L, 0, 0, 0) != LUA_OK) return (l_error(L), false); + lua_pop(L, 1); // theme + } + + // Restore `package.path`. + lua_getglobal(L, "package"); + lua_getfield(L, -1, "path"), lua_setfield(L, -3, "path"); // lexer.path = + lua_rawgeti(L, LUA_REGISTRYINDEX, orig_path), lua_setfield(L, -2, "path"); + luaL_unref(L, LUA_REGISTRYINDEX, orig_path), lua_pop(L, 1); // package + } else lua_remove(L, -2); // _LOADED + + // Load the language lexer. + lua_getfield(L, -1, "load"); + if (lua_isfunction(L, -1)) { + lua_pushstring(L, lexer), lua_pushnil(L), lua_pushboolean(L, 1); + if (lua_pcall(L, 3, 1, 0) != LUA_OK) return (l_error(L), false); + } else return (l_error(L, "'lexer.load' function not found"), false); + lua_getfield(L, LUA_REGISTRYINDEX, "sci_lexers"); + lua_pushlightuserdata(L, reinterpret_cast(this)); + lua_pushvalue(L, -3), lua_settable(L, -3), lua_pop(L, 1); // sci_lexers + lua_pushvalue(L, -1), lua_setfield(L, LUA_REGISTRYINDEX, "sci_lexer_obj"); + lua_remove(L, -2); // lexer module + if (!SetStyles()) return false; + + // If the lexer is a parent, it will have children in its _CHILDREN table. + lua_getfield(L, -1, "_CHILDREN"); + if (lua_istable(L, -1)) { + multilang = true; + // Determine which styles are language whitespace styles + // ([lang]_whitespace). This is necessary for determining which language + // to start lexing with. + char style_name[50]; + for (int i = 0; i <= STYLE_MAX; i++) { + PrivateCall(i, reinterpret_cast(style_name)); + ws[i] = strstr(style_name, "whitespace") ? true : false; + } + } + lua_pop(L, 2); // _CHILDREN and lexer object + + reinit = false; + props.Set("lexer.lpeg.error", "", strlen("lexer.lpeg.error"), 0); + return true; + } + + /** + * When *lparam* is `0`, returns the size of the buffer needed to store the + * given string *str* in; otherwise copies *str* into the buffer *lparam* and + * returns the number of bytes copied. + * @param lparam `0` to get the number of bytes needed to store *str* or a + * pointer to a buffer large enough to copy *str* into. + * @param str The string to copy. + * @return number of bytes needed to hold *str* + */ + void *StringResult(long lparam, const char *str) { + if (lparam) strcpy(reinterpret_cast(lparam), str); + return reinterpret_cast(strlen(str)); + } + +public: + /** Constructor. */ + LexerLPeg() : own_lua(true), reinit(true), multilang(false) { + // Initialize the Lua state, load libraries, and set platform variables. + if ((L = luaL_newstate())) { + l_openlib(luaopen_base, LUA_BASELIBNAME); + l_openlib(luaopen_table, LUA_TABLIBNAME); + l_openlib(luaopen_string, LUA_STRLIBNAME); +#if LUA_VERSION_NUM < 502 + l_openlib(luaopen_io, LUA_IOLIBNAME); // for `package.searchpath()` +#endif + l_openlib(luaopen_package, LUA_LOADLIBNAME); + l_openlib(luaopen_lpeg, "lpeg"); +#if _WIN32 + lua_pushboolean(L, 1), lua_setglobal(L, "WIN32"); +#endif +#if __APPLE__ + lua_pushboolean(L, 1), lua_setglobal(L, "OSX"); +#endif +#if GTK + lua_pushboolean(L, 1), lua_setglobal(L, "GTK"); +#endif +#if CURSES + lua_pushboolean(L, 1), lua_setglobal(L, "CURSES"); +#endif + lua_newtable(L), lua_setfield(L, LUA_REGISTRYINDEX, "sci_lexers"); + } else fprintf(stderr, "Lua failed to initialize.\n"); + SS = NULL, sci = 0; + } + + /** Destructor. */ + virtual ~LexerLPeg() {} + + /** Destroys the lexer object. */ + virtual void SCI_METHOD Release() { + if (own_lua && L) + lua_close(L); + else if (!own_lua) { + lua_getfield(L, LUA_REGISTRYINDEX, "sci_lexers"); + lua_pushlightuserdata(L, reinterpret_cast(this)); + lua_pushnil(L), lua_settable(L, -3), lua_pop(L, 1); // sci_lexers + } + L = NULL; + delete this; + } + + /** + * Lexes the Scintilla document. + * @param startPos The position in the document to start lexing at. + * @param lengthDoc The number of bytes in the document to lex. + * @param initStyle The initial style at position *startPos* in the document. + * @param buffer The document interface. + */ + virtual void SCI_METHOD Lex(Sci_PositionU startPos, Sci_Position lengthDoc, + int initStyle, IDocument *buffer) { + LexAccessor styler(buffer); + if ((reinit && !Init()) || !L) { + // Style everything in the default style. + styler.StartAt(startPos); + styler.StartSegment(startPos); + styler.ColourTo(startPos + lengthDoc - 1, STYLE_DEFAULT); + styler.Flush(); + return; + } + lua_pushlightuserdata(L, reinterpret_cast(&props)); + lua_setfield(L, LUA_REGISTRYINDEX, "sci_props"); + lua_pushlightuserdata(L, reinterpret_cast(buffer)); + lua_setfield(L, LUA_REGISTRYINDEX, "sci_buffer"); + + // Ensure the lexer has a grammar. + // This could be done in the lexer module's `lex()`, but for large files, + // passing string arguments from C to Lua is expensive. + l_getlexerfield(L, "_GRAMMAR"); + int has_grammar = !lua_isnil(L, -1); + lua_pop(L, 1); // _GRAMMAR + if (!has_grammar) { + // Style everything in the default style. + styler.StartAt(startPos); + styler.StartSegment(startPos); + styler.ColourTo(startPos + lengthDoc - 1, STYLE_DEFAULT); + styler.Flush(); + return; + } + + // Start from the beginning of the current style so LPeg matches it. + // For multilang lexers, start at whitespace since embedded languages have + // [lang]_whitespace styles. This is so LPeg can start matching child + // languages instead of parent ones if necessary. + if (startPos > 0) { + Sci_PositionU i = startPos; + while (i > 0 && styler.StyleAt(i - 1) == initStyle) i--; + if (multilang) + while (i > 0 && !ws[static_cast(styler.StyleAt(i))]) i--; + lengthDoc += startPos - i, startPos = i; + } + + Sci_PositionU startSeg = startPos, endSeg = startPos + lengthDoc; + int style = 0; + l_getlexerfield(L, "lex") + if (lua_isfunction(L, -1)) { + l_getlexerobj(L); + lua_pushlstring(L, buffer->BufferPointer() + startPos, lengthDoc); + lua_pushinteger(L, styler.StyleAt(startPos)); + if (lua_pcall(L, 3, 1, 0) != LUA_OK) l_error(L); + // Style the text from the token table returned. + if (lua_istable(L, -1)) { + int len = lua_rawlen(L, -1); + if (len > 0) { + styler.StartAt(startPos); + styler.StartSegment(startPos); + l_getlexerfield(L, "_TOKENSTYLES"); + // Loop through token-position pairs. + for (int i = 1; i < len; i += 2) { + style = STYLE_DEFAULT; + lua_rawgeti(L, -2, i), lua_rawget(L, -2); // _TOKENSTYLES[token] + if (!lua_isnil(L, -1)) style = lua_tointeger(L, -1); + lua_pop(L, 1); // _TOKENSTYLES[token] + lua_rawgeti(L, -2, i + 1); // pos + unsigned int position = lua_tointeger(L, -1) - 1; + lua_pop(L, 1); // pos + if (style >= 0 && style <= STYLE_MAX) + styler.ColourTo(startSeg + position - 1, style); + else + l_error(L, "Bad style number"); + if (position > endSeg) break; + } + lua_pop(L, 2); // _TOKENSTYLES and token table returned + styler.ColourTo(endSeg - 1, style); + styler.Flush(); + } + } else l_error(L, "Table of tokens expected from 'lexer.lex'"); + } else l_error(L, "'lexer.lex' function not found"); + } + + /** + * Folds the Scintilla document. + * @param startPos The position in the document to start folding at. + * @param lengthDoc The number of bytes in the document to fold. + * @param initStyle The initial style at position *startPos* in the document. + * @param buffer The document interface. + */ + virtual void SCI_METHOD Fold(Sci_PositionU startPos, Sci_Position lengthDoc, + int, IDocument *buffer) { + if ((reinit && !Init()) || !L) return; + lua_pushlightuserdata(L, reinterpret_cast(&props)); + lua_setfield(L, LUA_REGISTRYINDEX, "sci_props"); + lua_pushlightuserdata(L, reinterpret_cast(buffer)); + lua_setfield(L, LUA_REGISTRYINDEX, "sci_buffer"); + LexAccessor styler(buffer); + + l_getlexerfield(L, "fold"); + if (lua_isfunction(L, -1)) { + l_getlexerobj(L); + Sci_Position currentLine = styler.GetLine(startPos); + lua_pushlstring(L, buffer->BufferPointer() + startPos, lengthDoc); + lua_pushinteger(L, startPos); + lua_pushinteger(L, currentLine); + lua_pushinteger(L, styler.LevelAt(currentLine) & SC_FOLDLEVELNUMBERMASK); + if (lua_pcall(L, 5, 1, 0) != LUA_OK) l_error(L); + // Fold the text from the fold table returned. + if (lua_istable(L, -1)) { + lua_pushnil(L); + while (lua_next(L, -2)) { // line = level + styler.SetLevel(lua_tointeger(L, -2), lua_tointeger(L, -1)); + lua_pop(L, 1); // level + } + lua_pop(L, 1); // fold table returned + } else l_error(L, "Table of folds expected from 'lexer.fold'"); + } else l_error(L, "'lexer.fold' function not found"); + } + + /** This lexer implements the original lexer interface. */ + virtual int SCI_METHOD Version() const { return lvOriginal; } + /** Returning property names is not implemented. */ + virtual const char * SCI_METHOD PropertyNames() { return ""; } + /** Returning property types is not implemented. */ + virtual int SCI_METHOD PropertyType(const char *) { return 0; } + /** Returning property descriptions is not implemented. */ + virtual const char * SCI_METHOD DescribeProperty(const char *) { + return ""; + } + + /** + * Sets the *key* lexer property to *value*. + * If *key* starts with "style.", also set the style for the token. + * @param key The string keyword. + * @param val The string value. + */ + virtual Sci_Position SCI_METHOD PropertySet(const char *key, + const char *value) { + props.Set(key, value, strlen(key), strlen(value)); + if (reinit) + Init(); + else if (L && SS && sci && strncmp(key, "style.", 6) == 0) { + lua_pushlightuserdata(L, reinterpret_cast(&props)); + lua_setfield(L, LUA_REGISTRYINDEX, "sci_props"); + l_getlexerfield(L, "_TOKENSTYLES"); + lua_pushstring(L, key + 6), lua_rawget(L, -2); + lua_pushstring(L, key), lL_getexpanded(L, -1), lua_replace(L, -2); + if (lua_isnumber(L, -2)) { + int style_num = lua_tointeger(L, -2); + SetStyle(style_num, lua_tostring(L, -1)); + if (style_num == STYLE_DEFAULT) + // Assume a theme change, with the default style being set first. + // Subsequent style settings will be based on the default. + SS(sci, SCI_STYLECLEARALL, 0, 0); + } + lua_pop(L, 3); // style, style number, _TOKENSTYLES + } + return -1; // no need to re-lex + } + + /** Returning keyword list descriptions is not implemented. */ + virtual const char * SCI_METHOD DescribeWordListSets() { return ""; } + /** Setting keyword lists is not applicable. */ + virtual Sci_Position SCI_METHOD WordListSet(int, const char *) { + return -1; + } + + /** + * Allows for direct communication between the application and the lexer. + * The application uses this to set `SS`, `sci`, `L`, and lexer properties, + * and to retrieve style names. + * @param code The communication code. + * @param arg The argument. + * @return void *data + */ + virtual void * SCI_METHOD PrivateCall(int code, void *arg) { + sptr_t lParam = reinterpret_cast(arg); + const char *val = NULL; + switch(code) { + case SCI_GETDIRECTFUNCTION: + SS = reinterpret_cast(lParam); + return NULL; + case SCI_SETDOCPOINTER: + sci = lParam; + return NULL; + case SCI_CHANGELEXERSTATE: + if (own_lua) lua_close(L); + L = reinterpret_cast(lParam); + lua_getfield(L, LUA_REGISTRYINDEX, "sci_lexers"); + if (lua_isnil(L, -1)) + lua_newtable(L), lua_setfield(L, LUA_REGISTRYINDEX, "sci_lexers"); + lua_pop(L, 1); // sci_lexers or nil + own_lua = false; + return NULL; + case SCI_SETLEXERLANGUAGE: + char lexer_name[50]; + props.GetExpanded("lexer.name", lexer_name); + if (strcmp(lexer_name, reinterpret_cast(arg)) != 0) { + reinit = true; + props.Set("lexer.lpeg.error", "", strlen("lexer.lpeg.error"), 0); + PropertySet("lexer.name", reinterpret_cast(arg)); + } else if (L) + own_lua ? SetStyles() : Init(); + return NULL; + case SCI_GETLEXERLANGUAGE: + if (L) { + l_getlexerfield(L, "_NAME"); + if (SS && sci && multilang) { + int pos = SS(sci, SCI_GETCURRENTPOS, 0, 0); + while (pos >= 0 && !ws[SS(sci, SCI_GETSTYLEAT, pos, 0)]) pos--; + const char *name = NULL, *p = NULL; + if (pos >= 0) { + name = GetStyleName(SS(sci, SCI_GETSTYLEAT, pos, 0)); + if (name) p = strstr(name, "_whitespace"); + } + if (!name) name = lua_tostring(L, -1); // "lexer:lexer" fallback + if (!p) p = name + strlen(name); // "lexer:lexer" fallback + lua_pushstring(L, "/"); + lua_pushlstring(L, name, p - name); + lua_concat(L, 3); + } + val = lua_tostring(L, -1); + lua_pop(L, 1); // lexer_name or lexer language string + } + return StringResult(lParam, val ? val : "null"); + case SCI_GETSTATUS: + return StringResult(lParam, props.Get("lexer.lpeg.error")); + default: // style-related + if (code >= 0 && code <= STYLE_MAX) { // retrieve style names + val = GetStyleName(code); + return StringResult(lParam, val ? val : "Not Available"); + } else return NULL; + } + } + + /** Constructs a new instance of the lexer. */ + static ILexer *LexerFactoryLPeg() { return new LexerLPeg(); } +}; + +LexerModule lmLPeg(SCLEX_LPEG, LexerLPeg::LexerFactoryLPeg, "lpeg"); + +#else + +#include +#include + +#include "ILexer.h" +#include "Scintilla.h" +#include "SciLexer.h" + +#include "WordList.h" +#include "LexAccessor.h" +#include "Accessor.h" +#include "LexerModule.h" + +using namespace Scintilla; + +static void LPegLex(Sci_PositionU, Sci_Position, int, WordList*[], Accessor&) { + return; +} + +LexerModule lmLPeg(SCLEX_LPEG, LPegLex, "lpeg"); + +#endif // LPEG_LEXER diff --git a/libs/qscintilla_2.14.1/scintilla/lexers/LexLaTeX.cpp b/libs/qscintilla_2.14.1/scintilla/lexers/LexLaTeX.cpp new file mode 100644 index 000000000..ed9e6a6b3 --- /dev/null +++ b/libs/qscintilla_2.14.1/scintilla/lexers/LexLaTeX.cpp @@ -0,0 +1,538 @@ +// Scintilla source code edit control +/** @file LexLaTeX.cxx + ** Lexer for LaTeX2e. + **/ +// Copyright 1998-2001 by Neil Hodgson +// The License.txt file describes the conditions under which this software may be distributed. + +// Modified by G. HU in 2013. Added folding, syntax highting inside math environments, and changed some minor behaviors. + +#include +#include +#include +#include +#include +#include +#include + +#include "ILexer.h" +#include "Scintilla.h" +#include "SciLexer.h" + +#include "PropSetSimple.h" +#include "WordList.h" +#include "LexAccessor.h" +#include "Accessor.h" +#include "StyleContext.h" +#include "CharacterSet.h" +#include "LexerModule.h" +#include "LexerBase.h" + +using namespace Scintilla; + +using namespace std; + +struct latexFoldSave { + latexFoldSave() : structLev(0) { + for (int i = 0; i < 8; ++i) openBegins[i] = 0; + } + latexFoldSave(const latexFoldSave &save) : structLev(save.structLev) { + for (int i = 0; i < 8; ++i) openBegins[i] = save.openBegins[i]; + } + int openBegins[8]; + Sci_Position structLev; +}; + +class LexerLaTeX : public LexerBase { +private: + vector modes; + void setMode(Sci_Position line, int mode) { + if (line >= static_cast(modes.size())) modes.resize(line + 1, 0); + modes[line] = mode; + } + int getMode(Sci_Position line) { + if (line >= 0 && line < static_cast(modes.size())) return modes[line]; + return 0; + } + void truncModes(Sci_Position numLines) { + if (static_cast(modes.size()) > numLines * 2 + 256) + modes.resize(numLines + 128); + } + + vector saves; + void setSave(Sci_Position line, const latexFoldSave &save) { + if (line >= static_cast(saves.size())) saves.resize(line + 1); + saves[line] = save; + } + void getSave(Sci_Position line, latexFoldSave &save) { + if (line >= 0 && line < static_cast(saves.size())) save = saves[line]; + else { + save.structLev = 0; + for (int i = 0; i < 8; ++i) save.openBegins[i] = 0; + } + } + void truncSaves(Sci_Position numLines) { + if (static_cast(saves.size()) > numLines * 2 + 256) + saves.resize(numLines + 128); + } +public: + static ILexer *LexerFactoryLaTeX() { + return new LexerLaTeX(); + } + void SCI_METHOD Lex(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess) override; + void SCI_METHOD Fold(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess) override; +}; + +static bool latexIsSpecial(int ch) { + return (ch == '#') || (ch == '$') || (ch == '%') || (ch == '&') || (ch == '_') || + (ch == '{') || (ch == '}') || (ch == ' '); +} + +static bool latexIsBlank(int ch) { + return (ch == ' ') || (ch == '\t'); +} + +static bool latexIsBlankAndNL(int ch) { + return (ch == ' ') || (ch == '\t') || (ch == '\r') || (ch == '\n'); +} + +static bool latexIsLetter(int ch) { + return IsASCII(ch) && isalpha(ch); +} + +static bool latexIsTagValid(Sci_Position &i, Sci_Position l, Accessor &styler) { + while (i < l) { + if (styler.SafeGetCharAt(i) == '{') { + while (i < l) { + i++; + if (styler.SafeGetCharAt(i) == '}') { + return true; + } else if (!latexIsLetter(styler.SafeGetCharAt(i)) && + styler.SafeGetCharAt(i)!='*') { + return false; + } + } + } else if (!latexIsBlank(styler.SafeGetCharAt(i))) { + return false; + } + i++; + } + return false; +} + +static bool latexNextNotBlankIs(Sci_Position i, Accessor &styler, char needle) { + char ch; + while (i < styler.Length()) { + ch = styler.SafeGetCharAt(i); + if (!latexIsBlankAndNL(ch) && ch != '*') { + if (ch == needle) + return true; + else + return false; + } + i++; + } + return false; +} + +static bool latexLastWordIs(Sci_Position start, Accessor &styler, const char *needle) { + Sci_PositionU i = 0; + Sci_PositionU l = static_cast(strlen(needle)); + Sci_Position ini = start-l+1; + char s[32]; + + while (i < l && i < 31) { + s[i] = styler.SafeGetCharAt(ini + i); + i++; + } + s[i] = '\0'; + + return (strcmp(s, needle) == 0); +} + +static bool latexLastWordIsMathEnv(Sci_Position pos, Accessor &styler) { + Sci_Position i, j; + char s[32]; + const char *mathEnvs[] = { "align", "alignat", "flalign", "gather", + "multiline", "displaymath", "eqnarray", "equation" }; + if (styler.SafeGetCharAt(pos) != '}') return false; + for (i = pos - 1; i >= 0; --i) { + if (styler.SafeGetCharAt(i) == '{') break; + if (pos - i >= 20) return false; + } + if (i < 0 || i == pos - 1) return false; + ++i; + for (j = 0; i + j < pos; ++j) + s[j] = styler.SafeGetCharAt(i + j); + s[j] = '\0'; + if (j == 0) return false; + if (s[j - 1] == '*') s[--j] = '\0'; + for (i = 0; i < static_cast(sizeof(mathEnvs) / sizeof(const char *)); ++i) + if (strcmp(s, mathEnvs[i]) == 0) return true; + return false; +} + +static inline void latexStateReset(int &mode, int &state) { + switch (mode) { + case 1: state = SCE_L_MATH; break; + case 2: state = SCE_L_MATH2; break; + default: state = SCE_L_DEFAULT; break; + } +} + +// There are cases not handled correctly, like $abcd\textrm{what is $x+y$}z+w$. +// But I think it's already good enough. +void SCI_METHOD LexerLaTeX::Lex(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess) { + // startPos is assumed to be the first character of a line + Accessor styler(pAccess, &props); + styler.StartAt(startPos); + int mode = getMode(styler.GetLine(startPos) - 1); + int state = initStyle; + if (state == SCE_L_ERROR || state == SCE_L_SHORTCMD || state == SCE_L_SPECIAL) // should not happen + latexStateReset(mode, state); + + char chNext = styler.SafeGetCharAt(startPos); + char chVerbatimDelim = '\0'; + styler.StartSegment(startPos); + Sci_Position lengthDoc = startPos + length; + + for (Sci_Position i = startPos; i < lengthDoc; i++) { + char ch = chNext; + chNext = styler.SafeGetCharAt(i + 1); + + if (styler.IsLeadByte(ch)) { + i++; + chNext = styler.SafeGetCharAt(i + 1); + continue; + } + + if (ch == '\r' || ch == '\n') + setMode(styler.GetLine(i), mode); + + switch (state) { + case SCE_L_DEFAULT : + switch (ch) { + case '\\' : + styler.ColourTo(i - 1, state); + if (latexIsLetter(chNext)) { + state = SCE_L_COMMAND; + } else if (latexIsSpecial(chNext)) { + styler.ColourTo(i + 1, SCE_L_SPECIAL); + i++; + chNext = styler.SafeGetCharAt(i + 1); + } else if (chNext == '\r' || chNext == '\n') { + styler.ColourTo(i, SCE_L_ERROR); + } else if (IsASCII(chNext)) { + styler.ColourTo(i + 1, SCE_L_SHORTCMD); + if (chNext == '(') { + mode = 1; + state = SCE_L_MATH; + } else if (chNext == '[') { + mode = 2; + state = SCE_L_MATH2; + } + i++; + chNext = styler.SafeGetCharAt(i + 1); + } + break; + case '$' : + styler.ColourTo(i - 1, state); + if (chNext == '$') { + styler.ColourTo(i + 1, SCE_L_SHORTCMD); + mode = 2; + state = SCE_L_MATH2; + i++; + chNext = styler.SafeGetCharAt(i + 1); + } else { + styler.ColourTo(i, SCE_L_SHORTCMD); + mode = 1; + state = SCE_L_MATH; + } + break; + case '%' : + styler.ColourTo(i - 1, state); + state = SCE_L_COMMENT; + break; + } + break; + // These 3 will never be reached. + case SCE_L_ERROR: + case SCE_L_SPECIAL: + case SCE_L_SHORTCMD: + break; + case SCE_L_COMMAND : + if (!latexIsLetter(chNext)) { + styler.ColourTo(i, state); + if (latexNextNotBlankIs(i + 1, styler, '[' )) { + state = SCE_L_CMDOPT; + } else if (latexLastWordIs(i, styler, "\\begin")) { + state = SCE_L_TAG; + } else if (latexLastWordIs(i, styler, "\\end")) { + state = SCE_L_TAG2; + } else if (latexLastWordIs(i, styler, "\\verb") && chNext != '*' && chNext != ' ') { + chVerbatimDelim = chNext; + state = SCE_L_VERBATIM; + } else { + latexStateReset(mode, state); + } + } + break; + case SCE_L_CMDOPT : + if (ch == ']') { + styler.ColourTo(i, state); + latexStateReset(mode, state); + } + break; + case SCE_L_TAG : + if (latexIsTagValid(i, lengthDoc, styler)) { + styler.ColourTo(i, state); + latexStateReset(mode, state); + if (latexLastWordIs(i, styler, "{verbatim}")) { + state = SCE_L_VERBATIM; + } else if (latexLastWordIs(i, styler, "{comment}")) { + state = SCE_L_COMMENT2; + } else if (latexLastWordIs(i, styler, "{math}") && mode == 0) { + mode = 1; + state = SCE_L_MATH; + } else if (latexLastWordIsMathEnv(i, styler) && mode == 0) { + mode = 2; + state = SCE_L_MATH2; + } + } else { + styler.ColourTo(i, SCE_L_ERROR); + latexStateReset(mode, state); + ch = styler.SafeGetCharAt(i); + if (ch == '\r' || ch == '\n') setMode(styler.GetLine(i), mode); + } + chNext = styler.SafeGetCharAt(i+1); + break; + case SCE_L_TAG2 : + if (latexIsTagValid(i, lengthDoc, styler)) { + styler.ColourTo(i, state); + latexStateReset(mode, state); + } else { + styler.ColourTo(i, SCE_L_ERROR); + latexStateReset(mode, state); + ch = styler.SafeGetCharAt(i); + if (ch == '\r' || ch == '\n') setMode(styler.GetLine(i), mode); + } + chNext = styler.SafeGetCharAt(i+1); + break; + case SCE_L_MATH : + switch (ch) { + case '\\' : + styler.ColourTo(i - 1, state); + if (latexIsLetter(chNext)) { + Sci_Position match = i + 3; + if (latexLastWordIs(match, styler, "\\end")) { + match++; + if (latexIsTagValid(match, lengthDoc, styler)) { + if (latexLastWordIs(match, styler, "{math}")) + mode = 0; + } + } + state = SCE_L_COMMAND; + } else if (latexIsSpecial(chNext)) { + styler.ColourTo(i + 1, SCE_L_SPECIAL); + i++; + chNext = styler.SafeGetCharAt(i + 1); + } else if (chNext == '\r' || chNext == '\n') { + styler.ColourTo(i, SCE_L_ERROR); + } else if (IsASCII(chNext)) { + if (chNext == ')') { + mode = 0; + state = SCE_L_DEFAULT; + } + styler.ColourTo(i + 1, SCE_L_SHORTCMD); + i++; + chNext = styler.SafeGetCharAt(i + 1); + } + break; + case '$' : + styler.ColourTo(i - 1, state); + styler.ColourTo(i, SCE_L_SHORTCMD); + mode = 0; + state = SCE_L_DEFAULT; + break; + case '%' : + styler.ColourTo(i - 1, state); + state = SCE_L_COMMENT; + break; + } + break; + case SCE_L_MATH2 : + switch (ch) { + case '\\' : + styler.ColourTo(i - 1, state); + if (latexIsLetter(chNext)) { + Sci_Position match = i + 3; + if (latexLastWordIs(match, styler, "\\end")) { + match++; + if (latexIsTagValid(match, lengthDoc, styler)) { + if (latexLastWordIsMathEnv(match, styler)) + mode = 0; + } + } + state = SCE_L_COMMAND; + } else if (latexIsSpecial(chNext)) { + styler.ColourTo(i + 1, SCE_L_SPECIAL); + i++; + chNext = styler.SafeGetCharAt(i + 1); + } else if (chNext == '\r' || chNext == '\n') { + styler.ColourTo(i, SCE_L_ERROR); + } else if (IsASCII(chNext)) { + if (chNext == ']') { + mode = 0; + state = SCE_L_DEFAULT; + } + styler.ColourTo(i + 1, SCE_L_SHORTCMD); + i++; + chNext = styler.SafeGetCharAt(i + 1); + } + break; + case '$' : + styler.ColourTo(i - 1, state); + if (chNext == '$') { + styler.ColourTo(i + 1, SCE_L_SHORTCMD); + i++; + chNext = styler.SafeGetCharAt(i + 1); + mode = 0; + state = SCE_L_DEFAULT; + } else { // This may not be an error, e.g. \begin{equation}\text{$a$}\end{equation} + styler.ColourTo(i, SCE_L_SHORTCMD); + } + break; + case '%' : + styler.ColourTo(i - 1, state); + state = SCE_L_COMMENT; + break; + } + break; + case SCE_L_COMMENT : + if (ch == '\r' || ch == '\n') { + styler.ColourTo(i - 1, state); + latexStateReset(mode, state); + } + break; + case SCE_L_COMMENT2 : + if (ch == '\\') { + Sci_Position match = i + 3; + if (latexLastWordIs(match, styler, "\\end")) { + match++; + if (latexIsTagValid(match, lengthDoc, styler)) { + if (latexLastWordIs(match, styler, "{comment}")) { + styler.ColourTo(i - 1, state); + state = SCE_L_COMMAND; + } + } + } + } + break; + case SCE_L_VERBATIM : + if (ch == '\\') { + Sci_Position match = i + 3; + if (latexLastWordIs(match, styler, "\\end")) { + match++; + if (latexIsTagValid(match, lengthDoc, styler)) { + if (latexLastWordIs(match, styler, "{verbatim}")) { + styler.ColourTo(i - 1, state); + state = SCE_L_COMMAND; + } + } + } + } else if (chNext == chVerbatimDelim) { + styler.ColourTo(i + 1, state); + latexStateReset(mode, state); + chVerbatimDelim = '\0'; + i++; + chNext = styler.SafeGetCharAt(i + 1); + } else if (chVerbatimDelim != '\0' && (ch == '\n' || ch == '\r')) { + styler.ColourTo(i, SCE_L_ERROR); + latexStateReset(mode, state); + chVerbatimDelim = '\0'; + } + break; + } + } + if (lengthDoc == styler.Length()) truncModes(styler.GetLine(lengthDoc - 1)); + styler.ColourTo(lengthDoc - 1, state); + styler.Flush(); +} + +static int latexFoldSaveToInt(const latexFoldSave &save) { + int sum = 0; + for (int i = 0; i <= save.structLev; ++i) + sum += save.openBegins[i]; + return ((sum + save.structLev + SC_FOLDLEVELBASE) & SC_FOLDLEVELNUMBERMASK); +} + +// Change folding state while processing a line +// Return the level before the first relevant command +void SCI_METHOD LexerLaTeX::Fold(Sci_PositionU startPos, Sci_Position length, int, IDocument *pAccess) { + const char *structWords[7] = {"part", "chapter", "section", "subsection", + "subsubsection", "paragraph", "subparagraph"}; + Accessor styler(pAccess, &props); + Sci_PositionU endPos = startPos + length; + Sci_Position curLine = styler.GetLine(startPos); + latexFoldSave save; + getSave(curLine - 1, save); + do { + char ch, buf[16]; + Sci_Position i, j; + int lev = -1; + bool needFold = false; + for (i = static_cast(startPos); i < static_cast(endPos); ++i) { + ch = styler.SafeGetCharAt(i); + if (ch == '\r' || ch == '\n') break; + if (ch != '\\' || styler.StyleAt(i) != SCE_L_COMMAND) continue; + for (j = 0; j < 15 && i + 1 < static_cast(endPos); ++j, ++i) { + buf[j] = styler.SafeGetCharAt(i + 1); + if (!latexIsLetter(buf[j])) break; + } + buf[j] = '\0'; + if (strcmp(buf, "begin") == 0) { + if (lev < 0) lev = latexFoldSaveToInt(save); + ++save.openBegins[save.structLev]; + needFold = true; + } + else if (strcmp(buf, "end") == 0) { + while (save.structLev > 0 && save.openBegins[save.structLev] == 0) + --save.structLev; + if (lev < 0) lev = latexFoldSaveToInt(save); + if (save.openBegins[save.structLev] > 0) --save.openBegins[save.structLev]; + } + else { + for (j = 0; j < 7; ++j) + if (strcmp(buf, structWords[j]) == 0) break; + if (j >= 7) continue; + save.structLev = j; // level before the command + for (j = save.structLev + 1; j < 8; ++j) { + save.openBegins[save.structLev] += save.openBegins[j]; + save.openBegins[j] = 0; + } + if (lev < 0) lev = latexFoldSaveToInt(save); + ++save.structLev; // level after the command + needFold = true; + } + } + if (lev < 0) lev = latexFoldSaveToInt(save); + if (needFold) lev |= SC_FOLDLEVELHEADERFLAG; + styler.SetLevel(curLine, lev); + setSave(curLine, save); + ++curLine; + startPos = styler.LineStart(curLine); + if (static_cast(startPos) == styler.Length()) { + lev = latexFoldSaveToInt(save); + styler.SetLevel(curLine, lev); + setSave(curLine, save); + truncSaves(curLine); + } + } while (startPos < endPos); + styler.Flush(); +} + +static const char *const emptyWordListDesc[] = { + 0 +}; + +LexerModule lmLatex(SCLEX_LATEX, LexerLaTeX::LexerFactoryLaTeX, "latex", emptyWordListDesc); diff --git a/libs/qscintilla_2.14.1/scintilla/lexers/LexLisp.cpp b/libs/qscintilla_2.14.1/scintilla/lexers/LexLisp.cpp new file mode 100644 index 000000000..8e7586355 --- /dev/null +++ b/libs/qscintilla_2.14.1/scintilla/lexers/LexLisp.cpp @@ -0,0 +1,283 @@ +// Scintilla source code edit control +/** @file LexLisp.cxx + ** Lexer for Lisp. + ** Written by Alexey Yutkin. + **/ +// Copyright 1998-2001 by Neil Hodgson +// The License.txt file describes the conditions under which this software may be distributed. + +#include +#include +#include +#include +#include +#include + +#include "ILexer.h" +#include "Scintilla.h" +#include "SciLexer.h" + +#include "WordList.h" +#include "LexAccessor.h" +#include "Accessor.h" +#include "StyleContext.h" +#include "CharacterSet.h" +#include "LexerModule.h" + +using namespace Scintilla; + +#define SCE_LISP_CHARACTER 29 +#define SCE_LISP_MACRO 30 +#define SCE_LISP_MACRO_DISPATCH 31 + +static inline bool isLispoperator(char ch) { + if (IsASCII(ch) && isalnum(ch)) + return false; + if (ch == '\'' || ch == '`' || ch == '(' || ch == ')' || ch == '[' || ch == ']' || ch == '{' || ch == '}') + return true; + return false; +} + +static inline bool isLispwordstart(char ch) { + return IsASCII(ch) && ch != ';' && !isspacechar(ch) && !isLispoperator(ch) && + ch != '\n' && ch != '\r' && ch != '\"'; +} + + +static void classifyWordLisp(Sci_PositionU start, Sci_PositionU end, WordList &keywords, WordList &keywords_kw, Accessor &styler) { + assert(end >= start); + char s[100]; + Sci_PositionU i; + bool digit_flag = true; + for (i = 0; (i < end - start + 1) && (i < 99); i++) { + s[i] = styler[start + i]; + s[i + 1] = '\0'; + if (!isdigit(s[i]) && (s[i] != '.')) digit_flag = false; + } + char chAttr = SCE_LISP_IDENTIFIER; + + if(digit_flag) chAttr = SCE_LISP_NUMBER; + else { + if (keywords.InList(s)) { + chAttr = SCE_LISP_KEYWORD; + } else if (keywords_kw.InList(s)) { + chAttr = SCE_LISP_KEYWORD_KW; + } else if ((s[0] == '*' && s[i-1] == '*') || + (s[0] == '+' && s[i-1] == '+')) { + chAttr = SCE_LISP_SPECIAL; + } + } + styler.ColourTo(end, chAttr); + return; +} + + +static void ColouriseLispDoc(Sci_PositionU startPos, Sci_Position length, int initStyle, WordList *keywordlists[], + Accessor &styler) { + + WordList &keywords = *keywordlists[0]; + WordList &keywords_kw = *keywordlists[1]; + + styler.StartAt(startPos); + + int state = initStyle, radix = -1; + char chNext = styler[startPos]; + Sci_PositionU lengthDoc = startPos + length; + styler.StartSegment(startPos); + for (Sci_PositionU i = startPos; i < lengthDoc; i++) { + char ch = chNext; + chNext = styler.SafeGetCharAt(i + 1); + + bool atEOL = (ch == '\r' && chNext != '\n') || (ch == '\n'); + + if (styler.IsLeadByte(ch)) { + chNext = styler.SafeGetCharAt(i + 2); + i += 1; + continue; + } + + if (state == SCE_LISP_DEFAULT) { + if (ch == '#') { + styler.ColourTo(i - 1, state); + radix = -1; + state = SCE_LISP_MACRO_DISPATCH; + } else if (ch == ':' && isLispwordstart(chNext)) { + styler.ColourTo(i - 1, state); + state = SCE_LISP_SYMBOL; + } else if (isLispwordstart(ch)) { + styler.ColourTo(i - 1, state); + state = SCE_LISP_IDENTIFIER; + } + else if (ch == ';') { + styler.ColourTo(i - 1, state); + state = SCE_LISP_COMMENT; + } + else if (isLispoperator(ch) || ch=='\'') { + styler.ColourTo(i - 1, state); + styler.ColourTo(i, SCE_LISP_OPERATOR); + if (ch=='\'' && isLispwordstart(chNext)) { + state = SCE_LISP_SYMBOL; + } + } + else if (ch == '\"') { + styler.ColourTo(i - 1, state); + state = SCE_LISP_STRING; + } + } else if (state == SCE_LISP_IDENTIFIER || state == SCE_LISP_SYMBOL) { + if (!isLispwordstart(ch)) { + if (state == SCE_LISP_IDENTIFIER) { + classifyWordLisp(styler.GetStartSegment(), i - 1, keywords, keywords_kw, styler); + } else { + styler.ColourTo(i - 1, state); + } + state = SCE_LISP_DEFAULT; + } /*else*/ + if (isLispoperator(ch) || ch=='\'') { + styler.ColourTo(i - 1, state); + styler.ColourTo(i, SCE_LISP_OPERATOR); + if (ch=='\'' && isLispwordstart(chNext)) { + state = SCE_LISP_SYMBOL; + } + } + } else if (state == SCE_LISP_MACRO_DISPATCH) { + if (!(IsASCII(ch) && isdigit(ch))) { + if (ch != 'r' && ch != 'R' && (i - styler.GetStartSegment()) > 1) { + state = SCE_LISP_DEFAULT; + } else { + switch (ch) { + case '|': state = SCE_LISP_MULTI_COMMENT; break; + case 'o': + case 'O': radix = 8; state = SCE_LISP_MACRO; break; + case 'x': + case 'X': radix = 16; state = SCE_LISP_MACRO; break; + case 'b': + case 'B': radix = 2; state = SCE_LISP_MACRO; break; + case '\\': state = SCE_LISP_CHARACTER; break; + case ':': + case '-': + case '+': state = SCE_LISP_MACRO; break; + case '\'': if (isLispwordstart(chNext)) { + state = SCE_LISP_SPECIAL; + } else { + styler.ColourTo(i - 1, SCE_LISP_DEFAULT); + styler.ColourTo(i, SCE_LISP_OPERATOR); + state = SCE_LISP_DEFAULT; + } + break; + default: if (isLispoperator(ch)) { + styler.ColourTo(i - 1, SCE_LISP_DEFAULT); + styler.ColourTo(i, SCE_LISP_OPERATOR); + } + state = SCE_LISP_DEFAULT; + break; + } + } + } + } else if (state == SCE_LISP_MACRO) { + if (isLispwordstart(ch) && (radix == -1 || IsADigit(ch, radix))) { + state = SCE_LISP_SPECIAL; + } else { + state = SCE_LISP_DEFAULT; + } + } else if (state == SCE_LISP_CHARACTER) { + if (isLispoperator(ch)) { + styler.ColourTo(i, SCE_LISP_SPECIAL); + state = SCE_LISP_DEFAULT; + } else if (isLispwordstart(ch)) { + styler.ColourTo(i, SCE_LISP_SPECIAL); + state = SCE_LISP_SPECIAL; + } else { + state = SCE_LISP_DEFAULT; + } + } else if (state == SCE_LISP_SPECIAL) { + if (!isLispwordstart(ch) || (radix != -1 && !IsADigit(ch, radix))) { + styler.ColourTo(i - 1, state); + state = SCE_LISP_DEFAULT; + } + if (isLispoperator(ch) || ch=='\'') { + styler.ColourTo(i - 1, state); + styler.ColourTo(i, SCE_LISP_OPERATOR); + if (ch=='\'' && isLispwordstart(chNext)) { + state = SCE_LISP_SYMBOL; + } + } + } else { + if (state == SCE_LISP_COMMENT) { + if (atEOL) { + styler.ColourTo(i - 1, state); + state = SCE_LISP_DEFAULT; + } + } else if (state == SCE_LISP_MULTI_COMMENT) { + if (ch == '|' && chNext == '#') { + i++; + chNext = styler.SafeGetCharAt(i + 1); + styler.ColourTo(i, state); + state = SCE_LISP_DEFAULT; + } + } else if (state == SCE_LISP_STRING) { + if (ch == '\\') { + if (chNext == '\"' || chNext == '\'' || chNext == '\\') { + i++; + chNext = styler.SafeGetCharAt(i + 1); + } + } else if (ch == '\"') { + styler.ColourTo(i, state); + state = SCE_LISP_DEFAULT; + } + } + } + + } + styler.ColourTo(lengthDoc - 1, state); +} + +static void FoldLispDoc(Sci_PositionU startPos, Sci_Position length, int /* initStyle */, WordList *[], + Accessor &styler) { + Sci_PositionU lengthDoc = startPos + length; + int visibleChars = 0; + Sci_Position lineCurrent = styler.GetLine(startPos); + int levelPrev = styler.LevelAt(lineCurrent) & SC_FOLDLEVELNUMBERMASK; + int levelCurrent = levelPrev; + char chNext = styler[startPos]; + int styleNext = styler.StyleAt(startPos); + for (Sci_PositionU i = startPos; i < lengthDoc; i++) { + char ch = chNext; + chNext = styler.SafeGetCharAt(i + 1); + int style = styleNext; + styleNext = styler.StyleAt(i + 1); + bool atEOL = (ch == '\r' && chNext != '\n') || (ch == '\n'); + if (style == SCE_LISP_OPERATOR) { + if (ch == '(' || ch == '[' || ch == '{') { + levelCurrent++; + } else if (ch == ')' || ch == ']' || ch == '}') { + levelCurrent--; + } + } + if (atEOL) { + int lev = levelPrev; + if (visibleChars == 0) + lev |= SC_FOLDLEVELWHITEFLAG; + if ((levelCurrent > levelPrev) && (visibleChars > 0)) + lev |= SC_FOLDLEVELHEADERFLAG; + if (lev != styler.LevelAt(lineCurrent)) { + styler.SetLevel(lineCurrent, lev); + } + lineCurrent++; + levelPrev = levelCurrent; + visibleChars = 0; + } + if (!isspacechar(ch)) + visibleChars++; + } + // Fill in the real level of the next line, keeping the current flags as they will be filled in later + int flagsNext = styler.LevelAt(lineCurrent) & ~SC_FOLDLEVELNUMBERMASK; + styler.SetLevel(lineCurrent, levelPrev | flagsNext); +} + +static const char * const lispWordListDesc[] = { + "Functions and special operators", + "Keywords", + 0 +}; + +LexerModule lmLISP(SCLEX_LISP, ColouriseLispDoc, "lisp", FoldLispDoc, lispWordListDesc); diff --git a/libs/qscintilla_2.14.1/scintilla/lexers/LexLout.cpp b/libs/qscintilla_2.14.1/scintilla/lexers/LexLout.cpp new file mode 100644 index 000000000..abba91ad1 --- /dev/null +++ b/libs/qscintilla_2.14.1/scintilla/lexers/LexLout.cpp @@ -0,0 +1,213 @@ +// Scintilla source code edit control +/** @file LexLout.cxx + ** Lexer for the Basser Lout (>= version 3) typesetting language + **/ +// Copyright 2003 by Kein-Hong Man +// The License.txt file describes the conditions under which this software may be distributed. + +#include +#include +#include +#include +#include +#include + +#include "ILexer.h" +#include "Scintilla.h" +#include "SciLexer.h" + +#include "WordList.h" +#include "LexAccessor.h" +#include "Accessor.h" +#include "StyleContext.h" +#include "CharacterSet.h" +#include "LexerModule.h" + +using namespace Scintilla; + +static inline bool IsAWordChar(const int ch) { + return (ch < 0x80) && (isalpha(ch) || ch == '@' || ch == '_'); +} + +static inline bool IsAnOther(const int ch) { + return (ch < 0x80) && (ch == '{' || ch == '}' || + ch == '!' || ch == '$' || ch == '%' || ch == '&' || ch == '\'' || + ch == '(' || ch == ')' || ch == '*' || ch == '+' || ch == ',' || + ch == '-' || ch == '.' || ch == '/' || ch == ':' || ch == ';' || + ch == '<' || ch == '=' || ch == '>' || ch == '?' || ch == '[' || + ch == ']' || ch == '^' || ch == '`' || ch == '|' || ch == '~'); +} + +static void ColouriseLoutDoc(Sci_PositionU startPos, Sci_Position length, int initStyle, + WordList *keywordlists[], Accessor &styler) { + + WordList &keywords = *keywordlists[0]; + WordList &keywords2 = *keywordlists[1]; + WordList &keywords3 = *keywordlists[2]; + + int visibleChars = 0; + int firstWordInLine = 0; + int leadingAtSign = 0; + + StyleContext sc(startPos, length, initStyle, styler); + + for (; sc.More(); sc.Forward()) { + + if (sc.atLineStart && (sc.state == SCE_LOUT_STRING)) { + // Prevent SCE_LOUT_STRINGEOL from leaking back to previous line + sc.SetState(SCE_LOUT_STRING); + } + + // Determine if the current state should terminate. + if (sc.state == SCE_LOUT_COMMENT) { + if (sc.atLineEnd) { + sc.SetState(SCE_LOUT_DEFAULT); + visibleChars = 0; + } + } else if (sc.state == SCE_LOUT_NUMBER) { + if (!IsADigit(sc.ch) && sc.ch != '.') { + sc.SetState(SCE_LOUT_DEFAULT); + } + } else if (sc.state == SCE_LOUT_STRING) { + if (sc.ch == '\\') { + if (sc.chNext == '\"' || sc.chNext == '\\') { + sc.Forward(); + } + } else if (sc.ch == '\"') { + sc.ForwardSetState(SCE_LOUT_DEFAULT); + } else if (sc.atLineEnd) { + sc.ChangeState(SCE_LOUT_STRINGEOL); + sc.ForwardSetState(SCE_LOUT_DEFAULT); + visibleChars = 0; + } + } else if (sc.state == SCE_LOUT_IDENTIFIER) { + if (!IsAWordChar(sc.ch)) { + char s[100]; + sc.GetCurrent(s, sizeof(s)); + + if (leadingAtSign) { + if (keywords.InList(s)) { + sc.ChangeState(SCE_LOUT_WORD); + } else { + sc.ChangeState(SCE_LOUT_WORD4); + } + } else if (firstWordInLine && keywords3.InList(s)) { + sc.ChangeState(SCE_LOUT_WORD3); + } + sc.SetState(SCE_LOUT_DEFAULT); + } + } else if (sc.state == SCE_LOUT_OPERATOR) { + if (!IsAnOther(sc.ch)) { + char s[100]; + sc.GetCurrent(s, sizeof(s)); + + if (keywords2.InList(s)) { + sc.ChangeState(SCE_LOUT_WORD2); + } + sc.SetState(SCE_LOUT_DEFAULT); + } + } + + // Determine if a new state should be entered. + if (sc.state == SCE_LOUT_DEFAULT) { + if (sc.ch == '#') { + sc.SetState(SCE_LOUT_COMMENT); + } else if (sc.ch == '\"') { + sc.SetState(SCE_LOUT_STRING); + } else if (IsADigit(sc.ch) || + (sc.ch == '.' && IsADigit(sc.chNext))) { + sc.SetState(SCE_LOUT_NUMBER); + } else if (IsAWordChar(sc.ch)) { + firstWordInLine = (visibleChars == 0); + leadingAtSign = (sc.ch == '@'); + sc.SetState(SCE_LOUT_IDENTIFIER); + } else if (IsAnOther(sc.ch)) { + sc.SetState(SCE_LOUT_OPERATOR); + } + } + + if (sc.atLineEnd) { + // Reset states to begining of colourise so no surprises + // if different sets of lines lexed. + visibleChars = 0; + } + if (!IsASpace(sc.ch)) { + visibleChars++; + } + } + sc.Complete(); +} + +static void FoldLoutDoc(Sci_PositionU startPos, Sci_Position length, int, WordList *[], + Accessor &styler) { + + Sci_PositionU endPos = startPos + length; + int visibleChars = 0; + Sci_Position lineCurrent = styler.GetLine(startPos); + int levelPrev = styler.LevelAt(lineCurrent) & SC_FOLDLEVELNUMBERMASK; + int levelCurrent = levelPrev; + char chNext = styler[startPos]; + bool foldCompact = styler.GetPropertyInt("fold.compact", 1) != 0; + int styleNext = styler.StyleAt(startPos); + char s[10] = ""; + + for (Sci_PositionU i = startPos; i < endPos; i++) { + char ch = chNext; + chNext = styler.SafeGetCharAt(i + 1); + int style = styleNext; + styleNext = styler.StyleAt(i + 1); + bool atEOL = (ch == '\r' && chNext != '\n') || (ch == '\n'); + + if (style == SCE_LOUT_WORD) { + if (ch == '@') { + for (Sci_PositionU j = 0; j < 8; j++) { + if (!IsAWordChar(styler[i + j])) { + break; + } + s[j] = styler[i + j]; + s[j + 1] = '\0'; + } + if (strcmp(s, "@Begin") == 0) { + levelCurrent++; + } else if (strcmp(s, "@End") == 0) { + levelCurrent--; + } + } + } else if (style == SCE_LOUT_OPERATOR) { + if (ch == '{') { + levelCurrent++; + } else if (ch == '}') { + levelCurrent--; + } + } + if (atEOL) { + int lev = levelPrev; + if (visibleChars == 0 && foldCompact) { + lev |= SC_FOLDLEVELWHITEFLAG; + } + if ((levelCurrent > levelPrev) && (visibleChars > 0)) { + lev |= SC_FOLDLEVELHEADERFLAG; + } + if (lev != styler.LevelAt(lineCurrent)) { + styler.SetLevel(lineCurrent, lev); + } + lineCurrent++; + levelPrev = levelCurrent; + visibleChars = 0; + } + if (!isspacechar(ch)) + visibleChars++; + } + // Fill in the real level of the next line, keeping the current flags as they will be filled in later + int flagsNext = styler.LevelAt(lineCurrent) & ~SC_FOLDLEVELNUMBERMASK; + styler.SetLevel(lineCurrent, levelPrev | flagsNext); +} + +static const char * const loutWordLists[] = { + "Predefined identifiers", + "Predefined delimiters", + "Predefined keywords", + 0, + }; + +LexerModule lmLout(SCLEX_LOUT, ColouriseLoutDoc, "lout", FoldLoutDoc, loutWordLists); diff --git a/libs/qscintilla_2.14.1/scintilla/lexers/LexLua.cpp b/libs/qscintilla_2.14.1/scintilla/lexers/LexLua.cpp new file mode 100644 index 000000000..9e6e8a70c --- /dev/null +++ b/libs/qscintilla_2.14.1/scintilla/lexers/LexLua.cpp @@ -0,0 +1,502 @@ +// Scintilla source code edit control +/** @file LexLua.cxx + ** Lexer for Lua language. + ** + ** Written by Paul Winwood. + ** Folder by Alexey Yutkin. + ** Modified by Marcos E. Wurzius & Philippe Lhoste + **/ + +#include +#include +#include +#include +#include +#include + +#include + +#include "ILexer.h" +#include "Scintilla.h" +#include "SciLexer.h" + +#include "StringCopy.h" +#include "WordList.h" +#include "LexAccessor.h" +#include "Accessor.h" +#include "StyleContext.h" +#include "CharacterSet.h" +#include "LexerModule.h" + +using namespace Scintilla; + +// Test for [=[ ... ]=] delimiters, returns 0 if it's only a [ or ], +// return 1 for [[ or ]], returns >=2 for [=[ or ]=] and so on. +// The maximum number of '=' characters allowed is 254. +static int LongDelimCheck(StyleContext &sc) { + int sep = 1; + while (sc.GetRelative(sep) == '=' && sep < 0xFF) + sep++; + if (sc.GetRelative(sep) == sc.ch) + return sep; + return 0; +} + +static void ColouriseLuaDoc( + Sci_PositionU startPos, + Sci_Position length, + int initStyle, + WordList *keywordlists[], + Accessor &styler) { + + const WordList &keywords = *keywordlists[0]; + const WordList &keywords2 = *keywordlists[1]; + const WordList &keywords3 = *keywordlists[2]; + const WordList &keywords4 = *keywordlists[3]; + const WordList &keywords5 = *keywordlists[4]; + const WordList &keywords6 = *keywordlists[5]; + const WordList &keywords7 = *keywordlists[6]; + const WordList &keywords8 = *keywordlists[7]; + + // Accepts accented characters + CharacterSet setWordStart(CharacterSet::setAlpha, "_", 0x80, true); + CharacterSet setWord(CharacterSet::setAlphaNum, "_", 0x80, true); + // Not exactly following number definition (several dots are seen as OK, etc.) + // but probably enough in most cases. [pP] is for hex floats. + CharacterSet setNumber(CharacterSet::setDigits, ".-+abcdefpABCDEFP"); + CharacterSet setExponent(CharacterSet::setNone, "eEpP"); + CharacterSet setLuaOperator(CharacterSet::setNone, "*/-+()={}~[];<>,.^%:#&|"); + CharacterSet setEscapeSkip(CharacterSet::setNone, "\"'\\"); + + Sci_Position currentLine = styler.GetLine(startPos); + // Initialize long string [[ ... ]] or block comment --[[ ... ]] nesting level, + // if we are inside such a string. Block comment was introduced in Lua 5.0, + // blocks with separators [=[ ... ]=] in Lua 5.1. + // Continuation of a string (\z whitespace escaping) is controlled by stringWs. + int nestLevel = 0; + int sepCount = 0; + int stringWs = 0; + if (initStyle == SCE_LUA_LITERALSTRING || initStyle == SCE_LUA_COMMENT || + initStyle == SCE_LUA_STRING || initStyle == SCE_LUA_CHARACTER) { + const int lineState = styler.GetLineState(currentLine - 1); + nestLevel = lineState >> 9; + sepCount = lineState & 0xFF; + stringWs = lineState & 0x100; + } + + // results of identifier/keyword matching + Sci_Position idenPos = 0; + Sci_Position idenWordPos = 0; + int idenStyle = SCE_LUA_IDENTIFIER; + bool foundGoto = false; + + // Do not leak onto next line + if (initStyle == SCE_LUA_STRINGEOL || initStyle == SCE_LUA_COMMENTLINE || initStyle == SCE_LUA_PREPROCESSOR) { + initStyle = SCE_LUA_DEFAULT; + } + + StyleContext sc(startPos, length, initStyle, styler); + if (startPos == 0 && sc.ch == '#' && sc.chNext == '!') { + // shbang line: "#!" is a comment only if located at the start of the script + sc.SetState(SCE_LUA_COMMENTLINE); + } + for (; sc.More(); sc.Forward()) { + if (sc.atLineEnd) { + // Update the line state, so it can be seen by next line + currentLine = styler.GetLine(sc.currentPos); + switch (sc.state) { + case SCE_LUA_LITERALSTRING: + case SCE_LUA_COMMENT: + case SCE_LUA_STRING: + case SCE_LUA_CHARACTER: + // Inside a literal string, block comment or string, we set the line state + styler.SetLineState(currentLine, (nestLevel << 9) | stringWs | sepCount); + break; + default: + // Reset the line state + styler.SetLineState(currentLine, 0); + break; + } + } + if (sc.atLineStart && (sc.state == SCE_LUA_STRING)) { + // Prevent SCE_LUA_STRINGEOL from leaking back to previous line + sc.SetState(SCE_LUA_STRING); + } + + // Handle string line continuation + if ((sc.state == SCE_LUA_STRING || sc.state == SCE_LUA_CHARACTER) && + sc.ch == '\\') { + if (sc.chNext == '\n' || sc.chNext == '\r') { + sc.Forward(); + if (sc.ch == '\r' && sc.chNext == '\n') { + sc.Forward(); + } + continue; + } + } + + // Determine if the current state should terminate. + if (sc.state == SCE_LUA_OPERATOR) { + if (sc.ch == ':' && sc.chPrev == ':') { // :: - <html><head/><body><p>DB Browser for SQLite is an open source, freeware visual tool used to create, design and edit SQLite database files.</p><p>It is bi-licensed under the Mozilla Public License Version 2, as well as the GNU General Public License Version 3 or later. You can modify or redistribute it under the conditions of these licenses.</p><p>See <a href="https://www.gnu.org/licenses/gpl.html"><span style=" text-decoration: underline; color:#0000ff;">http://www.gnu.org/licenses/gpl.html</span></a> and <a href="https://www.mozilla.org/MPL/2.0/index.txt"><span style=" text-decoration: underline; color:#0000ff;">https://www.mozilla.org/MPL/2.0/index.txt</span></a> for details.</p><p>For more information on this program please visit our website at: <a href="https://sqlitebrowser.org"><span style=" text-decoration: underline; color:#0000ff;">http://sqlitebrowser.org</span></a></p><p><span style=" font-size:small;">This software uses the GPL/LGPL Qt Toolkit from </span><a href="http://qt-project.org/"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://qt-project.org/</span></a><span style=" font-size:small;"><br/>See </span><a href="https://doc.qt.io/qt-5/licensing.html"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://qt-project.org/doc/qt-5/licensing.html</span></a><span style=" font-size:small;"> for licensing terms and information.</span></p><p><span style=" font-size:8pt;">We use the nalgeon/sqlean library for SQLite extensions support.<br/>This library is licensed under the MIT license, see the following for more information:<br/></span><a href="https://github.com/nalgeon/sqlean"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">https://github.com/nalgeon/sqlean</span></a></p><p><span style=" font-size:small;">It also uses the Pastel SVG icon set by Michael Buckley under a Creative Commons Attribution Share Alike 4.0 license.<br/>See </span><a href="https://codefisher.org/pastel-svg/"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://codefisher.org/pastel-svg/</span></a><span style=" font-size:small;"> for details.</span></p></body></html> + <html><head/><body><p>DB Browser for SQLite is an open source, freeware visual tool used to create, design and edit SQLite database files.</p><p>It is bi-licensed under the Mozilla Public License Version 2, as well as the GNU General Public License Version 3 or later. You can modify or redistribute it under the conditions of these licenses.</p><p>See <a href="https://www.gnu.org/licenses/gpl.html"><span style=" text-decoration: underline; color:#0000ff;">https://www.gnu.org/licenses/gpl.html</span></a> and <a href="https://www.mozilla.org/MPL/2.0/index.txt"><span style=" text-decoration: underline; color:#0000ff;">https://www.mozilla.org/MPL/2.0/index.txt</span></a> for details.</p><p>For more information on this program please visit our website at: <a href="https://sqlitebrowser.org"><span style=" text-decoration: underline; color:#0000ff;">https://sqlitebrowser.org</span></a></p><p><span style=" font-size:small;">This software uses the GPL/LGPL Qt Toolkit from </span><a href="https://qt-project.org/"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://qt-project.org/</span></a><span style=" font-size:small;"><br/>See </span><a href="https://doc.qt.io/qt-5/licensing.html"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://doc.qt.io/qt-5/licensing.html</span></a><span style=" font-size:small;"> for licensing terms and information.</span></p><p><span style=" font-size:8pt;">We use the nalgeon/sqlean library for SQLite extensions support.<br/>This library is licensed under the MIT license, see the following for more information:<br/></span><a href="https://github.com/nalgeon/sqlean"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">https://github.com/nalgeon/sqlean</span></a></p><p><span style=" font-size:small;">It also uses the Pastel SVG icon set by Michael Buckley under a Creative Commons Attribution Share Alike 4.0 license.<br/>See </span><a href="https://codefisher.org/pastel-svg/"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://codefisher.org/pastel-svg/</span></a><span style=" font-size:small;"> for details.</span></p></body></html> @@ -285,36 +285,36 @@ - Invalid option/non-existant file: %1 + Invalid option/non-existent file: %1 خيار غير صالح/ملف غير موجود: %L1 - + SQLite Version إصدارة SQLite: ‏ - + SQLCipher Version %1 (based on SQLite %2) إصدارة SQLCipher:‏ %L1 (مبنيّة على SQLite %L2) - + DB Browser for SQLite Version %1. «متصفّح قواعد بيانات SQLite» الإصدارة %L1. - + Last commit hash when built: %1 - + Built for %1, running on %2 مبنيّة للمعماريّة %L1، وتعمل على المعماريّة %L2 - + Qt Version %1 إصدارة كيوت: %L1 @@ -392,7 +392,7 @@ مفتاح خام - + Please set a key to encrypt the database. Note that if you change any of the other, optional, settings you'll need to re-enter them as well every time you open the database file. Leave the password fields empty to disable the encryption. @@ -403,7 +403,7 @@ The encryption process might take some time and you should have a backup copy of قد تأخذ عملية التعمية وقتًا وعليك الاحتفاظ بنسخة من قاعدة البيانات احتياطًا! ستُطبّق التعديلات غير المحفوظة قبل تعديل التعمية. - + Please enter the key used to encrypt the database. If any of the other settings were altered for this database file you need to provide this information as well. من فضلك أدخِل المفتاح المستعمل لتعمية قاعدة البيانات. @@ -428,92 +428,92 @@ If any of the other settings were altered for this database file you need to pro اختر تنسيق عرض العمود ”%L1“ ليُطبّق على كلّ قيمة قبل عرضها. - + Default المبدئي - + Decimal number عدد عشري - + Exponent notation تدوين أُسّي - + Hex blob ‏BLOB ستّ‌عشري - + Hex number عدد ستّ‌عشري - + Apple NSDate to date ”تاريخ آبل/Apple NSDate“ إلى تاريخ - + Java epoch (milliseconds) to date عَصر جاڤا (ملّي‌ثانية) إلى تاريخ - + .NET DateTime.Ticks to date ‏DateTime.Ticks من ‎.NET إلى تاريح - + Julian day to date يوم جولياني إلى تاريخ - + Unix epoch to local time عَصر لينكس إلى الوقت المحلي - + WebKit / Chromium epoch to date - + WebKit / Chromium epoch to local time - + Date as dd/mm/yyyy التاريخ بتنسيق dd/mm/yyyy - + Lower case حالة الأحرف صغيرة - + Binary GUID to text - + SpatiaLite Geometry to SVG - + Custom display format must contain a function call applied to %1 على تنسيق العرض المخصّص أن يحتوي على نداء دالة مطبّق على %L1 - + Error in custom display format. Message from database engine: %1 @@ -521,37 +521,37 @@ If any of the other settings were altered for this database file you need to pro %L1 - + Custom display format must return only one column but it returned %1. على تنسيق العرض المخصّص إعادة عمود واحد فقط، لكنّه أعاد %L1. - + Octal number عدد ثماني - + Round number عدد تقريبي - + Unix epoch to date عَصر لينكس إلى تاريخ - + Upper case حالة الأحرف كبيرة - + Windows DATE to date ”تاريخ وندوز/Windows DATE“ إلى تاريخ - + Custom مخصّص @@ -678,166 +678,166 @@ If any of the other settings were altered for this database file you need to pro DBBrowserDB - + Please specify the database name under which you want to access the attached database من فضلك اختر اسم قاعدة البيانات الذي تريد استعماله للوصول إلى قاعدة البيانات المرفقة - + Invalid file format تنسيق الملف غير صالح - + Do you want to save the changes made to the database file %1? أتريد حفظ التعديلات المُجراة على ملف قاعدة البيانات %L1؟ - + Exporting database to SQL file... يصدّر قاعدة البيانات إلى ملف SQL... - - + + Cancel ألغِ - + Executing SQL... ينفّذ SQL... - + Action cancelled. أُلغي الإجراء. - + Do you really want to close this temporary database? All data will be lost. أمتأكّد من إغلاق قاعدة البيانات المؤقّتة هذه؟ ستفقد كلّ البيانات. - + Database didn't close correctly, probably still busy لم تُغلق قاعدة البيانات كما ينبغي، ربّما هي مشغولة - + Cannot open destination file: '%1' - - + + Cannot backup to file: '%1'. Message: %2 - + The database is currently busy: قاعدة البيانات مشغولة حاليًا: - + Do you want to abort that other operation? أتريد إجهاض العملية الأخرى؟ - - + + No database file opened لم يُفتح ملف قاعدة بيانات - - + + Error in statement #%1: %2. Aborting execution%3. خطأ في الإفادة رقم %L1:‏ %L2. سأُجهض التنفيذ%L3. - - + + and rolling back وأُرجع ما كان موجودًا. - + didn't receive any output from %1 لم أستلم أيّ ناتج من %L1 - + could not execute command: %1 تعذّر تنفيذ الأمر: %L1 - + Cannot delete this object تعذّر حذف هذا الكائن - + Cannot set data on this object تعذّر ضبط البيانات على هذا الكائن - - + + A table with the name '%1' already exists in schema '%2'. هناك جدول بنفس الاسم ”%L1“ بالفعل في المخطّط ”%L2“. - + No table with name '%1' exists in schema '%2'. ما من جدول له الاسم ”%L1“ في المخطّط ”%L2“. - - + + Cannot find column %1. تعذّر العثور على العمود %L1 - + Creating savepoint failed. DB says: %1 فشل إنشاء نقطة الحفظ. تقول قاعدة البيانات: %L1 - + Renaming the column failed. DB says: %1 فشل تغيير اسم العمود. تقول قاعدة البيانات: %L1 - - + + Releasing savepoint failed. DB says: %1 فشلت استعداة نقطة الحفظ. تقول قاعدة البيانات: %L1 - + Creating new table failed. DB says: %1 فشل إنشاء جدول جديد. تقول قاعدة البيانات: %L1 - + Copying data to new table failed. DB says: %1 فشل نسخ البيانات إلى جدول جديد. تقول قاعدة البيانات: %L1 - + Deleting old table failed. DB says: %1 فشل حذف الجدول القديم. تقول قاعدة البيانات: %L1 - + Error renaming table '%1' to '%2'. Message from database engine: %3 @@ -846,12 +846,12 @@ Message from database engine: %L3 - + could not get list of db objects: %1 تعذّر جلب قائمة كائنات قواعد البيانات: %L1 - + Restoring some of the objects associated with this table failed. This is most likely because some column names changed. Here's the SQL statement which you might want to fix and execute manually: @@ -860,32 +860,32 @@ Message from database engine: - + could not get list of databases: %1 تعذّر جلب قائمة قواعد البيانات: %L1 - + Error loading extension: %1 خطأ أثناء تحميل الامتداد: %L1 - + Error loading built-in extension: %1 - + could not get column information تعذّر جلب معلومات العمود - + Error setting pragma %1 to %2: %3 تعذّر ضبط pragma %L1 إلى %L2:‏ %L3 - + File not found. تعذّر العثور على الملف. @@ -1958,7 +1958,7 @@ All data currently stored in this field will be lost. ExtendedScintilla - + Ctrl+H Ctrl+H @@ -1969,22 +1969,22 @@ All data currently stored in this field will be lost. - + Ctrl+P Ctrl+P - + Find... ابحث... - + Find and Replace... ابحث واستبدل... - + Print... اطبع... @@ -1992,129 +1992,129 @@ All data currently stored in this field will be lost. ExtendedTableWidget - + Use as Exact Filter استعملها كمرشّح كما هي - + Containing تحتوي على - + Not containing لا تحتوي على - + Not equal to لا تساوي - + Greater than أكبر من - + Less than أصغر من - + Greater or equal أكبر من أو تساوي - + Less or equal أصغر من أو تساوي - + Between this and... بين هذه و... - + Regular expression تعبير نمطي - + Edit Conditional Formats... حرّر التنسيقات الشرطيّة... - + Set to NULL اضبطها على NULL - + Cut - + Copy انسخ - + Copy with Headers انسخ مع الترويسات - + Copy as SQL انسخ كَ‍ SQL - + Paste ألصِق - + Print... اطبع... - + Use in Filter Expression استعملها في تعبير الترشيح - + Alt+Del Alt+Del - + Ctrl+Shift+C Ctrl+Shift+C - + Ctrl+Alt+C Ctrl+Alt+C - + The content of the clipboard is bigger than the range selected. Do you want to insert it anyway? محتوى الحافظة أكبر من المدى المحدّد. أتريد إدراجه رغم ذلك؟ - + <p>Not all data has been loaded. <b>Do you want to load all data before selecting all the rows?</b><p><p>Answering <b>No</b> means that no more data will be loaded and the selection will not be performed.<br/>Answering <b>Yes</b> might take some time while the data is loaded but the selection will be complete.</p>Warning: Loading all the data might require a great amount of memory for big tables. <p>لم تُحمّل كلّ البيانات. <b>أتريد تحميل كلّ البيانات قبل تحديد كلّ الصفوف؟</b><p><p>لو اخترت <b>لا</b> فلن تُحمّل أيّة بيانات أخرى ولن يُجرى هذا التحديد.<br/>لو اخترت <b>نعم</b> فعليك الانتظار وقتًا حتّى تُحمّل البيانات، ولكن التحديد هنا سيحدث</p>تحذير: قد يطلب تحميل كلّ البيانات ذاكرة كثيرة لو كانت الجداول ضخمة. - + Cannot set selection to NULL. Column %1 has a NOT NULL constraint. تعذّر ضبط التحديد على NULL. على العمود %L1 قيد ”ليس NULL“. @@ -2167,12 +2167,12 @@ Do you want to insert it anyway? FilterLineEdit - + Filter رشّح - + These input fields allow you to perform quick filters in the currently selected table. By default, the rows containing the input text are filtered out. The following operators are also supported: @@ -2199,92 +2199,92 @@ x~y Range: values between x and y /ريجِكس/ القيم التي تُطابق التعبير النمطي - + Clear All Conditional Formats امسح كلّ التنسيقات الشرطيّة - + Use for Conditional Format استعمله تنسيقًا شرطيًا - + Edit Conditional Formats... حرّر التنسيقات الشرطيّة... - + Set Filter Expression اضبط تعبير الترشيح - + What's This? ما هذا؟ - + Is NULL تساوي NULL - + Is not NULL لا تساوي NULL - + Is empty فارغة - + Is not empty ليست فارغة - + Not containing... لا تحتوي على... - + Equal to... تساوي... - + Not equal to... لا تساوي... - + Greater than... أكبر من... - + Less than... أصغر من... - + Greater or equal... أكبر من أو تساوي... - + Less or equal... أصغر من أو تساوي... - + In range... في المدى... - + Regular expression... تعبير نمطي... @@ -2507,7 +2507,7 @@ x~y Range: values between x and y - + Tab جدولات @@ -2650,7 +2650,7 @@ x~y Range: values between x and y - + Deselect All ألغِ تحديد الكلّ @@ -2660,52 +2660,52 @@ x~y Range: values between x and y طابِق المتشابهات - + Select All حدّد الكلّ - + There is already a table named '%1' and an import into an existing table is only possible if the number of columns match. هناك جدول بنفس الاسم ”%L1“ بالفعل ولا يمكن الاستيراد داخل أحد الجداول الموجودة إلّا إن تطابق عدد الأعمدة. - + There is already a table named '%1'. Do you want to import the data into it? هناك جدول بنفس الاسم ”%L1“ بالفعل. أتريد استيراد البيانات داخله؟ - + Creating restore point failed: %1 فشل إنشاء نقطة استعادة: %L1 - + Creating the table failed: %1 فشل إنشاء الجدول: %L1 - + importing CSV يستورد CSV - + Could not prepare INSERT statement: %1 - + Unexpected end of file. Please make sure that you have configured the correct quote characters and the file is not malformed. - + Importing the file '%1' took %2ms. Of this %3ms were spent in the row function. أخذ استيراد الملف ”%L1“ ‏%L2 م‌ث. منها %L3 م‌ث على دالة الصفّ. - + Inserting row failed: %1 فشل إدراج الصفّ: %L1 @@ -2726,72 +2726,72 @@ You can drag SQL statements from an object row and drop them into other applicat يمكنك سحب إفادات SQL من صفّ في الكائن وإسقاطها في التطبيقات الأخرى أو إلى سيرورة أخرى من ”متصفّح قواعد بيانات SQLite“. - + Un/comment block of SQL code اجعل/لا تجعل كتلة كود SQL تعليقًا - + Un/comment block اجعل/لا تجعل الكتلة تعليقًا - + Comment or uncomment current line or selected block of code حوّل السطر الحالي (أو كتلة الكود المحدّدة) إلى تعليق، أو ألغِ التحويل - + Comment or uncomment the selected lines or the current line, when there is no selection. All the block is toggled according to the first line. اجعل الأسطر المحدّدة (أو الحالي فقط لو لم يكن هناك تحديد) تعليقًا، أو ألغِ ذلك. يتغيّر تحويل كتلة الكود كاملةً حسب أوّل سطر فيها. - + Ctrl+/ Ctrl+/ - + Stop SQL execution أوقِف تنفيذ SQL - + Stop execution أوقِف التنفيذ - + Stop the currently running SQL script أوقِف تنفيذ سكربت SQL الذي يعمل حاليًا - + Warning: this pragma is not readable and this value has been inferred. Writing the pragma might overwrite a redefined LIKE provided by an SQLite extension. تحذير: لا يمكن قراءة pragma هذه، ولهذا استُنتجت هذه القيمة. قد تؤدّي كتابة pragma على تعويض إفادة LIKE مُعاد تعريفها وفّرها امتداد SQLite. - + toolBar1 شريط الأدوات1 - + Export one or more table(s) to a JSON file صدّر جدولًا أو أكثر إلى ملف JSON - + Edit Database &Cell تحرير &خليّة قاعدة البيانات - + DB Sche&ma م&خطّط قاعدة البيانات - + This is the structure of the opened database. You can drag multiple object names from the Name column and drop them into the SQL editor and you can adjust the properties of the dropped names using the context menu. This would help you in composing SQL statements. You can drag SQL statements from the Schema column and drop them into the SQL editor or into other applications. @@ -2801,407 +2801,407 @@ You can drag SQL statements from the Schema column and drop them into the SQL ed يمكنك سحب إفادات SQL من عمود ”المخطّط“ وإسقاطها في محرّر SQL أو في أيّ تطبيق آخر. - + &Remote الب&عيد - - + + Execute current line نفّذ السطر الحالي - + This button executes the SQL statement present in the current editor line يُنفّذ هذا الزر إفادة SQL الظاهرة في سطر المحرّر الحالي - + Shift+F5 Shift+F5 - + Open an existing database file in read only mode افتح ملف قاعدة بيانات موجود في وضع القراءة فقط - + Opens the SQLCipher FAQ in a browser window يفتح الأسئلة الشائعة عن SQLCipher في نافذة المتصفّح - + &File مل&ف - + &Import ا&ستورِد - + &Export &صدّر - + &Edit ت&حرير - + &View من&ظور - + &Help م&ساعدة - + Too&ls أ&دوات - + DB Toolbar شريط قاعدة البيانات - + SQL &Log س&جلّ SQL - + Show S&QL submitted by اعرض SQL الذي ن&فّذه - + User المستخدم - + Application التطبيق - + Error Log سجلّ الأخطاء - + This button clears the contents of the SQL logs يمسح هذا الزر محتويات سجلّات SQL - + &Clear ا&مسح - + This panel lets you examine a log of all SQL commands issued by the application or by yourself تتيح لك هذه اللوحة فحص كلّ أوامر SQL التي نفّذها التطبيق أو المستخدم - + &Plot الر&سم البياني - + &New Database... قاعدة بيانات &جديدة... - - + + Create a new database file أنشِئ ملف قاعدة بيانات جديد - + This option is used to create a new database file. يُستخدم هذا الخيار لإنشاء ملف قاعدة بيانات جديد. - + Ctrl+N Ctrl+N - - + + &Open Database... ا&فتح قاعدة بيانات... - - - - - + + + + + Open an existing database file افتح ملف قاعدة بيانات موجود - - - + + + This option is used to open an existing database file. يُستخدم هذا الخيار لفتح ملف قاعدة بيانات موجود. - + Ctrl+O Ctrl+O - + &Close Database أ&غلِق قاعدة البيانات - + This button closes the connection to the currently open database file يُغلق هذا الزر الاتصال بملف قاعدة البيانات المفتوح حاليًا - - + + Ctrl+W Ctrl+W - + &Revert Changes أرجِ&ع التعديلات - - + + Revert database to last saved state أرجِع قاعدة البيانات إلى آخر حالة محفوظة - + This option is used to revert the current database file to its last saved state. All changes made since the last save operation are lost. يُستعمل هذا الخيار لإرجاع ملف قاعدة البيانات إلى آخر حالة محفوظة له. ستفقد كلّ التعديلات عليه منذ آخر عملية حفظ أجريتها. - + &Write Changes ا&كتب التعديلات - - + + Write changes to the database file اكتب التعديلات في ملف قاعدة البيانات - + This option is used to save changes to the database file. يُستعمل هذا الخيار لكتابة التعديلات في ملف قاعدة البيانات. - + Ctrl+S Ctrl+S - + Compact &Database... رُصّ &قاعدة البيانات - + Compact the database file, removing space wasted by deleted records رُصّ ملف قاعدة البيانات، مُزيلًا المساحة الضائعة بسبب حذف السجلّات - - + + Compact the database file, removing space wasted by deleted records. رُصّ ملف قاعدة البيانات، مُزيلًا المساحة الضائعة بسبب حذف السجلّات. - + E&xit ا&خرج - + Ctrl+Q Ctrl+Q - + &Database from SQL file... &قاعدة بيانات من ملف SQL... - + Import data from an .sql dump text file into a new or existing database. استورِد بيانات من ملف ‎.sql نصي مفرّغ إلى قاعدة بيانات جديدة أو موجودة. - + This option lets you import data from an .sql dump text file into a new or existing database. SQL dump files can be created on most database engines, including MySQL and PostgreSQL. يتيح لك هذا الخيار استيراد البيانات من ملف ‎.sql نصي مفرّغ إلى قاعدة بيانات جديدة أو موجودة. يمكن إنشاء ملفات SQL المفرّغة في أغلب محرّكات قواعد البيانات، بما فيها MySQL وPostgreSQL. - + &Table from CSV file... ج&دولًا من ملف CSV... - + Open a wizard that lets you import data from a comma separated text file into a database table. افتح مرشدًا يساعدك في استيراد البيانات من ملف نصي مقسوم بفواصل إلى جدول قاعدة البيانات. - + Open a wizard that lets you import data from a comma separated text file into a database table. CSV files can be created on most database and spreadsheet applications. افتح مرشدًا يساعدك في استيراد البيانات من ملف نصي مقسوم بفواصل إلى جدول قاعدة البيانات. يمكن إنشاء ملفات CSV في أغلب تطبيقات قواعد البيانات والجداول الممتدّة. - + &Database to SQL file... &قاعدة بيانات إلى ملف SQL... - + Export a database to a .sql dump text file. صدّر قاعدة بيانات إلى ملف ‎.sql نصي مفرّغ. - + This option lets you export a database to a .sql dump text file. SQL dump files contain all data necessary to recreate the database on most database engines, including MySQL and PostgreSQL. يتيح لك هذا الخيار تصدير قاعدة بيانات إلى ملف ‎.sql نصي مفرّغ. يمكن لملفات SQL المفرّغة احتواء كلّ البيانات الضرورية لإعادة إنشاء قاعدة البيانات في أغلب محرّكات قواعد البيانات، فما فيها MySQL وPostgreSQL. - + &Table(s) as CSV file... الج&داول كملف CSV... - + Export a database table as a comma separated text file. صدّر جدول قاعدة بيانات كملف نصي مقسوم بفواصل. - + Export a database table as a comma separated text file, ready to be imported into other database or spreadsheet applications. صدّر جدول قاعدة بيانات كملف نصي مقسوم بفواصل، جاهز ليُستورد إلى تطبيقات قواعد البيانات أو الجداول الممتدّة الأخرى. - + &Create Table... أ&نشِئ جدولًا... - + Open the Create Table wizard, where it is possible to define the name and fields for a new table in the database افتح مرشد إنشاء الجدول، حيث تستطيع تحديد اسم وحقول للجدول الجديد في قاعدة البيانات - + &Delete Table... ا&حذف الجدول... - - + + Delete Table احذف الجدول - + Open the Delete Table wizard, where you can select a database table to be dropped. افتح مرشد حذف الجدول، حيث يمكنك تحديد جدول قاعدة البيانات الذي سيُحذف. - + &Modify Table... &عدّل الجدول... - + Create &Index... أنشِئ &فهرسًا... - + Open the Create Index wizard, where it is possible to define a new index on an existing database table. افتح جدول إنشاء الفهارس، حيث يمكنك تحديد فهرس جديد في جدول قاعدة بيانات موجود. - + &Preferences... التف&ضيلات... - - + + Open the preferences window. افتح نافذة التفضيلات. - + &DB Toolbar شريط &قاعدة البيانات - + Shows or hides the Database toolbar. يعرض أو يُخفي شريط قاعدة البيانات.. - + New &tab - + Ctrl+T Ctrl+T - + Open SQL file(s) افتح ملفات SQL - + This button opens files containing SQL statements and loads them in new editor tabs يفتح هذا الزر ملفات تحتوي إفادات SQL ويحمّلها في ألسنة محرّر جديدة - + This button lets you save all the settings associated to the open DB to a DB Browser for SQLite project file يتيح لك هذا الزر حفظ كلّ الإعدادات المرتبطة بقاعدة البيانات المفتوحة في ملف مشروع «متصفّح قواعد بيانات SQLite» - + This button lets you open a DB Browser for SQLite project file يتيح لك هذا الزر فتح ملف مشروع «متصفّح قواعد بيانات SQLite» - + Browse Table تصفّح الجدول - + W&hat's This? ما ه&ذا؟ @@ -3227,643 +3227,802 @@ You can drag SQL statements from the Schema column and drop them into the SQL ed - - + + Temp Store + + + + + Secure Delete + + + + + Case Sensitive Like + + + + + Journal Mode + + + + + Journal Size Limit + + + + + Recursive Triggers + + + + + Page Size + + + + + Foreign Keys + + + + + Auto Vacuum + + + + + Max Page Count + + + + + Checkpoint Full FSYNC + + + + + + Off + + + + + + Normal + + + + + + Full + + + + + Default + المبدئي + + + + File + الملف + + + + + Memory + + + + + Delete + + + + + Truncate + + + + + Persist + + + + + WAL + + + + + Exclusive + + + + + Automatic Index + + + + + Ignore Check Constraints + + + + + Full FSYNC + + + + + WAL Auto Checkpoint + + + + + User Version + + + + + Synchronous + + + + + None + + + + + Incremental + + + + + Locking Mode + + + + + E&xecute SQL This has to be equal to the tab title in all the main tabs - + &Recent Files - + &New Database - - + + Ctrl+F4 Ctrl+F4 - + &Undo - - + + Undo last change to the database - + This action undoes the last change performed to the database in the Database Browser or in Execute SQL. Redoing is not possible. - + Open the Modify Table wizard, where it is possible to rename an existing table. It is also possible to add or delete fields from a table, as well as modify field names and types. - + Shift+F1 Shift+F1 - + Execute all/selected SQL نفّذ كلّ إفادات SQL أو المحدّدة فقط - + This button executes the currently selected SQL statements. If no text is selected, all SQL statements are executed. يُنفّذ هذا الزر إفادات SQL المحدّدة حاليًا. إن لم تحدّد شيئًا فستُنفّذ كلّ إفادات SQL. - + Ctrl+Shift+T - + &Load Extension... &حمّل امتدادًا... - + Execute line نفّذ السطر - + &Wiki الوي&كي - + F1 - + Bug &Report... أبلِغ عن علّ&ة... - + Feature Re&quest... ا&طلب ميزة... - + Web&site موقع الو&ب - + &Donate on Patreon... تبرّع &عبر باتريون... - + &Save Project - + Open &Project... افتح م&شروعًا... - + Open &Project - + &Attach Database... أر&فِق قاعدة بيانات... - - + + Add another database file to the current database connection أضِف ملف قاعدة بيانات آخر إلى اتصال قاعدة البيانات الحالي - + This button lets you add another database file to the current database connection يتيح لك هذا الزر إضافة ملف قاعدة بيانات آخر إلى اتصال قاعدة البيانات الحالي - + &Set Encryption... ا&ضبط التعمية... - + SQLCipher &FAQ أ&سئلة شائعة عن SQLCipher - + Table(&s) to JSON... الج&دول/الجداول إلى JSON... - + Open Data&base Read Only... افتح قاع&دة بيانات للقراءة فقط... - + Ctrl+Shift+O Ctrl+Shift+O - + Save results احفظ النتائج - + Save the results view احفظ منظور النتائج - + This button lets you save the results of the last executed query يتيح لك هذا الزر حفظ نتائج آخر استعلام نُفّذ - - + + Find text in SQL editor ابحث عن النصوص في محرّر SQL - + Find ابحث - + This button opens the search bar of the editor يفتح هذا الزر شريط البحث للمحرّر - + Ctrl+F Ctrl+F - - + + Find or replace text in SQL editor ابحث أو استبدل النصوص في محرّر SQL - + Find or replace ابحث أو استبدل - + This button opens the find/replace dialog for the current editor tab يفتح هذا الزر مربّع حوار البحث والاستبدال للسان المحرّر الحالي - + Ctrl+H Ctrl+H - + Export to &CSV &صدّر بنسق CSV - + Export to &JSON - + Save as &view احفظ كمن&ظور - + Save as view احفظ كمنظور - + Shows or hides the Project toolbar. اعرض أو أخفِ شريط أدوات المشروع. - + Extra DB Toolbar شريط أدوات قواعد البيانات الإضافي - + &Open Database - + New In-&Memory Database قاعدة بيانات جديدة في ال&ذاكرة - + Drag && Drop SELECT Query - - + + When dragging fields from the same table or a single table, drop a SELECT query into the editor - + Drag && Drop Qualified Names اسحب وأسقِط الأسماء المؤهّلة - - + + Use qualified names (e.g. "Table"."Field") when dragging the objects and dropping them into the editor استخدم الأسماء المؤهّلة (مثل ‎"Table"."Field"‎) عند سحب الكائنات وإسقاطها في المحرّر. - + Drag && Drop Enquoted Names اسحب وأسقِط الأسماء مقتبسةً - - + + Use escaped identifiers (e.g. "Table1") when dragging the objects and dropping them into the editor استخدم المُعرّفات مهرّبة (مثلًا "Table1") عند سحب الكائنات وإسقاطها في المحرّر - + &Integrity Check فحص ال&سلامة - + Runs the integrity_check pragma over the opened database and returns the results in the Execute SQL tab. This pragma does an integrity check of the entire database. يُشغّل integrity_check pragma على قاعدة البيانات المفتوحة ويُعيد النتائج في لسان ”نفّذ SQL“. يُجري pragma فحص سلامة على قاعدة البيانات كاملةً. - + &Foreign-Key Check فحص الم&فتاح الأجنبي - + Runs the foreign_key_check pragma over the opened database and returns the results in the Execute SQL tab يُشغّل foreign_key_check pragma على قاعدة البيانات المفتوحة ويُعيد النتائج في لسان ”نفّذ SQL“ - + &Quick Integrity Check فحص سلام&ة سريع - + Run a quick integrity check over the open DB يُشغّل فحص سلامة سريع على قاعدة البيانات المفتوحة - + Runs the quick_check pragma over the opened database and returns the results in the Execute SQL tab. This command does most of the checking of PRAGMA integrity_check but runs much faster. يُشغّل quick_check pragma على قاعدة البيانات المفتوحة ويُعيد النتائج في لسان ”نفّذ SQL“. يُجري هذا الأمر أغلب ما تُجريه PRAGMA integrity_check إلّا أنّه أسرع. - + &Optimize ح&سّن - + Attempt to optimize the database حاوِل تحسين قاعدة البيانات - + Runs the optimize pragma over the opened database. This pragma might perform optimizations that will improve the performance of future queries. يُشغّل optimize pragma على قاعدة البيانات المفتوحة. قد تؤدّي pragma إلى إجراء بعض التحسينات لها أن تُحسّن من أداء الاستعلامات مستقبلًا. - - + + Print اطبع - + Print text from current SQL editor tab اطبع النص من لسان محرّر SQL الحالي - + Open a dialog for printing the text in the current SQL editor tab افتح مربّع حوار طباعة النص في لسان محرّر SQL الحالي - + Print the structure of the opened database اطبع بنية قاعدة البيانات المفتوحة - + Open a dialog for printing the structure of the opened database افتح مربّع حوار طباعة بنية قاعدة البيانات المفتوحة - + &Save Project As... احف&ظ المشروع كَ‍... - - - + + + Save the project in a file selected in a dialog احفظ المشروع في ملف تحدّده من مربّع حوار - + Save A&ll احفظ ال&كلّ - - - + + + Save DB file, project file and opened SQL files احفظ ملف قاعدة البيانات وملف المشروع وملفات SQL المفتوحة - + Ctrl+Shift+S Ctrl+Shift+S - + Close Pro&ject - - + + Close project and database files and return to the initial state - - + + Ctrl+Shift+W - + Table from CSV data in Clipboard... - + This treats the current clipboard contents as a CSV file and opens the same import wizard that is used for importing CSV data from a file. - + Show &Row Counts - + This shows the number of rows for each table and view in the database. - + Save Database &As... - + Save the current database as a different file - + Refresh أنعِش - + Reload the database structure - + Ctrl+Shift+F4 - - + + Detach Database - - + + Detach database file attached to the current database connection - + &Recently opened المفتوحة حدي&ثًا - - + + Project Toolbar شريط أدوات المشروع - + Extra DB toolbar شريط أدوات قواعد البيانات الإضافي - - - + + + Close the current database file أغلِق ملف قاعدة البيانات الحالي - + &About &عن - + This button opens a new tab for the SQL editor يفتح هذا الزر لسانًا جديدًا لمحرّر SQL - + &Execute SQL ن&فّذ SQL - - - + + + Save SQL file احفظ ملف SQL - + Ctrl+E Ctrl+E - + Export as CSV file صدّر كملف بنسق CSV - + Export table as comma separated values file صدّر الجدول كملف نصي مقسوم بفواصل - + Sa&ve Project احف&ظ المشروع - - + + Save the current session to a file احفظ الجلسة الحالية في ملف - - + + Load a working session from a file حمّل جلسة عمل من ملف - - + + Save SQL file as احفظ ملف SQL كَ‍ - + This button saves the content of the current SQL editor tab to a file يحفظ هذا الزر محتويات لسان محرّر SQL الحالي في ملف - + &Browse Table ت&صفّح الجدول - + Copy Create statement انسخ إفادة الإنشاء - + Copy the CREATE statement of the item to the clipboard انسخ إفادة CREATE للعنصر إلى الحافظة - + Ctrl+Return Ctrl+Return - + Ctrl+L Ctrl+L - - + + Ctrl+P Ctrl+P - + Ctrl+D Ctrl+D - + Ctrl+I Ctrl+I - + Encrypted معمّاة - + Database is encrypted using SQLCipher قاعدة البيانات معمّاة بامتداد SQLCipher - + Read only للقراءة فقط - + Database file is read only. Editing the database is disabled. ملف قاعدة البيانات للقراءة فقط. تحرير قاعدة البيانات معطّل. - + Database encoding ترميز قاعدة البيانات - - + + Choose a database file اختر ملف قاعدة بيانات - - - + + + Choose a filename to save under اختر اسمًا للملف لحفظه به - + Error while saving the database file. This means that not all changes to the database were saved. You need to resolve the following error first. %1 @@ -3872,475 +4031,475 @@ You can drag SQL statements from the Schema column and drop them into the SQL ed %L1 - + Are you sure you want to undo all changes made to the database file '%1' since the last save? أمتأكّد من التراجع عن كلّ التعديلات التي أجريتها على ملف قاعدة البيانات ”%L1“ منذ آخر حفظ؟ - + Choose a file to import اختر ملفًا لاستيراده - + Text files(*.sql *.txt);;All files(*) الملفات النصية(*.sql *.txt);;كلّ الملفات(*) - + Do you want to create a new database file to hold the imported data? If you answer no we will attempt to import the data in the SQL file to the current database. أتريد إنشاء ملف قاعدة بيانات جديد ليحتفظ بالبيانات المستوردة؟ إن كانت إجابتك ”لا“ فسنحاول استيراد البيانات من ملف SQL إلى قاعدة البيانات الحالية. - + You are still executing SQL statements. Closing the database now will stop their execution, possibly leaving the database in an inconsistent state. Are you sure you want to close the database? ما زلت تنفّذ إفادات SQL. بإغلاق قاعدة البيانات الآن تكون أوقفت التنفيذ وقد يترك ذلك قاعدة البيانات في حال غير مستقرّة. أمتأكّد من إغلاق قاعدة البيانات؟ - + Do you want to save the changes made to the project file '%1'? أتريد حفظ التعديلات التي أجريتها في ملف المشروع ”%L1“؟ - + File %1 already exists. Please choose a different name. الملف %L1 موجود بالفعل. من فضلك اختر اسمًا آخر. - + Error importing data: %1 خطأ أثناء استيراد البيانات: %L1 - + Import completed. اكتمل الاستيراد. - + Delete View احذف المنظور - + Modify View عدّل المنظور - + Delete Trigger احذف المحفّز - + Modify Trigger عدّل المحفّز - + Delete Index احذف الفهرس - + Modify Index عدّل الفهرس - + Modify Table عدّل الجدول - + Do you want to save the changes made to SQL tabs in a new project file? أتريد حفظ التعديلات التي أجريتها على ألسنة SQL في ملف مشروع جديد؟ - + Do you want to save the changes made to the SQL file %1? أتريد حفظ التعديلات التي أجريتها على ملف SQL بالاسم ”%L1“؟ - + Could not find resource file: %1 تعذّر العثور على ملف الموارد: %L1 - + Choose a project file to open اختر ملف مشروع لفتحه - + Could not open project file for writing. Reason: %1 تعذّر فتح ملف المشروع للكتابة. السبب: %L1 - + Setting PRAGMA values will commit your current transaction. Are you sure? سيؤّدي ضبط قيم PRAGMA إلى إيداع المعاملة الحالية. أمتأكّد؟ - + Ctrl+Tab - + Ctrl+Shift+Tab - + Clear List - + Window Layout تخطيط النافذة - + Reset Window Layout صفّر تخطيط النافذة - + Simplify Window Layout بسّط تخطيط النافذة - - Shift+Alt+0 - Shift+Alt+0 + + Alt+Shift+0 + Alt+Shift+0 - + Dock Windows at Bottom ارصف النوافذ بالأسفل - + Dock Windows at Left Side ارصف النوافذ على اليسار - + Dock Windows at Top ارصف النوافذ بالأعلى - - The database is currenctly busy. + + The database is currently busy. قاعدة البيانات مشغولة حاليًا. - + Click here to interrupt the currently running query. انقر هنا لمقاطعة الاستعلام الذي يعمل حاليًا. - + Ctrl+Alt+W - + Could not open database file. Reason: %1 تعذّر فتح ملف قاعدة البيانات. السبب: %L1 - + In-Memory database قاعدة بيانات في الذاكرة - + Choose a database file to save under - + Error while saving the database to the new file. - + Are you sure you want to delete the table '%1'? All data associated with the table will be lost. أمتأكّد من حذف الجدول ”%L1“؟ ستفقد كلّ البيانات المرتبطة بالجدول. - + Are you sure you want to delete the view '%1'? أمتأكّد من حذف المنظور ”%L1“؟ - + Are you sure you want to delete the trigger '%1'? أمتأكّد من حذف المحفّز ”%L1“؟ - + Are you sure you want to delete the index '%1'? أمتأكّد من حذف الفهرس ”%L1“؟ - + Error: could not delete the table. خطأ: تعذّر حذف الجدول. - + Error: could not delete the view. خطأ: تعذّر حذف المنظور. - + Error: could not delete the trigger. خطأ: تعذّر حذف المحفّز. - + Error: could not delete the index. خطأ: تعذّر حذف الفهرس. - + Message from database engine: %1 الرسالة من محرّك قواعد البيانات: %L1 - + Editing the table requires to save all pending changes now. Are you sure you want to save the database? تحرير الجدول يطلب حفظ كلّ التغييرات المرجأة الآن. أمتأكّد من حفظ قاعدة البيانات؟ - + Error checking foreign keys after table modification. The changes will be reverted. خطأ أثناء فحص المفاتيح الأجنبية بعد تعديل الجدول. ستُرجَع التغييرات. - + This table did not pass a foreign-key check.<br/>You should run 'Tools | Foreign-Key Check' and fix the reported issues. لم يمرّ الجدول فحص المفتاح الأجنبي.<br/>عليك تشغيل ”أدوات -> فحص المفتاح الأجنبي“ وإصلاح المشاكل المذكورة. - + Edit View %1 حرّر المنظور %L1 - + Edit Trigger %1 حرّر المحفّز %L1 - + You are already executing SQL statements. Do you want to stop them in order to execute the current statements instead? Note that this might leave the database in an inconsistent state. أنت تنفّذ حقًا إفادات SQL. أتريد إيقافها لتنفيذ الإفادات الحالية بدلها؟ وقد يترك ذلك قاعدة البيانات في حال غير مستقرّة. - + -- EXECUTING SELECTION IN '%1' -- -- ينفّذ التحديد في ”%L1“ -- - + -- EXECUTING LINE IN '%1' -- -- ينفّذ السطر في ”%L1“ -- - + -- EXECUTING ALL IN '%1' -- -- ينفّذ الكلّ في ”%L1“ -- - - + + At line %1: عند السطر %L1: - + Result: %1 النتيجة: %L1 - + Result: %2 النتيجة: %L2 - + Setting PRAGMA values or vacuuming will commit your current transaction. Are you sure? سيؤّدي ضبط قيم PRAGMA أو التنظيف إلى إيداع المعاملة الحالية. أمتأكّد؟ - + Opened '%1' in read-only mode from recent file list فُتح ”%L1“ بوضع القراءة فقط من قائمة الملفات المفتوحة حديثًا - + Opened '%1' from recent file list فُتح ”%L1“ من قائمة الملفات المفتوحة حديثًا - + &%1 %2%3 ‏&%L1 ‏‎%L2‎‏%L3 - + (read only) (للقراءة فقط) - + Open Database or Project افتح قاعدة بيانات أو مشروع - + Attach Database... أرفِق قاعدة بيانات... - + Import CSV file(s)... استورِد ملفات CSV... - + Do you want to save the changes made to SQL tabs in the project file '%1'? أتريد حفظ التعديلات التي أجريتها على ألسنة SQL في ملف المشروع ”%L1“؟ - + The statements in the tab '%1' are still executing. Closing the tab will stop the execution. This might leave the database in an inconsistent state. Are you sure you want to close the tab? - + DB file '%1' could not be opened - + This project file is using an old file format because it was created using DB Browser for SQLite version 3.10 or lower. Loading this file format is no longer fully supported. If you want to load it completely, please use DB Browser for SQLite version 3.12 to convert it to the new file format. - + Table '%1' not found; settings ignored - + -- Reference to file "%1" (not supported by this version) -- - + Project saved to file '%1' حُفظ المشروع في الملف ”%L1“ - + Yes. Don't ask again - + This action will open a new SQL tab with the following statements for you to edit and run: يفتح هذا الإجراء لسان SQL جديد يحتوي الإفادات الآتية لتحرّرها وتنفّذها: - + Busy (%1) مشغولة (%L1) - + Rename Tab غيّر اسم اللسان - + Duplicate Tab كرّر اللسان - + Close Tab أغلِق اللسان - + Opening '%1'... يفتح ”%L1“... - + There was an error opening '%1'... خطأ أثناء فتح ”%L1“... - + Value is not a valid URL or filename: %1 القيمة ليست عنوانًا ولا اسم ملف صالح: %L1 - + %1 rows returned in %2ms أُعيد من الصفوف %L1 خلال %L2 م‌ث - + Automatically load the last opened DB file at startup - + Ctrl+Alt+0 - + Choose text files اختر ملفات نصية - + Import completed. Some foreign key constraints are violated. Please fix them before saving. اكتمل الاستيراد. انتُهكت بعض قيود المفتاح الأجنبي. من فضلك أصلِحها قبل الحفظ. - + Select the action to apply to the dropped file(s). <br/>Note: only 'Import' will process more than one file. Note for translation: Although there is no %n in the original, you can use the numerus-form to adjust 'files(s)' and remove the note when n = 1. Including %n in the translation will also work. @@ -4353,53 +4512,53 @@ Are you sure? - + Select SQL file to open اختر ملف SQL لفتحه - + Select file name اختر اسم الملف - + Select extension file اختر ملف الامتداد - + Extension successfully loaded. نجح تحميل الامتداد. - + Error loading extension: %1 خطأ أثناء تحميل الامتداد: %L1 - - + + Don't show again لا تعرض ثانيةً - + New version available. تتوفّر إصدارة جديدة. - + A new DB Browser for SQLite version is available (%1.%2.%3).<br/><br/>Please download at <a href='%4'>%4</a>. تتوفّر إصدارة جديدة من «متصفّح قواعد بيانات SQLite» ‏(%L1٫‏%L2٫‏%L3).<br/><br/>من فضلك نزّلها من <a href='%4'>%L4</a>. - + Collation needed! Proceed? قواعد مقارنة المحارف مطلوبة! أنتابع؟ - + A table in this database requires a special collation function '%1' that this application can't provide without further knowledge. If you choose to proceed, be aware bad things can happen to your database. Create a backup! @@ -4408,57 +4567,57 @@ Create a backup! خُذ نسخة احتياطيّة! - + creating collation يُنشئ قواعد مقارنة المحارف - + Set a new name for the SQL tab. Use the '&&' character to allow using the following character as a keyboard shortcut. ضع اسمًا جديدًا للسان SQL. استخدم محرف ”&&“ ليُتاح استخدام المحرف الذي يليه كاختصار لوحة مفاتيح. - + Please specify the view name من فضلك اختر اسم المنظور - + There is already an object with that name. Please choose a different name. هناك كائن بنفس الاسم. من فضلك اختر اسمًا آخر. - + View successfully created. نجح إنشاء المنظور. - + Error creating view: %1 خطأ أثناء إنشاء المنظور: %L1 - + This action will open a new SQL tab for running: سيفتح هذا الإجراء لسان SQL جديد لتشغيل: - + Press Help for opening the corresponding SQLite reference page. انقر ”مساعدة“ لفتح صفحة SQLite المرجعية المناسبة. - + DB Browser for SQLite project file (*.sqbpro) ملف مشروع «متصفّح قواعد بيانات SQLite» ‏(*.sqbpro) - + Execution finished with errors. اكتمل التنفيذ وحدثت أخطاء. - + Execution finished without errors. اكتمل التنفيذ دون أخطاء. @@ -4653,102 +4812,107 @@ Select the axes or axes labels to drag and zoom only in that orientation. - + Load all data and redraw plot حمّل كلّ البيانات وأعِد رسم الرسم البياني - - - + + + Row # رقم الصف - + Copy انسخ - + Print... اطبع... - + + Help + + + + Show legend اعرض مفتاح الرسم - + Stacked bars أشرطة مرصوصة - + Fixed number format - + Date/Time تاريخ/وقت - + Date تاريخ - + Time وقت - - + + Numeric عدد - + Label لصيقة - + Invalid غير صالح - + Load all data and redraw plot. Warning: not all data has been fetched from the table yet due to the partial fetch mechanism. حمّل كلّ البيانات وأعِد رسم الرسم البياني. تحذير: لم تُجلب كلّ البيانات من الجدول بسبب استعمال آليّة جلب جزئية. - + Choose an axis color اختر لونًا للمحور - + Choose a filename to save under اختر اسمًا للملف لحفظه - + PNG(*.png);;JPG(*.jpg);;PDF(*.pdf);;BMP(*.bmp);;All Files(*) PNG(*.png);;JPG(*.jpg);;PDF(*.pdf);;BMP(*.bmp);;كلّ الملفات(*) - + There are curves in this plot and the selected line style can only be applied to graphs sorted by X. Either sort the table or query by X to remove curves or select one of the styles supported by curves: None or Line. توجد منحنيات في هذا الرسم البياني ولا يمكن تطبيق نمط الخطوط المحدّد إلّا على الرسوم البيانية المفروزة حسب س. إمّا أن تفرز الجدول أو الاستعلام حسب س لإزالة المنحنيات أو تحديد أحد الأنماط التي تدعمها المنحنيات: ”بلا“ أو ”خط“. - + Loading all remaining data for this table took %1ms. أخذ تحميل كلّ البيانات الباقية لهذا الجدول %L1 م‎ث. @@ -5550,1897 +5714,327 @@ Can be set to 0 for disabling completion. Are you sure you want to clear all the saved settings? All your preferences will be lost and default values will be used. أمتأكّد من مسح كلّ الإعدادات المحفوظة؟ -ستفقد كلّ التفضيلات لديك وستُستعمل القيم المبدئية. - - - - Save Settings File - - - - - - Initialization File (*.ini) - - - - - The settings file has been saved in location : - - - - - - Open Settings File - - - - - The settings file was loaded properly. - - - - - The selected settings file is not a normal settings file. -Please check again. - - - - - ProxyDialog - - - Proxy Configuration - ضبط الوسيط - - - - Pro&xy Type - &نوع الوسيط - - - - Host Na&me - ا&سم المُضيف - - - - Port - المنفذ - - - - Authentication Re&quired - الاستيثاق م&طلوب - - - - &User Name - اسم المست&خدم - - - - Password - كلمة السر - - - - None - بلا وسيط - - - - System settings - إعدادات النظام - - - - HTTP - HTTP - - - - Socks v5 - Socks v5 - - - - QObject - - - Error importing data - خطأ في استيراد البيانات - - - - from record number %1 - من السجلّ رقم %L1 - - - - . -%1 - . -%L1 - - - - Importing CSV file... - يستورد ملف CSV... - - - - Cancel - ألغِ - - - - All files (*) - كلّ الملفات (*) - - - - SQLite database files (*.db *.sqlite *.sqlite3 *.db3) - ملفات قواعد بيانات SQLite ‏(*.db *.sqlite *.sqlite3 *.db3) - - - - Left - يسار - - - - Right - يمين - - - - Center - وسط - - - - Justify - ضبط - - - - SQLite Database Files (*.db *.sqlite *.sqlite3 *.db3) - ملفات قواعد بيانات SQLite ‏(*.db *.sqlite *.sqlite3 *.db3) - - - - DB Browser for SQLite Project Files (*.sqbpro) - ملفات مشاريع «متصفّح قواعد بيانات SQLite» ‏(*.sqbpro) - - - - SQL Files (*.sql) - ملفات SQL ‏(*.sql) - - - - All Files (*) - كلّ الملفات (*) - - - - Text Files (*.txt) - ملفات النصوص (*.txt) - - - - Comma-Separated Values Files (*.csv) - ملفات القيم المقسومة بفواصل (*.csv) - - - - Tab-Separated Values Files (*.tsv) - ملفات القيم المقسومة بجدولات (*.tsv) - - - - Delimiter-Separated Values Files (*.dsv) - ملفات القيم المقسومة بحروف فصل (*.dsv) - - - - Concordance DAT files (*.dat) - ‏Concordance DAT files ‏(*.dat) - - - - JSON Files (*.json *.js) - ملفات JSON ‏(*.json *.js) - - - - XML Files (*.xml) - ملفات XML ‏(*.xml) - - - - Binary Files (*.bin *.dat) - الملفات الثنائيّة (*.bin *.dat) - - - - SVG Files (*.svg) - ملفات SVG ‏(*.svg) - - - - Hex Dump Files (*.dat *.bin) - ملفات ستّ‌عشرية مفرّغة (*.dat *.bin) - - - - Extensions (*.so *.dylib *.dll) - الامتدادات (*.so *.dylib *.dll) - - - - Initialization File (*.ini) - - - - - QsciCommand - - - Move down one line - - - - - Extend selection down one line - - - - - Extend rectangular selection down one line - - - - - Scroll view down one line - - - - - Move up one line - - - - - Extend selection up one line - - - - - Extend rectangular selection up one line - - - - - Scroll view up one line - - - - - Scroll to start of document - - - - - Scroll to end of document - - - - - Scroll vertically to centre current line - - - - - Move down one paragraph - - - - - Extend selection down one paragraph - - - - - Move up one paragraph - - - - - Extend selection up one paragraph - - - - - Move left one character - - - - - Extend selection left one character - - - - - Extend rectangular selection left one character - - - - - Move right one character - - - - - Extend selection right one character - - - - - Extend rectangular selection right one character - - - - - Move left one word - - - - - Extend selection left one word - - - - - Move right one word - - - - - Extend selection right one word - - - - - Move to end of previous word - - - - - Extend selection to end of previous word - - - - - Move to end of next word - - - - - Extend selection to end of next word - - - - - Move left one word part - - - - - Extend selection left one word part - - - - - Move right one word part - - - - - Extend selection right one word part - - - - - Move to start of document line - - - - - Extend selection to start of document line - - - - - Extend rectangular selection to start of document line - - - - - Move to start of display line - - - - - Extend selection to start of display line - - - - - Move to start of display or document line - - - - - Extend selection to start of display or document line - - - - - Move to first visible character in document line - - - - - Extend selection to first visible character in document line - - - - - Extend rectangular selection to first visible character in document line - - - - - Move to first visible character of display in document line - - - - - Extend selection to first visible character in display or document line - - - - - Move to end of document line - - - - - Extend selection to end of document line - - - - - Extend rectangular selection to end of document line - - - - - Move to end of display line - - - - - Extend selection to end of display line - - - - - Move to end of display or document line - - - - - Extend selection to end of display or document line - - - - - Move to start of document - - - - - Extend selection to start of document - - - - - Move to end of document - - - - - Extend selection to end of document - - - - - Move up one page - - - - - Extend selection up one page - - - - - Extend rectangular selection up one page - - - - - Move down one page - - - - - Extend selection down one page - - - - - Extend rectangular selection down one page - - - - - Stuttered move up one page - - - - - Stuttered extend selection up one page - - - - - Stuttered move down one page - - - - - Stuttered extend selection down one page - - - - - Delete current character - - - - - Delete previous character - - - - - Delete previous character if not at start of line - - - - - Delete word to left - - - - - Delete word to right - - - - - Delete right to end of next word - - - - - Delete line to left - - - - - Delete line to right - - - - - Delete current line - - - - - Cut current line - - - - - Copy current line - - - - - Transpose current and previous lines - - - - - Duplicate the current line - - - - - Select all - - - - - Move selected lines up one line - - - - - Move selected lines down one line - - - - - Duplicate selection - - - - - Convert selection to lower case - - - - - Convert selection to upper case - - - - - Cut selection - - - - - Copy selection - - - - - Paste - ألصِق - - - - Toggle insert/overtype - - - - - Insert newline - - - - - Formfeed - - - - - Indent one level - - - - - De-indent one level - - - - - Cancel - ألغِ - - - - Undo last command - - - - - Redo last command - - - - - Zoom in - - - - - Zoom out - - - - - QsciLexerCPP - - - Default - المبدئي - - - - Inactive default - - - - - C comment - - - - - Inactive C comment - - - - - C++ comment - - - - - Inactive C++ comment - - - - - JavaDoc style C comment - - - - - Inactive JavaDoc style C comment - - - - - Number - - - - - Inactive number - - - - - Keyword - الكلمات المفتاحية - - - - Inactive keyword - - - - - Double-quoted string - - - - - Inactive double-quoted string - - - - - Single-quoted string - - - - - Inactive single-quoted string - - - - - IDL UUID - - - - - Inactive IDL UUID - - - - - Pre-processor block - - - - - Inactive pre-processor block - - - - - Operator - - - - - Inactive operator - - - - - Identifier - المعرّفات - - - - Inactive identifier - - - - - Unclosed string - - - - - Inactive unclosed string - - - - - C# verbatim string - - - - - Inactive C# verbatim string - - - - - JavaScript regular expression - - - - - Inactive JavaScript regular expression - - - - - JavaDoc style C++ comment - - - - - Inactive JavaDoc style C++ comment - - - - - Secondary keywords and identifiers - - - - - Inactive secondary keywords and identifiers - - - - - JavaDoc keyword - - - - - Inactive JavaDoc keyword - - - - - JavaDoc keyword error - - - - - Inactive JavaDoc keyword error - - - - - Global classes and typedefs - - - - - Inactive global classes and typedefs - - - - - C++ raw string - - - - - Inactive C++ raw string - - - - - Vala triple-quoted verbatim string - - - - - Inactive Vala triple-quoted verbatim string - - - - - Pike hash-quoted string - - - - - Inactive Pike hash-quoted string - - - - - Pre-processor C comment - - - - - Inactive pre-processor C comment - - - - - JavaDoc style pre-processor comment - - - - - Inactive JavaDoc style pre-processor comment - - - - - User-defined literal - - - - - Inactive user-defined literal - - - - - Task marker - - - - - Inactive task marker - - - - - Escape sequence - - - - - Inactive escape sequence - - - - - QsciLexerHTML - - - HTML default - - - - - Tag - - - - - Unknown tag - - - - - Attribute - - - - - Unknown attribute - - - - - HTML number - - - - - HTML double-quoted string - - - - - HTML single-quoted string - - - - - Other text in a tag - - - - - HTML comment - - - - - Entity - - - - - End of a tag - - - - - Start of an XML fragment - - - - - End of an XML fragment - - - - - Script tag - - - - - Start of an ASP fragment with @ - - - - - Start of an ASP fragment - - - - - CDATA - - - - - Start of a PHP fragment - - - - - Unquoted HTML value - - - - - ASP X-Code comment - - - - - SGML default - - - - - SGML command - - - - - First parameter of an SGML command - - - - - SGML double-quoted string - - - - - SGML single-quoted string - - - - - SGML error - - - - - SGML special entity - - - - - SGML comment - - - - - First parameter comment of an SGML command - - - - - SGML block default - - - - - Start of a JavaScript fragment - - - - - JavaScript default - - - - - JavaScript comment - - - - - JavaScript line comment - - - - - JavaDoc style JavaScript comment - - - - - JavaScript number - - - - - JavaScript word - - - - - JavaScript keyword - - - - - JavaScript double-quoted string - - - - - JavaScript single-quoted string - - - - - JavaScript symbol - - - - - JavaScript unclosed string - - - - - JavaScript regular expression - - - - - Start of an ASP JavaScript fragment - - - - - ASP JavaScript default - - - - - ASP JavaScript comment - - - - - ASP JavaScript line comment - - - - - JavaDoc style ASP JavaScript comment - - - - - ASP JavaScript number - - - - - ASP JavaScript word - - - - - ASP JavaScript keyword - - - - - ASP JavaScript double-quoted string - - - - - ASP JavaScript single-quoted string - - - - - ASP JavaScript symbol - - - - - ASP JavaScript unclosed string - - - - - ASP JavaScript regular expression - - - - - Start of a VBScript fragment - - - - - VBScript default - - - - - VBScript comment - - - - - VBScript number - - - - - VBScript keyword - - - - - VBScript string - - - - - VBScript identifier - - - - - VBScript unclosed string - - - - - Start of an ASP VBScript fragment - - - - - ASP VBScript default - - - - - ASP VBScript comment - - - - - ASP VBScript number - - - - - ASP VBScript keyword - - - - - ASP VBScript string - - - - - ASP VBScript identifier - - - - - ASP VBScript unclosed string - - - - - Start of a Python fragment - - - - - Python default - - - - - Python comment - - - - - Python number - - - - - Python double-quoted string - - - - - Python single-quoted string - - - - - Python keyword - - - - - Python triple double-quoted string - - - - - Python triple single-quoted string - - - - - Python class name - - - - - Python function or method name - - - - - Python operator - - - - - Python identifier - - - - - Start of an ASP Python fragment - - - - - ASP Python default - - - - - ASP Python comment - - - - - ASP Python number - - - - - ASP Python double-quoted string - - - - - ASP Python single-quoted string - - - - - ASP Python keyword - - - - - ASP Python triple double-quoted string - - - - - ASP Python triple single-quoted string - - - - - ASP Python class name - - - - - ASP Python function or method name - - - - - ASP Python operator - - - - - ASP Python identifier - - - - - PHP default - - - - - PHP double-quoted string - - - - - PHP single-quoted string - - - - - PHP keyword - - - - - PHP number - - - - - PHP variable - - - - - PHP comment - - - - - PHP line comment - - - - - PHP double-quoted variable - - - - - PHP operator - - - - - QsciLexerJSON - - - Default - المبدئي +ستفقد كلّ التفضيلات لديك وستُستعمل القيم المبدئية. - - Number + + Save Settings File - - String - السلاسل النصية + + + Initialization File (*.ini) + - - Unclosed string + + The settings file has been saved in location : + - - Property + + Open Settings File - - Escape sequence + + The settings file was loaded properly. - - Line comment + + The selected settings file is not a normal settings file. +Please check again. + + + ProxyDialog - - Block comment - + + Proxy Configuration + ضبط الوسيط - - Operator - + + Pro&xy Type + &نوع الوسيط - - IRI - + + Host Na&me + ا&سم المُضيف - - JSON-LD compact IRI - + + Port + المنفذ - - JSON keyword - + + Authentication Re&quired + الاستيثاق م&طلوب - - JSON-LD keyword - + + &User Name + اسم المست&خدم - - Parsing error - + + Password + كلمة السر - - - QsciLexerJavaScript - - Regular expression - تعبير نمطي + + None + بلا وسيط - - - QsciLexerPython - - Default - المبدئي + + System settings + إعدادات النظام - - Comment - التعليقات + + HTTP + HTTP - - Number - + + SOCKS5 + SOCKS5 + + + QObject - - Double-quoted string - + + Error importing data + خطأ في استيراد البيانات - - Single-quoted string - + + from record number %1 + من السجلّ رقم %L1 - - Keyword - الكلمات المفتاحية + + . +%1 + . +%L1 - - Triple single-quoted string - + + Importing CSV file... + يستورد ملف CSV... - - Triple double-quoted string - + + Cancel + ألغِ - - Class name - + + All files (*) + كلّ الملفات (*) - - Function or method name - + + SQLite database files (*.db *.sqlite *.sqlite3 *.db3) + ملفات قواعد بيانات SQLite ‏(*.db *.sqlite *.sqlite3 *.db3) - - Operator - + + Left + يسار - - Identifier - المعرّفات + + Right + يمين - - Comment block - + + Center + وسط - - Unclosed string - + + Justify + ضبط - - Highlighted identifier - + + SQLite Database Files (*.db *.sqlite *.sqlite3 *.db3) + ملفات قواعد بيانات SQLite ‏(*.db *.sqlite *.sqlite3 *.db3) - - Decorator - + + DB Browser for SQLite Project Files (*.sqbpro) + ملفات مشاريع «متصفّح قواعد بيانات SQLite» ‏(*.sqbpro) - - Double-quoted f-string - + + SQL Files (*.sql) + ملفات SQL ‏(*.sql) - - Single-quoted f-string - + + All Files (*) + كلّ الملفات (*) - - Triple single-quoted f-string - + + Text Files (*.txt) + ملفات النصوص (*.txt) - - Triple double-quoted f-string - + + Comma-Separated Values Files (*.csv) + ملفات القيم المقسومة بفواصل (*.csv) - - - QsciLexerSQL - - Default - المبدئي + + Tab-Separated Values Files (*.tsv) + ملفات القيم المقسومة بجدولات (*.tsv) - - Comment - التعليقات + + Delimiter-Separated Values Files (*.dsv) + ملفات القيم المقسومة بحروف فصل (*.dsv) - - Comment line - + + Concordance DAT files (*.dat) + ‏Concordance DAT files ‏(*.dat) - - JavaDoc style comment - + + JSON Files (*.json *.js) + ملفات JSON ‏(*.json *.js) - - Number - + + XML Files (*.xml) + ملفات XML ‏(*.xml) - - Keyword - الكلمات المفتاحية + + Binary Files (*.bin *.dat) + الملفات الثنائيّة (*.bin *.dat) - - Double-quoted string - + + SVG Files (*.svg) + ملفات SVG ‏(*.svg) - - Single-quoted string - + + Hex Dump Files (*.dat *.bin) + ملفات ستّ‌عشرية مفرّغة (*.dat *.bin) - - SQL*Plus keyword - + + Extensions (*.so *.dylib *.dll) + الامتدادات (*.so *.dylib *.dll) - - SQL*Plus prompt + + Initialization File (*.ini) + + + QsciCommand - - Operator - + Paste + ألصِق - - Identifier - المعرّفات + Cancel + ألغِ + + + QsciLexerCPP - - SQL*Plus comment - + Default + المبدئي - - # comment line - + Keyword + الكلمات المفتاحية - - JavaDoc keyword - + Identifier + المعرّفات + + + QsciLexerJSON - - JavaDoc keyword error - + Default + المبدئي - - User defined 1 - + String + السلاسل النصية + + + QsciLexerJavaScript - - User defined 2 - + Regular expression + تعبير نمطي + + + QsciLexerPython - - User defined 3 - + Default + المبدئي - - User defined 4 - + Comment + التعليقات - - Quoted identifier - + Keyword + الكلمات المفتاحية - - Quoted operator - + Identifier + المعرّفات - QsciScintilla - - - &Undo - - - - - &Redo - - + QsciLexerSQL - - Cu&t - + Default + المبدئي - - &Copy - + Comment + التعليقات - - &Paste - + Keyword + الكلمات المفتاحية - - Delete - + Identifier + المعرّفات + + + QsciScintilla - Select All - حدّد الكلّ + حدّد الكلّ @@ -7843,26 +6437,26 @@ Are you sure you want to proceed? من فضلك أدخِل عبارة السر لشهادة العميل لإجراء الاستيثاق. - + Cancel ألغِ - + Uploading remote database to %1 يرفع قاعدة البيانات البعيدة إلى %L1 - + Downloading remote database from %1 ينزّل قاعدة البيانات البعيدة من %L1 - + Error: Cannot open the file for sending. خطأ: تعذّر فتح الملف لإرساله. @@ -8597,32 +7191,32 @@ Use of this function must be authorized from Preferences. يحمّل... - + References %1(%2) Hold %3Shift and click to jump there التفضيلات %L1‏(%L2) اضغط %L3Shift وانقر للانتقال إلى هناك - + Error changing data: %1 خطأ أثناء تغيير البيانات: %L1 - + retrieving list of columns يجلب قائمة الأعمدة - + Fetching data... يجلب البيانات... - - + + Cancel ألغِ @@ -8959,12 +7553,12 @@ Hold %3Shift and click to jump there - <html><head/><body><p>This button creates a new record in the database. Hold the mouse button to open a pop-up menu of different options:</p><ul><li><span style=" font-weight:600;">New Record</span>: insert a new record with default values in the database.</li><li><span style=" font-weight:600;">Insert Values...</span>: open a dialog for entering values before they are inserted in the database. This allows to enter values acomplishing the different constraints. This dialog is also open if the <span style=" font-weight:600;">New Record</span> option fails due to these constraints.</li></ul></body></html> + <html><head/><body><p>This button creates a new record in the database. Hold the mouse button to open a pop-up menu of different options:</p><ul><li><span style=" font-weight:600;">New Record</span>: insert a new record with default values in the database.</li><li><span style=" font-weight:600;">Insert Values...</span>: open a dialog for entering values before they are inserted in the database. This allows to enter values accomplishing the different constraints. This dialog is also open if the <span style=" font-weight:600;">New Record</span> option fails due to these constraints.</li></ul></body></html> يُنشئ هذا الزر سجلًا جديدًا في قاعدة البيانات. أبقِ زر الفأرة مضغوطًا لفتح قائمة منبثقة فيها عدّة خيارات:<ul><li><span style=" font-weight:600;">سجلّ جديد</span>: لإدراج سجلّ جديد يحمل القيم المبدئية في قاعدة البيانات.</li><li><span style=" font-weight:600;">أدرِج قيم...</span>: لفتح مربّع حوار لإدخال القيم قبل إدراجها في جدول البيانات. يتيح هذا إدخال القيم حسب القيود المختلفة. يُفتح مربّع الحوار هذا أيضًا إن فشل الخيار <span style=" font-weight:600;">سجلّ جديد</span> بسبب هذه القيود.</li></ul> - + Delete Record احذف السجلّ @@ -9041,7 +7635,7 @@ Hold %3Shift and click to jump there - <html><head/><body><p>This popup menu provides the following options applying to the currently browsed and filtered table:</p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Export to CSV: this option exports the data of the browsed table as currently displayed (after filters, display formats and order column) to a CSV file.</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Save as view: this option saves the current setting of the browsed table (filters, display formats and order column) as an SQL view that you can later browse or use in SQL statements.</li></ul></body></html> + <html><head/><body><p>This pop-up menu provides the following options applying to the currently browsed and filtered table:</p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Export to CSV: this option exports the data of the browsed table as currently displayed (after filters, display formats and order column) to a CSV file.</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Save as view: this option saves the current setting of the browsed table (filters, display formats and order column) as an SQL view that you can later browse or use in SQL statements.</li></ul></body></html> توفّر القائمة المنبثقة هذه الخيارات الآتية والتي تنطبق على الجدول الذي تتصفّحه والمرشّح حاليًا:<ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">صدّر بنسق CSV: يُصدّر هذا الخيار البيانات في الجدول الذي تتصفّحه كما هي معروضة حاليًا (بعد المرشّحات وتنسيقات العرض وعمود الفرز) إلى ملف بنسق CSV.</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">احفظ كمنظور: يحفظ هذا الخيار الإعداد الحالي للجدول الذي تتصفّحه (المرشّحات وتنسيقات العرض وعمود الفرز) في منظور SQL يمكنك تصفّحه لاحقًا أو استعماله في إفادات SQL.</li></ul> @@ -9066,7 +7660,7 @@ Hold %3Shift and click to jump there - + Set encoding اضبط الترميز @@ -9339,96 +7933,96 @@ Hold %3Shift and click to jump there . المجموع: %L1، المتوسّط: %L2، الأدنى: %L3، الأقصى: %L4 - + Conditional formats for "%1" تنسيقات ”%L1“ الشرطيّة - + determining row count... يحدّد عدد الصفوف... - + %L1 - %L2 of >= %L3 - + %L1 - %L2 of %L3 - + (clipped at %L1 rows) - + Please enter a pseudo-primary key in order to enable editing on this view. This should be the name of a unique column in the view. من فضلك أدخِل مفتاحًا أساسيًا زائفًا (pseudo) لتفعيل التحرير في هذا المنظور. يجب أن يكون المفتاح اسمًا لأحد الأعمدة الفريدة في المنظور. - + Delete Records احذف السجلّات - + Duplicate records كرّر السجلّات - + Duplicate record كرّر السجلّ - + Ctrl+" Ctrl+" - + Adjust rows to contents اضبط الصفوف إلى محتواها - + Error deleting record: %1 خطأ أثناء حذف السجلّ: %L1 - + Please select a record first من فضلك اختر سجلًا أوّلًا - + Please choose a new encoding for all tables. من فضلك اختر ترميزًا جديدًا لكلّ الجداول. - + Please choose a new encoding for this table. من فضلك اختر ترميزًا جديدًا لهذا الجدول. - + %1 Leave the field empty for using the database encoding. %L1 اترك الحقل فارغًا لاستعمال ترميز قاعدة البيانات. - + This encoding is either not valid or not supported. إمّا أنّ هذا الترميز غير صالح أو أنّه غير مدعوم. - + %1 replacement(s) made. عدد الاستبدالات المُجراة: %L1 @@ -9456,24 +8050,6 @@ Leave the field empty for using the database encoding. - - UndoStack - - - Inserting %1 bytes - - - - - Delete %1 chars - - - - - Overwrite %1 chars - - - VacuumDialog diff --git a/src/translations/sqlb_cs.ts b/src/translations/sqlb_cs.ts index 23df33c47..25d119f61 100644 --- a/src/translations/sqlb_cs.ts +++ b/src/translations/sqlb_cs.ts @@ -15,7 +15,7 @@ - <html><head/><body><p>DB Browser for SQLite is an open source, freeware visual tool used to create, design and edit SQLite database files.</p><p>It is bi-licensed under the Mozilla Public License Version 2, as well as the GNU General Public License Version 3 or later. You can modify or redistribute it under the conditions of these licenses.</p><p>See <a href="https://www.gnu.org/licenses/gpl.html"><span style=" text-decoration: underline; color:#0000ff;">http://www.gnu.org/licenses/gpl.html</span></a> and <a href="https://www.mozilla.org/MPL/2.0/index.txt"><span style=" text-decoration: underline; color:#0000ff;">https://www.mozilla.org/MPL/2.0/index.txt</span></a> for details.</p><p>For more information on this program please visit our website at: <a href="https://sqlitebrowser.org"><span style=" text-decoration: underline; color:#0000ff;">http://sqlitebrowser.org</span></a></p><p><span style=" font-size:small;">This software uses the GPL/LGPL Qt Toolkit from </span><a href="http://qt-project.org/"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://qt-project.org/</span></a><span style=" font-size:small;"><br/>See </span><a href="https://doc.qt.io/qt-5/licensing.html"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://qt-project.org/doc/qt-5/licensing.html</span></a><span style=" font-size:small;"> for licensing terms and information.</span></p><p><span style=" font-size:8pt;">We use the nalgeon/sqlean library for SQLite extensions support.<br/>This library is licensed under the MIT license, see the following for more information:<br/></span><a href="https://github.com/nalgeon/sqlean"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">https://github.com/nalgeon/sqlean</span></a></p><p><span style=" font-size:small;">It also uses the Pastel SVG icon set by Michael Buckley under a Creative Commons Attribution Share Alike 4.0 license.<br/>See </span><a href="https://codefisher.org/pastel-svg/"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://codefisher.org/pastel-svg/</span></a><span style=" font-size:small;"> for details.</span></p></body></html> + <html><head/><body><p>DB Browser for SQLite is an open source, freeware visual tool used to create, design and edit SQLite database files.</p><p>It is bi-licensed under the Mozilla Public License Version 2, as well as the GNU General Public License Version 3 or later. You can modify or redistribute it under the conditions of these licenses.</p><p>See <a href="https://www.gnu.org/licenses/gpl.html"><span style=" text-decoration: underline; color:#0000ff;">https://www.gnu.org/licenses/gpl.html</span></a> and <a href="https://www.mozilla.org/MPL/2.0/index.txt"><span style=" text-decoration: underline; color:#0000ff;">https://www.mozilla.org/MPL/2.0/index.txt</span></a> for details.</p><p>For more information on this program please visit our website at: <a href="https://sqlitebrowser.org"><span style=" text-decoration: underline; color:#0000ff;">https://sqlitebrowser.org</span></a></p><p><span style=" font-size:small;">This software uses the GPL/LGPL Qt Toolkit from </span><a href="https://qt-project.org/"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://qt-project.org/</span></a><span style=" font-size:small;"><br/>See </span><a href="https://doc.qt.io/qt-5/licensing.html"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://doc.qt.io/qt-5/licensing.html</span></a><span style=" font-size:small;"> for licensing terms and information.</span></p><p><span style=" font-size:8pt;">We use the nalgeon/sqlean library for SQLite extensions support.<br/>This library is licensed under the MIT license, see the following for more information:<br/></span><a href="https://github.com/nalgeon/sqlean"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">https://github.com/nalgeon/sqlean</span></a></p><p><span style=" font-size:small;">It also uses the Pastel SVG icon set by Michael Buckley under a Creative Commons Attribution Share Alike 4.0 license.<br/>See </span><a href="https://codefisher.org/pastel-svg/"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://codefisher.org/pastel-svg/</span></a><span style=" font-size:small;"> for details.</span></p></body></html> @@ -278,36 +278,36 @@ - Invalid option/non-existant file: %1 + Invalid option/non-existent file: %1 Neplatná volba/neexistující soubor: %1 - + SQLite Version verze SQLite - + SQLCipher Version %1 (based on SQLite %2) - + DB Browser for SQLite Version %1. - + Last commit hash when built: %1 - + Built for %1, running on %2 - + Qt Version %1 @@ -385,7 +385,7 @@ - + Please set a key to encrypt the database. Note that if you change any of the other, optional, settings you'll need to re-enter them as well every time you open the database file. Leave the password fields empty to disable the encryption. @@ -393,7 +393,7 @@ The encryption process might take some time and you should have a backup copy of - + Please enter the key used to encrypt the database. If any of the other settings were altered for this database file you need to provide this information as well. @@ -417,129 +417,129 @@ If any of the other settings were altered for this database file you need to pro Vyberte formát zobrazení pro sloupec '%1' který je použit na každou hodnotu před zobrazením. - + Default Výchozí - + Decimal number Desetinné číslo - + Exponent notation Notace exponentu - + Hex blob Šestnáctkový blob - + Hex number Šestnáctkové číslo - + Apple NSDate to date Apple NSDate na datum - + Java epoch (milliseconds) to date - + .NET DateTime.Ticks to date - + Julian day to date Juliánský den na datum - + Unix epoch to local time - + WebKit / Chromium epoch to date - + WebKit / Chromium epoch to local time - + Date as dd/mm/yyyy Datum jako dd/mm/yyyy - + Lower case Malá písmena - + Binary GUID to text - + SpatiaLite Geometry to SVG - + Custom display format must contain a function call applied to %1 - + Error in custom display format. Message from database engine: %1 - + Custom display format must return only one column but it returned %1. - + Octal number Osmičkové číslo - + Round number Zaokrouhlit číslo - + Unix epoch to date Unix epoch na datum - + Upper case Velká písmena - + Windows DATE to date Windows DATE na datum - + Custom Vlastní @@ -666,207 +666,207 @@ If any of the other settings were altered for this database file you need to pro DBBrowserDB - + Please specify the database name under which you want to access the attached database Prosím specifikujte jméno databáze, pod kterým chcete přistupovat k připojené databázi - + Invalid file format Neplatný formát souboru - + Do you want to save the changes made to the database file %1? Chcete uložit změny provedené do databázového souboru %1? - + Exporting database to SQL file... Exportuji databázi do souboru SQL... - - + + Cancel Zrušit - + Executing SQL... Provádím SQL... - + Action cancelled. Akce zrušena. - + Do you really want to close this temporary database? All data will be lost. - + Database didn't close correctly, probably still busy - + Cannot open destination file: '%1' - - + + Cannot backup to file: '%1'. Message: %2 - + The database is currently busy: Databáze je právě zaneprázdněná: - + Do you want to abort that other operation? - - + + No database file opened - - + + Error in statement #%1: %2. Aborting execution%3. - - + + and rolling back - + didn't receive any output from %1 - + could not execute command: %1 - + Cannot delete this object Nemohu smazat tento objekt - + Cannot set data on this object - - + + A table with the name '%1' already exists in schema '%2'. - + No table with name '%1' exists in schema '%2'. - - + + Cannot find column %1. - + Creating savepoint failed. DB says: %1 - + Renaming the column failed. DB says: %1 - - + + Releasing savepoint failed. DB says: %1 - + Creating new table failed. DB says: %1 - + Copying data to new table failed. DB says: %1 - + Deleting old table failed. DB says: %1 - + Error renaming table '%1' to '%2'. Message from database engine: %3 - + could not get list of db objects: %1 - + Restoring some of the objects associated with this table failed. This is most likely because some column names changed. Here's the SQL statement which you might want to fix and execute manually: - + could not get list of databases: %1 - + Error loading extension: %1 Chyba při načítání přípony: %1 - + Error loading built-in extension: %1 - + could not get column information - + Error setting pragma %1 to %2: %3 Chyba při nastavování pragma %1 na %2: %3 - + File not found. Soubor nebyl nalezen. @@ -1925,7 +1925,7 @@ All data currently stored in this field will be lost. ExtendedScintilla - + Ctrl+H @@ -1936,22 +1936,22 @@ All data currently stored in this field will be lost. - + Ctrl+P - + Find... - + Find and Replace... Najít a nahradit... - + Print... Tisk... @@ -1959,128 +1959,128 @@ All data currently stored in this field will be lost. ExtendedTableWidget - + Use as Exact Filter - + Containing - + Not containing - + Not equal to - + Greater than Větší než - + Less than Menší než - + Greater or equal Větší nebo rovno - + Less or equal Menší nebo rovno - + Between this and... Mezi tímto a... - + Regular expression - + Edit Conditional Formats... - + Set to NULL Nastavit na NULL - + Cut - + Copy Kopírovat - + Copy with Headers Kopírovat s hlavičkami - + Copy as SQL Kopírovat jako SQL - + Paste Vložit - + Print... Tisk... - + Use in Filter Expression - + Alt+Del - + Ctrl+Shift+C - + Ctrl+Alt+C - + The content of the clipboard is bigger than the range selected. Do you want to insert it anyway? - + <p>Not all data has been loaded. <b>Do you want to load all data before selecting all the rows?</b><p><p>Answering <b>No</b> means that no more data will be loaded and the selection will not be performed.<br/>Answering <b>Yes</b> might take some time while the data is loaded but the selection will be complete.</p>Warning: Loading all the data might require a great amount of memory for big tables. - + Cannot set selection to NULL. Column %1 has a NOT NULL constraint. @@ -2132,12 +2132,12 @@ Do you want to insert it anyway? FilterLineEdit - + Filter Filtr - + These input fields allow you to perform quick filters in the currently selected table. By default, the rows containing the input text are filtered out. The following operators are also supported: @@ -2153,92 +2153,92 @@ x~y Range: values between x and y - + Clear All Conditional Formats - + Use for Conditional Format - + Edit Conditional Formats... - + Set Filter Expression - + What's This? Co je toto? - + Is NULL je NULL - + Is not NULL Není NULL - + Is empty Je prázdný - + Is not empty Není prázdný - + Not containing... - + Equal to... Rovný k... - + Not equal to... Není rovný k... - + Greater than... Větší než... - + Less than... Menší než... - + Greater or equal... Větší nebo rovno... - + Less or equal... Menší nebo rovno... - + In range... V rozmezí... - + Regular expression... @@ -2461,7 +2461,7 @@ x~y Range: values between x and y - + Tab Karta @@ -2604,7 +2604,7 @@ x~y Range: values between x and y - + Deselect All Zrušit celý výběr @@ -2614,52 +2614,52 @@ x~y Range: values between x and y - + Select All Vybrat vše - + There is already a table named '%1' and an import into an existing table is only possible if the number of columns match. - + There is already a table named '%1'. Do you want to import the data into it? - + Creating restore point failed: %1 Vytváření bodu obnovy selhalo: %1 - + Creating the table failed: %1 Vytváření tabulky selhalo: %1 - + importing CSV importování CSV - + Could not prepare INSERT statement: %1 - + Unexpected end of file. Please make sure that you have configured the correct quote characters and the file is not malformed. - + Importing the file '%1' took %2ms. Of this %3ms were spent in the row function. - + Inserting row failed: %1 Vkládání řádku selhalo: %1 @@ -2672,405 +2672,405 @@ x~y Range: values between x and y DB Browser pro SQLite - + toolBar1 toolBar1 - + Opens the SQLCipher FAQ in a browser window Otevře SQLCipher FAQ v okně prohlížeče - + Export one or more table(s) to a JSON file Export jedné nebo více tabulek do souboru JSON - + &File &Soubor - + &Import &Import - + &Export &Export - + Open an existing database file in read only mode - + &Edit Upravit - + &View Pohled - + &Help Pomoc - + DB Toolbar Panel nástrojů DB - + Edit Database &Cell Upravit databázovou buňku - + DB Sche&ma DB Schéma - - + + Execute current line Provést aktuální řádek - + This button executes the SQL statement present in the current editor line - + Shift+F5 - + Sa&ve Project Ulo&žit Projekt - + User Uživatel - + Application Aplikace - + &Clear &Vyčistit - + &New Database... Nová databáze... - - + + Create a new database file Vytvořit nový databázový soubor - + This option is used to create a new database file. Tato volba slouží k vytvoření nového souboru databáze. - + Ctrl+N - - + + &Open Database... Otevřít databázi... - - - - - + + + + + Open an existing database file Otevřít existující soubor databáze - - - + + + This option is used to open an existing database file. Tato volba slouží k otevření existujícího souboru databáze. - + Ctrl+O - + &Close Database &Zavřít databázi - + This button closes the connection to the currently open database file - - + + Ctrl+W - - + + Revert database to last saved state Vrátit databázi do posledního uloženého stavu - + This option is used to revert the current database file to its last saved state. All changes made since the last save operation are lost. - - + + Write changes to the database file Zapsat změny do souboru databáze - + This option is used to save changes to the database file. Tato volba slouží k uložení provedených změn do souboru databáze. - + Ctrl+S - + Compact &Database... - + Compact the database file, removing space wasted by deleted records - - + + Compact the database file, removing space wasted by deleted records. - + E&xit Exit - + Ctrl+Q - + Import data from an .sql dump text file into a new or existing database. Importovat data z textového souboru .sql do nové nebo již existující databáze. - + This option lets you import data from an .sql dump text file into a new or existing database. SQL dump files can be created on most database engines, including MySQL and PostgreSQL. - + Open a wizard that lets you import data from a comma separated text file into a database table. Otevře průzkumníka, kde můžete importovat data z textového souboru, kde jsou data oddělena čárkami, do databázové tabulky. - + Open a wizard that lets you import data from a comma separated text file into a database table. CSV files can be created on most database and spreadsheet applications. - + Export a database to a .sql dump text file. Exportovat databázi do textového souboru .sql - + This option lets you export a database to a .sql dump text file. SQL dump files contain all data necessary to recreate the database on most database engines, including MySQL and PostgreSQL. - + Export a database table as a comma separated text file. Exportovat databázovou tabulku jako textový soubor oddělený čárkami. - + Export a database table as a comma separated text file, ready to be imported into other database or spreadsheet applications. - + Open the Create Table wizard, where it is possible to define the name and fields for a new table in the database - - + + Delete Table Smazat Tabulku - + Open the Delete Table wizard, where you can select a database table to be dropped. - + Open the Create Index wizard, where it is possible to define a new index on an existing database table. - + &Preferences... &Možnosti... - - + + Open the preferences window. Otevřít okno s možnostmi. - + &DB Toolbar Panel nástrojů DB - + Shows or hides the Database toolbar. Zobrazí nebo skryje lištu Databáze. - + Shift+F1 - + New &tab - + Open SQL file(s) - + This button opens files containing SQL statements and loads them in new editor tabs - + Execute line - + &Wiki Wiki - + F1 - + Bug &Report... Nahlásit chybu... - + Feature Re&quest... Požadavek na funkci... - + Web&site Webová stránka - + &Donate on Patreon... Přispět na Patreon... - + This button lets you save all the settings associated to the open DB to a DB Browser for SQLite project file - + This button lets you open a DB Browser for SQLite project file - + Browse Table - + Close Pro&ject - - + + Close project and database files and return to the initial state - + Ctrl+Shift+F4 - - + + Detach Database - - + + Detach database file attached to the current database connection - + &Attach Database... Přiložit databázi... @@ -3096,382 +3096,541 @@ x~y Range: values between x and y - - + + Temp Store + + + + + Secure Delete + + + + + Case Sensitive Like + + + + + Journal Mode + + + + + Journal Size Limit + + + + + Recursive Triggers + + + + + Page Size + + + + + Foreign Keys + + + + + Auto Vacuum + + + + + Max Page Count + + + + + Checkpoint Full FSYNC + + + + + + Off + + + + + + Normal + + + + + + Full + + + + + Default + Výchozí + + + + File + Soubor + + + + + Memory + + + + + Delete + + + + + Truncate + + + + + Persist + + + + + WAL + + + + + Exclusive + + + + + Automatic Index + + + + + Ignore Check Constraints + + + + + Full FSYNC + + + + + WAL Auto Checkpoint + + + + + User Version + + + + + Synchronous + + + + + None + Žádná + + + + Incremental + + + + + Locking Mode + + + + + E&xecute SQL This has to be equal to the tab title in all the main tabs - + &Recent Files - + &New Database - + &Undo - - + + Undo last change to the database - + This action undoes the last change performed to the database in the Database Browser or in Execute SQL. Redoing is not possible. - + Open the Modify Table wizard, where it is possible to rename an existing table. It is also possible to add or delete fields from a table, as well as modify field names and types. - + Ctrl+Shift+T - + &Save Project - + Open &Project - - + + Add another database file to the current database connection - + This button lets you add another database file to the current database connection - + &Set Encryption... Nastavit šifrování... - + SQLCipher &FAQ SQLCipher FAQ - + Table(&s) to JSON... Tabulka(ky) do JSONu... - + Open Data&base Read Only... - + Ctrl+Shift+O - + Save results Uložit výsledky - + Save the results view - + This button lets you save the results of the last executed query - - + + Find text in SQL editor Najít text v SQL editoru - + Find - + This button opens the search bar of the editor - + Ctrl+F - - + + Find or replace text in SQL editor Najít a nahradit text v SQL editoru - + Find or replace - + This button opens the find/replace dialog for the current editor tab - + Ctrl+H - + Export to &CSV Export do CSV - + Export to &JSON - + Save as &view Uložit jako pohled - + Save as view Uložit jako pohled - + Shows or hides the Project toolbar. Zobrazit nebo skrýt lištu projektu - + Extra DB Toolbar Extra DB Toolbar - + &Open Database - + New In-&Memory Database - + Drag && Drop SELECT Query - - + + When dragging fields from the same table or a single table, drop a SELECT query into the editor - + Drag && Drop Qualified Names - - + + Use qualified names (e.g. "Table"."Field") when dragging the objects and dropping them into the editor - + Drag && Drop Enquoted Names - - + + Use escaped identifiers (e.g. "Table1") when dragging the objects and dropping them into the editor - + &Integrity Check - + Runs the integrity_check pragma over the opened database and returns the results in the Execute SQL tab. This pragma does an integrity check of the entire database. - + &Foreign-Key Check - + Runs the foreign_key_check pragma over the opened database and returns the results in the Execute SQL tab - + &Quick Integrity Check - + Run a quick integrity check over the open DB - + Runs the quick_check pragma over the opened database and returns the results in the Execute SQL tab. This command does most of the checking of PRAGMA integrity_check but runs much faster. - + &Optimize - + Attempt to optimize the database - + Runs the optimize pragma over the opened database. This pragma might perform optimizations that will improve the performance of future queries. - - + + Print Tisk - + Print text from current SQL editor tab - + Open a dialog for printing the text in the current SQL editor tab - + Print the structure of the opened database - + Open a dialog for printing the structure of the opened database - + &Save Project As... - - - + + + Save the project in a file selected in a dialog - + Save A&ll - - - + + + Save DB file, project file and opened SQL files - + Ctrl+Shift+S - - + + Ctrl+Shift+W - + Table from CSV data in Clipboard... - + This treats the current clipboard contents as a CSV file and opens the same import wizard that is used for importing CSV data from a file. - + Show &Row Counts - + This shows the number of rows for each table and view in the database. - + Save Database &As... - + Save the current database as a different file - + Refresh Obnovit - + Reload the database structure - + &Recently opened &Nedávno otevřené - + Ctrl+T @@ -3483,87 +3642,87 @@ You can drag SQL statements from an object row and drop them into other applicat - + Un/comment block of SQL code - + Un/comment block - + Comment or uncomment current line or selected block of code - + Comment or uncomment the selected lines or the current line, when there is no selection. All the block is toggled according to the first line. - + Ctrl+/ - + Stop SQL execution - + Stop execution - + Stop the currently running SQL script - + Warning: this pragma is not readable and this value has been inferred. Writing the pragma might overwrite a redefined LIKE provided by an SQLite extension. - + Too&ls Nástroje - + SQL &Log SQL &Log - + Show S&QL submitted by - + Error Log - + This button clears the contents of the SQL logs - + This panel lets you examine a log of all SQL commands issued by the application or by yourself - + &Plot - + This is the structure of the opened database. You can drag multiple object names from the Name column and drop them into the SQL editor and you can adjust the properties of the dropped names using the context menu. This would help you in composing SQL statements. You can drag SQL statements from the Schema column and drop them into the SQL editor or into other applications. @@ -3571,609 +3730,609 @@ You can drag SQL statements from the Schema column and drop them into the SQL ed - + &Remote Vzdálené - - + + Project Toolbar - + Extra DB toolbar Extra DB toolbar - - - + + + Close the current database file - - + + Ctrl+F4 - + &Revert Changes Vrátit Změny - + &Write Changes Zapsat Změny - + &Database from SQL file... Databáze z SQL souboru... - + &Table from CSV file... Tabulka ze souboru CSV... - + &Database to SQL file... Databáze do souboru SQL... - + &Table(s) as CSV file... Tabulka/ky jako soubor CSV... - + &Create Table... Vytvořit Tabulku... - + &Delete Table... Smazat Tabulku... - + &Modify Table... Upravit Tabulku... - + Create &Index... Vytvořit Index... - + W&hat's This? Co je toto? - + &About O - + This button opens a new tab for the SQL editor - + &Execute SQL &Provést příkaz SQL - + Execute all/selected SQL Provést všechny/vybrané SQL - + This button executes the currently selected SQL statements. If no text is selected, all SQL statements are executed. - - - + + + Save SQL file Uložit SQL soubor - + &Load Extension... Načíst rozšíření... - + Ctrl+E - + Export as CSV file Exportovat jako soubor CSV - + Export table as comma separated values file Exportovat tabulku do souboru jako hodnoty oddělené čárkami - - + + Save the current session to a file Uložit aktuální session do souboru - + Open &Project... Otevřít projekt... - - + + Load a working session from a file - - + + Save SQL file as Uložit soubor SQL jako - + This button saves the content of the current SQL editor tab to a file - + &Browse Table &Prohlížet Tabulku - + Copy Create statement Kopírovat příkaz Create - + Copy the CREATE statement of the item to the clipboard Zkopírovat do schránky příkaz CREATE - + Ctrl+Return - + Ctrl+L - - + + Ctrl+P - + Ctrl+D - + Ctrl+I - + Encrypted Šifrováno - + Read only Pouze pro čtení - + Database file is read only. Editing the database is disabled. Soubor databáze je určen pouze pro čtení. Úprava databáze je zakázána. - + Database encoding Kódování databáze - + Database is encrypted using SQLCipher Databáze je šifrována přes SQLCipher - - + + Choose a database file Vyberte soubor databáze - - - + + + Choose a filename to save under Vyberte název souboru pro uložení - + Error while saving the database file. This means that not all changes to the database were saved. You need to resolve the following error first. %1 - + Are you sure you want to undo all changes made to the database file '%1' since the last save? Jste si jisti, že chcete vrátit zpět všechny provedené změny v databázi '%1' od posledního uložení? - + Choose a file to import Vyberte soubor pro import - + &%1 %2%3 &%1 %2%3 - + (read only) - + Open Database or Project - + Attach Database... - + Import CSV file(s)... - + Do you want to save the changes made to SQL tabs in the project file '%1'? - + Text files(*.sql *.txt);;All files(*) Textové soubory(*.sql *.txt);;Všechny soubory(*) - + Do you want to create a new database file to hold the imported data? If you answer no we will attempt to import the data in the SQL file to the current database. - + You are still executing SQL statements. Closing the database now will stop their execution, possibly leaving the database in an inconsistent state. Are you sure you want to close the database? - + Do you want to save the changes made to the project file '%1'? - + File %1 already exists. Please choose a different name. Soubor %1 již existuje. Vyberte jiný název, prosím. - + Error importing data: %1 Chyba při importu dat: %1 - + Import completed. Import dokončen. - + Delete View Smazat Pohled - + Modify View - + Delete Trigger Smazat Spoušť - + Modify Trigger - + Delete Index Smazat Index - + Modify Index Změnit Index - + Modify Table Změnit tabulku - + Do you want to save the changes made to SQL tabs in a new project file? - + Do you want to save the changes made to the SQL file %1? - + Could not find resource file: %1 - + Choose a project file to open Vybrat soubor projektu k otevření - + Could not open project file for writing. Reason: %1 - + Busy (%1) - + Setting PRAGMA values will commit your current transaction. Are you sure? - + Ctrl+Tab - + Ctrl+Shift+Tab - + Clear List - + Window Layout - + Reset Window Layout - + Simplify Window Layout - - Shift+Alt+0 + + Alt+Shift+0 - + Dock Windows at Bottom - + Dock Windows at Left Side - + Dock Windows at Top - - The database is currenctly busy. + + The database is currently busy. - + Click here to interrupt the currently running query. - + Ctrl+Alt+W - + Could not open database file. Reason: %1 - + In-Memory database - + Choose a database file to save under - + Error while saving the database to the new file. - + Are you sure you want to delete the table '%1'? All data associated with the table will be lost. - + Are you sure you want to delete the view '%1'? - + Are you sure you want to delete the trigger '%1'? - + Are you sure you want to delete the index '%1'? - + Error: could not delete the table. - + Error: could not delete the view. - + Error: could not delete the trigger. - + Error: could not delete the index. - + Message from database engine: %1 - + Editing the table requires to save all pending changes now. Are you sure you want to save the database? - + Edit View %1 - + Edit Trigger %1 - + You are already executing SQL statements. Do you want to stop them in order to execute the current statements instead? Note that this might leave the database in an inconsistent state. - + -- EXECUTING SELECTION IN '%1' -- - + -- EXECUTING LINE IN '%1' -- - + -- EXECUTING ALL IN '%1' -- - - + + At line %1: - + Result: %1 - + Result: %2 - + Setting PRAGMA values or vacuuming will commit your current transaction. Are you sure? - + Opened '%1' in read-only mode from recent file list - + Opened '%1' from recent file list - + Select the action to apply to the dropped file(s). <br/>Note: only 'Import' will process more than one file. Note for translation: Although there is no %n in the original, you can use the numerus-form to adjust 'files(s)' and remove the note when n = 1. Including %n in the translation will also work. @@ -4183,215 +4342,215 @@ Are you sure? - + The statements in the tab '%1' are still executing. Closing the tab will stop the execution. This might leave the database in an inconsistent state. Are you sure you want to close the tab? - + DB file '%1' could not be opened - + This project file is using an old file format because it was created using DB Browser for SQLite version 3.10 or lower. Loading this file format is no longer fully supported. If you want to load it completely, please use DB Browser for SQLite version 3.12 to convert it to the new file format. - + Table '%1' not found; settings ignored - + -- Reference to file "%1" (not supported by this version) -- - + Yes. Don't ask again - + This action will open a new SQL tab with the following statements for you to edit and run: - + Rename Tab - + Duplicate Tab - + Close Tab - + Opening '%1'... - + There was an error opening '%1'... - + Value is not a valid URL or filename: %1 - + %1 rows returned in %2ms - + Automatically load the last opened DB file at startup - + Ctrl+Alt+0 - + Choose text files Vybrat textové soubory - + Import completed. Some foreign key constraints are violated. Please fix them before saving. - + Select SQL file to open Vyberte soubor SQL k otevření - + Select file name Vyberte název souboru - + Select extension file Vyberte soubor s rozšířením - + Extension successfully loaded. Rozšíření bylo úspěšně načteno. - + Error loading extension: %1 Chyba při načítání přípony: %1 - - + + Don't show again Znovu nezobrazovat - + New version available. Dostupná nová verze. - + A new DB Browser for SQLite version is available (%1.%2.%3).<br/><br/>Please download at <a href='%4'>%4</a>. Nová verze DB Browseru pro SQLite je nyní dostupná (%1.%2.%3).<br/><br/>Stáhněte ji prosím na <a href='%4'>%4</a>. - + Project saved to file '%1' - + Collation needed! Proceed? Je potřeba provést collation! Potvrdit? - + A table in this database requires a special collation function '%1' that this application can't provide without further knowledge. If you choose to proceed, be aware bad things can happen to your database. Create a backup! - + creating collation - + Set a new name for the SQL tab. Use the '&&' character to allow using the following character as a keyboard shortcut. - + Please specify the view name Specifikujte název pohledu, prosím - + There is already an object with that name. Please choose a different name. Objekt s tímto názvem již existuje. Vyberte jiný název, prosím. - + View successfully created. Pohled byl úspěšně vytvořen. - + Error creating view: %1 Chyba při vytváření pohledu: %1 - + This action will open a new SQL tab for running: - + Press Help for opening the corresponding SQLite reference page. - + DB Browser for SQLite project file (*.sqbpro) DB Browser pro SQLite project file (*.sqbpro) - + Error checking foreign keys after table modification. The changes will be reverted. - + This table did not pass a foreign-key check.<br/>You should run 'Tools | Foreign-Key Check' and fix the reported issues. - + Execution finished with errors. - + Execution finished without errors. @@ -4580,101 +4739,106 @@ Select the axes or axes labels to drag and zoom only in that orientation. - + Load all data and redraw plot - - - + + + Row # Řádek # - + Copy Kopírovat - + Print... Tisk... - + + Help + + + + Show legend Zobrazit legendu - + Stacked bars - + Fixed number format - + Date/Time Datum/čas - + Date Datum - + Time Čas - - + + Numeric - + Label Štítek - + Invalid - + Load all data and redraw plot. Warning: not all data has been fetched from the table yet due to the partial fetch mechanism. - + Choose an axis color Vyberte barvu osy - + Choose a filename to save under Vyberte název souboru pro uložení - + PNG(*.png);;JPG(*.jpg);;PDF(*.pdf);;BMP(*.bmp);;All Files(*) PNG(*.png);;JPG(*.jpg);;PDF(*.pdf);;BMP(*.bmp);;Všechny Soubory(*) - + There are curves in this plot and the selected line style can only be applied to graphs sorted by X. Either sort the table or query by X to remove curves or select one of the styles supported by curves: None or Line. - + Loading all remaining data for this table took %1ms. @@ -5398,1970 +5562,393 @@ Can be set to 0 for disabling completion. Serial number - Sériové číslo - - - - Your certificates - Vaše certifikáty - - - - File - Soubor - - - - Subject Common Name - - - - - Issuer CN - - - - - Issuer Common Name - - - - - Clone databases into - - - - - - Choose a directory - Vyberte složku - - - - - The language will change after you restart the application. - Jazyk bude změněn po restartu aplikace. - - - - Select extension file - Vybrat soubor rozšíření - - - - Extensions(*.so *.dylib *.dll);;All files(*) - - - - - Import certificate file - Importovat soubor certifikátu - - - - No certificates found in this file. - V tomto souboru nebyly nalezeny žádné certifikáty. - - - - Are you sure you want do remove this certificate? All certificate data will be deleted from the application settings! - Opravdu chcete smazat tento certifikát? Všechny data certifikátu budou smazány z nastavení aplikace! - - - - Are you sure you want to clear all the saved settings? -All your preferences will be lost and default values will be used. - - - - - Save Settings File - - - - - - Initialization File (*.ini) - - - - - The settings file has been saved in location : - - - - - - Open Settings File - - - - - The settings file was loaded properly. - - - - - The selected settings file is not a normal settings file. -Please check again. - - - - - ProxyDialog - - - Proxy Configuration - - - - - Pro&xy Type - - - - - Host Na&me - - - - - Port - - - - - Authentication Re&quired - - - - - &User Name - - - - - Password - - - - - None - Žádná - - - - System settings - - - - - HTTP - - - - - Socks v5 - - - - - QObject - - - Error importing data - Chyba při importu dat - - - - from record number %1 - ze záznamu číslo %1 - - - - . -%1 - . -%1 - - - - Importing CSV file... - - - - - Cancel - Zrušit - - - - All files (*) - Všechny soubory (*) - - - - SQLite database files (*.db *.sqlite *.sqlite3 *.db3) - - - - - Left - - - - - Right - - - - - Center - - - - - Justify - - - - - SQLite Database Files (*.db *.sqlite *.sqlite3 *.db3) - - - - - DB Browser for SQLite Project Files (*.sqbpro) - - - - - SQL Files (*.sql) - - - - - All Files (*) - - - - - Text Files (*.txt) - - - - - Comma-Separated Values Files (*.csv) - - - - - Tab-Separated Values Files (*.tsv) - - - - - Delimiter-Separated Values Files (*.dsv) - - - - - Concordance DAT files (*.dat) - - - - - JSON Files (*.json *.js) - - - - - XML Files (*.xml) - - - - - Binary Files (*.bin *.dat) - - - - - SVG Files (*.svg) - - - - - Hex Dump Files (*.dat *.bin) - - - - - Extensions (*.so *.dylib *.dll) - - - - - Initialization File (*.ini) - - - - - QsciCommand - - - Move down one line - - - - - Extend selection down one line - - - - - Extend rectangular selection down one line - - - - - Scroll view down one line - - - - - Move up one line - - - - - Extend selection up one line - - - - - Extend rectangular selection up one line - - - - - Scroll view up one line - - - - - Scroll to start of document - - - - - Scroll to end of document - - - - - Scroll vertically to centre current line - - - - - Move down one paragraph - - - - - Extend selection down one paragraph - - - - - Move up one paragraph - - - - - Extend selection up one paragraph - - - - - Move left one character - - - - - Extend selection left one character - - - - - Extend rectangular selection left one character - - - - - Move right one character - - - - - Extend selection right one character - - - - - Extend rectangular selection right one character - - - - - Move left one word - - - - - Extend selection left one word - - - - - Move right one word - - - - - Extend selection right one word - - - - - Move to end of previous word - - - - - Extend selection to end of previous word - - - - - Move to end of next word - - - - - Extend selection to end of next word - - - - - Move left one word part - - - - - Extend selection left one word part - - - - - Move right one word part - - - - - Extend selection right one word part - - - - - Move to start of document line - - - - - Extend selection to start of document line - - - - - Extend rectangular selection to start of document line - - - - - Move to start of display line - - - - - Extend selection to start of display line - - - - - Move to start of display or document line - - - - - Extend selection to start of display or document line - - - - - Move to first visible character in document line - - - - - Extend selection to first visible character in document line - - - - - Extend rectangular selection to first visible character in document line - - - - - Move to first visible character of display in document line - - - - - Extend selection to first visible character in display or document line - - - - - Move to end of document line - - - - - Extend selection to end of document line - - - - - Extend rectangular selection to end of document line - - - - - Move to end of display line - - - - - Extend selection to end of display line - - - - - Move to end of display or document line - - - - - Extend selection to end of display or document line - - - - - Move to start of document - - - - - Extend selection to start of document - - - - - Move to end of document - - - - - Extend selection to end of document - - - - - Move up one page - - - - - Extend selection up one page - - - - - Extend rectangular selection up one page - - - - - Move down one page - - - - - Extend selection down one page - - - - - Extend rectangular selection down one page - - - - - Stuttered move up one page - - - - - Stuttered extend selection up one page - - - - - Stuttered move down one page - - - - - Stuttered extend selection down one page - - - - - Delete current character - - - - - Delete previous character - - - - - Delete previous character if not at start of line - - - - - Delete word to left - - - - - Delete word to right - - - - - Delete right to end of next word - - - - - Delete line to left - - - - - Delete line to right - - - - - Delete current line - - - - - Cut current line - - - - - Copy current line - - - - - Transpose current and previous lines - - - - - Duplicate the current line - - - - - Select all - - - - - Move selected lines up one line - - - - - Move selected lines down one line - - - - - Duplicate selection - - - - - Convert selection to lower case - - - - - Convert selection to upper case - - - - - Cut selection - - - - - Copy selection - - - - - Paste - Vložit - - - - Toggle insert/overtype - - - - - Insert newline - - - - - Formfeed - - - - - Indent one level - - - - - De-indent one level - - - - - Cancel - Zrušit - - - - Undo last command - - - - - Redo last command - - - - - Zoom in - - - - - Zoom out - - - - - QsciLexerCPP - - - Default - Výchozí - - - - Inactive default - - - - - C comment - - - - - Inactive C comment - - - - - C++ comment - - - - - Inactive C++ comment - - - - - JavaDoc style C comment - - - - - Inactive JavaDoc style C comment - - - - - Number - - - - - Inactive number - - - - - Keyword - Klíčové slovo - - - - Inactive keyword - - - - - Double-quoted string - - - - - Inactive double-quoted string - - - - - Single-quoted string - - - - - Inactive single-quoted string - - - - - IDL UUID - - - - - Inactive IDL UUID - - - - - Pre-processor block - - - - - Inactive pre-processor block - - - - - Operator - - - - - Inactive operator - - - - - Identifier - Identifikátor - - - - Inactive identifier - - - - - Unclosed string - - - - - Inactive unclosed string - - - - - C# verbatim string - - - - - Inactive C# verbatim string - - - - - JavaScript regular expression - - - - - Inactive JavaScript regular expression - - - - - JavaDoc style C++ comment - - - - - Inactive JavaDoc style C++ comment - - - - - Secondary keywords and identifiers - - - - - Inactive secondary keywords and identifiers - - - - - JavaDoc keyword - - - - - Inactive JavaDoc keyword - - - - - JavaDoc keyword error - - - - - Inactive JavaDoc keyword error - - - - - Global classes and typedefs - - - - - Inactive global classes and typedefs - - - - - C++ raw string - - - - - Inactive C++ raw string - - - - - Vala triple-quoted verbatim string - - - - - Inactive Vala triple-quoted verbatim string - - - - - Pike hash-quoted string - - - - - Inactive Pike hash-quoted string - - - - - Pre-processor C comment - - - - - Inactive pre-processor C comment - - - - - JavaDoc style pre-processor comment - - - - - Inactive JavaDoc style pre-processor comment - - - - - User-defined literal - - - - - Inactive user-defined literal - - - - - Task marker - - - - - Inactive task marker - - - - - Escape sequence - - - - - Inactive escape sequence - - - - - QsciLexerHTML - - - HTML default - - - - - Tag - - - - - Unknown tag - - - - - Attribute - - - - - Unknown attribute - - - - - HTML number - - - - - HTML double-quoted string - - - - - HTML single-quoted string - - - - - Other text in a tag - - - - - HTML comment - - - - - Entity - - - - - End of a tag - - - - - Start of an XML fragment - - - - - End of an XML fragment - - - - - Script tag - - - - - Start of an ASP fragment with @ - - - - - Start of an ASP fragment - - - - - CDATA - - - - - Start of a PHP fragment - - - - - Unquoted HTML value - - - - - ASP X-Code comment - - - - - SGML default - - - - - SGML command - - - - - First parameter of an SGML command - - - - - SGML double-quoted string - - - - - SGML single-quoted string - - - - - SGML error - - - - - SGML special entity - - - - - SGML comment - - - - - First parameter comment of an SGML command - - - - - SGML block default - - - - - Start of a JavaScript fragment - - - - - JavaScript default - - - - - JavaScript comment - - - - - JavaScript line comment - - - - - JavaDoc style JavaScript comment - - - - - JavaScript number - - - - - JavaScript word - - - - - JavaScript keyword - - - - - JavaScript double-quoted string - - - - - JavaScript single-quoted string - - - - - JavaScript symbol - - - - - JavaScript unclosed string - - - - - JavaScript regular expression - - - - - Start of an ASP JavaScript fragment - - - - - ASP JavaScript default - - - - - ASP JavaScript comment - - - - - ASP JavaScript line comment - - - - - JavaDoc style ASP JavaScript comment - - - - - ASP JavaScript number - - - - - ASP JavaScript word - - - - - ASP JavaScript keyword - - - - - ASP JavaScript double-quoted string - - - - - ASP JavaScript single-quoted string - - - - - ASP JavaScript symbol - - - - - ASP JavaScript unclosed string - - - - - ASP JavaScript regular expression - - - - - Start of a VBScript fragment - - - - - VBScript default - - - - - VBScript comment - - - - - VBScript number - - - - - VBScript keyword - - - - - VBScript string - - - - - VBScript identifier - - - - - VBScript unclosed string - - - - - Start of an ASP VBScript fragment - - - - - ASP VBScript default - - - - - ASP VBScript comment - - - - - ASP VBScript number - - - - - ASP VBScript keyword - - - - - ASP VBScript string - - - - - ASP VBScript identifier - - - - - ASP VBScript unclosed string - - - - - Start of a Python fragment - - - - - Python default - - - - - Python comment - - - - - Python number - - - - - Python double-quoted string - - - - - Python single-quoted string - - - - - Python keyword - - - - - Python triple double-quoted string - - - - - Python triple single-quoted string - - - - - Python class name - - - - - Python function or method name - - - - - Python operator - - - - - Python identifier - - - - - Start of an ASP Python fragment - - - - - ASP Python default - - - - - ASP Python comment - + Sériové číslo - - ASP Python number - + + Your certificates + Vaše certifikáty - - ASP Python double-quoted string - + + File + Soubor - - ASP Python single-quoted string + + Subject Common Name - - ASP Python keyword + + Issuer CN - - ASP Python triple double-quoted string + + Issuer Common Name - - ASP Python triple single-quoted string + + Clone databases into - - ASP Python class name - + + + Choose a directory + Vyberte složku - - ASP Python function or method name - + + + The language will change after you restart the application. + Jazyk bude změněn po restartu aplikace. - - ASP Python operator - + + Select extension file + Vybrat soubor rozšíření - - ASP Python identifier + + Extensions(*.so *.dylib *.dll);;All files(*) - - PHP default - + + Import certificate file + Importovat soubor certifikátu - - PHP double-quoted string - + + No certificates found in this file. + V tomto souboru nebyly nalezeny žádné certifikáty. - - PHP single-quoted string - + + Are you sure you want do remove this certificate? All certificate data will be deleted from the application settings! + Opravdu chcete smazat tento certifikát? Všechny data certifikátu budou smazány z nastavení aplikace! - - PHP keyword + + Are you sure you want to clear all the saved settings? +All your preferences will be lost and default values will be used. - - PHP number + + Save Settings File - - PHP variable + + + Initialization File (*.ini) - - PHP comment + + The settings file has been saved in location : + - - PHP line comment + + Open Settings File - - PHP double-quoted variable + + The settings file was loaded properly. - - PHP operator + + The selected settings file is not a normal settings file. +Please check again. - QsciLexerJSON - - - Default - Výchozí - - - - Number - - - - - String - String - - - - Unclosed string - - + ProxyDialog - - Property + + Proxy Configuration - - Escape sequence + + Pro&xy Type - - Line comment + + Host Na&me - - Block comment + + Port - - Operator + + Authentication Re&quired - - IRI + + &User Name - - JSON-LD compact IRI + + Password - - JSON keyword - + + None + Žádná - - JSON-LD keyword + + System settings - - Parsing error + + HTTP - - - QsciLexerJavaScript - - Regular expression + + SOCKS5 - QsciLexerPython + QObject - - Default - Výchozí + + Error importing data + Chyba při importu dat - - Comment - Komentář + + from record number %1 + ze záznamu číslo %1 - - Number - + + . +%1 + . +%1 - - Double-quoted string + + Importing CSV file... - - Single-quoted string - + + Cancel + Zrušit - - Keyword - Klíčové slovo + + All files (*) + Všechny soubory (*) - - Triple single-quoted string + + SQLite database files (*.db *.sqlite *.sqlite3 *.db3) - - Triple double-quoted string + + Left - - Class name + + Right - - Function or method name + + Center - - Operator + + Justify - - Identifier - Identifikátor - - - - Comment block + + SQLite Database Files (*.db *.sqlite *.sqlite3 *.db3) - - Unclosed string + + DB Browser for SQLite Project Files (*.sqbpro) - - Highlighted identifier + + SQL Files (*.sql) - - Decorator + + All Files (*) - - Double-quoted f-string + + Text Files (*.txt) - - Single-quoted f-string + + Comma-Separated Values Files (*.csv) - - Triple single-quoted f-string + + Tab-Separated Values Files (*.tsv) - - Triple double-quoted f-string + + Delimiter-Separated Values Files (*.dsv) - - - QsciLexerSQL - - - Default - Výchozí - - - - Comment - Komentář - - - Comment line + + Concordance DAT files (*.dat) - - JavaDoc style comment + + JSON Files (*.json *.js) - - Number + + XML Files (*.xml) - - Keyword - Klíčové slovo - - - - Double-quoted string + + Binary Files (*.bin *.dat) - - Single-quoted string + + SVG Files (*.svg) - - SQL*Plus keyword + + Hex Dump Files (*.dat *.bin) - - SQL*Plus prompt + + Extensions (*.so *.dylib *.dll) - - Operator + + Initialization File (*.ini) + + + QsciCommand - - Identifier - Identifikátor + Paste + Vložit - - SQL*Plus comment - + Cancel + Zrušit + + + QsciLexerCPP - - # comment line - + Default + Výchozí - - JavaDoc keyword - + Keyword + Klíčové slovo - - JavaDoc keyword error - + Identifier + Identifikátor + + + QsciLexerJSON - - User defined 1 - + Default + Výchozí - - User defined 2 - + String + String + + + QsciLexerPython - - User defined 3 - + Default + Výchozí - - User defined 4 - + Comment + Komentář - - Quoted identifier - + Keyword + Klíčové slovo - - Quoted operator - + Identifier + Identifikátor - QsciScintilla - - - &Undo - - - - - &Redo - - + QsciLexerSQL - - Cu&t - + Default + Výchozí - - &Copy - + Comment + Komentář - - &Paste - + Keyword + Klíčové slovo - - Delete - + Identifier + Identifikátor + + + QsciScintilla - Select All - Vybrat vše + Vybrat vše @@ -7749,26 +6336,26 @@ Are you sure you want to proceed? - + Cancel Zrušit - + Uploading remote database to %1 Nahrávám vzdálenou databázi do %1. {1?} - + Downloading remote database from %1 Stahuji vzdálenou databázi z %1. {1?} - + Error: Cannot open the file for sending. Chyba: Nemohu otevřít soubor k odeslání. @@ -8501,31 +7088,31 @@ Use of this function must be authorized from Preferences. načítání... - + References %1(%2) Hold %3Shift and click to jump there - + Error changing data: %1 Chyba při změně dat: %1 - + retrieving list of columns - + Fetching data... Načítám data... - - + + Cancel Zrušit @@ -8856,12 +7443,12 @@ Hold %3Shift and click to jump there - <html><head/><body><p>This button creates a new record in the database. Hold the mouse button to open a pop-up menu of different options:</p><ul><li><span style=" font-weight:600;">New Record</span>: insert a new record with default values in the database.</li><li><span style=" font-weight:600;">Insert Values...</span>: open a dialog for entering values before they are inserted in the database. This allows to enter values acomplishing the different constraints. This dialog is also open if the <span style=" font-weight:600;">New Record</span> option fails due to these constraints.</li></ul></body></html> + <html><head/><body><p>This button creates a new record in the database. Hold the mouse button to open a pop-up menu of different options:</p><ul><li><span style=" font-weight:600;">New Record</span>: insert a new record with default values in the database.</li><li><span style=" font-weight:600;">Insert Values...</span>: open a dialog for entering values before they are inserted in the database. This allows to enter values accomplishing the different constraints. This dialog is also open if the <span style=" font-weight:600;">New Record</span> option fails due to these constraints.</li></ul></body></html> - + Delete Record Smazat záznam @@ -8938,7 +7525,7 @@ Hold %3Shift and click to jump there - <html><head/><body><p>This popup menu provides the following options applying to the currently browsed and filtered table:</p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Export to CSV: this option exports the data of the browsed table as currently displayed (after filters, display formats and order column) to a CSV file.</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Save as view: this option saves the current setting of the browsed table (filters, display formats and order column) as an SQL view that you can later browse or use in SQL statements.</li></ul></body></html> + <html><head/><body><p>This pop-up menu provides the following options applying to the currently browsed and filtered table:</p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Export to CSV: this option exports the data of the browsed table as currently displayed (after filters, display formats and order column) to a CSV file.</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Save as view: this option saves the current setting of the browsed table (filters, display formats and order column) as an SQL view that you can later browse or use in SQL statements.</li></ul></body></html> @@ -8963,7 +7550,7 @@ Hold %3Shift and click to jump there - + Set encoding Nastavit kódování @@ -9230,96 +7817,96 @@ Hold %3Shift and click to jump there - + Conditional formats for "%1" - + determining row count... - + %L1 - %L2 of >= %L3 - + %L1 - %L2 of %L3 - + (clipped at %L1 rows) - + Please enter a pseudo-primary key in order to enable editing on this view. This should be the name of a unique column in the view. - + Delete Records - + Duplicate records - + Duplicate record - + Ctrl+" - + Adjust rows to contents - + Error deleting record: %1 Chyba při mazání záznamu: %1 - + Please select a record first Prosím vyberte záznam jako první - + Please choose a new encoding for all tables. Vyberte nové kódování pro všechny tabulky, prosím. - + Please choose a new encoding for this table. Vyberte nové kódování pro tuto tabulku, prosím. - + %1 Leave the field empty for using the database encoding. %1 Pro použití kódování databáze ponechte pole prázdné. - + This encoding is either not valid or not supported. Toto kódování není buď platné, nebo podporováno. - + %1 replacement(s) made. @@ -9347,24 +7934,6 @@ Pro použití kódování databáze ponechte pole prázdné. - - UndoStack - - - Inserting %1 bytes - - - - - Delete %1 chars - - - - - Overwrite %1 chars - - - VacuumDialog diff --git a/src/translations/sqlb_de.ts b/src/translations/sqlb_de.ts index 5a2a2f69a..68d09b3aa 100644 --- a/src/translations/sqlb_de.ts +++ b/src/translations/sqlb_de.ts @@ -15,8 +15,8 @@ - <html><head/><body><p>DB Browser for SQLite is an open source, freeware visual tool used to create, design and edit SQLite database files.</p><p>It is bi-licensed under the Mozilla Public License Version 2, as well as the GNU General Public License Version 3 or later. You can modify or redistribute it under the conditions of these licenses.</p><p>See <a href="https://www.gnu.org/licenses/gpl.html"><span style=" text-decoration: underline; color:#0000ff;">http://www.gnu.org/licenses/gpl.html</span></a> and <a href="https://www.mozilla.org/MPL/2.0/index.txt"><span style=" text-decoration: underline; color:#0000ff;">https://www.mozilla.org/MPL/2.0/index.txt</span></a> for details.</p><p>For more information on this program please visit our website at: <a href="https://sqlitebrowser.org"><span style=" text-decoration: underline; color:#0000ff;">http://sqlitebrowser.org</span></a></p><p><span style=" font-size:small;">This software uses the GPL/LGPL Qt Toolkit from </span><a href="http://qt-project.org/"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://qt-project.org/</span></a><span style=" font-size:small;"><br/>See </span><a href="https://doc.qt.io/qt-5/licensing.html"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://qt-project.org/doc/qt-5/licensing.html</span></a><span style=" font-size:small;"> for licensing terms and information.</span></p><p><span style=" font-size:8pt;">We use the nalgeon/sqlean library for SQLite extensions support.<br/>This library is licensed under the MIT license, see the following for more information:<br/></span><a href="https://github.com/nalgeon/sqlean"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">https://github.com/nalgeon/sqlean</span></a></p><p><span style=" font-size:small;">It also uses the Pastel SVG icon set by Michael Buckley under a Creative Commons Attribution Share Alike 4.0 license.<br/>See </span><a href="https://codefisher.org/pastel-svg/"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://codefisher.org/pastel-svg/</span></a><span style=" font-size:small;"> for details.</span></p></body></html> - + <html><head/><body><p>DB Browser for SQLite is an open source, freeware visual tool used to create, design and edit SQLite database files.</p><p>It is bi-licensed under the Mozilla Public License Version 2, as well as the GNU General Public License Version 3 or later. You can modify or redistribute it under the conditions of these licenses.</p><p>See <a href="https://www.gnu.org/licenses/gpl.html"><span style=" text-decoration: underline; color:#0000ff;">https://www.gnu.org/licenses/gpl.html</span></a> and <a href="https://www.mozilla.org/MPL/2.0/index.txt"><span style=" text-decoration: underline; color:#0000ff;">https://www.mozilla.org/MPL/2.0/index.txt</span></a> for details.</p><p>For more information on this program please visit our website at: <a href="https://sqlitebrowser.org"><span style=" text-decoration: underline; color:#0000ff;">https://sqlitebrowser.org</span></a></p><p><span style=" font-size:small;">This software uses the GPL/LGPL Qt Toolkit from </span><a href="https://qt-project.org/"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://qt-project.org/</span></a><span style=" font-size:small;"><br/>See </span><a href="https://doc.qt.io/qt-5/licensing.html"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://doc.qt.io/qt-5/licensing.html</span></a><span style=" font-size:small;"> for licensing terms and information.</span></p><p><span style=" font-size:8pt;">We use the nalgeon/sqlean library for SQLite extensions support.<br/>This library is licensed under the MIT license, see the following for more information:<br/></span><a href="https://github.com/nalgeon/sqlean"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">https://github.com/nalgeon/sqlean</span></a></p><p><span style=" font-size:small;">It also uses the Pastel SVG icon set by Michael Buckley under a Creative Commons Attribution Share Alike 4.0 license.<br/>See </span><a href="https://codefisher.org/pastel-svg/"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://codefisher.org/pastel-svg/</span></a><span style=" font-size:small;"> for details.</span></p></body></html> + <html><head/><body><p>DB-Browser für SQLite ist eine freie Open-Source-Anwendung mit GUI zum Erstellen, Entwerfen und Bearbeiten von SQLite-Datenbanken.</p><p>Die Anwendung ist sowohl unter der Mozilla Public License Version 2 als auch der GNU General Public License Version 3 or later verfügbar. Modifikationen oder Weitergabe sind unter Beachtung der Bedingungen dieser Lizenzen möglich.</p><p>Siehe <a href="https://www.gnu.org/licenses/gpl.html"><span style=" text-decoration: underline; color:#0000ff;">https://www.gnu.org/licenses/gpl.html</span></a> und <a href="https://www.mozilla.org/MPL/2.0/index.txt"><span style=" text-decoration: underline; color:#0000ff;">https://www.mozilla.org/MPL/2.0/index.txt</span></a> für Details.</p><p>Weitere Informationen über diese Anwendung gibt es auf unserer Webseite: <a href="https://sqlitebrowser.org"><span style=" text-decoration: underline; color:#0000ff;">https://sqlitebrowser.org</span></a></p><p><span style=" font-size:small;">Diese Software verwendet das Qt-Toolkit unter der GPL/LGPL Qt Toolkit, welches unter </span><a href="https://qt-project.org/"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://qt-project.org/</span></a> verfügbar ist. <span style=" font-size:small;"><br/>Zugehörige Lizenzbedingungen und Informationen gibt es unter </span><a href="https://doc.qt.io/qt-5/licensing.html"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://doc.qt.io/qt-5/licensing.html</span></a><span style=" font-size:small;"></span></p><p><span style=" font-size:8pt;">Wir verwenden die nalgeon/sqlean-Bibliothek für die Unterstützung von SQLite-Erweiterungen.<br/>Diese Bibliothek ist unter der MIT license verfügbar; mehr Informationen gibt es unter:<br/></span><a href="https://github.com/nalgeon/sqlean"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">https://github.com/nalgeon/sqlean</span></a></p><p><span style=" font-size:small;">Zudem wird das Pastel SVG Iconset von Michael Buckley verwendet, das unter der Creative Commons Attribution Share Alike 4.0 Lizenz steht.<br/>Siehe </span><a href="https://codefisher.org/pastel-svg/"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://codefisher.org/pastel-svg/</span></a><span style=" font-size:small;"> für weitere Details.</span></p></body></html> @@ -119,203 +119,203 @@ Application - + Possible command line arguments: Mögliche Kommandozeilen-Argumente: - + The -o/--option and -O/--save-option options require an argument in the form group/setting=value Die Optionen -o/--option und -O/--save-option benötigen ein Argument der Form Gruppe/Einstellung=Wert - + The user settings file location is replaced with the argument value instead of the environment variable value. Der Dateipfad der Benutzereinstellungen wird mit dem übergebenen Argument statt der Umgebungsvariable ersetzt. - + Ignored environment variable (DB4S_SETTINGS_FILE) value: Wert der Umgebungsvariable (DB4S_SETTINGS_FILE) ignoriert: - - + + The file %1 does not exist Die Datei %1 existiert nicht - + Usage Verwendung - + options Optionen - - + + database Datenbank - - + + project Projekt - - + + csv-file CSV-Datei - + Show command line options Terminaloptionen anzeigen - + Exit application after running scripts Anwendung nach der Ausführung der Skripte beenden - - + + file Datei - + Execute this SQL file after opening the DB Nach dem Öffnen der Datenbank diese SQL-Datei ausführen - + Import this CSV file into the passed DB or into a new DB Diese CSV-Datei in die übergebene oder in eine neue Datenbank importieren - + table Tabelle - + Browse this table, or use it as target of a data import Diese Tabelle durchsuchen oder als Ziel für einen Datenimport verwenden - + Open database in read-only mode Datenbank nur für den Lesezugriff öffnen - + settings_file datei_mit_einstellungen - + Run application based on this settings file Anwendung mit dieser Einstellungsdatei ausführen - - + + group Gruppe - - + + settings Einstellungen - - + + value Wert - + Run application with this setting temporarily set to value Anwendung mit dem temporär angepassten Einstellungswert ausführen - + Run application saving this value for this setting Anwendung mit dem angepassten Einstellungswert ausführen und die Einstellung dauerhaft speichern - + Display the current version Die aktuelle Version anzeigen - + Open this SQLite database Diese SQLite-Datenbank öffnen - + Open this project file (*.sqbpro) Diese Projektdatei öffnen (*.sqbpro) - + Import this CSV file into an in-memory database Diese CSV-Datei in eine In-Memory-Datenbank importieren - - - + + + The %1 option requires an argument Die Option %1 benötigt ein Argument - + The -S/--settings option requires an argument. The option is ignored. Die Option -S/--settings benötigt ein Argument. Diese Option wird ignoriert. - + SQLite Version SQLite-Version - + SQLCipher Version %1 (based on SQLite %2) SQLCipher Version %1 (basierend auf SQLite %2) - + DB Browser for SQLite Version %1. DB-Browser für SQLite Version %1. - + Last commit hash when built: %1 Letzter Commit-Hash des Builds: %1 - + Built for %1, running on %2 Erstellt für %1, laufend unter %2 - + Qt Version %1 Qt Version %1 - - Invalid option/non-existant file: %1 + + Invalid option/non-existent file: %1 Ungültige Option/nicht vorhandene Datei: %1 @@ -392,7 +392,7 @@ Originalschlüssel - + Please set a key to encrypt the database. Note that if you change any of the other, optional, settings you'll need to re-enter them as well every time you open the database file. Leave the password fields empty to disable the encryption. @@ -403,7 +403,7 @@ Lassen Sie die Passwortfelder leer, um die Verschlüsselung zu deaktivieren. Der Verschlüsselungsprozess benötigt unter Umständen ein bisschen Zeit und Sie sollten ein Backup-Kopie Ihrer Datenbank haben! Ungespeicherte Änderungen werden vor der Änderung der Verschlüsselung übernommen. - + Please enter the key used to encrypt the database. If any of the other settings were altered for this database file you need to provide this information as well. Geben Sie bitte den zur Verschlüsselung der Datenbank genutzten Schlüssel ein. @@ -428,92 +428,92 @@ Wenn weitere Einstellungen für diese Datenbankdatei vorgenommen worden sind, m Wählen Sie ein Anzeigeformat für die Spalte '%1', das bei der Anzeige eines jeden Wertes angewendet wird. - + Default Voreinstellung - + Decimal number Dezimalzahl - + Exponent notation Exponentennotation - + Hex blob Hex-Blob - + Hex number Hexwert - + Apple NSDate to date Apple NSDate zu Datum - + Java epoch (milliseconds) to date Java-Epoche (Millisekunden) zu Datum - + .NET DateTime.Ticks to date .NET DateTime.Ticks zu Datum - + Julian day to date Julianischer Tag zu Datum - + Unix epoch to local time Unix-Epoche zu lokaler Zeit - + WebKit / Chromium epoch to date - + WebKit-/Chromium-Epoche zu Datum - + WebKit / Chromium epoch to local time - + WebKit-/Chromium-Epoche zu lokaler Zeit - + Date as dd/mm/yyyy Datum als dd/mm/yyyy - + Lower case Kleinschreibung - + Binary GUID to text Binäre GUID zu Text - + SpatiaLite Geometry to SVG SpatiaLite-Geometrie zu SVG - + Custom display format must contain a function call applied to %1 Benutzerdefinierte Darstellungsformate benötigen einen Funktionsaufruf, der auf %1 angewendet wird - + Error in custom display format. Message from database engine: %1 @@ -522,37 +522,37 @@ Wenn weitere Einstellungen für diese Datenbankdatei vorgenommen worden sind, m %1 - + Custom display format must return only one column but it returned %1. Das benutzerdefinierte Anzeigeformat darf nur eine Spalte zurückgeben, es wurde aber %1 zurückgegeben. - + Octal number Oktalwert - + Round number Gerundeter Wert - + Unix epoch to date Unix-Epoche zu Datum - + Upper case Großschreibung - + Windows DATE to date Windows DATUM zu Datum - + Custom Benutzerdefiniert @@ -679,166 +679,166 @@ Wenn weitere Einstellungen für diese Datenbankdatei vorgenommen worden sind, m DBBrowserDB - + Please specify the database name under which you want to access the attached database Geben Sie bitte einen Datenbanknamen an, mit dem Sie auf die anhängte Datenbank zugreifen möchten - + Invalid file format Ungültiges Dateiformat - + Do you want to save the changes made to the database file %1? Sollen die getätigten Änderungen an der Datenbankdatei %1 gespeichert werden? - + Exporting database to SQL file... Datenbank in SQL-Datei exportieren... - - + + Cancel Abbrechen - + Executing SQL... SQL ausführen... - + Action cancelled. Vorgang abgebrochen. - + Do you really want to close this temporary database? All data will be lost. Möchten Sie diese temporäre Datenbank wirklich schließen? Alle Daten gehen damit verloren. - + Database didn't close correctly, probably still busy Datenbank wurde nicht richtig geschlossen, vermutlich noch in Bearbeitung - + Cannot open destination file: '%1' Zieldatei kann nicht geöffnet werden: '%1' - - + + Cannot backup to file: '%1'. Message: %2 Erstellung des Backups in Datei '%1' nicht möglich. Mitteilung: %2 - + The database is currently busy: Die Datenbank ist zur Zeit beschäftigt: - + Do you want to abort that other operation? Möchten Sie die andere Operation abbrechen? - - + + No database file opened Keine Datenbankdatei geöffnet - - + + Error in statement #%1: %2. Aborting execution%3. Fehler in der Anweisung #%1: %2. Ausführung wird abgebrochen %3. - - + + and rolling back und der Zustand zurückgesetzt - + didn't receive any output from %1 keine Ausgabe von %1 erhalten - + could not execute command: %1 Befehl konnte nicht ausgeführt werden: %1 - + Cannot delete this object Dieses Objekt kann nicht gelöscht werden - + Cannot set data on this object Daten können für dieses Objekt nicht gesetzt werden - - + + A table with the name '%1' already exists in schema '%2'. Es existiert eine Tabelle mit dem Namen '%1' im Schema '%2'. - + No table with name '%1' exists in schema '%2'. Im Schema '%2' existiert keine Tabelle mit dem Namen '%1'. - - + + Cannot find column %1. Spalte %1 kann nicht gefunden werden. - + Creating savepoint failed. DB says: %1 Erstellung des Sicherungspunktes fehlgeschlagen. DB meldet: %1 - + Renaming the column failed. DB says: %1 Umbenennung der Spalte fehlgeschlagen. DB meldet: %1 - - + + Releasing savepoint failed. DB says: %1 Entsperren des Sicherungspunktes fehlgeschlagen. DB meldet: %1 - + Creating new table failed. DB says: %1 Erstellen der neuen Tabelle ist fehlgeschlagen. DB meldet: %1 - + Copying data to new table failed. DB says: %1 Kopieren der Daten zur neuen Tabelle ist fehlgeschlagen. DB meldet: %1 - + Deleting old table failed. DB says: %1 Löschen der alten Tabelle ist fehlgeschlagen. DB meldet: %1 - + Error renaming table '%1' to '%2'. Message from database engine: %3 @@ -847,12 +847,12 @@ Meldung von Datenbank: %3 - + could not get list of db objects: %1 Liste der DB-Objekte konnte nicht abgefragt werden: %1 - + Restoring some of the objects associated with this table failed. This is most likely because some column names changed. Here's the SQL statement which you might want to fix and execute manually: @@ -861,32 +861,32 @@ Meldung von Datenbank: - + could not get list of databases: %1 konnte keine Datenbankliste abrufen: %1 - + Error loading extension: %1 Fehler beim Laden der Erweiterung: %1 - + Error loading built-in extension: %1 - + Fehler beim Laden der eingebauten Erweiterung: %1 - + could not get column information Spalteninformationen konnten nicht ermittelt werden - + Error setting pragma %1 to %2: %3 Fehler beim Setzen des Pragmas %1 auf %2: %3 - + File not found. Datei nicht gefunden. @@ -1398,13 +1398,13 @@ Sollen die bearbeiteten Daten auf Zeile=%1, Spalte=%2 angewendet werden?Indexspalte - + Deleting the old index failed: %1 Löschen des alten Index fehlgeschlagen: %1 - + Creating the index failed: %1 Erstellen des Index fehlgeschlagen: @@ -1446,7 +1446,7 @@ Sollen die bearbeiteten Daten auf Zeile=%1, Spalte=%2 angewendet werden? Make this a 'WITHOUT ROWID' table. Setting this flag requires specifying a PRIMARY KEY (which can be of any type, and can be composite), and forbids the AUTOINCREMENT flag. - + Diese Tabelle zu "WITHOUT ROWID" umwandeln. Das Setzen dieses Flags erfordert die Angabe eines Primärschlüssels (welcher jeglichen Typ haben und auch zusammengesetzt sein darf), schließt aber das AUTOINCREMENT-Flag aus. @@ -1667,7 +1667,7 @@ Sollen die bearbeiteten Daten auf Zeile=%1, Spalte=%2 angewendet werden? - + There can only be one primary key for each table. Please modify the existing primary key instead. Es kann nur einen Primärschlüssel für jede Tabelle geben. Bitte stattdessen den existierenden Primärschlüssel bearbeiten. @@ -1715,7 +1715,7 @@ Alle aktuell in diesem Feld gespeicherten Daten gehen verloren. - Autoinkrement deaktiviert - + Please add a field which meets the following criteria before setting the on conflict action: - Primary key flag set Bitte vor dem Setzen der Konfliktaktion ein Feld hinzufügen, das den folgenden Bedingungen genügt: @@ -1952,7 +1952,7 @@ Alle aktuell in diesem Feld gespeicherten Daten gehen verloren. ExtendedScintilla - + Ctrl+H @@ -1963,22 +1963,22 @@ Alle aktuell in diesem Feld gespeicherten Daten gehen verloren. - + Ctrl+P - + Find... Suchen... - + Find and Replace... Suchen und ersetzen... - + Print... Drucken... @@ -1986,128 +1986,128 @@ Alle aktuell in diesem Feld gespeicherten Daten gehen verloren. ExtendedTableWidget - + Use as Exact Filter Als exakten Filter verwenden - + Containing Enthält - + Not containing Enthält nicht - + Not equal to Ungleich zu - + Greater than Größer als - + Less than Kleiner als - + Greater or equal Größer oder gleich - + Less or equal Kleiner oder gleich - + Between this and... Zwischen diesem und... - + Regular expression Regulärer Ausdruck - + Edit Conditional Formats... Bedingte Formatierungen bearbeiten... - + Set to NULL Auf NULL setzen - + Cut Ausschneiden - + Copy Kopieren - + Copy with Headers Mit Headern kopieren - + Copy as SQL Als SQL kopieren - + Paste Einfügen - + Print... Drucken... - + Use in Filter Expression Im Filterausdruck verwenden - + Alt+Del - + Ctrl+Shift+C - + Ctrl+Alt+C - + The content of the clipboard is bigger than the range selected. Do you want to insert it anyway? Der Inhalt der Zwischenablage ist größer als der ausgewählte Bereich. Soll er dennoch eingefügt werden? - + <p>Not all data has been loaded. <b>Do you want to load all data before selecting all the rows?</b><p><p>Answering <b>No</b> means that no more data will be loaded and the selection will not be performed.<br/>Answering <b>Yes</b> might take some time while the data is loaded but the selection will be complete.</p>Warning: Loading all the data might require a great amount of memory for big tables. <p>Es wurden nicht alle Daten geladen. <b>Sollen vor dem Auswählen aller Zeilen alle Daten geladen werden?</b><p><p>Das Antworten von <b>Nein</b> wird keine weiteren Daten laden und die Auswahl nicht durchführen.</br>Das Antworten von <b>Ja</b> benötigt möglicherweise einige Zeit, während die Daten geladen werden, aber die Auswahl wird vollständig sein.</p>Warnung: Das Laden aller Daten benötigt bei großen Tabellen möglicherweise eine große Menge an Speicher. - + Cannot set selection to NULL. Column %1 has a NOT NULL constraint. Auswahl kann nicht auf NULL gesetzt. Die Spalte %1 hat eine NOT NULL Beschränkung. @@ -2159,12 +2159,12 @@ Do you want to insert it anyway? FilterLineEdit - + Filter Filtern - + These input fields allow you to perform quick filters in the currently selected table. By default, the rows containing the input text are filtered out. The following operators are also supported: @@ -2191,92 +2191,92 @@ x~y Bereich: Werte zwischen x und y /regexp/ Werte, die dem regulären Ausdruck genügen - + Clear All Conditional Formats Alle bedingten Formatierungen löschen - + Use for Conditional Format Als bedingte Formatierung verwenden - + Edit Conditional Formats... Bedingte Formatierungen bearbeiten... - + Set Filter Expression Filterausdruck setzen - + What's This? Was ist das? - + Is NULL Ist NULL - + Is not NULL Ist nicht NULL - + Is empty Ist leer - + Is not empty Ist nicht leer - + Not containing... Enthält nicht... - + Equal to... Gleich zu... - + Not equal to... Ungleich zu... - + Greater than... Größer als... - + Less than... Kleiner als... - + Greater or equal... Größer oder gleich... - + Less or equal... Kleiner oder gleich... - + In range... Im Bereich... - + Regular expression... Regulärer Ausdruck... @@ -2499,7 +2499,7 @@ x~y Bereich: Werte zwischen x und y - + Tab Tab @@ -2642,7 +2642,7 @@ x~y Bereich: Werte zwischen x und y - + Deselect All Alle abwählen @@ -2652,52 +2652,52 @@ x~y Bereich: Werte zwischen x und y Ähnliche suchen - + Select All Alle auswählen - + There is already a table named '%1' and an import into an existing table is only possible if the number of columns match. Es gibt bereits eine Tabelle namens '%1' und ein Import in eine existierende Tabelle ist nur bei übereinstimmender Spaltenanzahl möglich. - + There is already a table named '%1'. Do you want to import the data into it? Es gibt bereits eine Tabelle namens '%1'. Möchten Sie die Daten in diese importieren? - + Creating restore point failed: %1 Erstellung des Wiederherstellungspunktes fehlgeschlagen: %1 - + Creating the table failed: %1 Erstellung der Tabelle fehlgeschlagen: %1 - + importing CSV importierte CSV - + Could not prepare INSERT statement: %1 INSERT-Anweisung konnte nicht vorbereitet werden: %1 - + Unexpected end of file. Please make sure that you have configured the correct quote characters and the file is not malformed. Unerwartetes Dateiende. Bitte sicherstellen, dass die korrekten Anführungszeichen gesetzt sind und die Datei wohlgeformt ist. - + Importing the file '%1' took %2ms. Of this %3ms were spent in the row function. Import der Datei '%1' benötigte %2 ms. Davon wurden %3 ms in der Zeilenfunktion verbracht. - + Inserting row failed: %1 Einfügen der Zeile fehlgeschlagen: %1 @@ -2705,17 +2705,17 @@ x~y Bereich: Werte zwischen x und y MainWindow - + toolBar1 Werkzeugleiste1 - + Opens the SQLCipher FAQ in a browser window Öffnet die SQLCipher-FAQ in einem Browserfenster - + Export one or more table(s) to a JSON file Exportiert eine oder mehrere Tabelle(n) in eine JSON-Datei @@ -2734,47 +2734,47 @@ Sie können SQL-Anweisungen aus einer Objektzeile fassen und in anderen Anwendun - + Un/comment block of SQL code Kommentieren/Unkommentieren eines Block von SQL-Code - + Un/comment block Block kommentieren/unkommentieren - + Comment or uncomment current line or selected block of code Aktuelle Zeilen oder ausgewählten Codeblock kommentieren oder unkommentieren - + Comment or uncomment the selected lines or the current line, when there is no selection. All the block is toggled according to the first line. Aktuelle Zeilen oder aktuelle Zeile kommentieren oder unkommentieren, wenn es keine Auswahl gibt. Der gesamte Block wird entsprechend der ersten Zeile invertiert. - + Ctrl+/ - + Stop SQL execution SQL-Ausführung abbrechen - + Stop execution Ausführung abbrechen - + Stop the currently running SQL script Das aktuelle laufende SQL-Skript stoppen - + Error Log Fehlerprotokoll @@ -2800,546 +2800,745 @@ Sie können SQL-Anweisungen aus einer Objektzeile fassen und in anderen Anwendun P&ragmas bearbeiten - - + + Temp Store + Temporärer Speicher + + + + Secure Delete + Sicheres Löschen + + + + Case Sensitive Like + Case-Sensitives LIKE + + + + Journal Mode + Journal-Modus + + + + Journal Size Limit + Begrenzung der Journalgröße + + + + Recursive Triggers + Rekursive Trigger + + + Delete + pragma + Löschen (DELETE) + + + Truncate + pragma + Kürzen (TRUNCATE) + + + Persist + pragma + Behalten (PERSIST) + + + Memory + pragma + RAM (MEMORY) + + + WAL + pragma + WAL + + + Off + pragma + Deaktiviert + + + + Page Size + Seitengröße + + + + Foreign Keys + Fremdschlüssel + + + + Auto Vacuum + Auto-Vakuum + + + + Max Page Count + Maximale Seitenzahl + + + Normal + pragma + Normal + + + Exclusive + pragma + Exklusiv + + + + Checkpoint Full FSYNC + Full FSYNC für Checkpoints + + + + + Off + Inaktiv + + + + + Normal + Normal + + + + + Full + Vollständig + + + + Default + Voreinstellung + + + + File + Datei + + + + + Memory + RAM + + + + Delete + Löschen (DELETE) + + + + Truncate + Kürzen (TRUNCATE) + + + + Persist + Behalten (PERSIST) + + + + WAL + WAL + + + + Exclusive + Exklusiv + + + + Automatic Index + Automatische Indizierung + + + + Ignore Check Constraints + CHECK-Beschränkungen ignorieren + + + + Full FSYNC + Full FSYNC + + + + WAL Auto Checkpoint + Automatische WAL-Checkpoints + + + + User Version + Benutzerspezifische Version + + + + Synchronous + Synchronität + + + + None + Inaktiv + + + + Incremental + Inkrementell + + + + Locking Mode + Sperrmodus + + + + E&xecute SQL This has to be equal to the tab title in all the main tabs SQL aus&führen - + &Recent Files &Kürzliche Dateien - + &New Database &Neue Datenbank - - + + Ctrl+F4 - + &Undo &Zurücksetzen - - + + Undo last change to the database Letzte Datenbankänderung rückgängig machen - + This action undoes the last change performed to the database in the Database Browser or in Execute SQL. Redoing is not possible. Diese Aktion macht die letzte Änderung an der Datenbank aus "Daten durchsuchen" oder "SQL ausführen" rückgängig. Wiederherstellen ist nicht möglich. - + Compact &Database... &Datenbank komprimieren... - + Open the Modify Table wizard, where it is possible to rename an existing table. It is also possible to add or delete fields from a table, as well as modify field names and types. Den Dialog zum Ändern der Tabelle öffnen, wo eine existierende Tabelle umbenannt werden kann. Zudem ist das Hinzufügen oder Löschen von Tabellenfeldern möglich, genauso wie das Ändern von Feldnamen und -typen. - + Execute all/selected SQL Komplettes/ausgewähltes SQL ausführen - + This button executes the currently selected SQL statements. If no text is selected, all SQL statements are executed. Dieser Button führt die aktuell ausgewählte SQL-Anweisung aus. Wenn kein Text ausgewählt ist, werden alle SQL-Anweisungen ausgeführt. - + Ctrl+Shift+T - + &Load Extension... Erweiterung &laden... - + Execute line Zeile ausführen - + &Wiki &Wiki - + F1 - + Bug &Report... Fehle&rmeldung... - + Feature Re&quest... Funktions&anfrage... - + Web&site Web&seite - + &Donate on Patreon... Über &Patreon spenden... - + &Save Project Projekt &speichern - + Open &Project... &Projekt öffnen... - + Open &Project &Projekt öffnen - + &Attach Database... Datenbank &anhängen... - - + + Add another database file to the current database connection Eine andere Datenbankdatei zur aktuellen Datenbankverbindung hinzufügen - + This button lets you add another database file to the current database connection Dieser Button erlaubt Ihnen das Hinzufügen einer anderen Datenbankdatei zur aktuellen Datenbankverbindung - + &Set Encryption... Verschlüsselung &setzen... - + SQLCipher &FAQ SQLCiper &FAQ - + Table(&s) to JSON... Tabelle(&n) zu JSON... - + Open Data&base Read Only... Daten&bank im Lesemodus öffnen... - + Ctrl+Shift+O - + Save results Ergebnisse speichern - + Save the results view Ergebnisansicht speichern - + This button lets you save the results of the last executed query Dieser Button erlaubt Ihnen das Speichern der Ergebnisse der zuletzt ausgeführten Abfrage - - + + Find text in SQL editor Text im SQL-Editor finden - + Find Suchen - + This button opens the search bar of the editor Dieser Button öffnet die Suchleiste des Editors - + Ctrl+F - - + + Find or replace text in SQL editor Text im SQL-Editor suchen oder ersetzen - + Find or replace Suchen oder ersetzen - + This button opens the find/replace dialog for the current editor tab Dieser Button öffnet den Suchen-/Ersetzen-Dialog für den aktuellen Editortab - + Ctrl+H - + Export to &CSV Nach &CSV exportieren - + Export to &JSON Nach &JSON exportieren - + Save as &view Als &View speichern - + Save as view Als Ansicht speichern - + &Open Database Datenbank &öffnen - + Drag && Drop SELECT Query Drag-and-drop für SELECT-Abfrage - - + + When dragging fields from the same table or a single table, drop a SELECT query into the editor Wenn Felder aus der gleichen Tabelle oder einen einzelnen Tabelle ausgewählt und gezogen werden, soll eine SELECT-Abfrage in den Editor geschrieben werden - + Browse Table Tabelle durchsuchen - - + + Ctrl+Shift+W - + Table from CSV data in Clipboard... Tabelle aus CSV-Daten in der Zwischenablage... - + This treats the current clipboard contents as a CSV file and opens the same import wizard that is used for importing CSV data from a file. Dies behandelt den aktuellen Inhalt der Zwischenablage als CSV-Datei und öffnet den gleichen Import-Dialog wie für den Import von CSV-Daten aus einer Datei. - + Show &Row Counts Zeilena&nzahl anzeigen - + This shows the number of rows for each table and view in the database. Dies zeigt die Anzahl der Zeilen für jede Tabelle und Ansicht in der Datenbank. - + Save Database &As... D&atenbank speichern unter... - + Save the current database as a different file Die aktuelle Datenbank in einer anderen Datei speichern - + Refresh Aktualisieren - + Reload the database structure Die Datenbankstruktur neu laden - + Shows or hides the Project toolbar. Zeigt oder versteckt die Projekt-Werkzeugleiste. - + Extra DB Toolbar Extra DB-Werkzeugleiste - + This button lets you save all the settings associated to the open DB to a DB Browser for SQLite project file Dieser Button erlaubt Ihnen das Speichern aller mit der geöffneten DB verbundenen Einstellungen in einer DB-Browser für SQLite-Projektdatei - + This button lets you open a DB Browser for SQLite project file Dieser Button erlaubt Ihnen das Öffnen einer DB-Browser für SQLite-Projektdatei - + New In-&Memory Database Neue In-&Memory-Datenbank - + Drag && Drop Qualified Names Drag-and-drop qualifizierter Namen - - + + Use qualified names (e.g. "Table"."Field") when dragging the objects and dropping them into the editor Qualifizierte Namen (z. B. "Tabelle."Feld") verwenden, wenn die Objekte gefasst und im Editor abgelegt werden - + Drag && Drop Enquoted Names Drag-and-drop zitierter Namen - - + + Use escaped identifiers (e.g. "Table1") when dragging the objects and dropping them into the editor Geschützte Identifier (z. B. "Tabelle1") verwenden, wenn die Objekte gefasst und im Editor abgelegt werden - + &Integrity Check &Integritätsprüfung - + Runs the integrity_check pragma over the opened database and returns the results in the Execute SQL tab. This pragma does an integrity check of the entire database. Führt das Pragma integrity_check auf der geöffneten Datenbank aus und gibt die Ergebnisse im SQL-Tab zurück. Dieses Pragma führt eine Integritätsprüfung der gesamten Datenbank durch. - + &Foreign-Key Check &Fremdschlüssel-Prüfung - + Runs the foreign_key_check pragma over the opened database and returns the results in the Execute SQL tab Führt das Pragma foreign_key_check auf der geöffneten Datenbank aus und gibt die Ergebnisse im SQL-Tab zurück - + &Quick Integrity Check &Schnelle Integritätsprüfung - + Run a quick integrity check over the open DB Führt eine schnelle Integritätsprüfung der geöffneten DB aus - + Runs the quick_check pragma over the opened database and returns the results in the Execute SQL tab. This command does most of the checking of PRAGMA integrity_check but runs much faster. Führt das Pragma quick_check auf der geöffneten Datenbank aus und gibt die Ergebnisse im SQL-Tab zurück. Dieser Befehl führt einen Großteil der Prüfung des Pragmas integrity_check aus, ist aber deutlich schneller. - + &Optimize &Optimieren - + Attempt to optimize the database Versuchen, die Datenbank zu optimieren - + Runs the optimize pragma over the opened database. This pragma might perform optimizations that will improve the performance of future queries. Führt das Pragma optimize auf der geöffneten Datenbank aus. Dieses Pragma führt möglicherweise Optimierungen durch, die die Performanz zukünftiger Queries verbessern. - - + + Print Drucken - + Print text from current SQL editor tab Den Text aus dem aktuellen SQL-Editortab drucken - + Open a dialog for printing the text in the current SQL editor tab Einen Dialog zum Drucken des Textes im aktuellen SQL-Editortab öffnen - + Print the structure of the opened database Die Struktur der geöffneten Datenbank drucken - + Open a dialog for printing the structure of the opened database Einen Dialog zum Drucken der Struktur der geöffneten Datenbank öffnen - + &Save Project As... Projekt &speichern als... - - - + + + Save the project in a file selected in a dialog Das Projekt in einer in einem Dialog ausgewählten Datei speichern - + Save A&ll &Alle speichern - - - + + + Save DB file, project file and opened SQL files DB-Datei, Projektdatei und geöffnete SQL-Dateien speichern - + Ctrl+Shift+S - + Close Pro&ject Pro&jekt schließen - - + + Close project and database files and return to the initial state Projekt und Datenbankdateien schließen und zum initialen Zustand zurückkehren - + Ctrl+Shift+F4 - - + + Detach Database Datenbank ablösen - - + + Detach database file attached to the current database connection Die mit der aktuellen Datenbankverbindung verwendete Datenbankdatei ablösen - + Open an existing database file in read only mode Eine existierende Datenbank schreibgeschützt öffnen - + &File &Datei - + &Import &Import - + &Export &Export - + &Edit &Bearbeiten - + &View &Ansicht - + &Help &Hilfe - + Edit Database &Cell Datenbank&zelle bearbeiten - + This button clears the contents of the SQL logs Dieser Button löscht den Inhalt der SQL-Protokolle - + This panel lets you examine a log of all SQL commands issued by the application or by yourself Dieses Panel erlaubt Ihnen das Betrachten eines Protokolls aller SQL-Kommandos, die von der Anwendung oder von Ihnen selbst ausgegangen sind - + DB Sche&ma DB-Sche&ma - + This is the structure of the opened database. You can drag multiple object names from the Name column and drop them into the SQL editor and you can adjust the properties of the dropped names using the context menu. This would help you in composing SQL statements. You can drag SQL statements from the Schema column and drop them into the SQL editor or into other applications. @@ -3350,529 +3549,529 @@ Sie können SQL-Anweisungen aus der Schemaspalte nehmen und in den SQL-Editor od - + &Remote Entfe&rnt - + Open SQL file(s) SQL-Datei(en) öffnen - + This button opens files containing SQL statements and loads them in new editor tabs Dieser Button öffnet Dateien mit SQL-Anweisungen und lädt diese in neue Editortabs - - + + Execute current line Aktuelle Zeile ausführen - + This button executes the SQL statement present in the current editor line Dieser Button führt die SQL-Anweisung in der aktuellen Editorzeile aus - + Shift+F5 - + Sa&ve Project &Projekt speichern - - + + Save SQL file as SQL-Datei speichern als - + This button saves the content of the current SQL editor tab to a file Dieser Button speichert den Inhalt des aktuellen SQL-Editortabs in einer Datei - + &Browse Table Tabelle &durchsuchen - + Copy Create statement CREATE-Anweisung kopieren - + Copy the CREATE statement of the item to the clipboard CREATE-Anweisung des Elements in die Zwischenablage kopieren - + User Benutzer - + Application Anwendung - + &Clear &Leeren - + &New Database... &Neue Datenbank... - - + + Create a new database file Neue Datenbankdatei erstellen - + This option is used to create a new database file. Diese Option wird zum Erstellen einer neuen Datenbankdatei verwendet. - + Ctrl+N - - + + &Open Database... Datenbank &öffnen... - - - - - + + + + + Open an existing database file Existierende Datenbankdatei öffnen - - - + + + This option is used to open an existing database file. Diese Option wird zum Öffnen einer existierenden Datenbankdatei verwendet. - + Ctrl+O - + &Close Database Datenbank &schließen - + This button closes the connection to the currently open database file Dieser Button schließt die Verbindung zu der aktuell geöffneten Datenbankdatei - - + + Ctrl+W - - + + Revert database to last saved state Datenbank auf zuletzt gespeicherten Zustand zurücksetzen - + This option is used to revert the current database file to its last saved state. All changes made since the last save operation are lost. Diese Option wird zum Zurücksetzen der aktuellen Datenbankdatei auf den zuletzt gespeicherten Zustand verwendet. Alle getätigten Änderungen gehen verloren. - - + + Write changes to the database file Änderungen in Datenbankdatei schreiben - + This option is used to save changes to the database file. Diese Option wird zum Speichern von Änderungen in der Datenbankdatei verwendet. - + Ctrl+S - + Compact the database file, removing space wasted by deleted records Datenbankdatei komprimieren, löscht Speicherplatz von gelöschten Zeilen - - + + Compact the database file, removing space wasted by deleted records. Datenbankdatei komprimieren, löscht Speicherplatz von gelöschten Zeilen. - + E&xit &Beenden - + Ctrl+Q - + Import data from an .sql dump text file into a new or existing database. Daten von einer .sql-Dump-Textdatei in eine neue oder existierende Datenbank importieren. - + This option lets you import data from an .sql dump text file into a new or existing database. SQL dump files can be created on most database engines, including MySQL and PostgreSQL. Diese Option wird zum Importieren von Daten von einer .sql-Dump-Textdatei in eine neue oder existierende Datenbank verwendet. SQL-Dumpdateien können von den meisten Datenbankanwendungen erstellt werden, inklusive MySQL und PostgreSQL. - + Open a wizard that lets you import data from a comma separated text file into a database table. Öffnet einen Assistenten zum Importieren von Daten aus einer kommaseparierten Textdatei in eine Datenbanktabelle. - + Open a wizard that lets you import data from a comma separated text file into a database table. CSV files can be created on most database and spreadsheet applications. Öffnet einen Assistenten zum Importieren von Daten aus einer kommaseparierten Textdatei in eine Datenbanktabelle. CSV-Dateien können von den meisten Datenbank- und Tabellenkalkulationsanwendungen erstellt werden. - + Export a database to a .sql dump text file. Daten in eine .sql-Dump-Textdatei exportieren. - + This option lets you export a database to a .sql dump text file. SQL dump files contain all data necessary to recreate the database on most database engines, including MySQL and PostgreSQL. Diese Option ermöglicht den Export einer Datenbank in eine .sql-Dump-Textdatei. SQL-Dumpdateien enthalten alle notwendigen Daten, um die Datenbank mit den meisten Datenbankanwendungen neu erstellen zu können, inklusive MySQL und PostgreSQL. - + Export a database table as a comma separated text file. Datenbank als kommaseparierte Textdatei exportieren. - + Export a database table as a comma separated text file, ready to be imported into other database or spreadsheet applications. Exportiert die Datenbank als kommaseparierte Textdatei, fertig zum Import in andere Datenbank- oder Tabellenkalkulationsanwendungen. - + Open the Create Table wizard, where it is possible to define the name and fields for a new table in the database Den Assistenten zum Erstellen einer Tabelle öffnen, wo der Name und die Felder für eine neue Tabelle in der Datenbank festgelegt werden können - + Open the Delete Table wizard, where you can select a database table to be dropped. Den Assistenten zum Löschen einer Tabelle öffnen, wo eine zu entfernende Datenbanktabelle ausgewählt werden kann. - + Open the Create Index wizard, where it is possible to define a new index on an existing database table. Den Assistenten zum Erstellen des Index öffnen, wo ein neuer Index für eine existierende Datenbanktabelle gewählt werden kann. - + &Preferences... &Einstellungen... - - + + Open the preferences window. Das Einstellungsfenster öffnen. - + &DB Toolbar &DB-Werkzeugleiste - + Shows or hides the Database toolbar. Zeigt oder versteckt die Datenbank-Werkzeugleiste. - + Shift+F1 - + &Recently opened &Kürzlich geöffnet - + Ctrl+T - + Warning: this pragma is not readable and this value has been inferred. Writing the pragma might overwrite a redefined LIKE provided by an SQLite extension. Warnung: dieses Pragma ist nicht lesbar und dieser Wert wurde abgeleitet. Das Schreiben des Pragmas überschreibt möglicherweise ein geändertes LIKE, das von einer SQLite-Erweiterung zur Verfügung gestellt wird. - + Too&ls &Werkzeuge - + DB Toolbar DB-Werkzeugleiste - + SQL &Log SQL-&Protokoll - + Show S&QL submitted by Anzeige des übergebenen S&QL von - + &Plot &Diagramm - - + + Project Toolbar Projekt-Werkzeugleiste - + Extra DB toolbar Extra DB-Werkzeugleiste - - - + + + Close the current database file Die aktuelle Datenbankdatei schließen - + &Revert Changes Änderungen &rückgängig machen - + &Write Changes Änderungen &schreiben - + &Database from SQL file... &Datenbank aus SQL-Datei... - + &Table from CSV file... &Tabelle aus CSV-Datei... - + &Database to SQL file... &Datenbank als SQL-Datei... - + &Table(s) as CSV file... &Tabelle(n) als CSV-Datei... - + &Create Table... Tabelle &erstellen... - + &Delete Table... Tabelle &löschen... - + &Modify Table... Tabelle &ändern... - + Create &Index... &Index erstellen... - + W&hat's This? &Was ist das? - + &About &Über - + New &tab Neuer &Tab - + This button opens a new tab for the SQL editor Dieser Button öffnet einen neuen Tab im SQL-Editor - + &Execute SQL SQL &ausführen - - + + Save the current session to a file Aktuelle Sitzung in einer Datei speichern - - + + Load a working session from a file Sitzung aus einer Datei laden - - - + + + Save SQL file SQL-Datei speichern - + Ctrl+E - + Export as CSV file Als CSV-Datei exportieren - + Export table as comma separated values file Tabelle als kommaseparierte Wertedatei exportieren - + Ctrl+L - - + + Ctrl+P - + Database encoding Datenbank-Codierung - - + + Choose a database file Eine Datenbankdatei auswählen - + Ctrl+Return - + Ctrl+D - + Ctrl+I - + Reset Window Layout Fensteranordnung zurücksetzen - - The database is currenctly busy. + + The database is currently busy. Die Datenbank ist aktuell beschäftigt. - + Click here to interrupt the currently running query. Hier klicken, um die aktuell laufende Abfrage zu unterbrechen. - + Encrypted Verschlüsselt - + Database is encrypted using SQLCipher Datenbank ist mittels SQLCipher verschlüsselt - + Read only Nur lesen - + Database file is read only. Editing the database is disabled. Zugriff auf Datenbank nur lesend. Bearbeiten der Datenbank ist deaktiviert. - + Could not open database file. Reason: %1 Datenbankdatei konnte nicht geöffnet werden. Grund: %1 - - - + + + Choose a filename to save under Dateinamen zum Speichern auswählen - + Error while saving the database file. This means that not all changes to the database were saved. You need to resolve the following error first. %1 @@ -3881,297 +4080,297 @@ Reason: %1 %1 - + Do you want to save the changes made to SQL tabs in the project file '%1'? Sollen die in den SQL-Tabs getätigten Änderungen in der Projektdatei '%1' gespeichert werden? - + A new DB Browser for SQLite version is available (%1.%2.%3).<br/><br/>Please download at <a href='%4'>%4</a>. Eine neue Version des DB-Browsers für SQLite ist verfügbar (%1.%2.%3).<br/><br/>Bitte laden Sie diese von <a href='%4'>%4</a> herunter. - + DB Browser for SQLite project file (*.sqbpro) DB-Browser für SQLite-Projektdatei (*.sqbpro) - + Error checking foreign keys after table modification. The changes will be reverted. Fehler beim Prüfen von Fremdschlüsseln nach der Änderung an der Tabelle. Die Änderungen werden rückgängig gemacht. - + This table did not pass a foreign-key check.<br/>You should run 'Tools | Foreign-Key Check' and fix the reported issues. Diese Tabelle hat die Fremdschlüssel-Prüfung nicht bestanden.<br/>Sie sollten 'Werkzeuge | Fremdschlüssel-Prüfung' ausführen und die gemeldeten Probleme beheben. - + Execution finished with errors. Ausführung wurde mit Fehlern beendet. - + Execution finished without errors. Ausführung wurde ohne Fehler beendet. - + Are you sure you want to undo all changes made to the database file '%1' since the last save? Sollen wirklich alle Änderungen an der Datenbankdatei '%1' seit dem letzten Speichern rückgängig gemacht werden? - + Choose a file to import Datei für Import auswählen - + Text files(*.sql *.txt);;All files(*) Textdateien(*.sql *.txt);;Alle Dateien(*) - + Do you want to create a new database file to hold the imported data? If you answer no we will attempt to import the data in the SQL file to the current database. Soll für die importierten Daten eine neue Datenbank erstellt werden? Bei der Antwort NEIN werden die Daten in die SQL-Datei der aktuellen Datenbank importiert. - + Ctrl+Tab - + Ctrl+Shift+Tab - + Clear List Liste leeren - + Window Layout Fensterlayout - + Simplify Window Layout Fensterlayout vereinfachen - - Shift+Alt+0 + + Alt+Shift+0 - + Dock Windows at Bottom Fenster unten anheften - + Dock Windows at Left Side Fenster links anheften - + Dock Windows at Top Fenster oben anheften - + You are still executing SQL statements. Closing the database now will stop their execution, possibly leaving the database in an inconsistent state. Are you sure you want to close the database? Es werden aktuell SQL-Anweisungen ausgeführt. Das Schließen der Datenbank wird deren Ausführung stoppen, was die Datenbank möglicherweise in einem inkonsistenten Zustand belässt. Soll die Datenbank wirklich geschlossen werden? - + Do you want to save the changes made to the project file '%1'? Sollen die an der Projektdatei '%1' getätigten Änderungen gespeichert werden? - + File %1 already exists. Please choose a different name. Datei %1 existiert bereits. Bitte einen anderen Namen auswählen. - + Error importing data: %1 Fehler beim Datenimport: %1 - + Import completed. Import abgeschlossen. - + Delete View Ansicht löschen - + Delete Trigger Trigger löschen - + Delete Index Index löschen - - + + Delete Table Tabelle löschen - + Setting PRAGMA values will commit your current transaction. Are you sure? Das Setzen von PRAGMA-Werten übermittelt den aktuellen Vorgang. Sind Sie sicher? - + In-Memory database In-Memory-Datenbank - + Automatically load the last opened DB file at startup - + Beim Starten automatisch die zuletzt geöffnete Datenbank öffnen - + Are you sure you want to delete the table '%1'? All data associated with the table will be lost. Möchten Sie die Tabelle '%1' wirklich löschen? Alle mit dieser Tabelle verbundenen Daten gehen verloren. - + Are you sure you want to delete the view '%1'? Möchten Sie die Ansicht '%1' wirklich löschen? - + Are you sure you want to delete the trigger '%1'? Möchten Sie den Trigger '%1' wirklich löschen? - + Are you sure you want to delete the index '%1'? Möchten Sie den Index '%1' wirklich löschen? - + Error: could not delete the table. Fehler: Tabelle konnte nicht gelöscht werden. - + Error: could not delete the view. Fehler: Ansicht konnte nicht gelöscht werden. - + Error: could not delete the trigger. Fehler: Trigger konnte nicht gelöscht werden. - + Error: could not delete the index. Fehler: Index konnte nicht gelöscht werden. - + Message from database engine: %1 Nachricht von Datenbank-Engine: %1 - + Editing the table requires to save all pending changes now. Are you sure you want to save the database? Das Bearbeiten der Tabelle setzt das Speichern aller ausstehenden Änderungen voraus. Möchten Sie die Datenbank wirklich speichern? - + Edit View %1 Ansicht %1 bearbeiten - + Edit Trigger %1 Trigger %1 bearbeiten - + You are already executing SQL statements. Do you want to stop them in order to execute the current statements instead? Note that this might leave the database in an inconsistent state. Es werden bereits SQL-Anweisungen ausgeführt. Sollen diese gestoppt werden, um stattdessen die aktuellen Anweisungen auszuführen? Dies führt möglicherweise zu einem inkonsistenten Zustand der Datenbank. - + -- EXECUTING SELECTION IN '%1' -- -- FÜHRE AUSWAHL IN '%1' AUS -- - + -- EXECUTING LINE IN '%1' -- -- FÜHRE ZEILE IN '%1' AUS -- - + -- EXECUTING ALL IN '%1' -- -- FÜHRE ALLES IN '%1' AUS -- - - + + At line %1: In Zeile %1: - + Result: %1 Ergebnis: %1 - + Result: %2 Ergebnis: %2 - + Setting PRAGMA values or vacuuming will commit your current transaction. Are you sure? Das Setzen von PRAGMA-Werten oder das Komprimieren wird Ihre aktuelle Transaktion übermitteln. Sind Sie sich sicher? - + Opened '%1' in read-only mode from recent file list '%1' aus der Liste zuletzt geöffneter Dateien im Lesemodus geöffnet - + Opened '%1' from recent file list '%1' aus der Liste zuletzt geöffneter Dateien geöffnet - + Select the action to apply to the dropped file(s). <br/>Note: only 'Import' will process more than one file. Note for translation: Although there is no %n in the original, you can use the numerus-form to adjust 'files(s)' and remove the note when n = 1. Including %n in the translation will also work. @@ -4180,225 +4379,225 @@ Sind Sie sich sicher? - + The statements in the tab '%1' are still executing. Closing the tab will stop the execution. This might leave the database in an inconsistent state. Are you sure you want to close the tab? Die Anweisungen im Tab '%1' werden noch ausgeführt. Das Schließen des Tabs stoppt die Ausführung. Dies hinterlässt die Datenbank möglicherweise in einem inkonsistenten Zustand. Soll der Tab wirklich geschlossen werden? - + This project file is using an old file format because it was created using DB Browser for SQLite version 3.10 or lower. Loading this file format is no longer fully supported. If you want to load it completely, please use DB Browser for SQLite version 3.12 to convert it to the new file format. Diese Projektdatei verwendet ein altes Dateiformat, da es mit DB-Browser für SQLite Version 3.10 oder älter erstellt wurde. Das Laden dieser Dateien wird nicht mehr vollständig unterstützt. Um es komplett zu laden, bitte DB-Browser für SQLite Version 3.12 verwenden und in das neue Format konvertieren. - + Project saved to file '%1' Projekt in Datei '%1' gespeichert - + Yes. Don't ask again Ja. Nicht erneut fragen - + This action will open a new SQL tab with the following statements for you to edit and run: Diese Aktion öffnet einen neuen SQL-Tab mit den folgenden Anweisungen zum Bearbeiten und Ausführen: - + Rename Tab Tab umbenennen - + Duplicate Tab Tab duplizieren - + Close Tab Tab schließen - + Opening '%1'... '%1' öffnen... - + There was an error opening '%1'... Fehler beim Öffnen von '%1'... - + Value is not a valid URL or filename: %1 Wert ist keine gültige URL bzw. kein gültiger Dateiname: %1 - + %1 rows returned in %2ms %1 Zeilen in %2 ms zurückgegeben - + Ctrl+Alt+0 - + Ctrl+Alt+W - + Choose a database file to save under Datenbankdatei zum Speichern auswählen - + Error while saving the database to the new file. Fehler beim Speichern der Datenbank in einer neuen Datei. - + Choose text files Textdateien auswählen - + Import completed. Some foreign key constraints are violated. Please fix them before saving. Import vollständig. Ein paar Fremdschlüssel-Beschränkungen wurden verletzt. Bitte beheben Sie diese vor dem Speichern. - + Modify View Ansicht verändern - + Modify Trigger Trigger verändern - + Modify Index Index verändern - + Modify Table Tabelle verändern - + &%1 %2%3 &%1 %2%3 - + (read only) (nur lesend) - + Open Database or Project Datenbank oder Projekt öffnen - + Attach Database... Datenbank anhängen... - + Import CSV file(s)... CSV-Datei(en) importieren... - + Do you want to save the changes made to SQL tabs in a new project file? Sollen die an den SQL-Tabs getätigten Änderungen in einer neuen Projektdatei gespeichert werden? - + Do you want to save the changes made to the SQL file %1? Sollen die getätigten Änderungen in der SQL-Datei %1 gespeichert werden? - + Select SQL file to open SQL-Datei zum Öffnen auswählen - + Select file name Dateinamen auswählen - + Select extension file Erweiterungsdatei auswählen - + Extension successfully loaded. Erweiterung erfolgreich geladen. - + Error loading extension: %1 Fehler beim Laden der Erweiterung: %1 - + Could not find resource file: %1 Ressourcen-Datei konnte nicht gefunden werden: %1 - - + + Don't show again Nicht wieder anzeigen - + New version available. Neue Version verfügbar. - + Choose a project file to open Wählen Sie die zu öffnende Projektdatei - + DB file '%1' could not be opened Datenbankdatei '%1' konnte nicht geöffnet werden - + Table '%1' not found; settings ignored Tabelle '%1' nicht gefunden; Einstellungen werden ignoriert - + Could not open project file for writing. Reason: %1 Projekt-Datei konnte nicht schreibend geöffnet werden. Grund: %1 - + -- Reference to file "%1" (not supported by this version) -- -- Referenz zu Datei "%1" (von dieser Version nicht unterstützt) -- - + Collation needed! Proceed? Kollation notwendig! Fortführen? - + A table in this database requires a special collation function '%1' that this application can't provide without further knowledge. If you choose to proceed, be aware bad things can happen to your database. Create a backup! @@ -4407,47 +4606,47 @@ Wenn Sie fortfahren, sollten Sie im Hinterkopf behalten, dass mit Ihrer Datenban Erstellen Sie ein Backup! - + creating collation erstelle Kollation - + Set a new name for the SQL tab. Use the '&&' character to allow using the following character as a keyboard shortcut. Vergeben Sie einen Namen für den SQL-Tab. Verwenden Sie das Zeichen '&&', um das folgende Zeichen als Tastaturkürzel zu verwenden. - + Please specify the view name Geben Sie bitte einen Namen für Ansicht an - + There is already an object with that name. Please choose a different name. Es gibt bereits ein Objekt mit diesem Namen. Bitte wählen Sie einen anderen aus. - + View successfully created. Ansicht erfolgreich erstellt. - + Error creating view: %1 Fehler beim Erstellen der Ansicht: %1 - + This action will open a new SQL tab for running: Diese Aktion öffnet einen neuen SQL-Tab zur Ausführung: - + Press Help for opening the corresponding SQLite reference page. Drücken Sie auf 'Hilfe', um die entsprechende SQLite-Referenzseite zu öffnen. - + Busy (%1) Beschäftigt (%1) @@ -4642,102 +4841,107 @@ Wählen Sie die Achsen oder Achsenbeschriftungen aus, um nur in diese Richtung z - + Load all data and redraw plot Alle Daten laden und Plot neu zeichnen - - - + + + Row # Zeile # - + Copy Kopieren - + Print... Drucken... - + + Help + + + + Show legend Legende anzeigen - + Stacked bars Gestapelte Bars - + Fixed number format Festes Zahlenformat - + Date/Time Datum/Zeit - + Date Datum - + Time Zeit - - + + Numeric Numerisch - + Label Beschriftung - + Invalid Ungültig - + Load all data and redraw plot. Warning: not all data has been fetched from the table yet due to the partial fetch mechanism. Alle Daten laden und Plot neu zeichnen. Warnung: es wurden aufgrund der partiellen Abrufmechanismus noch nicht alle Daten aus der Tabelle abgerufen. - + Choose an axis color Eine Achsenfarbe wählen - + Choose a filename to save under Dateinamen zum Speichern auswählen - + PNG(*.png);;JPG(*.jpg);;PDF(*.pdf);;BMP(*.bmp);;All Files(*) PNG(*.png);;JPG(*.jpg);;PDF(*.pdf);;BMP(*.bmp);;Alle Dateien(*) - + There are curves in this plot and the selected line style can only be applied to graphs sorted by X. Either sort the table or query by X to remove curves or select one of the styles supported by curves: None or Line. Dieser Plot enthält Kurven und der ausgewählte Linienstil kann nur auf nach X sortierte Graphen angewendet werden. Sortieren Sie entweder die Tabelle oder Abfrage nach X oder entfernen Sie die Kurven oder wählen Sie eine der Stile, die von Kurven unterstützt werden: Keiner oder Linie. - + Loading all remaining data for this table took %1ms. Das Laden aller verbleibender Daten dieser Tabelle benötigte %1 ms. @@ -5377,7 +5581,7 @@ Kann auf 0 gesetzt werden, um die Vervollständigung zu deaktivieren. Select built-in extensions to load for every database: - + Bei jeder Datenbank zu ladende eingebaute Erweiterungen auswählen: @@ -5632,8 +5836,8 @@ Bitte erneut prüfen. - Socks v5 - SOCKS v5 + SOCKS5 + SOCKS5 @@ -5779,1818 +5983,252 @@ Bitte erneut prüfen. QsciCommand - - Move down one line - + Paste + Einfügen - - Extend selection down one line - + Cancel + Abbrechen + + + QsciLexerCPP - - Extend rectangular selection down one line - + Default + Voreinstellung - - Scroll view down one line - + Keyword + Schlüsselwort - - Move up one line - + Identifier + Bezeichner + + + QsciLexerJSON - - Extend selection up one line - + Default + Voreinstellung - - Extend rectangular selection up one line - + String + String + + + QsciLexerJavaScript - - Scroll view up one line - + Regular expression + Regulärer Ausdruck + + + QsciLexerPython - - Scroll to start of document - + Default + Voreinstellung - - Scroll to end of document - + Comment + Kommentar - - Scroll vertically to centre current line - + Keyword + Schlüsselwort - - Move down one paragraph - + Identifier + Bezeichner + + + QsciLexerSQL - - Extend selection down one paragraph - + Default + Voreinstellung - - Move up one paragraph - + Comment + Kommentar - - Extend selection up one paragraph - + Keyword + Schlüsselwort - - Move left one character - + Identifier + Bezeichner + + + QsciScintilla - - Extend selection left one character - + &Undo + &Zurücksetzen - - Extend rectangular selection left one character - + Select All + Alle auswählen + + + RemoteCommitsModel - - Move right one character - + + Commit ID + Commit-ID - - Extend selection right one character - + + Message + Mitteilung - - Extend rectangular selection right one character - + + Date + Datum - - Move left one word - + + Author + Autor - - Extend selection left one word - + + Size + Größe - - Move right one word - + + Authored and committed by %1 + Erstellt und übermittelt von %1 - - Extend selection right one word - + + Authored by %1, committed by %2 + Erstellt von %1, übermittelt von %2 + + + RemoteDatabase - - Move to end of previous word - + + Error opening local databases list. +%1 + Fehler beim Öffnen der lokalen Datenbankliste. +%1 - - Extend selection to end of previous word - + + Error creating local databases list. +%1 + Fehler beim Erstellen der lokalen Datenbankliste. +%1 + + + RemoteDock - - Move to end of next word - + + Remote + Entfernt - - Extend selection to end of next word - + + Local + Lokal - - Move left one word part - + + Identity + Identität - - Extend selection left one word part - + + Push currently opened database to server + Aktuell geöffnete Datenbank an den Server übertragen - - Move right one word part - + + Upload + Hochladen - - Extend selection right one word part - + + DBHub.io + DBHub.io - - Move to start of document line - + + <html><head/><body><p>In this pane, remote databases from dbhub.io website can be added to DB Browser for SQLite. First you need an identity:</p><ol style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Login to the dbhub.io website (use your GitHub credentials or whatever you want)</li><li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click the button to &quot;Generate client certificate&quot; (that's your identity). That'll give you a certificate file (save it to your local disk).</li><li style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Go to the Remote tab in DB Browser for SQLite Preferences. Click the button to add a new certificate to DB Browser for SQLite and choose the just downloaded certificate file.</li></ol><p>Now the Remote panel shows your identity and you can add remote databases.</p></body></html> + <html><head/><body><p>In diesem Fensterbereich können entfernte Datenbanken von der Webseite dbhub.io zu DB-Browser für SQLite hinzugefügt werden. Zunächst benötigen Sie eine Identität:</p><ol style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Melden Sie sich auf der Webseite dbhub.io an (unter Verwendung Ihrer GitHub-Daten oder wie gewünscht)</li><li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Klicken Sie auf den Button &quot;Generate client certificate&quot;, um ein Zertifikat zu erstellen (das ist Ihre Identität). Speichern Sie die erzeugte Zertifikatsdatei auf ihrer lokalen Festplatte.</li><li style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Öffnen Sie den Entfernt-Tab in den DB-Browser für SQLite-Einstellungen. Klicken Sie auf den Button, um ein neues Zertifikat hinzuzufügen und wählen Sie die soeben heruntergeladene Zertifikatsdatei aus.</li></ol><p>Jetzt zeigt der Entfernt-Fensterbereich Ihre Identität und Sie können entfernte Datenbanken hinzufügen.</p></body></html> - - Extend selection to start of document line - + + Current Database + Aktuelle Datenbank - - Extend rectangular selection to start of document line - + + Clone + Klonen - - Move to start of display line - + + Branch + Branch - - Extend selection to start of display line - + + Commits + Commits - - Move to start of display or document line - + + Commits for + Commits für - - Extend selection to start of display or document line - + + Delete Database + Datenbank löschen - - Move to first visible character in document line - + + Delete the local clone of this database + Den lokalen Klon der Datenbank löschen - - Extend selection to first visible character in document line - + + Open in Web Browser + Im Webbrowser öffnen - - Extend rectangular selection to first visible character in document line - + + Open the web page for the current database in your browser + Die Webseite der aktuellen Datenbank im Webbrowser öffnen - - Move to first visible character of display in document line - + + Clone from Link + Über Link klonen - - Extend selection to first visible character in display or document line - + + Use this to download a remote database for local editing using a URL as provided on the web page of the database. + Diese Option verwenden, um eine entfernte Datenbank für die lokale Bearbeitung mittels einer URL herunterzuladen, wie sie auf der Webseite der Datenbank angegeben ist. - - Move to end of document line - + + Refresh + Aktualisieren - - Extend selection to end of document line - - - - - Extend rectangular selection to end of document line - - - - - Move to end of display line - - - - - Extend selection to end of display line - - - - - Move to end of display or document line - - - - - Extend selection to end of display or document line - - - - - Move to start of document - - - - - Extend selection to start of document - - - - - Move to end of document - - - - - Extend selection to end of document - - - - - Move up one page - - - - - Extend selection up one page - - - - - Extend rectangular selection up one page - - - - - Move down one page - - - - - Extend selection down one page - - - - - Extend rectangular selection down one page - - - - - Stuttered move up one page - - - - - Stuttered extend selection up one page - - - - - Stuttered move down one page - - - - - Stuttered extend selection down one page - - - - - Delete current character - - - - - Delete previous character - - - - - Delete previous character if not at start of line - - - - - Delete word to left - - - - - Delete word to right - - - - - Delete right to end of next word - - - - - Delete line to left - - - - - Delete line to right - - - - - Delete current line - - - - - Cut current line - - - - - Copy current line - - - - - Transpose current and previous lines - - - - - Duplicate the current line - - - - - Select all - - - - - Move selected lines up one line - - - - - Move selected lines down one line - - - - - Duplicate selection - - - - - Convert selection to lower case - - - - - Convert selection to upper case - - - - - Cut selection - - - - - Copy selection - - - - - Paste - Einfügen - - - - Toggle insert/overtype - - - - - Insert newline - - - - - Formfeed - - - - - Indent one level - - - - - De-indent one level - - - - - Cancel - Abbrechen - - - - Undo last command - - - - - Redo last command - - - - - Zoom in - - - - - Zoom out - - - - - QsciLexerCPP - - - Default - Voreinstellung - - - - Inactive default - - - - - C comment - - - - - Inactive C comment - - - - - C++ comment - - - - - Inactive C++ comment - - - - - JavaDoc style C comment - - - - - Inactive JavaDoc style C comment - - - - - Number - - - - - Inactive number - - - - - Keyword - Schlüsselwort - - - - Inactive keyword - - - - - Double-quoted string - - - - - Inactive double-quoted string - - - - - Single-quoted string - - - - - Inactive single-quoted string - - - - - IDL UUID - - - - - Inactive IDL UUID - - - - - Pre-processor block - - - - - Inactive pre-processor block - - - - - Operator - - - - - Inactive operator - - - - - Identifier - Bezeichner - - - - Inactive identifier - - - - - Unclosed string - - - - - Inactive unclosed string - - - - - C# verbatim string - - - - - Inactive C# verbatim string - - - - - JavaScript regular expression - - - - - Inactive JavaScript regular expression - - - - - JavaDoc style C++ comment - - - - - Inactive JavaDoc style C++ comment - - - - - Secondary keywords and identifiers - - - - - Inactive secondary keywords and identifiers - - - - - JavaDoc keyword - - - - - Inactive JavaDoc keyword - - - - - JavaDoc keyword error - - - - - Inactive JavaDoc keyword error - - - - - Global classes and typedefs - - - - - Inactive global classes and typedefs - - - - - C++ raw string - - - - - Inactive C++ raw string - - - - - Vala triple-quoted verbatim string - - - - - Inactive Vala triple-quoted verbatim string - - - - - Pike hash-quoted string - - - - - Inactive Pike hash-quoted string - - - - - Pre-processor C comment - - - - - Inactive pre-processor C comment - - - - - JavaDoc style pre-processor comment - - - - - Inactive JavaDoc style pre-processor comment - - - - - User-defined literal - - - - - Inactive user-defined literal - - - - - Task marker - - - - - Inactive task marker - - - - - Escape sequence - - - - - Inactive escape sequence - - - - - QsciLexerHTML - - - HTML default - - - - - Tag - - - - - Unknown tag - - - - - Attribute - - - - - Unknown attribute - - - - - HTML number - - - - - HTML double-quoted string - - - - - HTML single-quoted string - - - - - Other text in a tag - - - - - HTML comment - - - - - Entity - - - - - End of a tag - - - - - Start of an XML fragment - - - - - End of an XML fragment - - - - - Script tag - - - - - Start of an ASP fragment with @ - - - - - Start of an ASP fragment - - - - - CDATA - - - - - Start of a PHP fragment - - - - - Unquoted HTML value - - - - - ASP X-Code comment - - - - - SGML default - - - - - SGML command - - - - - First parameter of an SGML command - - - - - SGML double-quoted string - - - - - SGML single-quoted string - - - - - SGML error - - - - - SGML special entity - - - - - SGML comment - - - - - First parameter comment of an SGML command - - - - - SGML block default - - - - - Start of a JavaScript fragment - - - - - JavaScript default - - - - - JavaScript comment - - - - - JavaScript line comment - - - - - JavaDoc style JavaScript comment - - - - - JavaScript number - - - - - JavaScript word - - - - - JavaScript keyword - - - - - JavaScript double-quoted string - - - - - JavaScript single-quoted string - - - - - JavaScript symbol - - - - - JavaScript unclosed string - - - - - JavaScript regular expression - - - - - Start of an ASP JavaScript fragment - - - - - ASP JavaScript default - - - - - ASP JavaScript comment - - - - - ASP JavaScript line comment - - - - - JavaDoc style ASP JavaScript comment - - - - - ASP JavaScript number - - - - - ASP JavaScript word - - - - - ASP JavaScript keyword - - - - - ASP JavaScript double-quoted string - - - - - ASP JavaScript single-quoted string - - - - - ASP JavaScript symbol - - - - - ASP JavaScript unclosed string - - - - - ASP JavaScript regular expression - - - - - Start of a VBScript fragment - - - - - VBScript default - - - - - VBScript comment - - - - - VBScript number - - - - - VBScript keyword - - - - - VBScript string - - - - - VBScript identifier - - - - - VBScript unclosed string - - - - - Start of an ASP VBScript fragment - - - - - ASP VBScript default - - - - - ASP VBScript comment - - - - - ASP VBScript number - - - - - ASP VBScript keyword - - - - - ASP VBScript string - - - - - ASP VBScript identifier - - - - - ASP VBScript unclosed string - - - - - Start of a Python fragment - - - - - Python default - - - - - Python comment - - - - - Python number - - - - - Python double-quoted string - - - - - Python single-quoted string - - - - - Python keyword - - - - - Python triple double-quoted string - - - - - Python triple single-quoted string - - - - - Python class name - - - - - Python function or method name - - - - - Python operator - - - - - Python identifier - - - - - Start of an ASP Python fragment - - - - - ASP Python default - - - - - ASP Python comment - - - - - ASP Python number - - - - - ASP Python double-quoted string - - - - - ASP Python single-quoted string - - - - - ASP Python keyword - - - - - ASP Python triple double-quoted string - - - - - ASP Python triple single-quoted string - - - - - ASP Python class name - - - - - ASP Python function or method name - - - - - ASP Python operator - - - - - ASP Python identifier - - - - - PHP default - - - - - PHP double-quoted string - - - - - PHP single-quoted string - - - - - PHP keyword - - - - - PHP number - - - - - PHP variable - - - - - PHP comment - - - - - PHP line comment - - - - - PHP double-quoted variable - - - - - PHP operator - - - - - QsciLexerJSON - - - Default - Voreinstellung - - - - Number - - - - - String - String - - - - Unclosed string - - - - - Property - - - - - Escape sequence - - - - - Line comment - - - - - Block comment - - - - - Operator - - - - - IRI - - - - - JSON-LD compact IRI - - - - - JSON keyword - - - - - JSON-LD keyword - - - - - Parsing error - - - - - QsciLexerJavaScript - - - Regular expression - Regulärer Ausdruck - - - - QsciLexerPython - - - Default - Voreinstellung - - - - Comment - Kommentar - - - - Number - - - - - Double-quoted string - - - - - Single-quoted string - - - - - Keyword - Schlüsselwort - - - - Triple single-quoted string - - - - - Triple double-quoted string - - - - - Class name - - - - - Function or method name - - - - - Operator - - - - - Identifier - Bezeichner - - - - Comment block - - - - - Unclosed string - - - - - Highlighted identifier - - - - - Decorator - - - - - Double-quoted f-string - - - - - Single-quoted f-string - - - - - Triple single-quoted f-string - - - - - Triple double-quoted f-string - - - - - QsciLexerSQL - - - Default - Voreinstellung - - - - Comment - Kommentar - - - - Comment line - - - - - JavaDoc style comment - - - - - Number - - - - - Keyword - Schlüsselwort - - - - Double-quoted string - - - - - Single-quoted string - - - - - SQL*Plus keyword - - - - - SQL*Plus prompt - - - - - Operator - - - - - Identifier - Bezeichner - - - - SQL*Plus comment - - - - - # comment line - - - - - JavaDoc keyword - - - - - JavaDoc keyword error - - - - - User defined 1 - - - - - User defined 2 - - - - - User defined 3 - - - - - User defined 4 - - - - - Quoted identifier - - - - - Quoted operator - - - - - QsciScintilla - - - &Undo - &Zurücksetzen - - - - &Redo - - - - - Cu&t - - - - - &Copy - - - - - &Paste - - - - - Delete - - - - - Select All - Alle auswählen - - - - RemoteCommitsModel - - - Commit ID - Commit-ID - - - - Message - Mitteilung - - - - Date - Datum - - - - Author - Autor - - - - Size - Größe - - - - Authored and committed by %1 - Erstellt und übermittelt von %1 - - - - Authored by %1, committed by %2 - Erstellt von %1, übermittelt von %2 - - - - RemoteDatabase - - - Error opening local databases list. -%1 - Fehler beim Öffnen der lokalen Datenbankliste. -%1 - - - - Error creating local databases list. -%1 - Fehler beim Erstellen der lokalen Datenbankliste. -%1 - - - - RemoteDock - - - Remote - Entfernt - - - - Local - Lokal - - - - Identity - Identität - - - - Push currently opened database to server - Aktuell geöffnete Datenbank an den Server übertragen - - - - Upload - Hochladen - - - - DBHub.io - DBHub.io - - - - <html><head/><body><p>In this pane, remote databases from dbhub.io website can be added to DB Browser for SQLite. First you need an identity:</p><ol style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Login to the dbhub.io website (use your GitHub credentials or whatever you want)</li><li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click the button to &quot;Generate client certificate&quot; (that's your identity). That'll give you a certificate file (save it to your local disk).</li><li style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Go to the Remote tab in DB Browser for SQLite Preferences. Click the button to add a new certificate to DB Browser for SQLite and choose the just downloaded certificate file.</li></ol><p>Now the Remote panel shows your identity and you can add remote databases.</p></body></html> - <html><head/><body><p>In diesem Fensterbereich können entfernte Datenbanken von der Webseite dbhub.io zu DB-Browser für SQLite hinzugefügt werden. Zunächst benötigen Sie eine Identität:</p><ol style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Melden Sie sich auf der Webseite dbhub.io an (unter Verwendung Ihrer GitHub-Daten oder wie gewünscht)</li><li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Klicken Sie auf den Button &quot;Generate client certificate&quot;, um ein Zertifikat zu erstellen (das ist Ihre Identität). Speichern Sie die erzeugte Zertifikatsdatei auf ihrer lokalen Festplatte.</li><li style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Öffnen Sie den Entfernt-Tab in den DB-Browser für SQLite-Einstellungen. Klicken Sie auf den Button, um ein neues Zertifikat hinzuzufügen und wählen Sie die soeben heruntergeladene Zertifikatsdatei aus.</li></ol><p>Jetzt zeigt der Entfernt-Fensterbereich Ihre Identität und Sie können entfernte Datenbanken hinzufügen.</p></body></html> - - - - Current Database - Aktuelle Datenbank - - - - Clone - Klonen - - - - Branch - Branch - - - - Commits - Commits - - - - Commits for - Commits für - - - - Delete Database - Datenbank löschen - - - - Delete the local clone of this database - Den lokalen Klon der Datenbank löschen - - - - Open in Web Browser - Im Webbrowser öffnen - - - - Open the web page for the current database in your browser - Die Webseite der aktuellen Datenbank im Webbrowser öffnen - - - - Clone from Link - Über Link klonen - - - - Use this to download a remote database for local editing using a URL as provided on the web page of the database. - Diese Option verwenden, um eine entfernte Datenbank für die lokale Bearbeitung mittels einer URL herunterzuladen, wie sie auf der Webseite der Datenbank angegeben ist. - - - - Refresh - Aktualisieren - - - - Reload all data and update the views - Alle Daten erneut laden und die Ansichten aktualisieren + + Reload all data and update the views + Alle Daten erneut laden und die Ansichten aktualisieren @@ -7805,48 +6443,48 @@ Soll wirklich fortgefahren werden? RemoteNetwork - + Choose a location to save the file Ort zum Speichern der Datei wählen - + Error opening remote file at %1. %2 Fehler beim Öffnen der entfernten Datei unter %1. %2 - + Error: Invalid client certificate specified. Fehler: Ungültiges Benutzerzertifikat angegeben. - + Please enter the passphrase for this client certificate in order to authenticate. Bitte die Passphrase für dieses Benutzerzertifikat eingeben, um die Authentifizierung durchzuführen. - + Cancel Abbrechen - + Uploading remote database to %1 Entfernte Datenbank wird hochgeladen zu %1 - + Downloading remote database from %1 Entfernte Datenbank wird heruntergeladen von %1 - + Error: Cannot open the file for sending. Fehler: Öffnen der Datei zum Senden nicht möglich. @@ -7894,17 +6532,17 @@ Soll wirklich fortgefahren werden? Benutzername - + Database will be public. Everyone has read access to it. Datenbank wird öffentlich sein. Jeder hat Lesezugriff darauf. - + Database will be private. Only you have access to it. Datenbank wird privat sein. Nur Sie haben Zugriff darauf. - + Use with care. This can cause remote commits to be deleted. Verwenden Sie dies mit Vorsicht. Dadurch können entfernte Commits gelöscht werden. @@ -7912,22 +6550,22 @@ Soll wirklich fortgefahren werden? RunSql - + Execution aborted by user Ausführung durch Benutzer abgebrochen - + , %1 rows affected , %1 Zeilen betroffen - + query executed successfully. Took %1ms%2 Abfrage erfolgreich ausgeführt. Benötigte %1 ms %2 - + executing query führe Abfrage aus @@ -8051,12 +6689,12 @@ Soll wirklich fortgefahren werden? Ctrl+PgUp - + Ctrl+PgDown - + @@ -8098,7 +6736,7 @@ Soll wirklich fortgefahren werden? SqlTextEdit - + Ctrl+/ @@ -8581,32 +7219,32 @@ Die Verwendung dieser Funktion muss in den Einstellungen autorisiert werden.laden... - + References %1(%2) Hold %3Shift and click to jump there Referenzen %1(%2) Halten Sie %3Umschalt und klicken Sie, um hierher zu springen - + Error changing data: %1 Fehler beim Ändern der Daten: %1 - + retrieving list of columns Liste der Spalten ermitteln - + Fetching data... Daten abrufen... - - + + Cancel Abbrechen @@ -8943,12 +7581,12 @@ Halten Sie %3Umschalt und klicken Sie, um hierher zu springen - <html><head/><body><p>This button creates a new record in the database. Hold the mouse button to open a pop-up menu of different options:</p><ul><li><span style=" font-weight:600;">New Record</span>: insert a new record with default values in the database.</li><li><span style=" font-weight:600;">Insert Values...</span>: open a dialog for entering values before they are inserted in the database. This allows to enter values acomplishing the different constraints. This dialog is also open if the <span style=" font-weight:600;">New Record</span> option fails due to these constraints.</li></ul></body></html> + <html><head/><body><p>This button creates a new record in the database. Hold the mouse button to open a pop-up menu of different options:</p><ul><li><span style=" font-weight:600;">New Record</span>: insert a new record with default values in the database.</li><li><span style=" font-weight:600;">Insert Values...</span>: open a dialog for entering values before they are inserted in the database. This allows to enter values accomplishing the different constraints. This dialog is also open if the <span style=" font-weight:600;">New Record</span> option fails due to these constraints.</li></ul></body></html> <html><head/><body><p>Dieser Button erstellt eine neue Zeile in der Datenbank. Halten sie die Maustaste gedrückt, um ein Popup-Menü mit verschiedenen Optionen zu öffnen:</p><ul><li><span style=" font-weight:600;">Neuer Eintrag</span>: eine neue Zeile mit Standardwerten in die Datenbank einfügen.</li><li><span style=" font-weight:600;">Werte einfügen...</span>: einen Dialog zur Eingabe von Werten öffnen, bevor diese in die Datenbank eingefügt werden. Dies erlaubt die Eingabe von Werten, die den Beschränkungen Genüge tun. Dieser Dialog wird auch geöffnet, wenn die Option <span style=" font-weight:600;">Neuer Eintrag</span> aufgrund dieser Beschränkungen fehlschlägt.</li></ul></body></html> - + Delete Record Zeile löschen @@ -9025,7 +7663,7 @@ Halten Sie %3Umschalt und klicken Sie, um hierher zu springen - <html><head/><body><p>This popup menu provides the following options applying to the currently browsed and filtered table:</p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Export to CSV: this option exports the data of the browsed table as currently displayed (after filters, display formats and order column) to a CSV file.</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Save as view: this option saves the current setting of the browsed table (filters, display formats and order column) as an SQL view that you can later browse or use in SQL statements.</li></ul></body></html> + <html><head/><body><p>This pop-up menu provides the following options applying to the currently browsed and filtered table:</p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Export to CSV: this option exports the data of the browsed table as currently displayed (after filters, display formats and order column) to a CSV file.</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Save as view: this option saves the current setting of the browsed table (filters, display formats and order column) as an SQL view that you can later browse or use in SQL statements.</li></ul></body></html> <html><head/><body><p>Dieses Popup-Menü bietet die folgenden Optionen zur Anwendung auf die aktuell ausgewählte und gefilterte Tabelle:</p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">CSV exportieren: diese Option exportiert die Daten der ausgewählten Tabelle wie aktuell angezeigt (gefiltert, Anzeigeformat und Spaltenreihenfolge) in eine CSV-Datei.</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Als Ansicht speichern: diese Option speichert die aktuelle Einstellung der ausgewählten Tabelle (Filter, Anzeigeformat und Spaltenreihenfolge) als eine SQL-Ansicht, die Sie später durchsuchen oder in SQL-Anweisungen verwenden können.</li></ul></body></html> @@ -9050,7 +7688,7 @@ Halten Sie %3Umschalt und klicken Sie, um hierher zu springen - + Set encoding Codierung setzen @@ -9315,96 +7953,96 @@ Halten Sie %3Umschalt und klicken Sie, um hierher zu springen . Summe: %1; Durchschnitt: %2; Minimum: %3; Maximum: %4 - + Conditional formats for "%1" Bedingte Formatierung für "%1" - + determining row count... Zeilenanzahl bestimmen... - + %L1 - %L2 of >= %L3 %L1 - %L2 von >= %L3 - + %L1 - %L2 of %L3 %L1 - %L2 von %L3 - + (clipped at %L1 rows) (abgeschnitten bei %L1 Zeilen) - + Please enter a pseudo-primary key in order to enable editing on this view. This should be the name of a unique column in the view. Bitte einen Pseudo-Primärschlüssel eingeben, um die Bearbeitung dieser Ansicht zu ermöglichen. Dies sollte der Name der eindeutigen Spalte dieser Ansicht sein. - + Delete Records Einträge löschen - + Duplicate records Einträge duplizieren - + Duplicate record Eintrag duplizieren - + Ctrl+" - + Adjust rows to contents Zeilen an Inhalte anpassen - + Error deleting record: %1 Fehler beim Löschen des Eintrags: %1 - + Please select a record first Bitte zuerst einen Eintrag auswählen - + Please choose a new encoding for all tables. Bitte wählen Sie eine neue Codierung für alle Tabellen. - + Please choose a new encoding for this table. Bitte wählen Sie eine neue Codierung für diese Tabelle. - + %1 Leave the field empty for using the database encoding. %1 Lassen Sie das Feld leer, um die Datenbank-Codierung zu verwenden. - + This encoding is either not valid or not supported. Diese Codierung ist entweder nicht gültig oder nicht unterstützt. - + %1 replacement(s) made. %1 Ersetzung(en) durchgeführt. @@ -9432,24 +8070,6 @@ Lassen Sie das Feld leer, um die Datenbank-Codierung zu verwenden. Einen neuen Namen für den Datenbrowser setzen. Das Zeichen '&&' verwenden, um das folgende Zeichen als Shortcut zu verwenden. - - UndoStack - - - Inserting %1 bytes - - - - - Delete %1 chars - - - - - Overwrite %1 chars - - - VacuumDialog diff --git a/src/translations/sqlb_en_GB.ts b/src/translations/sqlb_en_GB.ts index 6f708a1a0..f3b77cb52 100644 --- a/src/translations/sqlb_en_GB.ts +++ b/src/translations/sqlb_en_GB.ts @@ -15,7 +15,7 @@ - <html><head/><body><p>DB Browser for SQLite is an open source, freeware visual tool used to create, design and edit SQLite database files.</p><p>It is bi-licensed under the Mozilla Public License Version 2, as well as the GNU General Public License Version 3 or later. You can modify or redistribute it under the conditions of these licenses.</p><p>See <a href="https://www.gnu.org/licenses/gpl.html"><span style=" text-decoration: underline; color:#0000ff;">http://www.gnu.org/licenses/gpl.html</span></a> and <a href="https://www.mozilla.org/MPL/2.0/index.txt"><span style=" text-decoration: underline; color:#0000ff;">https://www.mozilla.org/MPL/2.0/index.txt</span></a> for details.</p><p>For more information on this program please visit our website at: <a href="https://sqlitebrowser.org"><span style=" text-decoration: underline; color:#0000ff;">http://sqlitebrowser.org</span></a></p><p><span style=" font-size:small;">This software uses the GPL/LGPL Qt Toolkit from </span><a href="http://qt-project.org/"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://qt-project.org/</span></a><span style=" font-size:small;"><br/>See </span><a href="https://doc.qt.io/qt-5/licensing.html"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://qt-project.org/doc/qt-5/licensing.html</span></a><span style=" font-size:small;"> for licensing terms and information.</span></p><p><span style=" font-size:8pt;">We use the nalgeon/sqlean library for SQLite extensions support.<br/>This library is licensed under the MIT license, see the following for more information:<br/></span><a href="https://github.com/nalgeon/sqlean"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">https://github.com/nalgeon/sqlean</span></a></p><p><span style=" font-size:small;">It also uses the Pastel SVG icon set by Michael Buckley under a Creative Commons Attribution Share Alike 4.0 license.<br/>See </span><a href="https://codefisher.org/pastel-svg/"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://codefisher.org/pastel-svg/</span></a><span style=" font-size:small;"> for details.</span></p></body></html> + <html><head/><body><p>DB Browser for SQLite is an open source, freeware visual tool used to create, design and edit SQLite database files.</p><p>It is bi-licensed under the Mozilla Public License Version 2, as well as the GNU General Public License Version 3 or later. You can modify or redistribute it under the conditions of these licenses.</p><p>See <a href="https://www.gnu.org/licenses/gpl.html"><span style=" text-decoration: underline; color:#0000ff;">https://www.gnu.org/licenses/gpl.html</span></a> and <a href="https://www.mozilla.org/MPL/2.0/index.txt"><span style=" text-decoration: underline; color:#0000ff;">https://www.mozilla.org/MPL/2.0/index.txt</span></a> for details.</p><p>For more information on this program please visit our website at: <a href="https://sqlitebrowser.org"><span style=" text-decoration: underline; color:#0000ff;">https://sqlitebrowser.org</span></a></p><p><span style=" font-size:small;">This software uses the GPL/LGPL Qt Toolkit from </span><a href="https://qt-project.org/"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://qt-project.org/</span></a><span style=" font-size:small;"><br/>See </span><a href="https://doc.qt.io/qt-5/licensing.html"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://doc.qt.io/qt-5/licensing.html</span></a><span style=" font-size:small;"> for licensing terms and information.</span></p><p><span style=" font-size:8pt;">We use the nalgeon/sqlean library for SQLite extensions support.<br/>This library is licensed under the MIT license, see the following for more information:<br/></span><a href="https://github.com/nalgeon/sqlean"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">https://github.com/nalgeon/sqlean</span></a></p><p><span style=" font-size:small;">It also uses the Pastel SVG icon set by Michael Buckley under a Creative Commons Attribution Share Alike 4.0 license.<br/>See </span><a href="https://codefisher.org/pastel-svg/"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://codefisher.org/pastel-svg/</span></a><span style=" font-size:small;"> for details.</span></p></body></html> @@ -278,36 +278,36 @@ - Invalid option/non-existant file: %1 + Invalid option/non-existent file: %1 - + SQLite Version - + SQLCipher Version %1 (based on SQLite %2) - + DB Browser for SQLite Version %1. - + Last commit hash when built: %1 - + Built for %1, running on %2 - + Qt Version %1 @@ -385,7 +385,7 @@ - + Please set a key to encrypt the database. Note that if you change any of the other, optional, settings you'll need to re-enter them as well every time you open the database file. Leave the password fields empty to disable the encryption. @@ -393,7 +393,7 @@ The encryption process might take some time and you should have a backup copy of - + Please enter the key used to encrypt the database. If any of the other settings were altered for this database file you need to provide this information as well. @@ -417,129 +417,129 @@ If any of the other settings were altered for this database file you need to pro - + Default - + Decimal number - + Exponent notation - + Hex blob - + Hex number - + Apple NSDate to date - + Java epoch (milliseconds) to date - + .NET DateTime.Ticks to date - + Julian day to date - + Unix epoch to local time - + WebKit / Chromium epoch to date - + WebKit / Chromium epoch to local time - + Date as dd/mm/yyyy - + Lower case - + Binary GUID to text - + SpatiaLite Geometry to SVG - + Custom display format must contain a function call applied to %1 - + Error in custom display format. Message from database engine: %1 - + Custom display format must return only one column but it returned %1. - + Octal number - + Round number - + Unix epoch to date - + Upper case - + Windows DATE to date - + Custom @@ -666,207 +666,207 @@ If any of the other settings were altered for this database file you need to pro DBBrowserDB - + Please specify the database name under which you want to access the attached database - + Invalid file format - + Do you really want to close this temporary database? All data will be lost. - + Do you want to save the changes made to the database file %1? - + Database didn't close correctly, probably still busy - + Cannot open destination file: '%1' - - + + Cannot backup to file: '%1'. Message: %2 - + The database is currently busy: - + Do you want to abort that other operation? - + Exporting database to SQL file... - - + + Cancel - - + + No database file opened - + Executing SQL... - + Action cancelled. - - + + Error in statement #%1: %2. Aborting execution%3. - - + + and rolling back - + didn't receive any output from %1 - + could not execute command: %1 - + Cannot delete this object - + Cannot set data on this object - - + + A table with the name '%1' already exists in schema '%2'. - + No table with name '%1' exists in schema '%2'. - - + + Cannot find column %1. - + Renaming the column failed. DB says: %1 - + Creating new table failed. DB says: %1 - + Copying data to new table failed. DB says: %1 - + Deleting old table failed. DB says: %1 - + Restoring some of the objects associated with this table failed. This is most likely because some column names changed. Here's the SQL statement which you might want to fix and execute manually: - + could not get list of databases: %1 - + Error loading extension: %1 - + Error loading built-in extension: %1 - + could not get column information - + Error renaming table '%1' to '%2'. Message from database engine: %3 - + Creating savepoint failed. DB says: %1 - - + + Releasing savepoint failed. DB says: %1 - + could not get list of db objects: %1 - + Error setting pragma %1 to %2: %3 - + File not found. @@ -1920,7 +1920,7 @@ All data currently stored in this field will be lost. ExtendedScintilla - + Ctrl+H @@ -1931,22 +1931,22 @@ All data currently stored in this field will be lost. - + Ctrl+P - + Find... - + Find and Replace... - + Print... @@ -1954,128 +1954,128 @@ All data currently stored in this field will be lost. ExtendedTableWidget - + Use as Exact Filter - + Containing - + Not containing - + Not equal to - + Greater than - + Less than - + Greater or equal - + Less or equal - + Between this and... - + Regular expression - + Edit Conditional Formats... - + Set to NULL - + Cut - + Copy - + Copy with Headers - + Copy as SQL - + Paste - + Print... - + Use in Filter Expression - + Alt+Del - + Ctrl+Shift+C - + Ctrl+Alt+C - + The content of the clipboard is bigger than the range selected. Do you want to insert it anyway? - + <p>Not all data has been loaded. <b>Do you want to load all data before selecting all the rows?</b><p><p>Answering <b>No</b> means that no more data will be loaded and the selection will not be performed.<br/>Answering <b>Yes</b> might take some time while the data is loaded but the selection will be complete.</p>Warning: Loading all the data might require a great amount of memory for big tables. - + Cannot set selection to NULL. Column %1 has a NOT NULL constraint. @@ -2127,12 +2127,12 @@ Do you want to insert it anyway? FilterLineEdit - + Filter - + These input fields allow you to perform quick filters in the currently selected table. By default, the rows containing the input text are filtered out. The following operators are also supported: @@ -2148,92 +2148,92 @@ x~y Range: values between x and y - + Clear All Conditional Formats - + Use for Conditional Format - + Edit Conditional Formats... - + Set Filter Expression - + What's This? - + Is NULL - + Is not NULL - + Is empty - + Is not empty - + Not containing... - + Equal to... - + Not equal to... - + Greater than... - + Less than... - + Greater or equal... - + Less or equal... - + In range... - + Regular expression... @@ -2456,7 +2456,7 @@ x~y Range: values between x and y - + Tab @@ -2599,7 +2599,7 @@ x~y Range: values between x and y - + Deselect All @@ -2609,52 +2609,52 @@ x~y Range: values between x and y - + Select All - + There is already a table named '%1' and an import into an existing table is only possible if the number of columns match. - + There is already a table named '%1'. Do you want to import the data into it? - + Creating restore point failed: %1 - + Creating the table failed: %1 - + importing CSV - + Could not prepare INSERT statement: %1 - + Unexpected end of file. Please make sure that you have configured the correct quote characters and the file is not malformed. - + Importing the file '%1' took %2ms. Of this %3ms were spent in the row function. - + Inserting row failed: %1 @@ -2667,98 +2667,98 @@ x~y Range: values between x and y - + toolBar1 - + Opens the SQLCipher FAQ in a browser window - + Export one or more table(s) to a JSON file - + &File - + &Import - + &Export - + &Edit - + &View - + &Help - + DB Toolbar - + Edit Database &Cell - + DB Sche&ma - + &Remote - - + + Execute current line - + This button executes the SQL statement present in the current editor line - + Shift+F5 - + Sa&ve Project - + Open an existing database file in read only mode - + User @@ -2770,82 +2770,82 @@ You can drag SQL statements from an object row and drop them into other applicat - + Un/comment block of SQL code - + Un/comment block - + Comment or uncomment current line or selected block of code - + Comment or uncomment the selected lines or the current line, when there is no selection. All the block is toggled according to the first line. - + Ctrl+/ - + Stop SQL execution - + Stop execution - + Stop the currently running SQL script - + Warning: this pragma is not readable and this value has been inferred. Writing the pragma might overwrite a redefined LIKE provided by an SQLite extension. - + Too&ls - + Application - + Error Log - + This button clears the contents of the SQL logs - + &Clear - + This panel lets you examine a log of all SQL commands issued by the application or by yourself - + This is the structure of the opened database. You can drag multiple object names from the Name column and drop them into the SQL editor and you can adjust the properties of the dropped names using the context menu. This would help you in composing SQL statements. You can drag SQL statements from the Schema column and drop them into the SQL editor or into other applications. @@ -2853,664 +2853,823 @@ You can drag SQL statements from the Schema column and drop them into the SQL ed - - + + Project Toolbar - + Extra DB toolbar - - - + + + Close the current database file - + &New Database... - - + + Create a new database file - + This option is used to create a new database file. - + Ctrl+N - - + + &Open Database... - - - - - + + + + + Open an existing database file - - - + + + This option is used to open an existing database file. - + Ctrl+O - + &Close Database - + This button closes the connection to the currently open database file - - + + Ctrl+W - - + + Revert database to last saved state - + This option is used to revert the current database file to its last saved state. All changes made since the last save operation are lost. - - + + Write changes to the database file - + This option is used to save changes to the database file. - + Ctrl+S - + Compact &Database... - + Compact the database file, removing space wasted by deleted records - - + + Compact the database file, removing space wasted by deleted records. - + E&xit - + Ctrl+Q - + Import data from an .sql dump text file into a new or existing database. - + This option lets you import data from an .sql dump text file into a new or existing database. SQL dump files can be created on most database engines, including MySQL and PostgreSQL. - + Open a wizard that lets you import data from a comma separated text file into a database table. - + Open a wizard that lets you import data from a comma separated text file into a database table. CSV files can be created on most database and spreadsheet applications. - + Export a database to a .sql dump text file. - + This option lets you export a database to a .sql dump text file. SQL dump files contain all data necessary to recreate the database on most database engines, including MySQL and PostgreSQL. - + Export a database table as a comma separated text file. - + Export a database table as a comma separated text file, ready to be imported into other database or spreadsheet applications. - + Open the Create Table wizard, where it is possible to define the name and fields for a new table in the database - - + + Delete Table - + Open the Delete Table wizard, where you can select a database table to be dropped. - + Open the Create Index wizard, where it is possible to define a new index on an existing database table. - + &Preferences... - - + + Open the preferences window. - + &DB Toolbar - + Shows or hides the Database toolbar. - + Shift+F1 - + New &tab - + Open SQL file(s) - + This button opens files containing SQL statements and loads them in new editor tabs - + Execute line - + &Wiki - + F1 - + Bug &Report... - + Feature Re&quest... - + Web&site - + &Donate on Patreon... - + &Save Project - + This button lets you save all the settings associated to the open DB to a DB Browser for SQLite project file - + Open &Project - + This button lets you open a DB Browser for SQLite project file - + Ctrl+Shift+O - + &Save Project As... - - - + + + Save the project in a file selected in a dialog - + Save A&ll - - - + + + Save DB file, project file and opened SQL files - + Ctrl+Shift+S - + Browse Table - + Close Pro&ject - - + + Close project and database files and return to the initial state - + Ctrl+Shift+F4 - - + + Detach Database - - + + Detach database file attached to the current database connection - + &Attach Database... - - + + Temp Store + + + + + Secure Delete + + + + + Case Sensitive Like + + + + + Journal Mode + + + + + Journal Size Limit + + + + + Recursive Triggers + + + + + Page Size + + + + + Foreign Keys + + + + + Auto Vacuum + + + + + Max Page Count + + + + + Checkpoint Full FSYNC + + + + + + Off + + + + + + Normal + + + + + + Full + + + + + Default + + + + + File + + + + + + Memory + + + + + Delete + + + + + Truncate + + + + + Persist + + + + + WAL + + + + + Exclusive + + + + + Automatic Index + + + + + Ignore Check Constraints + + + + + Full FSYNC + + + + + WAL Auto Checkpoint + + + + + User Version + + + + + Synchronous + + + + + None + + + + + Incremental + + + + + Locking Mode + + + + + Add another database file to the current database connection - + This button lets you add another database file to the current database connection - + &Set Encryption... - + SQLCipher &FAQ - + Table(&s) to JSON... - + Open Data&base Read Only... - + Save results - + Save the results view - + This button lets you save the results of the last executed query - - + + Find text in SQL editor - + Find - + This button opens the search bar of the editor - + Ctrl+F - - + + Find or replace text in SQL editor - + Find or replace - + This button opens the find/replace dialog for the current editor tab - + Ctrl+H - + Export to &CSV - + Export to &JSON - + Save as &view - + Save as view - + Shows or hides the Project toolbar. - + Extra DB Toolbar - + &Open Database - + New In-&Memory Database - + Drag && Drop SELECT Query - - + + When dragging fields from the same table or a single table, drop a SELECT query into the editor - + Drag && Drop Qualified Names - - + + Use qualified names (e.g. "Table"."Field") when dragging the objects and dropping them into the editor - + Drag && Drop Enquoted Names - - + + Use escaped identifiers (e.g. "Table1") when dragging the objects and dropping them into the editor - + &Integrity Check - + Runs the integrity_check pragma over the opened database and returns the results in the Execute SQL tab. This pragma does an integrity check of the entire database. - + &Foreign-Key Check - + Runs the foreign_key_check pragma over the opened database and returns the results in the Execute SQL tab - + &Quick Integrity Check - + Run a quick integrity check over the open DB - + Runs the quick_check pragma over the opened database and returns the results in the Execute SQL tab. This command does most of the checking of PRAGMA integrity_check but runs much faster. - + &Optimize - + Attempt to optimize the database - + Runs the optimize pragma over the opened database. This pragma might perform optimizations that will improve the performance of future queries. - - + + Print - + Print text from current SQL editor tab - + Open a dialog for printing the text in the current SQL editor tab - + Print the structure of the opened database - + Open a dialog for printing the structure of the opened database - - + + Ctrl+Shift+W - + Table from CSV data in Clipboard... - + This treats the current clipboard contents as a CSV file and opens the same import wizard that is used for importing CSV data from a file. - + Show &Row Counts - + This shows the number of rows for each table and view in the database. - + Save Database &As... - + Save the current database as a different file - + Refresh - + Reload the database structure - + &Recently opened - + Ctrl+T - + SQL &Log @@ -3536,749 +3695,749 @@ You can drag SQL statements from the Schema column and drop them into the SQL ed - - + + E&xecute SQL This has to be equal to the tab title in all the main tabs - + &Recent Files - + Show S&QL submitted by - + &Plot - + &New Database - - + + Ctrl+F4 - + &Revert Changes - + &Undo - - + + Undo last change to the database - + This action undoes the last change performed to the database in the Database Browser or in Execute SQL. Redoing is not possible. - + &Write Changes - + &Database from SQL file... - + &Table from CSV file... - + &Database to SQL file... - + &Table(s) as CSV file... - + &Create Table... - + &Delete Table... - + &Modify Table... - + Open the Modify Table wizard, where it is possible to rename an existing table. It is also possible to add or delete fields from a table, as well as modify field names and types. - + Create &Index... - + W&hat's This? - + &About - + This button opens a new tab for the SQL editor - + &Execute SQL - + Execute all/selected SQL - + This button executes the currently selected SQL statements. If no text is selected, all SQL statements are executed. - + Ctrl+Shift+T - - - + + + Save SQL file - + &Load Extension... - + Ctrl+E - + Export as CSV file - + Export table as comma separated values file - - + + Save the current session to a file - + Open &Project... - - + + Load a working session from a file - - + + Save SQL file as - + This button saves the content of the current SQL editor tab to a file - + &Browse Table - + Copy Create statement - + Copy the CREATE statement of the item to the clipboard - + Ctrl+Return - + Ctrl+L - - + + Ctrl+P - + Ctrl+D - + Ctrl+I - + Encrypted - + Read only - + Database file is read only. Editing the database is disabled. - + Database encoding - + Database is encrypted using SQLCipher - - + + Choose a database file - - - + + + Choose a filename to save under - + Error checking foreign keys after table modification. The changes will be reverted. - + This table did not pass a foreign-key check.<br/>You should run 'Tools | Foreign-Key Check' and fix the reported issues. - - + + At line %1: - + Result: %2 - + Setting PRAGMA values or vacuuming will commit your current transaction. Are you sure? - + Error while saving the database file. This means that not all changes to the database were saved. You need to resolve the following error first. %1 - + Are you sure you want to undo all changes made to the database file '%1' since the last save? - + Choose a file to import - + Text files(*.sql *.txt);;All files(*) - + Do you want to create a new database file to hold the imported data? If you answer no we will attempt to import the data in the SQL file to the current database. - + Automatically load the last opened DB file at startup - - Shift+Alt+0 + + Alt+Shift+0 - - The database is currenctly busy. + + The database is currently busy. - + You are still executing SQL statements. Closing the database now will stop their execution, possibly leaving the database in an inconsistent state. Are you sure you want to close the database? - + Do you want to save the changes made to the project file '%1'? - + File %1 already exists. Please choose a different name. - + Error importing data: %1 - + Import completed. - + Delete View - + Modify View - + Delete Trigger - + Modify Trigger - + Delete Index - + Modify Index - + Modify Table - + Do you want to save the changes made to SQL tabs in a new project file? - + Do you want to save the changes made to the SQL file %1? - + Could not find resource file: %1 - + Choose a project file to open - + Could not open project file for writing. Reason: %1 - + Busy (%1) - + Setting PRAGMA values will commit your current transaction. Are you sure? - + Reset Window Layout - + Click here to interrupt the currently running query. - + Ctrl+Alt+W - + Could not open database file. Reason: %1 - + In-Memory database - + Choose a database file to save under - + Error while saving the database to the new file. - + Are you sure you want to delete the table '%1'? All data associated with the table will be lost. - + Are you sure you want to delete the view '%1'? - + Are you sure you want to delete the trigger '%1'? - + Are you sure you want to delete the index '%1'? - + Error: could not delete the table. - + Error: could not delete the view. - + Error: could not delete the trigger. - + Error: could not delete the index. - + Message from database engine: %1 - + Editing the table requires to save all pending changes now. Are you sure you want to save the database? - + Edit View %1 - + Edit Trigger %1 - + You are already executing SQL statements. Do you want to stop them in order to execute the current statements instead? Note that this might leave the database in an inconsistent state. - + -- EXECUTING SELECTION IN '%1' -- - + -- EXECUTING LINE IN '%1' -- - + -- EXECUTING ALL IN '%1' -- - + Result: %1 - + %1 rows returned in %2ms - + Choose text files - + Import completed. Some foreign key constraints are violated. Please fix them before saving. - + Opened '%1' in read-only mode from recent file list - + Opened '%1' from recent file list - + &%1 %2%3 - + (read only) - + Open Database or Project - + Attach Database... - + Import CSV file(s)... - + Do you want to save the changes made to SQL tabs in the project file '%1'? - + The statements in the tab '%1' are still executing. Closing the tab will stop the execution. This might leave the database in an inconsistent state. Are you sure you want to close the tab? - + Select SQL file to open - + DB file '%1' could not be opened - + This project file is using an old file format because it was created using DB Browser for SQLite version 3.10 or lower. Loading this file format is no longer fully supported. If you want to load it completely, please use DB Browser for SQLite version 3.12 to convert it to the new file format. - + Table '%1' not found; settings ignored - + -- Reference to file "%1" (not supported by this version) -- - + Yes. Don't ask again - + This action will open a new SQL tab with the following statements for you to edit and run: - + Rename Tab - + Duplicate Tab - + Close Tab - + Opening '%1'... - + There was an error opening '%1'... - + Value is not a valid URL or filename: %1 - + Select file name - + Ctrl+Tab - + Ctrl+Shift+Tab - + Clear List - + Window Layout - + Ctrl+Alt+0 - + Simplify Window Layout - + Dock Windows at Bottom - + Dock Windows at Left Side - + Dock Windows at Top - + Select the action to apply to the dropped file(s). <br/>Note: only 'Import' will process more than one file. Note for translation: Although there is no %n in the original, you can use the numerus-form to adjust 'files(s)' and remove the note when n = 1. Including %n in the translation will also work. @@ -4287,105 +4446,105 @@ Are you sure you want to save the database? - + Select extension file - + Extension successfully loaded. - + Error loading extension: %1 - - + + Don't show again - + New version available. - + A new DB Browser for SQLite version is available (%1.%2.%3).<br/><br/>Please download at <a href='%4'>%4</a>. - + Project saved to file '%1' - + Collation needed! Proceed? - + A table in this database requires a special collation function '%1' that this application can't provide without further knowledge. If you choose to proceed, be aware bad things can happen to your database. Create a backup! - + creating collation - + Set a new name for the SQL tab. Use the '&&' character to allow using the following character as a keyboard shortcut. - + Please specify the view name - + There is already an object with that name. Please choose a different name. - + View successfully created. - + Error creating view: %1 - + This action will open a new SQL tab for running: - + Press Help for opening the corresponding SQLite reference page. - + DB Browser for SQLite project file (*.sqbpro) - + Execution finished with errors. - + Execution finished without errors. @@ -4574,101 +4733,106 @@ Select the axes or axes labels to drag and zoom only in that orientation. - + Load all data and redraw plot - - - + + + Row # - + Copy - + Print... - + + Help + + + + Show legend - + Stacked bars - + Fixed number format - + Date/Time - + Date - + Time - - + + Numeric - + Label - + Invalid - + Load all data and redraw plot. Warning: not all data has been fetched from the table yet due to the partial fetch mechanism. - + Choose an axis color Choose an axis colour - + Choose a filename to save under - + PNG(*.png);;JPG(*.jpg);;PDF(*.pdf);;BMP(*.bmp);;All Files(*) - + There are curves in this plot and the selected line style can only be applied to graphs sorted by X. Either sort the table or query by X to remove curves or select one of the styles supported by curves: None or Line. - + Loading all remaining data for this table took %1ms. @@ -5232,2128 +5396,469 @@ Can be set to 0 for disabling completion. - &Quotes for identifiers - - - - - Choose the quoting mechanism used by the application for identifiers in SQL code. - - - - - "Double quotes" - Standard SQL (recommended) - - - - - `Grave accents` - Traditional MySQL quotes - - - - - [Square brackets] - Traditional MS SQL Server quotes - - - - - Keywords in &UPPER CASE - - - - - When set, the SQL keywords are completed in UPPER CASE letters. - - - - - When set, the SQL code lines that caused errors during the last execution are highlighted and the results frame indicates the error in the background - - - - - Close button on tabs - - - - - If enabled, SQL editor tabs will have a close button. In any case, you can use the contextual menu or the keyboard shortcut to close them. - - - - - &Extensions - - - - - Select extensions to load for every database: - - - - - Add extension - - - - - Remove extension - - - - - Select built-in extensions to load for every database: - - - - - <html><head/><body><p>While supporting the REGEXP operator SQLite doesn't implement any regular expression<br/>algorithm but calls back the running application. DB Browser for SQLite implements this<br/>algorithm for you to let you use REGEXP out of the box. However, as there are multiple possible<br/>implementations of this and you might want to use another one, you're free to disable the<br/>application's implementation and load your own by using an extension. Requires restart of the application.</p></body></html> - - - - - Disable Regular Expression extension - - - - - <html><head/><body><p>SQLite provides an SQL function for loading extensions from a shared library file. Activate this if you want to use the <span style=" font-style:italic;">load_extension()</span> function from SQL code.</p><p>For security reasons, extension loading is turned off by default and must be enabled through this setting. You can always load extensions through the GUI, even though this option is disabled.</p></body></html> - - - - - Allow loading extensions from SQL code - - - - - Remote - - - - - CA certificates - - - - - Proxy - - - - - Configure - - - - - Export Settings - - - - - Import Settings - - - - - - Subject CN - - - - - Common Name - - - - - Subject O - - - - - Organization - - - - - - Valid from - - - - - - Valid to - - - - - - Serial number - - - - - Your certificates - - - - - File - - - - - Subject Common Name - - - - - Issuer CN - - - - - Issuer Common Name - - - - - Clone databases into - - - - - - Choose a directory - - - - - - The language will change after you restart the application. - - - - - Select extension file - - - - - Extensions(*.so *.dylib *.dll);;All files(*) - - - - - Import certificate file - - - - - No certificates found in this file. - - - - - Are you sure you want do remove this certificate? All certificate data will be deleted from the application settings! - - - - - Are you sure you want to clear all the saved settings? -All your preferences will be lost and default values will be used. - - - - - Save Settings File - - - - - - Initialization File (*.ini) - - - - - The settings file has been saved in location : - - - - - - Open Settings File - - - - - The settings file was loaded properly. - - - - - The selected settings file is not a normal settings file. -Please check again. - - - - - ProxyDialog - - - Proxy Configuration - - - - - Pro&xy Type - - - - - Host Na&me - - - - - Port - - - - - Authentication Re&quired - - - - - &User Name - - - - - Password - - - - - None - - - - - System settings - - - - - HTTP - - - - - Socks v5 - - - - - QObject - - - Error importing data - - - - - from record number %1 - - - - - . -%1 - - - - - Importing CSV file... - - - - - Cancel - - - - - All files (*) - - - - - SQLite database files (*.db *.sqlite *.sqlite3 *.db3) - - - - - Left - - - - - Right - - - - - Center - - - - - Justify - - - - - SQLite Database Files (*.db *.sqlite *.sqlite3 *.db3) - - - - - DB Browser for SQLite Project Files (*.sqbpro) - - - - - SQL Files (*.sql) - - - - - All Files (*) - - - - - Text Files (*.txt) - - - - - Comma-Separated Values Files (*.csv) - - - - - Tab-Separated Values Files (*.tsv) - - - - - Delimiter-Separated Values Files (*.dsv) - - - - - Concordance DAT files (*.dat) - - - - - JSON Files (*.json *.js) - - - - - XML Files (*.xml) - - - - - Binary Files (*.bin *.dat) - - - - - SVG Files (*.svg) - - - - - Hex Dump Files (*.dat *.bin) - - - - - Extensions (*.so *.dylib *.dll) - - - - - Initialization File (*.ini) - - - - - QsciCommand - - - Move down one line - - - - - Extend selection down one line - - - - - Extend rectangular selection down one line - - - - - Scroll view down one line - - - - - Move up one line - - - - - Extend selection up one line - - - - - Extend rectangular selection up one line - - - - - Scroll view up one line - - - - - Scroll to start of document - - - - - Scroll to end of document - - - - - Scroll vertically to centre current line - - - - - Move down one paragraph - - - - - Extend selection down one paragraph - - - - - Move up one paragraph - - - - - Extend selection up one paragraph - - - - - Move left one character - - - - - Extend selection left one character - - - - - Extend rectangular selection left one character - - - - - Move right one character - - - - - Extend selection right one character - - - - - Extend rectangular selection right one character - - - - - Move left one word - - - - - Extend selection left one word - - - - - Move right one word - - - - - Extend selection right one word - - - - - Move to end of previous word - - - - - Extend selection to end of previous word - - - - - Move to end of next word - - - - - Extend selection to end of next word - - - - - Move left one word part - - - - - Extend selection left one word part - - - - - Move right one word part - - - - - Extend selection right one word part - - - - - Move to start of document line - - - - - Extend selection to start of document line - - - - - Extend rectangular selection to start of document line - - - - - Move to start of display line - - - - - Extend selection to start of display line - - - - - Move to start of display or document line - - - - - Extend selection to start of display or document line - - - - - Move to first visible character in document line - - - - - Extend selection to first visible character in document line - - - - - Extend rectangular selection to first visible character in document line - - - - - Move to first visible character of display in document line - - - - - Extend selection to first visible character in display or document line - - - - - Move to end of document line - - - - - Extend selection to end of document line - - - - - Extend rectangular selection to end of document line - - - - - Move to end of display line - - - - - Extend selection to end of display line - - - - - Move to end of display or document line - - - - - Extend selection to end of display or document line - - - - - Move to start of document - - - - - Extend selection to start of document - - - - - Move to end of document - - - - - Extend selection to end of document - - - - - Move up one page - - - - - Extend selection up one page - - - - - Extend rectangular selection up one page - - - - - Move down one page - - - - - Extend selection down one page - - - - - Extend rectangular selection down one page - - - - - Stuttered move up one page - - - - - Stuttered extend selection up one page - - - - - Stuttered move down one page - - - - - Stuttered extend selection down one page - - - - - Delete current character - - - - - Delete previous character - - - - - Delete previous character if not at start of line - - - - - Delete word to left - - - - - Delete word to right - - - - - Delete right to end of next word - - - - - Delete line to left - - - - - Delete line to right - - - - - Delete current line - - - - - Cut current line - - - - - Copy current line - - - - - Transpose current and previous lines - - - - - Duplicate the current line - - - - - Select all - - - - - Move selected lines up one line - - - - - Move selected lines down one line - - - - - Duplicate selection - - - - - Convert selection to lower case - - - - - Convert selection to upper case - - - - - Cut selection - - - - - Copy selection - - - - - Paste - - - - - Toggle insert/overtype - - - - - Insert newline - - - - - Formfeed - - - - - Indent one level - - - - - De-indent one level - - - - - Cancel - - - - - Undo last command - - - - - Redo last command - - - - - Zoom in - - - - - Zoom out - - - - - QsciLexerCPP - - - Default - - - - - Inactive default - - - - - C comment - - - - - Inactive C comment - - - - - C++ comment - - - - - Inactive C++ comment - - - - - JavaDoc style C comment - - - - - Inactive JavaDoc style C comment - - - - - Number - - - - - Inactive number - - - - - Keyword - - - - - Inactive keyword - - - - - Double-quoted string - - - - - Inactive double-quoted string - - - - - Single-quoted string - - - - - Inactive single-quoted string - - - - - IDL UUID - - - - - Inactive IDL UUID - - - - - Pre-processor block - - - - - Inactive pre-processor block - - - - - Operator - - - - - Inactive operator - - - - - Identifier - - - - - Inactive identifier - - - - - Unclosed string - - - - - Inactive unclosed string - - - - - C# verbatim string - - - - - Inactive C# verbatim string - - - - - JavaScript regular expression - - - - - Inactive JavaScript regular expression - - - - - JavaDoc style C++ comment - - - - - Inactive JavaDoc style C++ comment - - - - - Secondary keywords and identifiers - - - - - Inactive secondary keywords and identifiers - - - - - JavaDoc keyword - - - - - Inactive JavaDoc keyword - - - - - JavaDoc keyword error - - - - - Inactive JavaDoc keyword error - - - - - Global classes and typedefs - - - - - Inactive global classes and typedefs - - - - - C++ raw string - - - - - Inactive C++ raw string - - - - - Vala triple-quoted verbatim string - - - - - Inactive Vala triple-quoted verbatim string - - - - - Pike hash-quoted string - - - - - Inactive Pike hash-quoted string - - - - - Pre-processor C comment - - - - - Inactive pre-processor C comment - - - - - JavaDoc style pre-processor comment - - - - - Inactive JavaDoc style pre-processor comment - - - - - User-defined literal - - - - - Inactive user-defined literal - - - - - Task marker - - - - - Inactive task marker - - - - - Escape sequence - - - - - Inactive escape sequence - - - - - QsciLexerHTML - - - HTML default - - - - - Tag - - - - - Unknown tag - - - - - Attribute - - - - - Unknown attribute - - - - - HTML number - - - - - HTML double-quoted string - - - - - HTML single-quoted string - - - - - Other text in a tag - - - - - HTML comment - - - - - Entity - - - - - End of a tag - - - - - Start of an XML fragment - - - - - End of an XML fragment - - - - - Script tag - - - - - Start of an ASP fragment with @ - - - - - Start of an ASP fragment - - - - - CDATA - - - - - Start of a PHP fragment - - - - - Unquoted HTML value - - - - - ASP X-Code comment - - - - - SGML default - - - - - SGML command - - - - - First parameter of an SGML command - - - - - SGML double-quoted string - - - - - SGML single-quoted string - - - - - SGML error - - - - - SGML special entity - - - - - SGML comment - - - - - First parameter comment of an SGML command - - - - - SGML block default - - - - - Start of a JavaScript fragment - - - - - JavaScript default - - - - - JavaScript comment - - - - - JavaScript line comment - - - - - JavaDoc style JavaScript comment - - - - - JavaScript number - - - - - JavaScript word - - - - - JavaScript keyword - - - - - JavaScript double-quoted string - - - - - JavaScript single-quoted string - - - - - JavaScript symbol - - - - - JavaScript unclosed string - - - - - JavaScript regular expression - - - - - Start of an ASP JavaScript fragment - - - - - ASP JavaScript default - - - - - ASP JavaScript comment - - - - - ASP JavaScript line comment - - - - - JavaDoc style ASP JavaScript comment - - - - - ASP JavaScript number - - - - - ASP JavaScript word - - - - - ASP JavaScript keyword - - - - - ASP JavaScript double-quoted string - - - - - ASP JavaScript single-quoted string - - - - - ASP JavaScript symbol - - - - - ASP JavaScript unclosed string - - - - - ASP JavaScript regular expression - - - - - Start of a VBScript fragment - - - - - VBScript default - - - - - VBScript comment - - - - - VBScript number - - - - - VBScript keyword - - - - - VBScript string - - - - - VBScript identifier - - - - - VBScript unclosed string - - - - - Start of an ASP VBScript fragment - - - - - ASP VBScript default - - - - - ASP VBScript comment - - - - - ASP VBScript number - - - - - ASP VBScript keyword - - - - - ASP VBScript string - - - - - ASP VBScript identifier - - - - - ASP VBScript unclosed string - - - - - Start of a Python fragment - - - - - Python default - - - - - Python comment - - - - - Python number - - - - - Python double-quoted string - - - - - Python single-quoted string - - - - - Python keyword - - - - - Python triple double-quoted string - - - - - Python triple single-quoted string - - - - - Python class name - - - - - Python function or method name + &Quotes for identifiers - - Python operator + + Choose the quoting mechanism used by the application for identifiers in SQL code. - - Python identifier + + "Double quotes" - Standard SQL (recommended) - - Start of an ASP Python fragment + + `Grave accents` - Traditional MySQL quotes - - ASP Python default + + [Square brackets] - Traditional MS SQL Server quotes - - ASP Python comment + + Keywords in &UPPER CASE - - ASP Python number + + When set, the SQL keywords are completed in UPPER CASE letters. - - ASP Python double-quoted string + + When set, the SQL code lines that caused errors during the last execution are highlighted and the results frame indicates the error in the background - - ASP Python single-quoted string + + Close button on tabs - - ASP Python keyword + + If enabled, SQL editor tabs will have a close button. In any case, you can use the contextual menu or the keyboard shortcut to close them. - - ASP Python triple double-quoted string - + + &Extensions + - - ASP Python triple single-quoted string - + + Select extensions to load for every database: + - - ASP Python class name - + + Add extension + - - ASP Python function or method name - + + Remove extension + - - ASP Python operator + + Select built-in extensions to load for every database: - - ASP Python identifier - + + <html><head/><body><p>While supporting the REGEXP operator SQLite doesn't implement any regular expression<br/>algorithm but calls back the running application. DB Browser for SQLite implements this<br/>algorithm for you to let you use REGEXP out of the box. However, as there are multiple possible<br/>implementations of this and you might want to use another one, you're free to disable the<br/>application's implementation and load your own by using an extension. Requires restart of the application.</p></body></html> + - - PHP default - + + Disable Regular Expression extension + - - PHP double-quoted string + + <html><head/><body><p>SQLite provides an SQL function for loading extensions from a shared library file. Activate this if you want to use the <span style=" font-style:italic;">load_extension()</span> function from SQL code.</p><p>For security reasons, extension loading is turned off by default and must be enabled through this setting. You can always load extensions through the GUI, even though this option is disabled.</p></body></html> - - PHP single-quoted string + + Allow loading extensions from SQL code - - PHP keyword + + Remote - - PHP number + + CA certificates - - PHP variable + + Proxy - - PHP comment + + Configure - - PHP line comment + + Export Settings - - PHP double-quoted variable + + Import Settings - - PHP operator + + + Subject CN - - - QsciLexerJSON - - Default + + Common Name - - Number + + Subject O - - String + + Organization - - Unclosed string + + + Valid from - - Property + + + Valid to - - Escape sequence + + + Serial number - - Line comment + + Your certificates - - Block comment + + File - - Operator + + Subject Common Name - - IRI + + Issuer CN - - JSON-LD compact IRI + + Issuer Common Name - - JSON keyword + + Clone databases into - - JSON-LD keyword - + + + Choose a directory + - - Parsing error - + + + The language will change after you restart the application. + - - - QsciLexerJavaScript - - Regular expression - + + Select extension file + - - - QsciLexerPython - - Default + + Extensions(*.so *.dylib *.dll);;All files(*) - - Comment + + Import certificate file - - Number + + No certificates found in this file. - - Double-quoted string + + Are you sure you want do remove this certificate? All certificate data will be deleted from the application settings! - - Single-quoted string + + Are you sure you want to clear all the saved settings? +All your preferences will be lost and default values will be used. - - Keyword + + Save Settings File - - Triple single-quoted string + + + Initialization File (*.ini) - - Triple double-quoted string + + The settings file has been saved in location : + - - Class name + + Open Settings File - - Function or method name + + The settings file was loaded properly. - - Operator + + The selected settings file is not a normal settings file. +Please check again. + + + ProxyDialog - - Identifier + + Proxy Configuration - - Comment block + + Pro&xy Type - - Unclosed string + + Host Na&me - - Highlighted identifier + + Port - - Decorator + + Authentication Re&quired - - Double-quoted f-string + + &User Name - - Single-quoted f-string + + Password - - Triple single-quoted f-string + + None - - Triple double-quoted f-string + + System settings - - - QsciLexerSQL - - Default + + HTTP - - Comment + + SOCKS5 + + + QObject - - Comment line - + + Error importing data + - - JavaDoc style comment - + + from record number %1 + - - Number - + + . +%1 + - - Keyword + + Importing CSV file... - - Double-quoted string - + + Cancel + - - Single-quoted string + + All files (*) - - SQL*Plus keyword + + SQLite database files (*.db *.sqlite *.sqlite3 *.db3) - - SQL*Plus prompt + + Left - - Operator + + Right - - Identifier + + Center - - SQL*Plus comment + + Justify - - # comment line + + SQLite Database Files (*.db *.sqlite *.sqlite3 *.db3) - - JavaDoc keyword + + DB Browser for SQLite Project Files (*.sqbpro) - - JavaDoc keyword error + + SQL Files (*.sql) - - User defined 1 + + All Files (*) - - User defined 2 + + Text Files (*.txt) - - User defined 3 + + Comma-Separated Values Files (*.csv) - - User defined 4 + + Tab-Separated Values Files (*.tsv) - - Quoted identifier + + Delimiter-Separated Values Files (*.dsv) - - Quoted operator + + Concordance DAT files (*.dat) - - - QsciScintilla - - &Undo + + JSON Files (*.json *.js) - - &Redo + + XML Files (*.xml) - - Cu&t + + Binary Files (*.bin *.dat) - - &Copy + + SVG Files (*.svg) - - &Paste + + Hex Dump Files (*.dat *.bin) - - Delete + + Extensions (*.so *.dylib *.dll) - - Select All + + Initialization File (*.ini) @@ -7742,24 +6247,24 @@ Are you sure you want to proceed? - + Cancel - + Uploading remote database to %1 - + Downloading remote database from %1 - + Error: Cannot open the file for sending. @@ -8492,30 +6997,30 @@ Use of this function must be authorized from Preferences. - + References %1(%2) Hold %3Shift and click to jump there - + Error changing data: %1 - + retrieving list of columns - + Fetching data... - - + + Cancel @@ -8667,7 +7172,7 @@ Hold %3Shift and click to jump there - <html><head/><body><p>This button creates a new record in the database. Hold the mouse button to open a pop-up menu of different options:</p><ul><li><span style=" font-weight:600;">New Record</span>: insert a new record with default values in the database.</li><li><span style=" font-weight:600;">Insert Values...</span>: open a dialog for entering values before they are inserted in the database. This allows to enter values acomplishing the different constraints. This dialog is also open if the <span style=" font-weight:600;">New Record</span> option fails due to these constraints.</li></ul></body></html> + <html><head/><body><p>This button creates a new record in the database. Hold the mouse button to open a pop-up menu of different options:</p><ul><li><span style=" font-weight:600;">New Record</span>: insert a new record with default values in the database.</li><li><span style=" font-weight:600;">Insert Values...</span>: open a dialog for entering values before they are inserted in the database. This allows to enter values accomplishing the different constraints. This dialog is also open if the <span style=" font-weight:600;">New Record</span> option fails due to these constraints.</li></ul></body></html> @@ -8688,7 +7193,7 @@ Hold %3Shift and click to jump there - <html><head/><body><p>This popup menu provides the following options applying to the currently browsed and filtered table:</p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Export to CSV: this option exports the data of the browsed table as currently displayed (after filters, display formats and order column) to a CSV file.</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Save as view: this option saves the current setting of the browsed table (filters, display formats and order column) as an SQL view that you can later browse or use in SQL statements.</li></ul></body></html> + <html><head/><body><p>This pop-up menu provides the following options applying to the currently browsed and filtered table:</p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Export to CSV: this option exports the data of the browsed table as currently displayed (after filters, display formats and order column) to a CSV file.</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Save as view: this option saves the current setting of the browsed table (filters, display formats and order column) as an SQL view that you can later browse or use in SQL statements.</li></ul></body></html> @@ -8856,7 +7361,7 @@ Hold %3Shift and click to jump there - + Delete Record @@ -8953,7 +7458,7 @@ Hold %3Shift and click to jump there - + Set encoding @@ -9218,94 +7723,94 @@ Hold %3Shift and click to jump there - + Conditional formats for "%1" - + determining row count... - + %L1 - %L2 of >= %L3 - + %L1 - %L2 of %L3 - + (clipped at %L1 rows) - + Please enter a pseudo-primary key in order to enable editing on this view. This should be the name of a unique column in the view. - + Delete Records - + Duplicate records - + Duplicate record - + Ctrl+" - + Adjust rows to contents - + Error deleting record: %1 - + Please select a record first - + Please choose a new encoding for all tables. - + Please choose a new encoding for this table. - + %1 Leave the field empty for using the database encoding. - + This encoding is either not valid or not supported. - + %1 replacement(s) made. @@ -9333,24 +7838,6 @@ Leave the field empty for using the database encoding. - - UndoStack - - - Inserting %1 bytes - - - - - Delete %1 chars - - - - - Overwrite %1 chars - - - VacuumDialog diff --git a/src/translations/sqlb_es_ES.ts b/src/translations/sqlb_es_ES.ts index 0a495bd1e..9bd6d50ed 100644 --- a/src/translations/sqlb_es_ES.ts +++ b/src/translations/sqlb_es_ES.ts @@ -15,8 +15,8 @@ - <html><head/><body><p>DB Browser for SQLite is an open source, freeware visual tool used to create, design and edit SQLite database files.</p><p>It is bi-licensed under the Mozilla Public License Version 2, as well as the GNU General Public License Version 3 or later. You can modify or redistribute it under the conditions of these licenses.</p><p>See <a href="https://www.gnu.org/licenses/gpl.html"><span style=" text-decoration: underline; color:#0000ff;">http://www.gnu.org/licenses/gpl.html</span></a> and <a href="https://www.mozilla.org/MPL/2.0/index.txt"><span style=" text-decoration: underline; color:#0000ff;">https://www.mozilla.org/MPL/2.0/index.txt</span></a> for details.</p><p>For more information on this program please visit our website at: <a href="https://sqlitebrowser.org"><span style=" text-decoration: underline; color:#0000ff;">http://sqlitebrowser.org</span></a></p><p><span style=" font-size:small;">This software uses the GPL/LGPL Qt Toolkit from </span><a href="http://qt-project.org/"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://qt-project.org/</span></a><span style=" font-size:small;"><br/>See </span><a href="https://doc.qt.io/qt-5/licensing.html"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://qt-project.org/doc/qt-5/licensing.html</span></a><span style=" font-size:small;"> for licensing terms and information.</span></p><p><span style=" font-size:8pt;">We use the nalgeon/sqlean library for SQLite extensions support.<br/>This library is licensed under the MIT license, see the following for more information:<br/></span><a href="https://github.com/nalgeon/sqlean"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">https://github.com/nalgeon/sqlean</span></a></p><p><span style=" font-size:small;">It also uses the Pastel SVG icon set by Michael Buckley under a Creative Commons Attribution Share Alike 4.0 license.<br/>See </span><a href="https://codefisher.org/pastel-svg/"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://codefisher.org/pastel-svg/</span></a><span style=" font-size:small;"> for details.</span></p></body></html> - + <html><head/><body><p>DB Browser for SQLite is an open source, freeware visual tool used to create, design and edit SQLite database files.</p><p>It is bi-licensed under the Mozilla Public License Version 2, as well as the GNU General Public License Version 3 or later. You can modify or redistribute it under the conditions of these licenses.</p><p>See <a href="https://www.gnu.org/licenses/gpl.html"><span style=" text-decoration: underline; color:#0000ff;">https://www.gnu.org/licenses/gpl.html</span></a> and <a href="https://www.mozilla.org/MPL/2.0/index.txt"><span style=" text-decoration: underline; color:#0000ff;">https://www.mozilla.org/MPL/2.0/index.txt</span></a> for details.</p><p>For more information on this program please visit our website at: <a href="https://sqlitebrowser.org"><span style=" text-decoration: underline; color:#0000ff;">https://sqlitebrowser.org</span></a></p><p><span style=" font-size:small;">This software uses the GPL/LGPL Qt Toolkit from </span><a href="https://qt-project.org/"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://qt-project.org/</span></a><span style=" font-size:small;"><br/>See </span><a href="https://doc.qt.io/qt-5/licensing.html"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://doc.qt.io/qt-5/licensing.html</span></a><span style=" font-size:small;"> for licensing terms and information.</span></p><p><span style=" font-size:8pt;">We use the nalgeon/sqlean library for SQLite extensions support.<br/>This library is licensed under the MIT license, see the following for more information:<br/></span><a href="https://github.com/nalgeon/sqlean"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">https://github.com/nalgeon/sqlean</span></a></p><p><span style=" font-size:small;">It also uses the Pastel SVG icon set by Michael Buckley under a Creative Commons Attribution Share Alike 4.0 license.<br/>See </span><a href="https://codefisher.org/pastel-svg/"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://codefisher.org/pastel-svg/</span></a><span style=" font-size:small;"> for details.</span></p></body></html> + <html><head/><body><p><em>DB Browser for SQLite</em> es una herramienta visual gratuita y de código abierto que se utiliza para crear, diseñar y editar archivos de bases de datos SQLite.</p><p>Tiene licencia doble bajo la Licencia Pública de Mozilla versión 2, así como la Licencia Pública General de GNU versión 3 o posterior. Puede modificarlo o redistribuirlo bajo las condiciones de estas licencias.</p><p>Vea <a href="https://www.gnu.org/licenses/gpl.html"><span style=" text-decoration: underline; color:#0000ff;">https://www.gnu.org/licenses/gpl.html</span></a> y <a href="https://www.mozilla.org/MPL/2.0/index.txt"><span style=" text-decoration: underline; color:#0000ff;">https://www.mozilla.org/MPL/2.0/index.txt</span></a> para los detalles.</p><p>Para obtener más información sobre este programa, visite nuestra página en: <a href="https://sqlitebrowser.org"><span style=" text-decoration: underline; color:#0000ff;">https://sqlitebrowser.org</span></a></p><p><span style=" font-size:small;">Esta aplicación usa el Qt Toolkit GPL/LGPL de </span><a href="https://qt-project.org/"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://qt-project.org/</span></a><span style=" font-size:small;"><br/>Vea </span><a href="https://doc.qt.io/qt-5/licensing.html"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://doc.qt.io/qt-5/licensing.html</span></a><span style=" font-size:small;"> para los detalles y los términos de licencia.</span></p><p><span style=" font-size:8pt;">Utilizamos la biblioteca nalgeon/sqlen para el soporte de extensiones SQLite.<br/>Esta biblioteca se distribuye bajo la licencia MIT, vea lo siguiente para más información:<br/></span><a href="https://github.com/nalgeon/sqlean"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">https://github.com/nalgeon/sqlean</span></a></p><p><span style=" font-size:small;">También utiliza el conjunto de iconos SVG de Michael Buckley bajo licencia Creative Commons Attribution Share Alike 4.0.<br/>Vea </span><a href="https://codefisher.org/pastel-svg/"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://codefisher.org/pastel-svg/</span></a><span style=" font-size:small;"> para los detalles.</span></p></body></html> @@ -285,38 +285,38 @@ La opción -S/--settings necesita un argumento. La opción es ignorada. - + SQLite Version Versión de SQLite - + SQLCipher Version %1 (based on SQLite %2) Versión de SQLCipher %1 (basado en SQLite %2) - + DB Browser for SQLite Version %1. «DB Browser for SQLite» Versión %1. - + Last commit hash when built: %1 Último «commit hash» cuando fue compilado: %1 - + Built for %1, running on %2 Compilado para %1, ejecutándose en %2 - + Qt Version %1 Versión de Qt %1 - Invalid option/non-existant file: %1 + Invalid option/non-existent file: %1 Opción inválida o archivo inexistente: %1 @@ -393,7 +393,7 @@ Clave en bruto - + Please set a key to encrypt the database. Note that if you change any of the other, optional, settings you'll need to re-enter them as well every time you open the database file. Leave the password fields empty to disable the encryption. @@ -408,7 +408,7 @@ Tenga en cuenta que: - Los cambios no guardados son aplicados antes de modificar el cifrado. - + Please enter the key used to encrypt the database. If any of the other settings were altered for this database file you need to provide this information as well. Por favor, introduzca la clave a usar en el cifrado de la base de datos. @@ -433,92 +433,92 @@ Si se modificaron cualquiera de los otros ajustes para este archivo de base de d Elija el formato para la columna «%1» el cual se aplicará a cada valor antes de mostrarlo. - + Default Por defecto - + Decimal number Número decimal - + Exponent notation Notación exponencial - + Hex blob Secuencia hexadecimal - + Hex number Número hexadecimal - + Apple NSDate to date Fecha de Apple NSDate a fecha - + Java epoch (milliseconds) to date Tiempo Java (milisegundos) a fecha - + .NET DateTime.Ticks to date DateTime.Ticks de .NET a fecha - + Julian day to date Fecha juliana a fecha - + Unix epoch to local time Tiempo Unix a hora local - + WebKit / Chromium epoch to date - + WebKit / Chromium epoch a fecha - + WebKit / Chromium epoch to local time - + WebKit / Chromium epoch a hora local - + Date as dd/mm/yyyy Fecha dd/mm/aaaa - + Lower case Minúsculas - + Binary GUID to text GUID binario a texto - + SpatiaLite Geometry to SVG Geometría SpatiaLite a SVG - + Custom display format must contain a function call applied to %1 El formato de presentación a medida tiene que contener una llamada de función aplicada a %1 - + Error in custom display format. Message from database engine: %1 @@ -527,37 +527,37 @@ Si se modificaron cualquiera de los otros ajustes para este archivo de base de d %1 - + Custom display format must return only one column but it returned %1. El formato de presentación a medida debe devolver sólo una columna pero ha devuelto %1. - + Octal number Número octal - + Round number Número redondeado - + Unix epoch to date Tiempo Unix a fecha - + Upper case Mayúsculas - + Windows DATE to date Fecha Windows a fecha - + Custom A medida @@ -684,166 +684,166 @@ Si se modificaron cualquiera de los otros ajustes para este archivo de base de d DBBrowserDB - + Please specify the database name under which you want to access the attached database Por favor, especifique el nombre con el que acceder a la base de datos anexada - + Invalid file format Formato de archivo inválido - + Do you want to save the changes made to the database file %1? ¿Guardar los cambios hechos al archivo de base de datos «%1»? - + Exporting database to SQL file... Exportando base de datos a un archivo SQL... - - + + Cancel Cancelar - + Executing SQL... Ejecutando SQL... - + Action cancelled. Acción cancelada. - + Do you really want to close this temporary database? All data will be lost. ¿Está seguro de que quiere cerrar esta base de datos temporal? Todos los datos se perderán. - + Database didn't close correctly, probably still busy La base de datos no se ha cerrado correctamente, probablemente todavía está ocupada - + Cannot open destination file: '%1' No se puede abrir el archivo de destino: «%1» - - + + Cannot backup to file: '%1'. Message: %2 No se puede guardar copia de seguridad en el archivo: «%1». Mensaje: %2 - + The database is currently busy: La base de datos está actualmente ocupada: - + Do you want to abort that other operation? ¿Desea abortar la otra operación? - - + + No database file opened No hay una base de datos abierta - - + + Error in statement #%1: %2. Aborting execution%3. Error en la sentencia #%1: %2. Abortando ejecución%3. - - + + and rolling back y deshaciendo cambios - + didn't receive any output from %1 no se recibió ninguna salida de «%1» - + could not execute command: %1 no se pudo ejecutar el comando: «%1» - + Cannot delete this object No se puede borrar este objeto - + Cannot set data on this object No se pueden poner datos en este objeto - - + + A table with the name '%1' already exists in schema '%2'. Una tabla con el nombre «%1» ya existe en el esquema «%2». - + No table with name '%1' exists in schema '%2'. No existe una tabla con el nombre «%1» en el esquema «%2». - - + + Cannot find column %1. No se puede encontrar la columna %1. - + Creating savepoint failed. DB says: %1 Creación del punto de guardado fallido. La base de datos dice: %1 - + Renaming the column failed. DB says: %1 Renombrado de la columna fallido. La base de datos dice: %1 - - + + Releasing savepoint failed. DB says: %1 Liberación del punto de guardado fallido. La base de datos dice: %1 - + Creating new table failed. DB says: %1 Creación de la nueva tabla fallida. La base de datos dice: %1 - + Copying data to new table failed. DB says: %1 Copia de datos a la nueva tabla fallida. La base de datos dice: %1 - + Deleting old table failed. DB says: %1 Borrado de tabla fallido. La base de datos dice: %1 - + Error renaming table '%1' to '%2'. Message from database engine: %3 @@ -852,12 +852,12 @@ Mensaje de la base de datos: %3 - + could not get list of db objects: %1 No se pudo obtener la lista de objetos de la base de datos: %1 - + Restoring some of the objects associated with this table failed. This is most likely because some column names changed. Here's the SQL statement which you might want to fix and execute manually: @@ -866,32 +866,32 @@ Mensaje de la base de datos: - + could not get list of databases: %1 no se pudo obtener lista de bases de datos: %1 - + Error loading extension: %1 Error cargando la extensión: %1 - + Error loading built-in extension: %1 - + Error cargando extensión incorporada: %1 - + could not get column information No se pudo obtener información de la columna - + Error setting pragma %1 to %2: %3 Error definiendo pragma %1 como %2: %3 - + File not found. Archivo no encontrado. @@ -1452,7 +1452,7 @@ Do you want to apply the edited data to row=%1, column=%2? Make this a 'WITHOUT ROWID' table. Setting this flag requires specifying a PRIMARY KEY (which can be of any type, and can be composite), and forbids the AUTOINCREMENT flag. - + Establecer la propiedad «WITHOUT ROWID» a la tabla. Establecer esta opción requiere especificar una clave primaria (que puede ser de cualquier tipo y puede ser compuesta), y prohibe el uso de la propiedad AUTOINCREMENT. @@ -1959,7 +1959,7 @@ Todos los datos actualmente almacenados en este campo se perderán.ExtendedScintilla - + Ctrl+H @@ -1970,22 +1970,22 @@ Todos los datos actualmente almacenados en este campo se perderán. - + Ctrl+P - + Find... Buscar... - + Find and Replace... Buscar y reemplazar... - + Print... Imprimir... @@ -1993,127 +1993,127 @@ Todos los datos actualmente almacenados en este campo se perderán. ExtendedTableWidget - + Use as Exact Filter Usar como filtro exacto - + Containing Conteniendo - + Not containing Que no contenga - + Not equal to No igual a - + Greater than Mayor que - + Less than Menor que - + Greater or equal Mayor o igual - + Less or equal Menor o igual - + Between this and... Entre esto y... - + Regular expression Expresión regular - + Edit Conditional Formats... Editar formatos condicionales... - + Set to NULL Poner a NULL - + Cut Cortar - + Copy Copiar - + Copy with Headers Copiar con cabeceras - + Copy as SQL Copiar como SQL - + Paste Pegar - + Print... Imprimir... - + Use in Filter Expression Usar en expresión de filtro - + Alt+Del - + Ctrl+Shift+C - + Ctrl+Alt+C - + <p>Not all data has been loaded. <b>Do you want to load all data before selecting all the rows?</b><p><p>Answering <b>No</b> means that no more data will be loaded and the selection will not be performed.<br/>Answering <b>Yes</b> might take some time while the data is loaded but the selection will be complete.</p>Warning: Loading all the data might require a great amount of memory for big tables. <p>No se han cargado todos los datos. <b>¿Quiere cargar todos los datos antes de seleccionar todas las filas?</b><p><p>Responder <b>No</b> significa que no se cargarán mas datos y la selección no se se realizará.<br/>Responder <b>Sí</b> puede tardar un tiempo mientras los datos se cargan pero la selección se realizará en su totalidad.</p>Precaución: Cargar todos los datos puede necesitar una gran cantidad de memoria para tablas grandes. - + Cannot set selection to NULL. Column %1 has a NOT NULL constraint. No se puede ajustar la selección a NULL. La columna %1 tiene una restricción NOT NULL. - + The content of the clipboard is bigger than the range selected. Do you want to insert it anyway? El contenido del portapapeles es mayor que el rango seleccionado. @@ -2167,12 +2167,12 @@ Do you want to insert it anyway? FilterLineEdit - + Filter Filtro - + These input fields allow you to perform quick filters in the currently selected table. By default, the rows containing the input text are filtered out. The following operators are also supported: @@ -2198,92 +2198,92 @@ Los siguientes operadores también se admiten: x~y Rango: valores entre x e y - + Clear All Conditional Formats Eliminar todos los formatos condicionales - + Use for Conditional Format Usar para formato condicional - + Edit Conditional Formats... Editar formatos condicionales... - + Set Filter Expression Establecer expresión de filtro - + What's This? ¿Qué es esto? - + Is NULL Es nulo - + Is not NULL No es nulo - + Is empty Es vacío - + Is not empty No es vacío - + Not containing... No contiene... - + Equal to... Igual a... - + Not equal to... No igual a... - + Greater than... Mayor que... - + Less than... Menor que... - + Greater or equal... Mayor o igual... - + Less or equal... Menor o igual... - + In range... En el rango... - + Regular expression... Expresión regular... @@ -2506,7 +2506,7 @@ x~y Rango: valores entre x e y - + Tab Tab @@ -2649,7 +2649,7 @@ x~y Rango: valores entre x e y - + Deselect All Deseleccionar Todo @@ -2659,52 +2659,52 @@ x~y Rango: valores entre x e y Emparejar Similares - + Select All Seleccionar Todo - + There is already a table named '%1' and an import into an existing table is only possible if the number of columns match. Ya existe una tabla con nombre «%1» y una importación a una tabla existente solo es posible si el número de columnas coincide. - + There is already a table named '%1'. Do you want to import the data into it? Ya existe una tabla con nombre «%1». ¿Desea importar los datos cargándolos en ella? - + Creating restore point failed: %1 Creación del punto de restauración fallido: %1 - + Creating the table failed: %1 Creación de la tabla fallido: %1 - + importing CSV importando CSV - + Could not prepare INSERT statement: %1 No se pudo preparar la sentencia «INSERT»: %1 - + Unexpected end of file. Please make sure that you have configured the correct quote characters and the file is not malformed. Fin de archivo inesperado. Por favor, asegúrese de haber configurado correctamente el entrecomillado y de que el archivo no esté mal formado. - + Importing the file '%1' took %2ms. Of this %3ms were spent in the row function. Importar el archivo «%1» tardó %2ms. De ellos, %3ms se gastaron en la función fila. - + Inserting row failed: %1 Inserción de línea fallido: %1 @@ -2738,532 +2738,721 @@ x~y Rango: valores entre x e y Editar p&ragmas - - + + Temp Store + Almacenamiento temporal + + + + Secure Delete + Borrado seguro + + + + Case Sensitive Like + LIKE sensible a mayús/minus. + + + + Journal Mode + Modo de journal + + + + Journal Size Limit + Límite en tamaño de journal + + + + Recursive Triggers + Disparadores recursivos + + + Delete + pragma + Borrar + + + Truncate + pragma + Truncar + + + Persist + pragma + Persistir + + + Memory + pragma + Memoria + + + Off + pragma + Apagado + + + + Page Size + Tamaño de página + + + + Foreign Keys + Claves foráneas + + + + Auto Vacuum + Limpieza automática + + + + Max Page Count + Máx. número de páginas + + + Exclusive + pragma + Exclusivo + + + + Checkpoint Full FSYNC + Checkpoint FSYNC completo + + + + + Off + Apagado + + + + + Normal + + + + + + Full + Completa + + + + Default + Por defecto + + + + File + Archivo + + + + + Memory + Memoria + + + + Delete + Borrar + + + + Truncate + Truncar + + + + Persist + Persistir + + + + WAL + + + + + Exclusive + Exclusivo + + + + Automatic Index + Indexado automático + + + + Ignore Check Constraints + Ignorar restricciones CHECK + + + + Full FSYNC + FSYNC completo + + + + WAL Auto Checkpoint + Punto de comprobación WAL auto. + + + + User Version + Versión de usuario + + + + Synchronous + Síncrono + + + + None + Ninguna + + + + Incremental + + + + + Locking Mode + Modo de bloqueo + + + + E&xecute SQL This has to be equal to the tab title in all the main tabs E&jecutar SQL - + toolBar1 toolBar1 - + &Recent Files Archivos &recientes - + This button clears the contents of the SQL logs Este botón limpia el contenido del historial SQL - + This panel lets you examine a log of all SQL commands issued by the application or by yourself Este panel le permite examinar el histórico de todos los comandos SQL ordenados por la aplicación o por usted mismo - - + + Project Toolbar Barra de herramientas de proyectos - + Extra DB toolbar Barra de herramientas extra - - - + + + Close the current database file Cierra el archivo de base de datos actual - + &New Database &Nueva base de datos - + This button closes the connection to the currently open database file Este botón cierra la conexión con el archivo de base de datos actualmente abierto - - + + Ctrl+F4 - + &Undo &Deshacer - - + + Undo last change to the database Deshace el último cambio realizado a la base de datos - + This action undoes the last change performed to the database in the Database Browser or in Execute SQL. Redoing is not possible. Esta acción deshace el último cambio realizado a la base de datos en «Hoja de datos» «Ejecutar SQL». Volver a realizarlo no es posible. - + Compact &Database... Compactar base de &datos... - + Open the Modify Table wizard, where it is possible to rename an existing table. It is also possible to add or delete fields from a table, as well as modify field names and types. Abre el asistente «Modificar tabla», donde se puede renombrar una tabla existente. También se pueden añadir o borrar campos de la tabla, así como modificar los nombres de los campos y sus tipos. - + &About &Acerca de - + This button opens a new tab for the SQL editor Este botón abre una nueva pestaña para el editor SQL - + Execute all/selected SQL Ejecuta todo el SQL (o la selección) - + This button executes the currently selected SQL statements. If no text is selected, all SQL statements are executed. Este botón ejecuta las sentencias SQL actualmente seleccionadas. Si no hay ningún texto seleccionado, se ejecutan todas las sentencias. - + Ctrl+Shift+T - + &Load Extension... &Cargar extensión... - + Execute line Ejecutar línea - + This button executes the SQL statement present in the current editor line Este botón ejecuta la sentencia SQL presente en la línea actual del editor - + &Wiki &Wiki - + F1 - + Bug &Report... &Informar de fallos... - + Feature Re&quest... Solicitud de &mejoras... - + Web&site &Sitio web - + &Donate on Patreon... &Donar en Patreon... - + &Save Project &Guardar proyecto - + Open &Project... Abrir &proyecto... - + Open &Project Abrir &proyecto - + &Attach Database... Ane&xar base de datos... - - + + Add another database file to the current database connection Añade un archivo de base de datos adicional a la conexión actual - + This button lets you add another database file to the current database connection Este botón le permite añadir otro archivo de base de datos a la conexión de base de datos actual - + &Set Encryption... &Establecer cifrado... - + This button saves the content of the current SQL editor tab to a file Este botón guarda el contenido de la pestaña actual del editor SQL a un archivo - + SQLCipher &FAQ SQLCipher &FAQ - + Find Buscar - + Find or replace Buscar o reemplazar - + Ctrl+H - - + + Ctrl+Shift+W - + Table from CSV data in Clipboard... Tabla desde CSV en el portapapeles... - + This treats the current clipboard contents as a CSV file and opens the same import wizard that is used for importing CSV data from a file. Esta opción interpreta el contenido del portapapeles como un archivo CSV y abre el mismo asistente usado para importar datos CSV desde un archivo. - + Show &Row Counts &Contar filas - + This shows the number of rows for each table and view in the database. Muestra el número de filas de cada una de las tablas y vistas de la base de datos. - + Save Database &As... G&uardar base de datos como... - + Save the current database as a different file Guardar la base de datos actual como un archivo diferente - + Refresh Refrescar - + Reload the database structure Recargar la estructura de la base de datos - + New &tab Nueva pesta&ña - + Open SQL file(s) Abrir archivo(s) SQL - + This button opens files containing SQL statements and loads them in new editor tabs Este botón abre archivos que contengan sentencias SQL y los carga en pestañas nuevas del editor - + This button lets you save all the settings associated to the open DB to a DB Browser for SQLite project file Este botón le permite guardar todos los ajustes asociados a la base de datos abierta a un archivo de proyecto de «DB Browser for SQLite» - + This button lets you open a DB Browser for SQLite project file Este botón le permite abrir un archivo de proyecto «DB Browser for SQLite» - + Export to &JSON Exportar a &JSON - + &Open Database &Abrir base de datos - + New In-&Memory Database Nueva base de datos en &memoria - + Drag && Drop SELECT Query Arrastrar y soltar consulta SELECT - - + + When dragging fields from the same table or a single table, drop a SELECT query into the editor Cuando se arrastran campos de la misma tabla o de una única tabla, pone una consulta SELECT en el editor - + Drag && Drop Qualified Names Arrastrar y soltar nombres calificados - - + + Use qualified names (e.g. "Table"."Field") when dragging the objects and dropping them into the editor Usa nombres calificados (p.ej. "Tabla"."Campo") al arrastrar los objetos y soltarlos en el editor - + Drag && Drop Enquoted Names Arrastrar y soltar nombres entrecomillados - - + + Use escaped identifiers (e.g. "Table1") when dragging the objects and dropping them into the editor Usa identificadores escapados (p.ej. "Tabla1") al arrastrar los objetos y soltarlos en el editor - + &Integrity Check Comprobar &integridad - + Runs the integrity_check pragma over the opened database and returns the results in the Execute SQL tab. This pragma does an integrity check of the entire database. Ejecuta el pragma integrity_check en la base de datos abierta y devuelve los resultados en la pestaña Ejecutar SQL. Este pragma realiza una comprobación de integridad de toda la base de datos. - + &Foreign-Key Check Comprobar clave &foránea - + Runs the foreign_key_check pragma over the opened database and returns the results in the Execute SQL tab Ejecuta el pragma foreign_key_check con la base de datos abierta y devuelve los resultados en la pestaña Ejecutar SQL. - + &Quick Integrity Check Comprobar integridad &rápido - + Run a quick integrity check over the open DB Ejecuta una comprobación de integridad rápida en la base de datos abierta - + Runs the quick_check pragma over the opened database and returns the results in the Execute SQL tab. This command does most of the checking of PRAGMA integrity_check but runs much faster. Ejecuta el pragma quick_check en la base de datos abierta y devuelve los resultados en la pestaña Executar SQL. Este comando hace la mayoría de comprobaciones de PRAGMA integrity_check pero se ejecuta mucho más rápido. - + &Optimize &Optimizar - + Attempt to optimize the database Intenta optimizar la base de datos - + Runs the optimize pragma over the opened database. This pragma might perform optimizations that will improve the performance of future queries. Ejecuta el pragma optimize en la base de datos abierta. Este pragma realiza optimizaciones que pueden mejorar el rendimiento de consultas futuras. - - + + Print Imprimir - + Print text from current SQL editor tab Imprime el texto de la pestaña actual del editor SQL - + Open a dialog for printing the text in the current SQL editor tab Abre un diálogo para imprimir el texto de la pestaña actual del editor SQL - + Print the structure of the opened database Imprime la estructura de la base de datos abierta - + Open a dialog for printing the structure of the opened database Abre un diálogo para imprimir la estructura de la base de datos abierta - + Un/comment block of SQL code Des/comentar bloque de código SQL - + Un/comment block Des/comentar bloque de código - + Comment or uncomment current line or selected block of code Comenta o descomenta la línea actual o el bloque de código seleccionado - + Comment or uncomment the selected lines or the current line, when there is no selection. All the block is toggled according to the first line. Comenta o descomenta las líneas seleccionadas o la línea actual cuando no hay selección. El estado de todo el bloque es intercambiado en función de la primera línea. - + Ctrl+/ - + Stop SQL execution Detener ejecución de SQL - + Stop execution Detener ejecución - + Stop the currently running SQL script Detener el script SQL que está ejecutándose - + &Save Project As... &Guardar proyecto como... - - - + + + Save the project in a file selected in a dialog Guarda el proyecto en un archivo seleccionado en una ventana de diálogo - + Save A&ll Guardar &todo - - - + + + Save DB file, project file and opened SQL files Guarda los archivos de la base de datos, el proyecto y los archivos SQL abiertos - + Ctrl+Shift+S - + Browse Table Navegar Tabla - + Close Pro&ject Cerrar pro&yecto - - + + Close project and database files and return to the initial state Cierra el proyecto y los archivos de la base de datos y vuelve al estado inicial - + Ctrl+Shift+F4 - - + + Detach Database Desanclar base de datos - - + + Detach database file attached to the current database connection Desanclar el archivo de base de datos anclado a la conexión actual de la base de datos - + Shows or hides the Project toolbar. Muestra u oculta la barra de herramientas de proyecto. - + Extra DB Toolbar Barra de herramientas extra - + Export one or more table(s) to a JSON file Exportar una o más tablas a un archivo JSON @@ -3277,139 +3466,139 @@ Puede arrastrar sentencias SQL desde una fila de objeto y soltarlas en otras apl - + Table(&s) to JSON... Tabla(&s) a JSON... - + Open Data&base Read Only... Abrir &base de datos como solo lectura... - + Ctrl+Shift+O - + Save results Guardar resultados - + Save the results view Guarda la vista de resultados - + This button lets you save the results of the last executed query Este botón le permite guardar los resultados de la última consulta ejecutada - - + + Find text in SQL editor Buscar texto en el editor SQL - + This button opens the search bar of the editor Este botón abre la barra de búsqueda del editor - + Ctrl+F - - + + Find or replace text in SQL editor Buscar o reemplazar texto en el editor SQL - + This button opens the find/replace dialog for the current editor tab Este botón abre el diálogo de buscar/reemplazar para la pestaña actual del editor - + Export to &CSV Exportar a &CSV - + Save as &view Guardar como &vista - + Save as view Guardar como vista - + Open an existing database file in read only mode Abre una base de datos existente en modo de solo lectura - + &File &Archivo - + &Import &Importar - + &Export E&xportar - + &Edit &Editar - + &View &Ver - + &Help Ay&uda - + Too&ls &Herramientas - + DB Toolbar DB Toolbar - + Edit Database &Cell Editar &celda - + Error Log Registro de errores - + DB Sche&ma Esque&ma - + This is the structure of the opened database. You can drag multiple object names from the Name column and drop them into the SQL editor and you can adjust the properties of the dropped names using the context menu. This would help you in composing SQL statements. You can drag SQL statements from the Schema column and drop them into the SQL editor or into other applications. @@ -3420,451 +3609,451 @@ Puede arrastrar sentencias SQL desde la columna Esquema y soltarlas en el editor - + &Remote &Remoto - - + + Execute current line Ejecuta la línea actual - + Shift+F5 - + Sa&ve Project &Guardar proyecto - + User Usuario - + Application Aplicación - + &Clear &Limpiar - + &New Database... &Nueva base de datos... - - + + Create a new database file Crea un nuevo archivo de base de datos - + This option is used to create a new database file. Esta opción se usa para crear un nuevo archivo de base de datos. - + Ctrl+N - - + + &Open Database... &Abrir base de datos... - - - - - + + + + + Open an existing database file Abre un archivo de base de datos - - - + + + This option is used to open an existing database file. Esta opción se usa para abrir un archivo de base de datos. - + Ctrl+O - + &Close Database &Cerrar base de datos - - + + Ctrl+W - + Opens the SQLCipher FAQ in a browser window Abre la FAQ de SQLCipher en una ventana del navegador - - + + Revert database to last saved state Revierte el estado de la base de datos al último guardado - + This option is used to revert the current database file to its last saved state. All changes made since the last save operation are lost. Esta opción se usa para revertir el estado de la base de datos actual al último guardado. Todos los cambios hechos desde la última vez que se guardó se perderán. - - + + Write changes to the database file Escribe los cambios al archivo de la base de datos - + This option is used to save changes to the database file. Esta opción se usa para guardar los cambios en el archivo de la base de datos. - + Ctrl+S - + Compact the database file, removing space wasted by deleted records Compacta el archivo de la base de datos eliminando el espacio malgastado por los registros borrados - - + + Compact the database file, removing space wasted by deleted records. Compacta el archivo de la base de datos, eliminando el espacio malgastado por los registros borrados. - + E&xit &Salir - + Ctrl+Q - + Import data from an .sql dump text file into a new or existing database. Importa datos de un archivo de texto con un volcado .sql en una base de datos nueva o existente. - + This option lets you import data from an .sql dump text file into a new or existing database. SQL dump files can be created on most database engines, including MySQL and PostgreSQL. Esta opción se usa para importar datos de un archivo de texto con un volcado .sql en una base de datos nueva o existente. Los archivos de volcado SQL se pueden crear en la mayoría de los motores de base de datos, incluyendo MySQL y PostgreSQL. - + Open a wizard that lets you import data from a comma separated text file into a database table. Abre un asistente que le permite importar datos desde un archivo de texto con valores separado por comas a una tabla de una base de datos. - + Open a wizard that lets you import data from a comma separated text file into a database table. CSV files can be created on most database and spreadsheet applications. Abre un asistente que le permite importar datos desde un archivo de texto con valores separado por comas a una tabla de una base de datos. Los archivos CSV se pueden crear en la mayoría de las aplicaciones de bases de datos y hojas de cálculo. - + Export a database to a .sql dump text file. Exporta la base de datos como un volcado .sql a un archivo de texto. - + This option lets you export a database to a .sql dump text file. SQL dump files contain all data necessary to recreate the database on most database engines, including MySQL and PostgreSQL. Esta opción le permite exportar la base de datos como un volcado .sql a un archivo de texto. Los archivos de volcado SQL contienen todos los datos necesarios para recrear la base de datos en la mayoría de los motores de base de datos, incluyendo MySQL y PostgreSQL. - + Export a database table as a comma separated text file. Exporta la base de datos como un archivo de texto con valores separados por comas. - + Export a database table as a comma separated text file, ready to be imported into other database or spreadsheet applications. Exporta la base de datos como un archivo de texto con valores separados por comas, listo para ser importado en otra base de datos o aplicaciones de hoja de cálculo. - + Open the Create Table wizard, where it is possible to define the name and fields for a new table in the database Abre el asistente para Crear una Tabla, donde se puede definir el nombre y los campos de una nueva tabla en la base de datos - - + + Delete Table Borrar tabla - + Open the Delete Table wizard, where you can select a database table to be dropped. Abre el asistente para «Borrar tabla», donde se puede seleccionar una tabla de la base de datos para borrar. - + Open the Create Index wizard, where it is possible to define a new index on an existing database table. Abre el asistente «Crear índice», donde se puede definir un nuevo índice de una tabla existente de la base de datos. - + &Preferences... &Preferencias... - - + + Open the preferences window. Abrir la ventana de preferencias. - + &DB Toolbar &Barra de herramientas - + Shows or hides the Database toolbar. Muestra u oculta la barra de herramientas de la base de datos. - + Shift+F1 - + &Recently opened Archivos &recientes - + Ctrl+T - + Warning: this pragma is not readable and this value has been inferred. Writing the pragma might overwrite a redefined LIKE provided by an SQLite extension. Aviso: este pragma no es legible y este valor se ha supuesto. Escribir el pragma puede sobreescribir un LIKE redefinido que proporcione una extensión de SQLite. - + SQL &Log Historial de &SQL - + Show S&QL submitted by Mostrar S&QL ejecutado por - + &Plot &Gráfica - + &Revert Changes &Revertir cambios - + &Write Changes &Guardar cambios - + &Database from SQL file... Base de datos de &archivo SQL... - + &Table from CSV file... &Tabla de archivo CSV... - + &Database to SQL file... &Base de datos a archivo SQL... - + &Table(s) as CSV file... &Tabla(s) a archivo CSV... - + &Create Table... &Crear tabla... - + &Delete Table... &Borrar tabla... - + &Modify Table... &Modificar tabla... - + Create &Index... Crear í&ndice... - + W&hat's This? ¿&Qué es esto? - + &Execute SQL &Ejecutar SQL - - - + + + Save SQL file Guardar archivo SQL - + Ctrl+E - + Export as CSV file Exportar como archivo CSV - + Export table as comma separated values file Exportar tabla como archivo de valores separados por comas - - + + Save the current session to a file Guarda la sesión actual en un archivo - - + + Load a working session from a file Carga una sesión de trabajo de un archivo - - + + Save SQL file as Guardar archivo SQL como - + &Browse Table &Mostrar datos - + Copy Create statement Copiar sentencia CREATE - + Copy the CREATE statement of the item to the clipboard Copia la sentencia CREATE del ítem al portapapeles - + Ctrl+Return - + Ctrl+L - - + + Ctrl+P - + Ctrl+D - + Ctrl+I - + Encrypted Cifrado - + Read only Solo lectura - + Database file is read only. Editing the database is disabled. El archivo de la base de datos es de solo lectura. La edición de la base de datos está desactivada. - + Database encoding Codificación de la base de datos - + Database is encrypted using SQLCipher La base de datos está cifrada usando SQLCipher - - + + Choose a database file Seleccione un archivo de base de datos - - - + + + Choose a filename to save under Seleccione un nombre de archivo en el que guardar - + Error while saving the database file. This means that not all changes to the database were saved. You need to resolve the following error first. %1 @@ -3872,270 +4061,270 @@ Puede arrastrar sentencias SQL desde la columna Esquema y soltarlas en el editor %1 - + Are you sure you want to undo all changes made to the database file '%1' since the last save? ¿Está seguro de que quiere deshacer todos los cambios hechos al archivo de la base de datos «%1» desde la última vez que se guardó? - + Choose a file to import Seleccione el archivo a importar - + &%1 %2%3 &%1 %2%3 - + (read only) (sólo lectura) - + Open Database or Project Abrir base de datos o proyecto - + Attach Database... Anexar base de datos... - + Import CSV file(s)... Importar archivo(s) CSV... - + Do you want to save the changes made to SQL tabs in the project file '%1'? ¿Quiere guardar los cambios hechos a las pestañas SQL en el archivo de proyecto «%1»? - + Text files(*.sql *.txt);;All files(*) Archivos de texto(*.sql *.txt);;Todos los archivos(*) - + Do you want to create a new database file to hold the imported data? If you answer no we will attempt to import the data in the SQL file to the current database. ¿Quiere crear un nuevo archivo de base de datos donde poner los datos importados? Si responde no se intentarán importar los datos del archivo SQL en la base de datos actual. - + Automatically load the last opened DB file at startup - + Cargar automáticamente al inicio el último archivo abierto - + Ctrl+Alt+0 - + Ctrl+Alt+W - + Choose a database file to save under Elija un archivo de base de datos en el que guardar - + Error while saving the database to the new file. Error mientras se guardaba la base de datos en el nuevo archivo. - + Do you want to save the changes made to the project file '%1'? ¿Quiere guardar los cambios hechos al archivo de proyecto «%1»? - + Edit View %1 Editar vista %1 - + Edit Trigger %1 Editar disparador %1 - + Result: %1 Resultado: %1 - + File %1 already exists. Please choose a different name. El archivo %1 ya existe. Por favor elija un nombre diferente. - + Error importing data: %1 Error importando datos: %1 - + Import completed. Importación completada. - + Delete View Borrar vista - + Modify View Modificar vista - + Delete Trigger Borrar disparador - + Modify Trigger Modificar disparador - + Delete Index Borrar índice - + Modify Index Modificar índice - + Modify Table Modificar tabla - + Opened '%1' in read-only mode from recent file list Se ha abierto «%1» en modo de sólo lectura desde la lista de archivos recientes - + Opened '%1' from recent file list Se ha abierto «%1» desde la lista de archivos recientes - + Select the action to apply to the dropped file(s). <br/>Note: only 'Import' will process more than one file. Note for translation: Although there is no %n in the original, you can use the numerus-form to adjust 'files(s)' and remove the note when n = 1. Including %n in the translation will also work. - + Seleccione la acción a aplicar al archivo. Seleccione la acción a aplicar a los archivos <br/>Nota: sólo «Importar» procesará más de un archivo. - + The statements in the tab '%1' are still executing. Closing the tab will stop the execution. This might leave the database in an inconsistent state. Are you sure you want to close the tab? Las sentencias en la pestaña «%1»; todavía se están ejecutando. Al cerrar la pestaña se detendrá la ejecución. Esto puede dejar la base de datos en un estado inconsistente. ¿Está seguro de que quiere cerrar la pestaña? - + DB file '%1' could not be opened El archivo de base de datos «%1»; no se pudo abrir - + This project file is using an old file format because it was created using DB Browser for SQLite version 3.10 or lower. Loading this file format is no longer fully supported. If you want to load it completely, please use DB Browser for SQLite version 3.12 to convert it to the new file format. Este proyecto está usando un formato de archivo antiguo porque fue creado usando «DB Browser for SQLite» versión 3.10 o menor. La carga de este formato de archivo no está soportado en su totalidad. Si quiere cargarlo completamente, por favor, use «DB Browser for SQLite» versión 3.12 para convertirlo al nuevo formato. - + Table '%1' not found; settings ignored No se ha encontrado la tabla «%1»;; ajustes ignorados - + -- Reference to file "%1" (not supported by this version) -- -- Vínculo al archivo "%1" (no soportado en esta versión) -- - + Yes. Don't ask again Sí. No pregunte otra vez - + This action will open a new SQL tab with the following statements for you to edit and run: Esta acción abrirá una nueva pestaña SQL con las siguientes sentencias para que usted las pueda modificar y ejecutar: - + Rename Tab Renombrar Pestaña - + Duplicate Tab Duplicar Pestaña - + Close Tab Cerrar Pestaña - + Opening '%1'... Abriendo «%1»... - + There was an error opening '%1'... Hubo un error abriendo «%1»... - + Value is not a valid URL or filename: %1 Valor no es un nombre de archivo o URL válido: %1 - + Do you want to save the changes made to SQL tabs in a new project file? ¿Quiere guardar los cambios hechos a las pestañas SQL en un nuevo archivo de proyecto? - + Do you want to save the changes made to the SQL file %1? ¿Quiere guardar los cambios hechos al archivo SQL %1? - + Could not find resource file: %1 No se pudo encontrar el archivo de recursos: %1 - + Choose a project file to open Seleccione un archivo de proyecto para abrir - + Could not open project file for writing. Reason: %1 No se pudo abrir el archivo de proyecto para escritura. Motivo: %1 - + Collation needed! Proceed? ¡Es necesaria una función de comparación! ¿Proceder? - + A table in this database requires a special collation function '%1' that this application can't provide without further knowledge. If you choose to proceed, be aware bad things can happen to your database. Create a backup! @@ -4144,317 +4333,317 @@ Si decide continuar, está avisado de que la base de datos se puede dañar. ¡Cree una copia de respaldo! - + Setting PRAGMA values will commit your current transaction. Are you sure? Al definir los valores de PRAGMA se consolidará la transacción actual. ¿Está seguro? - + Ctrl+Tab - + Ctrl+Shift+Tab - + Clear List Limpiar lista - + Window Layout Disposición de la ventana - + Reset Window Layout Reiniciar disposición - + Simplify Window Layout Simplificar disposición - - Shift+Alt+0 + + Alt+Shift+0 - + Dock Windows at Bottom Acoplar ventanas en la parte inferior - + Dock Windows at Left Side Acoplar ventanas en la parte izquierda - + Dock Windows at Top Acoplar ventanas en la parte superior - - The database is currenctly busy. + + The database is currently busy. La base de datos está ocupada - + Click here to interrupt the currently running query. Haga clic aquí para interrumpir la consulta que se está ejecutando - + Could not open database file. Reason: %1 No se pudo abrir el archivo de base de datos. Razón: %1 - + In-Memory database Base de datos en memoria - + You are still executing SQL statements. Closing the database now will stop their execution, possibly leaving the database in an inconsistent state. Are you sure you want to close the database? Todavía se están ejecutando sentencias SQL. Al cerrar la base de datos se detendrá la ejecución. Esto puede dejar la base de datos en un estado inconsistente. ¿Está seguro de que quiere cerrar la base de datos? - + Are you sure you want to delete the table '%1'? All data associated with the table will be lost. ¿Está seguro de que quiere borrar la tabla «%1»? Se perderán todos los datos asociados con la tabla. - + Are you sure you want to delete the view '%1'? ¿Está seguro de que quiere borrar la vista «%1»? - + Are you sure you want to delete the trigger '%1'? ¿Está seguro de que quiere borrar el disparador «%1»? - + Are you sure you want to delete the index '%1'? ¿Está seguro de que quiere borrar el índice «%1»? - + Error: could not delete the table. Error: no se pudo borrar la tabla. - + Error: could not delete the view. Error: no se pudo borrar la vista. - + Error: could not delete the trigger. Error: no se pudo borrar el disparador. - + Error: could not delete the index. Error: no se pudo borrar el índice. - + Message from database engine: %1 Mensaje de la base de datos: %1 - + Editing the table requires to save all pending changes now. Are you sure you want to save the database? Para editar la tabla es necesario guardar antes todos los cambios pendientes. ¿Está seguro de que quiere guardar la base de datos? - + You are already executing SQL statements. Do you want to stop them in order to execute the current statements instead? Note that this might leave the database in an inconsistent state. Ya se están ejecutando sentencias SQL. ¿Quiere detenerlas para en su lugar ejecutar las sentencias actuales?. Esto puede dejar la base de datos en un estado inconsistente. - + -- EXECUTING SELECTION IN '%1' -- -- EJECUTANDO SELECCIÓN DE «%1» -- - + -- EXECUTING LINE IN '%1' -- -- EJECUTANDO LÍNEA DE «%1» -- - + -- EXECUTING ALL IN '%1' -- -- EJECUTANDO TODO «%1» -- - + Setting PRAGMA values or vacuuming will commit your current transaction. Are you sure? Establecer valores PRAGMA o realizar una limpieza consolidará la transacción actual. ¿Está seguro? - + Busy (%1) Ocupado (%1) - + %1 rows returned in %2ms %1 filas devueltas en %2ms - + Choose text files Elija archivos de texto - + Import completed. Some foreign key constraints are violated. Please fix them before saving. Importación completada. Algunas restricciones de las claves foráneas se han infringido. Por favor arréglelas antes de guardar. - + Select SQL file to open Seleccione el archivo SQL a abrir - + Select file name Seleccione el nombre del archivo - + Select extension file Seleccione el archivo de extensión - + Extension successfully loaded. Extensiones cargadas con éxito. - + Error loading extension: %1 Error cargando la extensión: %1 - - + + Don't show again No volver a mostrar - + New version available. Hay una nueva versión disponible. - + A new DB Browser for SQLite version is available (%1.%2.%3).<br/><br/>Please download at <a href='%4'>%4</a>. Hay disponible una nueva versión de «DB Browser for SQLite» (%1.%2.%3).<br/><br/>Por favor, descárguela de <a href='%4'>%4</a>. - + Project saved to file '%1' Proyecto guardado en el archivo «%1» - + creating collation creando comparación - + Set a new name for the SQL tab. Use the '&&' character to allow using the following character as a keyboard shortcut. Establezca el nuevo nombre para la pestaña SQL. Use el carácter «&&» para permitir usar el carácter siguiente como un atajo de teclado. - + Please specify the view name Por favor, especifique el nombre de la vista - + There is already an object with that name. Please choose a different name. Ya hay un objeto con ese nombre. Por favor, elija un nombre diferente. - + View successfully created. Vista creada con éxito. - + Error creating view: %1 Error creando la vista: %1 - + This action will open a new SQL tab for running: Esta acción abrirá una nueva pestaña SQL para ejecutar: - + Press Help for opening the corresponding SQLite reference page. Pulse Ayuda para abrir la página correspondiente de la referencia de SQLite. - + DB Browser for SQLite project file (*.sqbpro) Archivo de proyecto de «DB Browser for SQLite» (*.sqbpro) - + Error checking foreign keys after table modification. The changes will be reverted. Error comprobando las claves foráneas tras la modificación de la tabla. Los cambios se desharán. - + This table did not pass a foreign-key check.<br/>You should run 'Tools | Foreign-Key Check' and fix the reported issues. Esta tabla no ha pasado la comprobación de claves foráneas.<br/>Debería ejecutar 'Herramientas | Comprobar Claves foráneas' y arreglar los problemas mostrados. - - + + At line %1: En la línea %1: - + Result: %2 Resultado: %2 - + Execution finished with errors. Ejecución terminada con errores. - + Execution finished without errors. Ejecución terminada sin errores. @@ -4650,102 +4839,107 @@ Seleccione los ejes o sus etiquetas para arrastrar y aumentar/disminuir solo en - + Load all data and redraw plot Cargar todos los datos y redibujar el gráfico - - - + + + Row # Nº de línea - + Copy Copiar - + Print... Imprimir... - + + Help + Ayuda + + + Show legend Mostrar leyenda - + Stacked bars Barras apiladas - + Fixed number format Formato de números fijos - + Date/Time Fecha/hora - + Date Fecha - + Time Tiempo - - + + Numeric Numérico - + Label Etiqueta - + Invalid Inválido - + Load all data and redraw plot. Warning: not all data has been fetched from the table yet due to the partial fetch mechanism. Cargar todos los datos y redibujar el gráfico. Aviso: aún no se han cargado todos los datos desde la tabla debido al mecanismo de lectura parcial. - + Choose an axis color Elija un color para el eje - + Choose a filename to save under Seleccione un nombre de archivo en el que guardar - + PNG(*.png);;JPG(*.jpg);;PDF(*.pdf);;BMP(*.bmp);;All Files(*) PNG(*.png);;JPG(*.jpg);;PDF(*.pdf);;BMP(*.bmp);;Todos los archivos(*) - + There are curves in this plot and the selected line style can only be applied to graphs sorted by X. Either sort the table or query by X to remove curves or select one of the styles supported by curves: None or Line. Existen lazos en este gráfico y el estilo de línea seleccionado solo se puede aplicar a gráficos ordenados por X. Debe ordenar la tabla o consulta por X para eliminar los lazos o seleccionar uno de los estilos soportados por los lazos: Ninguno o Línea. - + Loading all remaining data for this table took %1ms. Cargar todos los datos restantes para esta tabla tardó %1ms. @@ -5122,7 +5316,7 @@ Se puede poner a 0 para desactivar el autocompletado. Select built-in extensions to load for every database: - + Seleccione extensiones incorporadas a cargar para cualquier base de datos: @@ -5484,7 +5678,7 @@ Se puede poner a 0 para desactivar el autocompletado. Select extensions to load for every database: - Seleccione extensiones a cargar para cada base de datos: + Seleccione extensiones a cargar para cualquier base de datos: @@ -5500,1953 +5694,387 @@ Se puede poner a 0 para desactivar el autocompletado. <html><head/><body><p>While supporting the REGEXP operator SQLite doesn't implement any regular expression<br/>algorithm but calls back the running application. DB Browser for SQLite implements this<br/>algorithm for you to let you use REGEXP out of the box. However, as there are multiple possible<br/>implementations of this and you might want to use another one, you're free to disable the<br/>application's implementation and load your own by using an extension. Requires restart of the application.</p></body></html> <html><head/><body><p> -Aunque SQLite admite el operador REGEXP, no implementa en sí ningún algoritmo de expresiones<br/> -regulares sino que llama a los de la aplicación en ejecución. «DB Browser for SQLite» implementa este<br/> -método para permitirle usar REGEXP de fábrica. Sin embargo, como hay múltiples posibles<br/> -implementaciones y puede querer usar otra, puede desactivar este método y cargar el suyo propio<br/> -usando una extensión. Necesitará reiniciar la aplicación.</p> -</body></html> - - - - Disable Regular Expression extension - Desactivar extensión de expresiones regulares - - - - - Choose a directory - Seleccione una carpeta - - - - - The language will change after you restart the application. - El idioma cambiará al reiniciar la aplicación. - - - - Select extension file - Seleccione archivo de extensión - - - - Extensions(*.so *.dylib *.dll);;All files(*) - Extensiones (*.so *.dll);;Todos los archivos (*) - - - - Import certificate file - Importar archivo de certificado - - - - No certificates found in this file. - No hay certificados en este archivo. - - - - Are you sure you want do remove this certificate? All certificate data will be deleted from the application settings! - ¿Está seguro de que quiere eliminar este certificado? ¡Todos los datos del certificado se borrarán de los ajustes de la aplicación! - - - - Are you sure you want to clear all the saved settings? -All your preferences will be lost and default values will be used. - ¿Está seguro de que desea borrar todos los ajustes guardadas? -Todas sus preferencias se perderán y se usarán valores predeterminados. - - - - Save Settings File - Guardar archivo de ajustes - - - - - Initialization File (*.ini) - Archivos de inicialización (*.ini) - - - - The settings file has been saved in location : - - Los ajustes se han guardado en la ubicación: - - - - - Open Settings File - Abrir archivo de ajustes - - - - The settings file was loaded properly. - El archivo de ajustes se ha cargado correctamente. - - - - The selected settings file is not a normal settings file. -Please check again. - El archivo de ajustes seleccionado no parece tener el formato esperado. -Por favor compruebe que es correcto. - - - - ProxyDialog - - - Proxy Configuration - Configuración del proxy - - - - Pro&xy Type - Tipo de pro&xy - - - - Host Na&me - No&mbre del host - - - - Port - Puerto - - - - Authentication Re&quired - Autentificación re&querida - - - - &User Name - Nombre de &usuario - - - - Password - Contraseña - - - - None - Ninguno - - - - System settings - Ajustes del sistema - - - - HTTP - HTTP - - - - Socks v5 - Socks v5 - - - - QObject - - - Error importing data - Error importando datos - - - - from record number %1 - del registro número %1 - - - - . -%1 - . -%1 - - - - Importing CSV file... - Importando archivo CSV... - - - - Cancel - Cancelar - - - - All files (*) - Todos los archivos (*) - - - - SQLite database files (*.db *.sqlite *.sqlite3 *.db3) - Archivos de BB.DD. SQLite (*.db *.sqlite *.sqlite3 *.db3) - - - - Left - Izquierda - - - - Right - Derecha - - - - Center - Centrado - - - - Justify - Justificado - - - - SQLite Database Files (*.db *.sqlite *.sqlite3 *.db3) - Archivos de BB.DD. SQLite (*.db *.sqlite *.sqlite3 *.db3) - - - - DB Browser for SQLite Project Files (*.sqbpro) - Archivos de proyecto de DB Browser for SQLite (*.sqbpro) - - - - SQL Files (*.sql) - Archivos SQL (*.sql) - - - - All Files (*) - Todos los archivos (*) - - - - Text Files (*.txt) - Archivos de texto (*.txt) - - - - Comma-Separated Values Files (*.csv) - Archivos de valores separados por comas (*.csv) - - - - Tab-Separated Values Files (*.tsv) - Archivos de valores separados por tabuladores (*.tsv) - - - - Delimiter-Separated Values Files (*.dsv) - Archivos de Valores Separados por Delimitador (*.dsv) - - - - Concordance DAT files (*.dat) - Archivos DAT de Concordance (*.dat) - - - - JSON Files (*.json *.js) - Archivos JSON (*.json *.js) - - - - XML Files (*.xml) - Archivos XML (*.xml) - - - - Binary Files (*.bin *.dat) - Archivos binarios (*.bin *.dat) - - - - SVG Files (*.svg) - Archivos SVG (*.svg) - - - - Hex Dump Files (*.dat *.bin) - Archivos de volcado Hex (*.dat *.bin) - - - - Extensions (*.so *.dylib *.dll) - Extensiones (*.so *.dylib *.dll) - - - - Initialization File (*.ini) - Archivos de inicialización (*.ini) - - - - QsciCommand - - - Move down one line - - - - - Extend selection down one line - - - - - Extend rectangular selection down one line - - - - - Scroll view down one line - - - - - Move up one line - - - - - Extend selection up one line - - - - - Extend rectangular selection up one line - - - - - Scroll view up one line - - - - - Scroll to start of document - - - - - Scroll to end of document - - - - - Scroll vertically to centre current line - - - - - Move down one paragraph - - - - - Extend selection down one paragraph - - - - - Move up one paragraph - - - - - Extend selection up one paragraph - - - - - Move left one character - - - - - Extend selection left one character - - - - - Extend rectangular selection left one character - - - - - Move right one character - - - - - Extend selection right one character - - - - - Extend rectangular selection right one character - - - - - Move left one word - - - - - Extend selection left one word - - - - - Move right one word - - - - - Extend selection right one word - - - - - Move to end of previous word - - - - - Extend selection to end of previous word - - - - - Move to end of next word - - - - - Extend selection to end of next word - - - - - Move left one word part - - - - - Extend selection left one word part - - - - - Move right one word part - - - - - Extend selection right one word part - - - - - Move to start of document line - - - - - Extend selection to start of document line - - - - - Extend rectangular selection to start of document line - - - - - Move to start of display line - - - - - Extend selection to start of display line - - - - - Move to start of display or document line - - - - - Extend selection to start of display or document line - - - - - Move to first visible character in document line - - - - - Extend selection to first visible character in document line - - - - - Extend rectangular selection to first visible character in document line - - - - - Move to first visible character of display in document line - - - - - Extend selection to first visible character in display or document line - - - - - Move to end of document line - - - - - Extend selection to end of document line - - - - - Extend rectangular selection to end of document line - - - - - Move to end of display line - - - - - Extend selection to end of display line - - - - - Move to end of display or document line - - - - - Extend selection to end of display or document line - - - - - Move to start of document - - - - - Extend selection to start of document - - - - - Move to end of document - - - - - Extend selection to end of document - - - - - Move up one page - - - - - Extend selection up one page - - - - - Extend rectangular selection up one page - - - - - Move down one page - - - - - Extend selection down one page - - - - - Extend rectangular selection down one page - - - - - Stuttered move up one page - - - - - Stuttered extend selection up one page - - - - - Stuttered move down one page - - - - - Stuttered extend selection down one page - - - - - Delete current character - - - - - Delete previous character - - - - - Delete previous character if not at start of line - - - - - Delete word to left - - - - - Delete word to right - - - - - Delete right to end of next word - - - - - Delete line to left - - - - - Delete line to right - - - - - Delete current line - - - - - Cut current line - - - - - Copy current line - - - - - Transpose current and previous lines - - - - - Duplicate the current line - - - - - Select all - - - - - Move selected lines up one line - - - - - Move selected lines down one line - - - - - Duplicate selection - - - - - Convert selection to lower case - - - - - Convert selection to upper case - - - - - Cut selection - - - - - Copy selection - - - - - Paste - Pegar - - - - Toggle insert/overtype - - - - - Insert newline - - - - - Formfeed - - - - - Indent one level - - - - - De-indent one level - - - - - Cancel - Cancelar - - - - Undo last command - - - - - Redo last command - - - - - Zoom in - - - - - Zoom out - - - - - QsciLexerCPP - - - Default - Por defecto - - - - Inactive default - - - - - C comment - - - - - Inactive C comment - - - - - C++ comment - - - - - Inactive C++ comment - - - - - JavaDoc style C comment - - - - - Inactive JavaDoc style C comment - - - - - Number - - - - - Inactive number - - - - - Keyword - Palabra clave - - - - Inactive keyword - - - - - Double-quoted string - - - - - Inactive double-quoted string - - - - - Single-quoted string - - - - - Inactive single-quoted string - - - - - IDL UUID - - - - - Inactive IDL UUID - - - - - Pre-processor block - - - - - Inactive pre-processor block - - - - - Operator - - - - - Inactive operator - - - - - Identifier - Identificador - - - - Inactive identifier - - - - - Unclosed string - - - - - Inactive unclosed string - - - - - C# verbatim string - - - - - Inactive C# verbatim string - - - - - JavaScript regular expression - - - - - Inactive JavaScript regular expression - - - - - JavaDoc style C++ comment - - - - - Inactive JavaDoc style C++ comment - - - - - Secondary keywords and identifiers - - - - - Inactive secondary keywords and identifiers - - - - - JavaDoc keyword - - - - - Inactive JavaDoc keyword - - - - - JavaDoc keyword error - - - - - Inactive JavaDoc keyword error - - - - - Global classes and typedefs - - - - - Inactive global classes and typedefs - - - - - C++ raw string - - - - - Inactive C++ raw string - - - - - Vala triple-quoted verbatim string - - - - - Inactive Vala triple-quoted verbatim string - - - - - Pike hash-quoted string - - - - - Inactive Pike hash-quoted string - - - - - Pre-processor C comment - - - - - Inactive pre-processor C comment - - - - - JavaDoc style pre-processor comment - - - - - Inactive JavaDoc style pre-processor comment - - - - - User-defined literal - - - - - Inactive user-defined literal - - - - - Task marker - - - - - Inactive task marker - - - - - Escape sequence - - - - - Inactive escape sequence - - - - - QsciLexerHTML - - - HTML default - - - - - Tag - - - - - Unknown tag - - - - - Attribute - - - - - Unknown attribute - - - - - HTML number - - - - - HTML double-quoted string - - - - - HTML single-quoted string - - - - - Other text in a tag - - - - - HTML comment - - - - - Entity - - - - - End of a tag - - - - - Start of an XML fragment - - - - - End of an XML fragment - - - - - Script tag - - - - - Start of an ASP fragment with @ - - - - - Start of an ASP fragment - - - - - CDATA - - - - - Start of a PHP fragment - - - - - Unquoted HTML value - - - - - ASP X-Code comment - - - - - SGML default - - - - - SGML command - - - - - First parameter of an SGML command - - - - - SGML double-quoted string - - - - - SGML single-quoted string - - - - - SGML error - - - - - SGML special entity - - - - - SGML comment - - - - - First parameter comment of an SGML command - - - - - SGML block default - - - - - Start of a JavaScript fragment - - - - - JavaScript default - - - - - JavaScript comment - - - - - JavaScript line comment - - - - - JavaDoc style JavaScript comment - - - - - JavaScript number - - - - - JavaScript word - - - - - JavaScript keyword - - - - - JavaScript double-quoted string - - - - - JavaScript single-quoted string - - - - - JavaScript symbol - - - - - JavaScript unclosed string - - - - - JavaScript regular expression - - - - - Start of an ASP JavaScript fragment - - - - - ASP JavaScript default - - - - - ASP JavaScript comment - - - - - ASP JavaScript line comment - - - - - JavaDoc style ASP JavaScript comment - - - - - ASP JavaScript number - - - - - ASP JavaScript word - - - - - ASP JavaScript keyword - - - - - ASP JavaScript double-quoted string - - - - - ASP JavaScript single-quoted string - - - - - ASP JavaScript symbol - - - - - ASP JavaScript unclosed string - - - - - ASP JavaScript regular expression - - - - - Start of a VBScript fragment - - - - - VBScript default - - - - - VBScript comment - - - - - VBScript number - - - - - VBScript keyword - - - - - VBScript string - - - - - VBScript identifier - - - - - VBScript unclosed string - - - - - Start of an ASP VBScript fragment - - - - - ASP VBScript default - - - - - ASP VBScript comment - - - - - ASP VBScript number - - - - - ASP VBScript keyword - - - - - ASP VBScript string - - - - - ASP VBScript identifier - - - - - ASP VBScript unclosed string - - - - - Start of a Python fragment - - - - - Python default - - - - - Python comment - - - - - Python number - - - - - Python double-quoted string - - - - - Python single-quoted string - - - - - Python keyword - - - - - Python triple double-quoted string - - - - - Python triple single-quoted string - - - - - Python class name - - - - - Python function or method name - - - - - Python operator - - - - - Python identifier - - - - - Start of an ASP Python fragment - - - - - ASP Python default - - - - - ASP Python comment - - - - - ASP Python number - - - - - ASP Python double-quoted string - - - - - ASP Python single-quoted string - - - - - ASP Python keyword - - - - - ASP Python triple double-quoted string - +Aunque SQLite admite el operador REGEXP, no implementa en sí ningún algoritmo de expresiones<br/> +regulares sino que llama a los de la aplicación en ejecución. «DB Browser for SQLite» implementa este<br/> +método para permitirle usar REGEXP de fábrica. Sin embargo, como hay múltiples posibles<br/> +implementaciones y puede querer usar otra, puede desactivar este método y cargar el suyo propio<br/> +usando una extensión. Necesitará reiniciar la aplicación.</p> +</body></html> - - ASP Python triple single-quoted string - + + Disable Regular Expression extension + Desactivar extensión de expresiones regulares - - ASP Python class name - + + + Choose a directory + Seleccione una carpeta - - ASP Python function or method name - + + + The language will change after you restart the application. + El idioma cambiará al reiniciar la aplicación. - - ASP Python operator - + + Select extension file + Seleccione archivo de extensión - - ASP Python identifier - + + Extensions(*.so *.dylib *.dll);;All files(*) + Extensiones (*.so *.dll);;Todos los archivos (*) - - PHP default - + + Import certificate file + Importar archivo de certificado - - PHP double-quoted string - + + No certificates found in this file. + No hay certificados en este archivo. - - PHP single-quoted string - + + Are you sure you want do remove this certificate? All certificate data will be deleted from the application settings! + ¿Está seguro de que quiere eliminar este certificado? ¡Todos los datos del certificado se borrarán de los ajustes de la aplicación! - - PHP keyword - + + Are you sure you want to clear all the saved settings? +All your preferences will be lost and default values will be used. + ¿Está seguro de que desea borrar todos los ajustes guardadas? +Todas sus preferencias se perderán y se usarán valores predeterminados. - - PHP number - + + Save Settings File + Guardar archivo de ajustes - - PHP variable - + + + Initialization File (*.ini) + Archivos de inicialización (*.ini) - - PHP comment - + + The settings file has been saved in location : + + Los ajustes se han guardado en la ubicación: + - - PHP line comment - + + Open Settings File + Abrir archivo de ajustes - - PHP double-quoted variable - + + The settings file was loaded properly. + El archivo de ajustes se ha cargado correctamente. - - PHP operator - + + The selected settings file is not a normal settings file. +Please check again. + El archivo de ajustes seleccionado no parece tener el formato esperado. +Por favor compruebe que es correcto. - QsciLexerJSON - - - Default - Por defecto - - - - Number - - - - - String - Cadena - + ProxyDialog - - Unclosed string - + + Proxy Configuration + Configuración del proxy - - Property - + + Pro&xy Type + Tipo de pro&xy - - Escape sequence - + + Host Na&me + No&mbre del host - - Line comment - + + Port + Puerto - - Block comment - + + Authentication Re&quired + Autentificación re&querida - - Operator - + + &User Name + Nombre de &usuario - - IRI - + + Password + Contraseña - - JSON-LD compact IRI - + + None + Ninguno - - JSON keyword - + + System settings + Ajustes del sistema - - JSON-LD keyword - + + HTTP + HTTP - - Parsing error - + + SOCKS5 + SOCKS5 - QsciLexerJavaScript + QObject - - Regular expression - Expresión regular + + Error importing data + Error importando datos - - - QsciLexerPython - - Default - Por defecto + + from record number %1 + del registro número %1 - - Comment - Comentario + + . +%1 + . +%1 - - Number - + + Importing CSV file... + Importando archivo CSV... - - Double-quoted string - + + Cancel + Cancelar - - Single-quoted string - + + All files (*) + Todos los archivos (*) - - Keyword - Palabra clave + + SQLite database files (*.db *.sqlite *.sqlite3 *.db3) + Archivos de BB.DD. SQLite (*.db *.sqlite *.sqlite3 *.db3) - - Triple single-quoted string - + + Left + Izquierda - - Triple double-quoted string - + + Right + Derecha - - Class name - + + Center + Centrado - - Function or method name - + + Justify + Justificado - - Operator - + + SQLite Database Files (*.db *.sqlite *.sqlite3 *.db3) + Archivos de BB.DD. SQLite (*.db *.sqlite *.sqlite3 *.db3) - - Identifier - Identificador + + DB Browser for SQLite Project Files (*.sqbpro) + Archivos de proyecto de DB Browser for SQLite (*.sqbpro) - - Comment block - + + SQL Files (*.sql) + Archivos SQL (*.sql) - - Unclosed string - + + All Files (*) + Todos los archivos (*) - - Highlighted identifier - + + Text Files (*.txt) + Archivos de texto (*.txt) - - Decorator - + + Comma-Separated Values Files (*.csv) + Archivos de valores separados por comas (*.csv) - - Double-quoted f-string - + + Tab-Separated Values Files (*.tsv) + Archivos de valores separados por tabuladores (*.tsv) - - Single-quoted f-string - + + Delimiter-Separated Values Files (*.dsv) + Archivos de Valores Separados por Delimitador (*.dsv) - - Triple single-quoted f-string - + + Concordance DAT files (*.dat) + Archivos DAT de Concordance (*.dat) - - Triple double-quoted f-string - + + JSON Files (*.json *.js) + Archivos JSON (*.json *.js) - - - QsciLexerSQL - - Default - Por defecto + + XML Files (*.xml) + Archivos XML (*.xml) - - Comment - Comentario + + Binary Files (*.bin *.dat) + Archivos binarios (*.bin *.dat) - - Comment line - + + SVG Files (*.svg) + Archivos SVG (*.svg) - - JavaDoc style comment - + + Hex Dump Files (*.dat *.bin) + Archivos de volcado Hex (*.dat *.bin) - - Number - + + Extensions (*.so *.dylib *.dll) + Extensiones (*.so *.dylib *.dll) - - Keyword - Palabra clave + + Initialization File (*.ini) + Archivos de inicialización (*.ini) + + + QsciCommand - - Double-quoted string - + Paste + Pegar - - Single-quoted string - + Cancel + Cancelar + + + QsciLexerCPP - - SQL*Plus keyword - + Default + Por defecto - - SQL*Plus prompt - + Keyword + Palabra clave - - Operator - + Identifier + Identificador + + + QsciLexerJSON - - Identifier - Identificador + Default + Por defecto - - SQL*Plus comment - + String + Cadena + + + QsciLexerJavaScript - - # comment line - + Regular expression + Expresión regular + + + QsciLexerPython - - JavaDoc keyword - + Default + Por defecto - - JavaDoc keyword error - + Comment + Comentario - - User defined 1 - + Keyword + Palabra clave - - User defined 2 - + Identifier + Identificador + + + QsciLexerSQL - - User defined 3 - + Default + Por defecto - - User defined 4 - + Comment + Comentario - - Quoted identifier - + Keyword + Palabra clave - - Quoted operator - + Identifier + Identificador QsciScintilla - &Undo - &Deshacer - - - - &Redo - - - - - Cu&t - - - - - &Copy - - - - - &Paste - - - - - Delete - + &Deshacer - Select All - Seleccionar Todo + Seleccionar Todo @@ -7841,26 +6469,26 @@ Are you sure you want to proceed? Por favor, introduzca la frase de contraseña de este certificado de cliente para autenticarse. - + Cancel Cancelar - + Uploading remote database to %1 Subiendo base de datos remota a %1 - + Downloading remote database from %1 Descargando base de datos remota desde %1 - + Error: Cannot open the file for sending. Error: No se puede abrir el archivo para enviar. @@ -8065,12 +6693,12 @@ Are you sure you want to proceed? Ctrl+PgUp - + Ctrl+PgDown - + @@ -8595,32 +7223,32 @@ El uso de esta función tiene que ser autorizado desde las Preferencias.cargando... - + References %1(%2) Hold %3Shift and click to jump there Referencia %1(%2) Mantenga pulsado %3Mayús. y haga clic para ir ahí - + Error changing data: %1 Error modificando datos: %1 - + retrieving list of columns obteniendo lista de columnas - + Fetching data... Obteniendo datos... - - + + Cancel Cancelar @@ -8957,12 +7585,12 @@ Mantenga pulsado %3Mayús. y haga clic para ir ahí - <html><head/><body><p>This button creates a new record in the database. Hold the mouse button to open a pop-up menu of different options:</p><ul><li><span style=" font-weight:600;">New Record</span>: insert a new record with default values in the database.</li><li><span style=" font-weight:600;">Insert Values...</span>: open a dialog for entering values before they are inserted in the database. This allows to enter values acomplishing the different constraints. This dialog is also open if the <span style=" font-weight:600;">New Record</span> option fails due to these constraints.</li></ul></body></html> + <html><head/><body><p>This button creates a new record in the database. Hold the mouse button to open a pop-up menu of different options:</p><ul><li><span style=" font-weight:600;">New Record</span>: insert a new record with default values in the database.</li><li><span style=" font-weight:600;">Insert Values...</span>: open a dialog for entering values before they are inserted in the database. This allows to enter values accomplishing the different constraints. This dialog is also open if the <span style=" font-weight:600;">New Record</span> option fails due to these constraints.</li></ul></body></html> <html><head/><body><p>Este botón crea un nuevo registro en la base de datos. Mantenga pulsado el botón del ratón para abrir un menú emergente con varias opciones:</p><ul><li><span style=" font-weight:600;">Nuevo Registro</span>: inserta en la base de datos un nuevo registro con valores por defecto.</li><li><span style=" font-weight:600;">Introduce Valores...</span>: abre un diálogo para introducir valores antes de insertarlos en la base de datos. Esto permite introducir valores que cumplan con las restricciones. Este diálogo también se abre si la opción de <span style=" font-weight:600;">Nuevo Registro</span> falla debido a esas restricciones.</li></ul></body></html> - + Delete Record Borrar registro @@ -9039,7 +7667,7 @@ Mantenga pulsado %3Mayús. y haga clic para ir ahí - <html><head/><body><p>This popup menu provides the following options applying to the currently browsed and filtered table:</p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Export to CSV: this option exports the data of the browsed table as currently displayed (after filters, display formats and order column) to a CSV file.</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Save as view: this option saves the current setting of the browsed table (filters, display formats and order column) as an SQL view that you can later browse or use in SQL statements.</li></ul></body></html> + <html><head/><body><p>This pop-up menu provides the following options applying to the currently browsed and filtered table:</p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Export to CSV: this option exports the data of the browsed table as currently displayed (after filters, display formats and order column) to a CSV file.</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Save as view: this option saves the current setting of the browsed table (filters, display formats and order column) as an SQL view that you can later browse or use in SQL statements.</li></ul></body></html> <html><head/><body><p>Este menú contextual provee las siguientes opciones que se aplican a la tabla actualmente visualizada y filtrada:</p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Exportar a CSV: esta opción exporta los datas de la tabla tal cual se presentan actualmente (después de filtros, formatos de presentación y columna de orden) a un archivo CSV.</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Guardar como vista: esta opción guarda la configuración actual de la tabla visualizada (filtros, formatos de presentación y columna de orden) como una vista SQL que luego puede visualizar o usar en sentencias SQL.</li></ul></body></html> @@ -9064,7 +7692,7 @@ Mantenga pulsado %3Mayús. y haga clic para ir ahí - + Set encoding Definir codificación @@ -9329,96 +7957,96 @@ Mantenga pulsado %3Mayús. y haga clic para ir ahí . Suma: %1; Media: %2; Mín: %3; Máx: %4 - + Conditional formats for "%1" Formatos condicionales para "%1" - + determining row count... determinando nº de filas... - + %L1 - %L2 of >= %L3 %L1 - %L2 de >= %L3 - + %L1 - %L2 of %L3 %L1 - %L2 de %L3 - + (clipped at %L1 rows) (truncado a %L1 filas) - + Please enter a pseudo-primary key in order to enable editing on this view. This should be the name of a unique column in the view. Introduzca una clave pseudo-primaria para activar la edición en esta vista. Esta debería ser el nombre de una columna única en la vista. - + Delete Records Borrar registros - + Duplicate records Duplicar registros - + Duplicate record Duplicar registro - + Ctrl+" - + Adjust rows to contents Ajustar las filas al contenido - + Error deleting record: %1 Error borrando registro: %1 - + Please select a record first Por favor, antes seleccione un registro - + Please choose a new encoding for all tables. Por favor, elija una nueva codificación para todas las tablas. - + Please choose a new encoding for this table. Por favor, elija una nueva codificación para esta tabla. - + %1 Leave the field empty for using the database encoding. %1 Deje este campo vacío para usar la codificación de la base de datos. - + This encoding is either not valid or not supported. Esta codificación no es válida o no está soportada. - + %1 replacement(s) made. Se realizaron %1 sustitucion(es). @@ -9446,24 +8074,6 @@ Deje este campo vacío para usar la codificación de la base de datos.Pone un nuevo nombre a la hoja de datos. Use el carácter «&&» para que el carácter siguiente se use como atajo de teclado. - - UndoStack - - - Inserting %1 bytes - - - - - Delete %1 chars - - - - - Overwrite %1 chars - - - VacuumDialog diff --git a/src/translations/sqlb_fa.ts b/src/translations/sqlb_fa.ts index 858e4df5d..28c754a0d 100644 --- a/src/translations/sqlb_fa.ts +++ b/src/translations/sqlb_fa.ts @@ -15,7 +15,7 @@ - <html><head/><body><p>DB Browser for SQLite is an open source, freeware visual tool used to create, design and edit SQLite database files.</p><p>It is bi-licensed under the Mozilla Public License Version 2, as well as the GNU General Public License Version 3 or later. You can modify or redistribute it under the conditions of these licenses.</p><p>See <a href="https://www.gnu.org/licenses/gpl.html"><span style=" text-decoration: underline; color:#0000ff;">http://www.gnu.org/licenses/gpl.html</span></a> and <a href="https://www.mozilla.org/MPL/2.0/index.txt"><span style=" text-decoration: underline; color:#0000ff;">https://www.mozilla.org/MPL/2.0/index.txt</span></a> for details.</p><p>For more information on this program please visit our website at: <a href="https://sqlitebrowser.org"><span style=" text-decoration: underline; color:#0000ff;">http://sqlitebrowser.org</span></a></p><p><span style=" font-size:small;">This software uses the GPL/LGPL Qt Toolkit from </span><a href="http://qt-project.org/"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://qt-project.org/</span></a><span style=" font-size:small;"><br/>See </span><a href="https://doc.qt.io/qt-5/licensing.html"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://qt-project.org/doc/qt-5/licensing.html</span></a><span style=" font-size:small;"> for licensing terms and information.</span></p><p><span style=" font-size:8pt;">We use the nalgeon/sqlean library for SQLite extensions support.<br/>This library is licensed under the MIT license, see the following for more information:<br/></span><a href="https://github.com/nalgeon/sqlean"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">https://github.com/nalgeon/sqlean</span></a></p><p><span style=" font-size:small;">It also uses the Pastel SVG icon set by Michael Buckley under a Creative Commons Attribution Share Alike 4.0 license.<br/>See </span><a href="https://codefisher.org/pastel-svg/"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://codefisher.org/pastel-svg/</span></a><span style=" font-size:small;"> for details.</span></p></body></html> + <html><head/><body><p>DB Browser for SQLite is an open source, freeware visual tool used to create, design and edit SQLite database files.</p><p>It is bi-licensed under the Mozilla Public License Version 2, as well as the GNU General Public License Version 3 or later. You can modify or redistribute it under the conditions of these licenses.</p><p>See <a href="https://www.gnu.org/licenses/gpl.html"><span style=" text-decoration: underline; color:#0000ff;">https://www.gnu.org/licenses/gpl.html</span></a> and <a href="https://www.mozilla.org/MPL/2.0/index.txt"><span style=" text-decoration: underline; color:#0000ff;">https://www.mozilla.org/MPL/2.0/index.txt</span></a> for details.</p><p>For more information on this program please visit our website at: <a href="https://sqlitebrowser.org"><span style=" text-decoration: underline; color:#0000ff;">https://sqlitebrowser.org</span></a></p><p><span style=" font-size:small;">This software uses the GPL/LGPL Qt Toolkit from </span><a href="https://qt-project.org/"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://qt-project.org/</span></a><span style=" font-size:small;"><br/>See </span><a href="https://doc.qt.io/qt-5/licensing.html"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://doc.qt.io/qt-5/licensing.html</span></a><span style=" font-size:small;"> for licensing terms and information.</span></p><p><span style=" font-size:8pt;">We use the nalgeon/sqlean library for SQLite extensions support.<br/>This library is licensed under the MIT license, see the following for more information:<br/></span><a href="https://github.com/nalgeon/sqlean"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">https://github.com/nalgeon/sqlean</span></a></p><p><span style=" font-size:small;">It also uses the Pastel SVG icon set by Michael Buckley under a Creative Commons Attribution Share Alike 4.0 license.<br/>See </span><a href="https://codefisher.org/pastel-svg/"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://codefisher.org/pastel-svg/</span></a><span style=" font-size:small;"> for details.</span></p></body></html> @@ -277,38 +277,38 @@ - + SQLite Version - + SQLCipher Version %1 (based on SQLite %2) - + DB Browser for SQLite Version %1. - + Last commit hash when built: %1 - + Built for %1, running on %2 - + Qt Version %1 - Invalid option/non-existant file: %1 + Invalid option/non-existent file: %1 @@ -385,7 +385,7 @@ - + Please set a key to encrypt the database. Note that if you change any of the other, optional, settings you'll need to re-enter them as well every time you open the database file. Leave the password fields empty to disable the encryption. @@ -393,7 +393,7 @@ The encryption process might take some time and you should have a backup copy of - + Please enter the key used to encrypt the database. If any of the other settings were altered for this database file you need to provide this information as well. @@ -417,129 +417,129 @@ If any of the other settings were altered for this database file you need to pro - + Default - + Decimal number - + Exponent notation - + Hex blob - + Hex number - + Octal number - + Round number - + Apple NSDate to date - + Java epoch (milliseconds) to date - + .NET DateTime.Ticks to date - + Julian day to date - + Unix epoch to date - + Unix epoch to local time - + WebKit / Chromium epoch to date - + WebKit / Chromium epoch to local time - + Windows DATE to date - + Date as dd/mm/yyyy - + Lower case - + Upper case - + Binary GUID to text - + SpatiaLite Geometry to SVG - + Custom - + Custom display format must contain a function call applied to %1 - + Error in custom display format. Message from database engine: %1 - + Custom display format must return only one column but it returned %1. @@ -666,207 +666,207 @@ If any of the other settings were altered for this database file you need to pro DBBrowserDB - + Please specify the database name under which you want to access the attached database - + Invalid file format - + Do you really want to close this temporary database? All data will be lost. - + Do you want to save the changes made to the database file %1? - + Database didn't close correctly, probably still busy - + Cannot open destination file: '%1' - - + + Cannot backup to file: '%1'. Message: %2 - + The database is currently busy: - + Do you want to abort that other operation? - + Exporting database to SQL file... - - + + Cancel - - + + No database file opened - + Executing SQL... - + Action cancelled. - - + + Error in statement #%1: %2. Aborting execution%3. - - + + and rolling back - + didn't receive any output from %1 - + could not execute command: %1 - + Cannot delete this object - + Cannot set data on this object - - + + A table with the name '%1' already exists in schema '%2'. - + No table with name '%1' exists in schema '%2'. - - + + Cannot find column %1. - + Creating savepoint failed. DB says: %1 - + Renaming the column failed. DB says: %1 - - + + Releasing savepoint failed. DB says: %1 - + Creating new table failed. DB says: %1 - + Copying data to new table failed. DB says: %1 - + Deleting old table failed. DB says: %1 - + Restoring some of the objects associated with this table failed. This is most likely because some column names changed. Here's the SQL statement which you might want to fix and execute manually: - + Error renaming table '%1' to '%2'. Message from database engine: %3 - + could not get list of db objects: %1 - + could not get list of databases: %1 - + Error setting pragma %1 to %2: %3 - + File not found. - + Error loading extension: %1 - + Error loading built-in extension: %1 - + could not get column information @@ -1917,7 +1917,7 @@ All data currently stored in this field will be lost. ExtendedScintilla - + Ctrl+H @@ -1928,22 +1928,22 @@ All data currently stored in this field will be lost. - + Ctrl+P - + Find... - + Find and Replace... - + Print... @@ -1951,128 +1951,128 @@ All data currently stored in this field will be lost. ExtendedTableWidget - + Use as Exact Filter - + Containing - + Not containing - + Not equal to - + Greater than - + Less than - + Greater or equal - + Less or equal - + Between this and... - + Regular expression - + Edit Conditional Formats... - + Set to NULL - + Cut - + Copy - + Copy with Headers - + Copy as SQL - + Paste - + Print... - + Use in Filter Expression - + Alt+Del - + Ctrl+Shift+C - + Ctrl+Alt+C - + The content of the clipboard is bigger than the range selected. Do you want to insert it anyway? - + <p>Not all data has been loaded. <b>Do you want to load all data before selecting all the rows?</b><p><p>Answering <b>No</b> means that no more data will be loaded and the selection will not be performed.<br/>Answering <b>Yes</b> might take some time while the data is loaded but the selection will be complete.</p>Warning: Loading all the data might require a great amount of memory for big tables. - + Cannot set selection to NULL. Column %1 has a NOT NULL constraint. @@ -2124,12 +2124,12 @@ Do you want to insert it anyway? FilterLineEdit - + Filter - + These input fields allow you to perform quick filters in the currently selected table. By default, the rows containing the input text are filtered out. The following operators are also supported: @@ -2145,92 +2145,92 @@ x~y Range: values between x and y - + Clear All Conditional Formats - + Use for Conditional Format - + Set Filter Expression - + What's This? - + Is NULL - + Is not NULL - + Is empty - + Is not empty - + Not containing... - + Equal to... - + Not equal to... - + Greater than... - + Less than... - + Greater or equal... - + Less or equal... - + In range... - + Regular expression... - + Edit Conditional Formats... @@ -2453,7 +2453,7 @@ x~y Range: values between x and y - + Tab @@ -2596,7 +2596,7 @@ x~y Range: values between x and y - + Deselect All @@ -2606,52 +2606,52 @@ x~y Range: values between x and y - + Select All - + There is already a table named '%1' and an import into an existing table is only possible if the number of columns match. - + There is already a table named '%1'. Do you want to import the data into it? - + Creating restore point failed: %1 - + Creating the table failed: %1 - + importing CSV - + Could not prepare INSERT statement: %1 - + Inserting row failed: %1 - + Unexpected end of file. Please make sure that you have configured the correct quote characters and the file is not malformed. - + Importing the file '%1' took %2ms. Of this %3ms were spent in the row function. @@ -2671,112 +2671,112 @@ You can drag SQL statements from an object row and drop them into other applicat - + Warning: this pragma is not readable and this value has been inferred. Writing the pragma might overwrite a redefined LIKE provided by an SQLite extension. - + toolBar1 - + &File - + &Import - + &Export - + &Edit - + &View - + &Help - + Too&ls - + DB Toolbar - + Edit Database &Cell - + SQL &Log - + Show S&QL submitted by - + User - + Application - + Error Log - + This button clears the contents of the SQL logs - + &Clear - + This panel lets you examine a log of all SQL commands issued by the application or by yourself - + &Plot - + DB Sche&ma - + This is the structure of the opened database. You can drag multiple object names from the Name column and drop them into the SQL editor and you can adjust the properties of the dropped names using the context menu. This would help you in composing SQL statements. You can drag SQL statements from the Schema column and drop them into the SQL editor or into other applications. @@ -2784,381 +2784,381 @@ You can drag SQL statements from the Schema column and drop them into the SQL ed - + &Remote - - + + Project Toolbar - + Extra DB toolbar - - - + + + Close the current database file - + &New Database... - - + + Create a new database file - + This option is used to create a new database file. - + Ctrl+N - - + + &Open Database... - - - - - + + + + + Open an existing database file - - - + + + This option is used to open an existing database file. - + Ctrl+O - + &Close Database - + This button closes the connection to the currently open database file - - + + Ctrl+W - + &Revert Changes - - + + Revert database to last saved state - + This option is used to revert the current database file to its last saved state. All changes made since the last save operation are lost. - + &Write Changes - - + + Write changes to the database file - + This option is used to save changes to the database file. - + Ctrl+S - + Compact &Database... - + Compact the database file, removing space wasted by deleted records - - + + Compact the database file, removing space wasted by deleted records. - + E&xit - + Ctrl+Q - + &Database from SQL file... - + Import data from an .sql dump text file into a new or existing database. - + This option lets you import data from an .sql dump text file into a new or existing database. SQL dump files can be created on most database engines, including MySQL and PostgreSQL. - + &Table from CSV file... - + Open a wizard that lets you import data from a comma separated text file into a database table. - + Open a wizard that lets you import data from a comma separated text file into a database table. CSV files can be created on most database and spreadsheet applications. - + &Database to SQL file... - + Export a database to a .sql dump text file. - + This option lets you export a database to a .sql dump text file. SQL dump files contain all data necessary to recreate the database on most database engines, including MySQL and PostgreSQL. - + &Table(s) as CSV file... - + Export a database table as a comma separated text file. - + Export a database table as a comma separated text file, ready to be imported into other database or spreadsheet applications. - + &Create Table... - + Open the Create Table wizard, where it is possible to define the name and fields for a new table in the database - + &Delete Table... - - + + Delete Table - + Open the Delete Table wizard, where you can select a database table to be dropped. - + &Modify Table... - + Create &Index... - + Open the Create Index wizard, where it is possible to define a new index on an existing database table. - + &Preferences... - - + + Open the preferences window. - + &DB Toolbar - + Shows or hides the Database toolbar. - + New &tab - + Ctrl+T - + Open SQL file(s) - + This button opens files containing SQL statements and loads them in new editor tabs - + Sa&ve Project - + This button lets you save all the settings associated to the open DB to a DB Browser for SQLite project file - + This button lets you open a DB Browser for SQLite project file - + Ctrl+Shift+O - + &Save Project As... - - - + + + Save the project in a file selected in a dialog - + Save A&ll - - - + + + Save DB file, project file and opened SQL files - + Ctrl+Shift+S - + Browse Table - + Close Pro&ject - - + + Close project and database files and return to the initial state - + Ctrl+Shift+F4 - - + + Detach Database - - + + Detach database file attached to the current database connection - + W&hat's This? @@ -3184,1006 +3184,1165 @@ You can drag SQL statements from the Schema column and drop them into the SQL ed - - + + Temp Store + + + + + Secure Delete + + + + + Case Sensitive Like + + + + + Journal Mode + + + + + Journal Size Limit + + + + + Recursive Triggers + + + + + Page Size + + + + + Foreign Keys + + + + + Auto Vacuum + + + + + Max Page Count + + + + + Checkpoint Full FSYNC + + + + + + Off + + + + + + Normal + + + + + + Full + + + + + Default + + + + + File + + + + + + Memory + + + + + Delete + + + + + Truncate + + + + + Persist + + + + + WAL + + + + + Exclusive + + + + + Automatic Index + + + + + Ignore Check Constraints + + + + + Full FSYNC + + + + + WAL Auto Checkpoint + + + + + User Version + + + + + Synchronous + + + + + None + + + + + Incremental + + + + + Locking Mode + + + + + E&xecute SQL This has to be equal to the tab title in all the main tabs - + &Recent Files - + &New Database - - + + Ctrl+F4 - + &Undo - - + + Undo last change to the database - + This action undoes the last change performed to the database in the Database Browser or in Execute SQL. Redoing is not possible. - + Open the Modify Table wizard, where it is possible to rename an existing table. It is also possible to add or delete fields from a table, as well as modify field names and types. - + Shift+F1 - + &About - + &Recently opened - + This button opens a new tab for the SQL editor - + &Execute SQL - + Execute all/selected SQL - + This button executes the currently selected SQL statements. If no text is selected, all SQL statements are executed. - + Ctrl+Return - + Ctrl+Shift+T - - - + + + Save SQL file - + &Load Extension... - - + + Execute current line - + Execute line - + This button executes the SQL statement present in the current editor line - + Shift+F5 - + Export as CSV file - + Export table as comma separated values file - + &Wiki - + F1 - + Bug &Report... - + Feature Re&quest... - + Web&site - + &Donate on Patreon... - + &Save Project - - + + Save the current session to a file - + Open &Project... - + Open &Project - - + + Load a working session from a file - + &Attach Database... - - + + Add another database file to the current database connection - + This button lets you add another database file to the current database connection - + &Set Encryption... - - + + Save SQL file as - + This button saves the content of the current SQL editor tab to a file - + &Browse Table - + Copy Create statement - + Copy the CREATE statement of the item to the clipboard - + SQLCipher &FAQ - + Opens the SQLCipher FAQ in a browser window - + Table(&s) to JSON... - + Export one or more table(s) to a JSON file - + Open Data&base Read Only... - + Open an existing database file in read only mode - + Save results - + Save the results view - + This button lets you save the results of the last executed query - - + + Find text in SQL editor - + Find - + This button opens the search bar of the editor - + Ctrl+F - - + + Find or replace text in SQL editor - + Find or replace - + This button opens the find/replace dialog for the current editor tab - + Ctrl+H - + Export to &CSV - + Export to &JSON - + Save as &view - + Save as view - + Shows or hides the Project toolbar. - + Extra DB Toolbar - + &Open Database - + New In-&Memory Database - + Drag && Drop SELECT Query - - + + When dragging fields from the same table or a single table, drop a SELECT query into the editor - + Drag && Drop Qualified Names - - + + Use qualified names (e.g. "Table"."Field") when dragging the objects and dropping them into the editor - + Drag && Drop Enquoted Names - - + + Use escaped identifiers (e.g. "Table1") when dragging the objects and dropping them into the editor - + &Integrity Check - + Runs the integrity_check pragma over the opened database and returns the results in the Execute SQL tab. This pragma does an integrity check of the entire database. - + &Foreign-Key Check - + Runs the foreign_key_check pragma over the opened database and returns the results in the Execute SQL tab - + &Quick Integrity Check - + Run a quick integrity check over the open DB - + Runs the quick_check pragma over the opened database and returns the results in the Execute SQL tab. This command does most of the checking of PRAGMA integrity_check but runs much faster. - + &Optimize - + Attempt to optimize the database - + Runs the optimize pragma over the opened database. This pragma might perform optimizations that will improve the performance of future queries. - - + + Print - + Print text from current SQL editor tab - + Open a dialog for printing the text in the current SQL editor tab - - + + Ctrl+P - + Print the structure of the opened database - + Open a dialog for printing the structure of the opened database - + Un/comment block of SQL code - + Un/comment block - + Comment or uncomment current line or selected block of code - + Comment or uncomment the selected lines or the current line, when there is no selection. All the block is toggled according to the first line. - + Ctrl+/ - + Stop SQL execution - + Stop execution - + Stop the currently running SQL script - - + + Ctrl+Shift+W - + Table from CSV data in Clipboard... - + This treats the current clipboard contents as a CSV file and opens the same import wizard that is used for importing CSV data from a file. - + Show &Row Counts - + This shows the number of rows for each table and view in the database. - + Save Database &As... - + Save the current database as a different file - + Refresh - + Reload the database structure - + Ctrl+L - + Ctrl+D - + Ctrl+I - + Ctrl+E - + Ctrl+Alt+0 - - The database is currenctly busy. + + The database is currently busy. - + Click here to interrupt the currently running query. - + Encrypted - + Database is encrypted using SQLCipher - + Read only - + Database file is read only. Editing the database is disabled. - + Database encoding - + Ctrl+Alt+W - - + + Choose a database file - + Could not open database file. Reason: %1 - - - + + + Choose a filename to save under - + In-Memory database - + Choose a database file to save under - + Error while saving the database to the new file. - + Are you sure you want to delete the table '%1'? All data associated with the table will be lost. - + Are you sure you want to delete the view '%1'? - + Are you sure you want to delete the trigger '%1'? - + Are you sure you want to delete the index '%1'? - + Error: could not delete the table. - + Error: could not delete the view. - + Error: could not delete the trigger. - + Error: could not delete the index. - + Message from database engine: %1 - + Editing the table requires to save all pending changes now. Are you sure you want to save the database? - + Error checking foreign keys after table modification. The changes will be reverted. - + This table did not pass a foreign-key check.<br/>You should run 'Tools | Foreign-Key Check' and fix the reported issues. - + You are already executing SQL statements. Do you want to stop them in order to execute the current statements instead? Note that this might leave the database in an inconsistent state. - + -- EXECUTING SELECTION IN '%1' -- - + -- EXECUTING LINE IN '%1' -- - + -- EXECUTING ALL IN '%1' -- - + %1 rows returned in %2ms - + Setting PRAGMA values or vacuuming will commit your current transaction. Are you sure? - + Execution finished with errors. - + Execution finished without errors. - + Choose text files - + Error while saving the database file. This means that not all changes to the database were saved. You need to resolve the following error first. %1 - + Are you sure you want to undo all changes made to the database file '%1' since the last save? - + Choose a file to import - + Opened '%1' in read-only mode from recent file list - + Opened '%1' from recent file list - + &%1 %2%3 - + (read only) - + Open Database or Project - + Attach Database... - + Import CSV file(s)... - + Do you want to save the changes made to SQL tabs in a new project file? - + Do you want to save the changes made to SQL tabs in the project file '%1'? - + Do you want to save the changes made to the SQL file %1? - + The statements in the tab '%1' are still executing. Closing the tab will stop the execution. This might leave the database in an inconsistent state. Are you sure you want to close the tab? - + Text files(*.sql *.txt);;All files(*) - + Do you want to create a new database file to hold the imported data? If you answer no we will attempt to import the data in the SQL file to the current database. - + Ctrl+Tab - + Ctrl+Shift+Tab - + Clear List - + Window Layout - + Reset Window Layout - + Simplify Window Layout - - Shift+Alt+0 + + Alt+Shift+0 - + Dock Windows at Bottom - + Dock Windows at Left Side - + Dock Windows at Top - + You are still executing SQL statements. Closing the database now will stop their execution, possibly leaving the database in an inconsistent state. Are you sure you want to close the database? - + Do you want to save the changes made to the project file '%1'? - + Edit View %1 - + Edit Trigger %1 - - + + At line %1: - + Result: %1 - + Result: %2 - + File %1 already exists. Please choose a different name. - + Error importing data: %1 - + Import completed. Some foreign key constraints are violated. Please fix them before saving. - + Import completed. - + Delete View - + Modify View - + Delete Trigger - + Modify Trigger - + Delete Index - + Modify Index - + Modify Table - + Select the action to apply to the dropped file(s). <br/>Note: only 'Import' will process more than one file. Note for translation: Although there is no %n in the original, you can use the numerus-form to adjust 'files(s)' and remove the note when n = 1. Including %n in the translation will also work. @@ -4191,197 +4350,197 @@ If you answer no we will attempt to import the data in the SQL file to the curre - + DB file '%1' could not be opened - + This project file is using an old file format because it was created using DB Browser for SQLite version 3.10 or lower. Loading this file format is no longer fully supported. If you want to load it completely, please use DB Browser for SQLite version 3.12 to convert it to the new file format. - + Table '%1' not found; settings ignored - + Could not open project file for writing. Reason: %1 - + -- Reference to file "%1" (not supported by this version) -- - + Project saved to file '%1' - + Yes. Don't ask again - + Rename Tab - + Duplicate Tab - + Close Tab - + Opening '%1'... - + There was an error opening '%1'... - + Value is not a valid URL or filename: %1 - + Setting PRAGMA values will commit your current transaction. Are you sure? - + Automatically load the last opened DB file at startup - + Select SQL file to open - + Select file name - + Select extension file - + Extension successfully loaded. - + Error loading extension: %1 - + Could not find resource file: %1 - - + + Don't show again - + New version available. - + A new DB Browser for SQLite version is available (%1.%2.%3).<br/><br/>Please download at <a href='%4'>%4</a>. - + Choose a project file to open - + DB Browser for SQLite project file (*.sqbpro) - + Collation needed! Proceed? - + A table in this database requires a special collation function '%1' that this application can't provide without further knowledge. If you choose to proceed, be aware bad things can happen to your database. Create a backup! - + creating collation - + Set a new name for the SQL tab. Use the '&&' character to allow using the following character as a keyboard shortcut. - + Please specify the view name - + There is already an object with that name. Please choose a different name. - + View successfully created. - + Error creating view: %1 - + This action will open a new SQL tab for running: - + This action will open a new SQL tab with the following statements for you to edit and run: - + Press Help for opening the corresponding SQLite reference page. - + Busy (%1) @@ -4570,101 +4729,106 @@ Select the axes or axes labels to drag and zoom only in that orientation. - + Load all data and redraw plot - + Copy - + Print... - + + Help + + + + Show legend - + Stacked bars - + Fixed number format - + Date/Time - + Date - + Time - - + + Numeric - + Label - + Invalid - - - + + + Row # - + Load all data and redraw plot. Warning: not all data has been fetched from the table yet due to the partial fetch mechanism. - + Choose an axis color - + Choose a filename to save under - + PNG(*.png);;JPG(*.jpg);;PDF(*.pdf);;BMP(*.bmp);;All Files(*) - + There are curves in this plot and the selected line style can only be applied to graphs sorted by X. Either sort the table or query by X to remove curves or select one of the styles supported by curves: None or Line. - + Loading all remaining data for this table took %1ms. @@ -5551,7 +5715,7 @@ Please check again. - Socks v5 + SOCKS5 @@ -5695,2170 +5859,511 @@ Please check again. - QsciCommand + RemoteCommitsModel - - Move down one line + + Commit ID - - Extend selection down one line + + Message - - Extend rectangular selection down one line + + Date - - Scroll view down one line + + Author - - Move up one line + + Size - - Extend selection up one line + + Authored and committed by %1 - - Extend rectangular selection up one line + + Authored by %1, committed by %2 + + + RemoteDatabase - - Scroll view up one line + + Error opening local databases list. +%1 - - Scroll to start of document + + Error creating local databases list. +%1 + + + RemoteDock - - Scroll to end of document + + Remote - - Scroll vertically to centre current line + + Identity - - Move down one paragraph + + Upload - - Extend selection down one paragraph + + DBHub.io - - Move up one paragraph + + <html><head/><body><p>In this pane, remote databases from dbhub.io website can be added to DB Browser for SQLite. First you need an identity:</p><ol style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Login to the dbhub.io website (use your GitHub credentials or whatever you want)</li><li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click the button to &quot;Generate client certificate&quot; (that's your identity). That'll give you a certificate file (save it to your local disk).</li><li style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Go to the Remote tab in DB Browser for SQLite Preferences. Click the button to add a new certificate to DB Browser for SQLite and choose the just downloaded certificate file.</li></ol><p>Now the Remote panel shows your identity and you can add remote databases.</p></body></html> - - Extend selection up one paragraph + + Local - - Move left one character + + Current Database - - Extend selection left one character + + Clone - - Extend rectangular selection left one character + + &User - - Move right one character + + &Database - - Extend selection right one character + + Branch - - Extend rectangular selection right one character + + Commits - - Move left one word + + Commits for - - Extend selection left one word + + <html><head/><body><p>You are currently using a built-in, read-only identity. For uploading your database, you need to configure and use your DBHub.io account.</p><p>No DBHub.io account yet? <a href="https://dbhub.io/"><span style=" text-decoration: underline; color:#007af4;">Create one now</span></a> and import your certificate <a href="#preferences"><span style=" text-decoration: underline; color:#007af4;">here</span></a> to share your databases.</p><p>For online help visit <a href="https://dbhub.io/about"><span style=" text-decoration: underline; color:#007af4;">here</span></a>.</p></body></html> - - Move right one word + + Back - - Extend selection right one word + + Delete Database - - Move to end of previous word + + Delete the local clone of this database - - Extend selection to end of previous word + + Open in Web Browser - - Move to end of next word + + Open the web page for the current database in your browser - - Extend selection to end of next word + + Clone from Link - - Move left one word part + + Use this to download a remote database for local editing using a URL as provided on the web page of the database. - - Extend selection left one word part + + Refresh - - Move right one word part + + Reload all data and update the views - - Extend selection right one word part + + Clone Database - - Move to start of document line + + Open Database - - Extend selection to start of document line + + Open the local copy of this database - - Extend rectangular selection to start of document line + + Check out Commit - - Move to start of display line + + Download and open this specific commit - - Extend selection to start of display line + + Check out Latest Commit - - Move to start of display or document line + + Check out the latest commit of the current branch - - Extend selection to start of display or document line + + Save Revision to File - - Move to first visible character in document line + + Saves the selected revision of the database to another file - - Extend selection to first visible character in document line + + Upload Database - - Extend rectangular selection to first visible character in document line + + Upload this database as a new commit - - Move to first visible character of display in document line + + Push currently opened database to server - - Extend selection to first visible character in display or document line + + Select an identity to connect - - Move to end of document line + + Public - - Extend selection to end of document line + + This downloads a database from a remote server for local editing. +Please enter the URL to clone from. You can generate this URL by +clicking the 'Clone Database in DB4S' button on the web page +of the database. - - Extend rectangular selection to end of document line + + Invalid URL: The host name does not match the host name of the current identity. - - Move to end of display line + + Invalid URL: No branch name specified. - - Extend selection to end of display line + + Invalid URL: No commit ID specified. - - Move to end of display or document line + + You have modified the local clone of the database. Fetching this commit overrides these local changes. +Are you sure you want to proceed? - - Extend selection to end of display or document line + + The database has unsaved changes. Are you sure you want to push it before saving? - - Move to start of document + + The database you are trying to delete is currently opened. Please close it before deleting. - - Extend selection to start of document + + This deletes the local version of this database with all the changes you have not committed yet. Are you sure you want to delete this database? + + + RemoteLocalFilesModel - - Move to end of document + + Name - - Extend selection to end of document + + Branch - - Move up one page + + Last modified - - Extend selection up one page + + Size - - Extend rectangular selection up one page + + Commit - - Move down one page + + File + + + RemoteModel - - Extend selection down one page + + Name - - Extend rectangular selection down one page + + Commit - - Stuttered move up one page + + Last modified - - Stuttered extend selection up one page + + Size - - Stuttered move down one page + + Size: - - Stuttered extend selection down one page + + Last Modified: - - Delete current character + + Licence: - - Delete previous character + + Default Branch: + + + RemoteNetwork - - Delete previous character if not at start of line + + Choose a location to save the file - - Delete word to left + + Error opening remote file at %1. +%2 - - Delete word to right + + Error: Invalid client certificate specified. - - Delete right to end of next word + + Please enter the passphrase for this client certificate in order to authenticate. - - Delete line to left + + Cancel - - Delete line to right + + Uploading remote database to +%1 - - Delete current line + + Downloading remote database from +%1 - - Cut current line + + Error: Cannot open the file for sending. + + + RemotePushDialog - - Copy current line + + Push database - - Transpose current and previous lines + + Database na&me to push to - - Duplicate the current line + + Commit message - - Select all + + Database licence - - Move selected lines up one line + + Public - - Move selected lines down one line + + Branch - - Duplicate selection + + Force push - - Convert selection to lower case + + Username - - Convert selection to upper case + + Database will be public. Everyone has read access to it. - - Cut selection + + Database will be private. Only you have access to it. - - Copy selection + + Use with care. This can cause remote commits to be deleted. + + + RunSql - - Paste + + Execution aborted by user - - Toggle insert/overtype + + , %1 rows affected - - Insert newline + + query executed successfully. Took %1ms%2 - - Formfeed + + executing query + + + SelectItemsPopup - - Indent one level + + A&vailable - - De-indent one level + + Sele&cted + + + SqlExecutionArea - - Cancel - - - - - Undo last command - - - - - Redo last command - - - - - Zoom in - - - - - Zoom out - - - - - QsciLexerCPP - - - Default - - - - - Inactive default - - - - - C comment - - - - - Inactive C comment - - - - - C++ comment - - - - - Inactive C++ comment - - - - - JavaDoc style C comment - - - - - Inactive JavaDoc style C comment - - - - - Number - - - - - Inactive number - - - - - Keyword - - - - - Inactive keyword - - - - - Double-quoted string - - - - - Inactive double-quoted string - - - - - Single-quoted string - - - - - Inactive single-quoted string - - - - - IDL UUID - - - - - Inactive IDL UUID - - - - - Pre-processor block - - - - - Inactive pre-processor block - - - - - Operator - - - - - Inactive operator - - - - - Identifier - - - - - Inactive identifier - - - - - Unclosed string - - - - - Inactive unclosed string - - - - - C# verbatim string - - - - - Inactive C# verbatim string - - - - - JavaScript regular expression - - - - - Inactive JavaScript regular expression - - - - - JavaDoc style C++ comment - - - - - Inactive JavaDoc style C++ comment - - - - - Secondary keywords and identifiers - - - - - Inactive secondary keywords and identifiers - - - - - JavaDoc keyword - - - - - Inactive JavaDoc keyword - - - - - JavaDoc keyword error - - - - - Inactive JavaDoc keyword error - - - - - Global classes and typedefs - - - - - Inactive global classes and typedefs - - - - - C++ raw string - - - - - Inactive C++ raw string - - - - - Vala triple-quoted verbatim string - - - - - Inactive Vala triple-quoted verbatim string - - - - - Pike hash-quoted string - - - - - Inactive Pike hash-quoted string - - - - - Pre-processor C comment - - - - - Inactive pre-processor C comment - - - - - JavaDoc style pre-processor comment - - - - - Inactive JavaDoc style pre-processor comment - - - - - User-defined literal - - - - - Inactive user-defined literal - - - - - Task marker - - - - - Inactive task marker - - - - - Escape sequence - - - - - Inactive escape sequence - - - - - QsciLexerHTML - - - HTML default - - - - - Tag - - - - - Unknown tag - - - - - Attribute - - - - - Unknown attribute - - - - - HTML number - - - - - HTML double-quoted string - - - - - HTML single-quoted string - - - - - Other text in a tag - - - - - HTML comment - - - - - Entity - - - - - End of a tag - - - - - Start of an XML fragment - - - - - End of an XML fragment - - - - - Script tag - - - - - Start of an ASP fragment with @ - - - - - Start of an ASP fragment - - - - - CDATA - - - - - Start of a PHP fragment - - - - - Unquoted HTML value - - - - - ASP X-Code comment - - - - - SGML default - - - - - SGML command - - - - - First parameter of an SGML command - - - - - SGML double-quoted string - - - - - SGML single-quoted string - - - - - SGML error - - - - - SGML special entity - - - - - SGML comment - - - - - First parameter comment of an SGML command - - - - - SGML block default - - - - - Start of a JavaScript fragment - - - - - JavaScript default - - - - - JavaScript comment - - - - - JavaScript line comment - - - - - JavaDoc style JavaScript comment - - - - - JavaScript number - - - - - JavaScript word - - - - - JavaScript keyword - - - - - JavaScript double-quoted string - - - - - JavaScript single-quoted string - - - - - JavaScript symbol - - - - - JavaScript unclosed string - - - - - JavaScript regular expression - - - - - Start of an ASP JavaScript fragment - - - - - ASP JavaScript default - - - - - ASP JavaScript comment - - - - - ASP JavaScript line comment - - - - - JavaDoc style ASP JavaScript comment - - - - - ASP JavaScript number - - - - - ASP JavaScript word - - - - - ASP JavaScript keyword - - - - - ASP JavaScript double-quoted string - - - - - ASP JavaScript single-quoted string - - - - - ASP JavaScript symbol - - - - - ASP JavaScript unclosed string - - - - - ASP JavaScript regular expression - - - - - Start of a VBScript fragment - - - - - VBScript default - - - - - VBScript comment - - - - - VBScript number - - - - - VBScript keyword - - - - - VBScript string - - - - - VBScript identifier - - - - - VBScript unclosed string - - - - - Start of an ASP VBScript fragment - - - - - ASP VBScript default - - - - - ASP VBScript comment - - - - - ASP VBScript number - - - - - ASP VBScript keyword - - - - - ASP VBScript string - - - - - ASP VBScript identifier - - - - - ASP VBScript unclosed string - - - - - Start of a Python fragment - - - - - Python default - - - - - Python comment - - - - - Python number - - - - - Python double-quoted string - - - - - Python single-quoted string - - - - - Python keyword - - - - - Python triple double-quoted string - - - - - Python triple single-quoted string - - - - - Python class name - - - - - Python function or method name - - - - - Python operator - - - - - Python identifier - - - - - Start of an ASP Python fragment - - - - - ASP Python default - - - - - ASP Python comment - - - - - ASP Python number - - - - - ASP Python double-quoted string - - - - - ASP Python single-quoted string - - - - - ASP Python keyword - - - - - ASP Python triple double-quoted string - - - - - ASP Python triple single-quoted string - - - - - ASP Python class name - - - - - ASP Python function or method name - - - - - ASP Python operator - - - - - ASP Python identifier - - - - - PHP default - - - - - PHP double-quoted string - - - - - PHP single-quoted string - - - - - PHP keyword - - - - - PHP number - - - - - PHP variable - - - - - PHP comment - - - - - PHP line comment - - - - - PHP double-quoted variable - - - - - PHP operator - - - - - QsciLexerJSON - - - Default - - - - - Number - - - - - String - - - - - Unclosed string - - - - - Property - - - - - Escape sequence - - - - - Line comment - - - - - Block comment - - - - - Operator - - - - - IRI - - - - - JSON-LD compact IRI - - - - - JSON keyword - - - - - JSON-LD keyword - - - - - Parsing error - - - - - QsciLexerJavaScript - - - Regular expression - - - - - QsciLexerPython - - - Default - - - - - Comment - - - - - Number - - - - - Double-quoted string - - - - - Single-quoted string - - - - - Keyword - - - - - Triple single-quoted string - - - - - Triple double-quoted string - - - - - Class name - - - - - Function or method name - - - - - Operator - - - - - Identifier - - - - - Comment block - - - - - Unclosed string - - - - - Highlighted identifier - - - - - Decorator - - - - - Double-quoted f-string - - - - - Single-quoted f-string - - - - - Triple single-quoted f-string - - - - - Triple double-quoted f-string - - - - - QsciLexerSQL - - - Default - - - - - Comment - - - - - Comment line - - - - - JavaDoc style comment - - - - - Number - - - - - Keyword - - - - - Double-quoted string - - - - - Single-quoted string - - - - - SQL*Plus keyword - - - - - SQL*Plus prompt - - - - - Operator - - - - - Identifier - - - - - SQL*Plus comment - - - - - # comment line - - - - - JavaDoc keyword - - - - - JavaDoc keyword error - - - - - User defined 1 - - - - - User defined 2 - - - - - User defined 3 - - - - - User defined 4 - - - - - Quoted identifier - - - - - Quoted operator - - - - - QsciScintilla - - - &Undo - - - - - &Redo - - - - - Cu&t - - - - - &Copy - - - - - &Paste - - - - - Delete - - - - - Select All - - - - - RemoteCommitsModel - - - Commit ID - - - - - Message - - - - - Date - - - - - Author - - - - - Size - - - - - Authored and committed by %1 - - - - - Authored by %1, committed by %2 - - - - - RemoteDatabase - - - Error opening local databases list. -%1 - - - - - Error creating local databases list. -%1 - - - - - RemoteDock - - - Remote - - - - - Identity - - - - - Upload - - - - - DBHub.io - - - - - <html><head/><body><p>In this pane, remote databases from dbhub.io website can be added to DB Browser for SQLite. First you need an identity:</p><ol style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Login to the dbhub.io website (use your GitHub credentials or whatever you want)</li><li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click the button to &quot;Generate client certificate&quot; (that's your identity). That'll give you a certificate file (save it to your local disk).</li><li style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Go to the Remote tab in DB Browser for SQLite Preferences. Click the button to add a new certificate to DB Browser for SQLite and choose the just downloaded certificate file.</li></ol><p>Now the Remote panel shows your identity and you can add remote databases.</p></body></html> - - - - - Local - - - - - Current Database - - - - - Clone - - - - - &User - - - - - &Database - - - - - Branch - - - - - Commits - - - - - Commits for - - - - - <html><head/><body><p>You are currently using a built-in, read-only identity. For uploading your database, you need to configure and use your DBHub.io account.</p><p>No DBHub.io account yet? <a href="https://dbhub.io/"><span style=" text-decoration: underline; color:#007af4;">Create one now</span></a> and import your certificate <a href="#preferences"><span style=" text-decoration: underline; color:#007af4;">here</span></a> to share your databases.</p><p>For online help visit <a href="https://dbhub.io/about"><span style=" text-decoration: underline; color:#007af4;">here</span></a>.</p></body></html> - - - - - Back - - - - - Delete Database - - - - - Delete the local clone of this database - - - - - Open in Web Browser - - - - - Open the web page for the current database in your browser - - - - - Clone from Link - - - - - Use this to download a remote database for local editing using a URL as provided on the web page of the database. - - - - - Refresh - - - - - Reload all data and update the views - - - - - Clone Database - - - - - Open Database - - - - - Open the local copy of this database - - - - - Check out Commit - - - - - Download and open this specific commit - - - - - Check out Latest Commit - - - - - Check out the latest commit of the current branch - - - - - Save Revision to File - - - - - Saves the selected revision of the database to another file - - - - - Upload Database - - - - - Upload this database as a new commit - - - - - Push currently opened database to server - - - - - Select an identity to connect - - - - - Public - - - - - This downloads a database from a remote server for local editing. -Please enter the URL to clone from. You can generate this URL by -clicking the 'Clone Database in DB4S' button on the web page -of the database. - - - - - Invalid URL: The host name does not match the host name of the current identity. - - - - - Invalid URL: No branch name specified. - - - - - Invalid URL: No commit ID specified. - - - - - You have modified the local clone of the database. Fetching this commit overrides these local changes. -Are you sure you want to proceed? - - - - - The database has unsaved changes. Are you sure you want to push it before saving? - - - - - The database you are trying to delete is currently opened. Please close it before deleting. - - - - - This deletes the local version of this database with all the changes you have not committed yet. Are you sure you want to delete this database? - - - - - RemoteLocalFilesModel - - - Name - - - - - Branch - - - - - Last modified - - - - - Size - - - - - Commit - - - - - File - - - - - RemoteModel - - - Name - - - - - Commit - - - - - Last modified - - - - - Size - - - - - Size: - - - - - Last Modified: - - - - - Licence: - - - - - Default Branch: - - - - - RemoteNetwork - - - Choose a location to save the file - - - - - Error opening remote file at %1. -%2 - - - - - Error: Invalid client certificate specified. - - - - - Please enter the passphrase for this client certificate in order to authenticate. - - - - - Cancel - - - - - Uploading remote database to -%1 - - - - - Downloading remote database from -%1 - - - - - Error: Cannot open the file for sending. - - - - - RemotePushDialog - - - Push database - - - - - Database na&me to push to - - - - - Commit message - - - - - Database licence - - - - - Public - - - - - Branch - - - - - Force push - - - - - Username - - - - - Database will be public. Everyone has read access to it. - - - - - Database will be private. Only you have access to it. - - - - - Use with care. This can cause remote commits to be deleted. - - - - - RunSql - - - Execution aborted by user - - - - - , %1 rows affected - - - - - query executed successfully. Took %1ms%2 - - - - - executing query - - - - - SelectItemsPopup - - - A&vailable - - - - - Sele&cted - - - - - SqlExecutionArea - - - Form + + Form @@ -8488,30 +6993,30 @@ Use of this function must be authorized from Preferences. - + References %1(%2) Hold %3Shift and click to jump there - + Error changing data: %1 - + retrieving list of columns - + Fetching data... - - + + Cancel @@ -8842,12 +7347,12 @@ Hold %3Shift and click to jump there - <html><head/><body><p>This button creates a new record in the database. Hold the mouse button to open a pop-up menu of different options:</p><ul><li><span style=" font-weight:600;">New Record</span>: insert a new record with default values in the database.</li><li><span style=" font-weight:600;">Insert Values...</span>: open a dialog for entering values before they are inserted in the database. This allows to enter values acomplishing the different constraints. This dialog is also open if the <span style=" font-weight:600;">New Record</span> option fails due to these constraints.</li></ul></body></html> + <html><head/><body><p>This button creates a new record in the database. Hold the mouse button to open a pop-up menu of different options:</p><ul><li><span style=" font-weight:600;">New Record</span>: insert a new record with default values in the database.</li><li><span style=" font-weight:600;">Insert Values...</span>: open a dialog for entering values before they are inserted in the database. This allows to enter values accomplishing the different constraints. This dialog is also open if the <span style=" font-weight:600;">New Record</span> option fails due to these constraints.</li></ul></body></html> - + Delete Record @@ -8924,7 +7429,7 @@ Hold %3Shift and click to jump there - <html><head/><body><p>This popup menu provides the following options applying to the currently browsed and filtered table:</p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Export to CSV: this option exports the data of the browsed table as currently displayed (after filters, display formats and order column) to a CSV file.</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Save as view: this option saves the current setting of the browsed table (filters, display formats and order column) as an SQL view that you can later browse or use in SQL statements.</li></ul></body></html> + <html><head/><body><p>This pop-up menu provides the following options applying to the currently browsed and filtered table:</p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Export to CSV: this option exports the data of the browsed table as currently displayed (after filters, display formats and order column) to a CSV file.</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Save as view: this option saves the current setting of the browsed table (filters, display formats and order column) as an SQL view that you can later browse or use in SQL statements.</li></ul></body></html> @@ -8949,7 +7454,7 @@ Hold %3Shift and click to jump there - + Set encoding @@ -9212,94 +7717,94 @@ Hold %3Shift and click to jump there - + Conditional formats for "%1" - + determining row count... - + %L1 - %L2 of >= %L3 - + %L1 - %L2 of %L3 - + (clipped at %L1 rows) - + Please enter a pseudo-primary key in order to enable editing on this view. This should be the name of a unique column in the view. - + Delete Records - + Duplicate records - + Duplicate record - + Ctrl+" - + Adjust rows to contents - + Error deleting record: %1 - + Please select a record first - + Please choose a new encoding for all tables. - + Please choose a new encoding for this table. - + %1 Leave the field empty for using the database encoding. - + This encoding is either not valid or not supported. - + %1 replacement(s) made. @@ -9327,24 +7832,6 @@ Leave the field empty for using the database encoding. - - UndoStack - - - Inserting %1 bytes - - - - - Delete %1 chars - - - - - Overwrite %1 chars - - - VacuumDialog diff --git a/src/translations/sqlb_fr.ts b/src/translations/sqlb_fr.ts index efbd1d9d1..6653b8b5f 100644 --- a/src/translations/sqlb_fr.ts +++ b/src/translations/sqlb_fr.ts @@ -6,7 +6,7 @@ About DB Browser for SQLite - À propos de DB-Browser pour SQLite + À propos de DB Browser for SQLite @@ -15,8 +15,8 @@ - <html><head/><body><p>DB Browser for SQLite is an open source, freeware visual tool used to create, design and edit SQLite database files.</p><p>It is bi-licensed under the Mozilla Public License Version 2, as well as the GNU General Public License Version 3 or later. You can modify or redistribute it under the conditions of these licenses.</p><p>See <a href="https://www.gnu.org/licenses/gpl.html"><span style=" text-decoration: underline; color:#0000ff;">http://www.gnu.org/licenses/gpl.html</span></a> and <a href="https://www.mozilla.org/MPL/2.0/index.txt"><span style=" text-decoration: underline; color:#0000ff;">https://www.mozilla.org/MPL/2.0/index.txt</span></a> for details.</p><p>For more information on this program please visit our website at: <a href="https://sqlitebrowser.org"><span style=" text-decoration: underline; color:#0000ff;">http://sqlitebrowser.org</span></a></p><p><span style=" font-size:small;">This software uses the GPL/LGPL Qt Toolkit from </span><a href="http://qt-project.org/"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://qt-project.org/</span></a><span style=" font-size:small;"><br/>See </span><a href="https://doc.qt.io/qt-5/licensing.html"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://qt-project.org/doc/qt-5/licensing.html</span></a><span style=" font-size:small;"> for licensing terms and information.</span></p><p><span style=" font-size:8pt;">We use the nalgeon/sqlean library for SQLite extensions support.<br/>This library is licensed under the MIT license, see the following for more information:<br/></span><a href="https://github.com/nalgeon/sqlean"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">https://github.com/nalgeon/sqlean</span></a></p><p><span style=" font-size:small;">It also uses the Pastel SVG icon set by Michael Buckley under a Creative Commons Attribution Share Alike 4.0 license.<br/>See </span><a href="https://codefisher.org/pastel-svg/"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://codefisher.org/pastel-svg/</span></a><span style=" font-size:small;"> for details.</span></p></body></html> - + <html><head/><body><p>DB Browser for SQLite is an open source, freeware visual tool used to create, design and edit SQLite database files.</p><p>It is bi-licensed under the Mozilla Public License Version 2, as well as the GNU General Public License Version 3 or later. You can modify or redistribute it under the conditions of these licenses.</p><p>See <a href="https://www.gnu.org/licenses/gpl.html"><span style=" text-decoration: underline; color:#0000ff;">https://www.gnu.org/licenses/gpl.html</span></a> and <a href="https://www.mozilla.org/MPL/2.0/index.txt"><span style=" text-decoration: underline; color:#0000ff;">https://www.mozilla.org/MPL/2.0/index.txt</span></a> for details.</p><p>For more information on this program please visit our website at: <a href="https://sqlitebrowser.org"><span style=" text-decoration: underline; color:#0000ff;">https://sqlitebrowser.org</span></a></p><p><span style=" font-size:small;">This software uses the GPL/LGPL Qt Toolkit from </span><a href="https://qt-project.org/"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://qt-project.org/</span></a><span style=" font-size:small;"><br/>See </span><a href="https://doc.qt.io/qt-5/licensing.html"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://doc.qt.io/qt-5/licensing.html</span></a><span style=" font-size:small;"> for licensing terms and information.</span></p><p><span style=" font-size:8pt;">We use the nalgeon/sqlean library for SQLite extensions support.<br/>This library is licensed under the MIT license, see the following for more information:<br/></span><a href="https://github.com/nalgeon/sqlean"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">https://github.com/nalgeon/sqlean</span></a></p><p><span style=" font-size:small;">It also uses the Pastel SVG icon set by Michael Buckley under a Creative Commons Attribution Share Alike 4.0 license.<br/>See </span><a href="https://codefisher.org/pastel-svg/"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://codefisher.org/pastel-svg/</span></a><span style=" font-size:small;"> for details.</span></p></body></html> + <html><head/><body><p>DB Browser for SQLite est une interface graphique libre et open source utilisée pour créer, concevoir et éditer des fichiers de base de données SQLite.</p><p>Il est placé sous la double licence Mozilla Public License Version 2 ainsi que GNU General Public License Version 3 ou ultérieure. Vous pouvez le modifier ou le redistribuer en respectant les conditions de ces licences.</p><p>Voir <a href="https://www.gnu.org/licenses/gpl.html"><span style=" text-decoration: underline; color:#0000ff;">https://www.gnu.org/licenses/gpl.html</span></a> et <a href="https://www.mozilla.org/MPL/2.0/index.txt"><span style=" text-decoration: underline; color:#0000ff;">https://www.mozilla.org/MPL/2.0/index.txt</span></a> pour les détails.</p><p>Pour plus d'informations sur ce programme, veuillez consulter notre site Internet <a href="https://sqlitebrowser.org"><span style=" text-decoration: underline; color:#0000ff;">https://sqlitebrowser.org</span></a></p><p><span style=" font-size:small;">Ce logiciel utilise le GPL/LGPL Qt Toolkit fourni par </span><a href="https://qt-project.org/"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://qt-project.org/</span></a><span style=" font-size:small;">.<br/> Voir </span><a href="https://doc.qt.io/qt-5/licensing.html"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://doc.qt.io/qt-5/licensing.html</span></a><span style=" font-size:small;"> pour les conditions de licence et toute autre information.</span></p><p><span style=" font-size:8pt;">Nous utilisons la bibliothèque nalgeon/sqlean pour la reconnaissance des extensions SQLite.<br/>Cette bibliothèque est sous la licence MIT. Pour davantage d'informations voir <br/></span><a href="https://github.com/nalgeon/sqlean"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">https://github.com/nalgeon/sqlean</span></a></p><p><span style=" font-size:small;">Il utilise aussi le jeu d'icones Pastel SVG de Michael Buckley sous la licence Creative Commons Attribution Share Alike 4.0.<br/>Voir </span><a href="https://codefisher.org/pastel-svg/"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://codefisher.org/pastel-svg/</span></a><span style=" font-size:small;"> pour les détails.</span></p></body></html> @@ -54,7 +54,7 @@ Values to insert. Pre-filled default values are inserted automatically unless they are changed. - Valeurs à insérer. Les valeurs par défaut pré-remplies sont insérées automatiquement à moins qu'elles ne soient modifiées. + Valeurs à insérer. Les valeurs par défaut pré-remplies sont insérées automatiquement à moins qu'elles soient modifiées. @@ -285,37 +285,37 @@ - Invalid option/non-existant file: %1 + Invalid option/non-existent file: %1 Option invalide ou fichier %1 inexistant - + SQLite Version Version de SQLite - + SQLCipher Version %1 (based on SQLite %2) SQLCipher Version %1 (basé sur SQLite %2) - + DB Browser for SQLite Version %1. - DB Browser pour SQLite Version %1. + DB Browser for SQLite Version %1. - + Last commit hash when built: %1 Corriger cette phrase. A voir en fonction du contexte MVT Dernier hachage du commit lors de la construction : %1 - + Built for %1, running on %2 Compilé pour %1, fonctionnant sur %2 - + Qt Version %1 Version de Qt %1 @@ -395,7 +395,7 @@ Clé de chiffrement - + Please set a key to encrypt the database. Note that if you change any of the other, optional, settings you'll need to re-enter them as well every time you open the database file. Leave the password fields empty to disable the encryption. @@ -407,7 +407,7 @@ Le processus de chiffrement peut prendre un certain temps. Vous devriez avoir un Les modifications non enregistrées seront appliquées avant la modification du chiffrement. - + Please enter the key used to encrypt the database. If any of the other settings were altered for this database file you need to provide this information as well. Veuillez entrer la clé utilisée pour le chiffrement de la base de données. @@ -433,92 +433,92 @@ Si d'autres paramètres ont été modifiés pour cette base de données, vo Il sera appliqué à chaque valeur avant son affichage. - + Default Défaut - + Decimal number - Nombre décimal + Nombre entier (tronqué) - + Exponent notation Notation scientifique - + Hex blob Blob hexadécimal - + Hex number Nombre hexadécimal - + Apple NSDate to date - Apple NSDate vers date + NSDate Apple vers date & heure - + Java epoch (milliseconds) to date - Java epoch (milliseconds) en date + Époque Java vers date et heure (milliseconde) - + .NET DateTime.Ticks to date - .NET DateTime.Ticks en date + DateTime.Ticks .NET vers date & heure - + Julian day to date - Date julienne vers Date + Jour julien vers date & heure - + Unix epoch to local time - Heure Unix epoch vers heure locale + Époque Unix vers date & heure locales - + WebKit / Chromium epoch to date - + Époque WebKit/Chromium vers date & heure - + WebKit / Chromium epoch to local time - + Époque WebKit/Chromium vers date & heure locales - + Date as dd/mm/yyyy - Date au format DD/MM/AAAA + Date au format JJ/MM/AAAA - + Lower case - Minuscule + Minuscules - + Binary GUID to text - GUID binaire en texte + GUID binaire vers texte - + SpatiaLite Geometry to SVG - SpatiaLite Geometry vers SVG + Geometrie SpatiaLite vers SVG - + Custom display format must contain a function call applied to %1 Le format d'affichage personnalisé doit contenir un appel de fonction appliqué à %1 - + Error in custom display format. Message from database engine: %1 @@ -527,37 +527,37 @@ Il sera appliqué à chaque valeur avant son affichage. %1 - + Custom display format must return only one column but it returned %1. Le format d'affichage personnalisé ne doit renvoyer qu'une seule colonne, mais il a renvoyé %1. - + Octal number Nombre octal - + Round number - Nombre arrondi + Nombre arrondi (entier le plus proche) - + Unix epoch to date - Date Unix epoch en Date + Époque Unix vers date & heure - + Upper case - Majuscule + Majuscules - + Windows DATE to date - Date Windows en Date + DATE Windows vers date & heure - + Custom Personnalisé @@ -684,166 +684,166 @@ Il sera appliqué à chaque valeur avant son affichage. DBBrowserDB - + Please specify the database name under which you want to access the attached database Veuillez spécifier le nom de la base de données sous laquelle vous voulez accéder à la base de données attachée - + Invalid file format Format de fichier invalide - + Do you want to save the changes made to the database file %1? Voulez-vous enregistrer les changements effectués dans la base de données %1 ? - + Exporting database to SQL file... Exporter la base de données dans un fichier SQL... - - + + Cancel Annuler - + Executing SQL... Exécution du SQL... - + Action cancelled. Action annulée. - + Do you really want to close this temporary database? All data will be lost. Voulez-vous vraiment fermer cette base de données temporaire ? Toutes les données seront perdues. - + Database didn't close correctly, probably still busy - La base de données ne s'est pas fermée correctement; Elle est probablement encore occupée + La base de données ne s'est pas fermée correctement ; elle est probablement encore occupée - + Cannot open destination file: '%1' Le fichier de destination %1 ne peut être ouvert - - + + Cannot backup to file: '%1'. Message: %2 Impossible de sauvegarder dans le fichier : '%1'. Message : %2 - + The database is currently busy: La base de données est actuellement occupée : - + Do you want to abort that other operation? Voulez-vous annuler cette autre opération ? - - + + No database file opened Aucun fichier de base de données ouvert - - + + Error in statement #%1: %2. Aborting execution%3. Erreur dans le traitement #%1 : %2. Exécution de %3 abandonnée. - - + + and rolling back et annulation des changements - + didn't receive any output from %1 n'a pas reçu toutes les sorties de %1 - + could not execute command: %1 ne peut pas exécuter les commandes : %1 - + Cannot delete this object Impossible de supprimer cet objet - + Cannot set data on this object 170726 MVT Has to be checked in real context Définition des données impossible pour cet objet - - + + A table with the name '%1' already exists in schema '%2'. Une table portant le nom " %1 " existe déjà dans le schéma " %2 ". - + No table with name '%1' exists in schema '%2'. Il n'existe pas de table nommée " %1 " dans le schéma " %2 ". - - + + Cannot find column %1. La colonne %1 n'a pas été trouvée. - + Creating savepoint failed. DB says: %1 La création du point de restauration a échoué. DB indique : %1 - + Renaming the column failed. DB says: %1 Le changement de nom de la colonne a échoué. DB indique : %1 - - + + Releasing savepoint failed. DB says: %1 La libération du point de sauvegarde a échoué. DB indique : %1 - + Creating new table failed. DB says: %1 La création d'une nouvelle table a échoué. DB indique : %1 - + Copying data to new table failed. DB says: %1 La copie des données dans une nouvelle table a échoué. DB indique : %1 - + Deleting old table failed. DB says: %1 La suppression d'une ancienne table a échoué. DB indique : %1 - + Error renaming table '%1' to '%2'. Message from database engine: %3 @@ -852,12 +852,12 @@ Message du moteur de base de données : %3 - + could not get list of db objects: %1 La liste des objets de la base de données ne peut être obtenue : %1 - + Restoring some of the objects associated with this table failed. This is most likely because some column names changed. Here's the SQL statement which you might want to fix and execute manually: @@ -866,33 +866,33 @@ Message du moteur de base de données : - + could not get list of databases: %1 n'a pas pu obtenir la liste des bases de données : %1 - + Error loading extension: %1 Erreur lors du chargement de l'extension %1 - + Error loading built-in extension: %1 - + Erreur lors du chargement de l'extension intégrée %1 - + could not get column information 170726 MVT Has to be checked in real context ne peut obtenir les informations sur la colonne - + Error setting pragma %1 to %2: %3 Erreur dans les paramètres des pragma %1 à %2 : %3 - + File not found. Fichier non trouvé. @@ -1455,17 +1455,17 @@ Voulez-vous appliquer les données modifiées à la ligne=%1, colonne=%2 ? Make this a 'WITHOUT ROWID' table. Setting this flag requires specifying a PRIMARY KEY (which can be of any type, and can be composite), and forbids the AUTOINCREMENT flag. - + Rendre cette table "WITHOUT ROWID". Activer ce paramètre requiert de spécifier une PRIMARY KEY (qui peut être de type quelconque, voire composite) et interdit le paramètre AUTOINCREMENT. On Conflict - Sur le conflit + Sur conflit Strict - Stricte + Strict @@ -1644,7 +1644,7 @@ Voulez-vous appliquer les données modifiées à la ligne=%1, colonne=%2 ? <html><head/><body><p><span style=" font-weight:600; color:#ff0000;">Warning: </span>There is something with this table definition that our parser doesn't fully understand. Modifying and saving this table might result in problems.</p></body></html> - <html><head/><body><p><span style=" font-weight:600; color:#ff0000;">Attention : </span>Il y a quelque chose dans la définition de cette table que notre analyseur syntaxique n'a pas complètement compris. La modification et l'enregistrement de cette table peuvent créer des problèmes.</p></body></html> + <html><head/><body><p><span style=" font-weight:600; color:#ff0000;">Attention&nbsp;: </span>Il y a quelque chose dans la définition de cette table que notre analyseur syntaxique n'a pas complètement compris. La modification et l'enregistrement de cette table peuvent créer des problèmes.</p></body></html> @@ -1963,7 +1963,7 @@ Toutes les données contenues dans ce champ seront perdues. ExtendedScintilla - + Ctrl+H @@ -1974,22 +1974,22 @@ Toutes les données contenues dans ce champ seront perdues. - + Ctrl+P - + Find... Rechercher... - + Find and Replace... Chercher et remplacer... - + Print... Imprimer... @@ -1997,129 +1997,129 @@ Toutes les données contenues dans ce champ seront perdues. ExtendedTableWidget - + Use as Exact Filter Utiliser comme filtre exact - + Containing Contenant - + Not containing Ne contenant pas - + Not equal to Différent de - + Greater than Plus grand que - + Less than Plus petit que - + Greater or equal Plus grand ou égal à - + Less or equal Plus petit ou égal à - + Between this and... Entre ceci et... - + Regular expression Expression régulière - + Edit Conditional Formats... Éditer les formats conditionnels... - + Set to NULL Définir comme NULL - + Cut Couper - + Copy Copier - + Copy with Headers Copier avec les entêtes - + Copy as SQL Copier comme du SQL - + Paste Coller - + Print... Imprimer... - + Use in Filter Expression Utiliser dans l'expression du filtre - + Alt+Del - + Ctrl+Shift+C - + Ctrl+Alt+C - + The content of the clipboard is bigger than the range selected. Do you want to insert it anyway? Le contenu du presse-papier est plus grand que la plage sélectionnée. Voulez-vous poursuivre l'insertion malgré tout ? - + <p>Not all data has been loaded. <b>Do you want to load all data before selecting all the rows?</b><p><p>Answering <b>No</b> means that no more data will be loaded and the selection will not be performed.<br/>Answering <b>Yes</b> might take some time while the data is loaded but the selection will be complete.</p>Warning: Loading all the data might require a great amount of memory for big tables. <p>Toutes les données n'ont pas été chargées. <b>Voulez-vous charger toutes les données avant de sélectionner toutes les lignes ? </b><p><p>Répondre <b>Non</b> signifie qu'aucune autre donnée ne sera chargée et que la sélection ne sera pas effectuée.<br/>Répondre <b>Oui</b> peut prendre un certain temps pendant le chargement des données mais la sélection sera complète.</p>Avertissement : Le chargement de toutes les données peut nécessiter une grande quantité de mémoire pour les grandes tables. - + Cannot set selection to NULL. Column %1 has a NOT NULL constraint. La sélection ne peut être à NULL. La colonne %1 à une contrainte NOT NULL. @@ -2171,12 +2171,12 @@ Voulez-vous poursuivre l'insertion malgré tout ? FilterLineEdit - + Filter Filtre - + These input fields allow you to perform quick filters in the currently selected table. By default, the rows containing the input text are filtered out. The following operators are also supported: @@ -2203,93 +2203,93 @@ x~y Fourchette : valeurs entre x et y /regexp/ Valeurs correspondant à l'expression régulière - + Clear All Conditional Formats Effacer tous les formats conditionnels - + Use for Conditional Format Utiliser pour le format conditionnel - + Edit Conditional Formats... Éditer un format conditionnel... - + Set Filter Expression Définir l'expression du filtre - + What's This? Qu'est-ce que c'est ? - + Is NULL Est NULL - + Is not NULL Est non NULL - + Is empty Est vide - + Is not empty Est non vide - + Not containing... Ne contenant pas... - + Equal to... Égal à... - + Not equal to... Différent de... - + Greater than... Plus grand que... - + Less than... Plus petit que... - + Greater or equal... Plus grand ou égal à... - + Less or equal... Plus petit ou égal à... - + In range... Peut être aussi traduit par "dans la plage..." ou "Entre..." Entre les valeurs... - + Regular expression... Expression régulière... @@ -2513,7 +2513,7 @@ x~y Fourchette : valeurs entre x et y - + Tab Tabulation @@ -2656,7 +2656,7 @@ x~y Fourchette : valeurs entre x et y - + Deselect All Désélectionner tout @@ -2667,52 +2667,52 @@ x~y Fourchette : valeurs entre x et y Appairer - + Select All Sélectionner tout - + There is already a table named '%1' and an import into an existing table is only possible if the number of columns match. Il existe déjà une table nommée '%1' et une importation dans une table existante n'est possible que si le nombre de colonnes correspond. - + There is already a table named '%1'. Do you want to import the data into it? Il existe déjà une table appelée "%1". Voulez-vous y importer les données ? - + Creating restore point failed: %1 La création du point de restauration a échoué : %1 - + Creating the table failed: %1 La création de la table a échoué %1 - + importing CSV Importer au format CSV - + Could not prepare INSERT statement: %1 Impossible de préparer l'instruction INSERT : %1 - + Unexpected end of file. Please make sure that you have configured the correct quote characters and the file is not malformed. Fin de fichier inattendue. Veuillez vous assurer que vous avez configuré les bons guillemets et que le fichier n'est pas défectueux. - + Importing the file '%1' took %2ms. Of this %3ms were spent in the row function. L'importation du fichier'%1' a pris %2 ms. %3 ms ont été utilisés par la fonction enregistrement. - + Inserting row failed: %1 L'insertion de l'enregistrement a échoué : %1 @@ -2720,476 +2720,476 @@ x~y Fourchette : valeurs entre x et y MainWindow - + toolBar1 Barre d'outils1 - + Warning: this pragma is not readable and this value has been inferred. Writing the pragma might overwrite a redefined LIKE provided by an SQLite extension. Attention : ce pragma n'est pas lisible et cette valeur a été déduite. Écrire le pragma pourrait écraser un LIKE redéfini fourni par une extension SQLite. - + Too&ls &Outils - + Edit Database &Cell Éditer le contenu d'une &cellule - + Opens the SQLCipher FAQ in a browser window Ouvre la FAQ de SQLCipher dans la fenêtre d'un navigateur - + Export one or more table(s) to a JSON file Exporter une ou plusieurs tables vers un fichier JSON DB Browser for SQLite - DB Browser pour SQLite + DB Browser for SQLite - + &File &Fichier - + &Import &Importer - + &Export &Exporter - + &Edit É&dition - + &View &Vue - + &Help &Aide - + User Utilisateur - + Application Application - + This button clears the contents of the SQL logs Ce bouton supprime le contenu des logs SQL - + &Clear &Effacer - + &New Database... &Nouvelle base de données... - - + + Create a new database file Créer une nouvelle base de données - + This option is used to create a new database file. Cette option est utilisée pour créer un nouveau fichier de base de données. - + Ctrl+N - - + + &Open Database... &Ouvrir une base de données... - - - - - + + + + + Open an existing database file Ouvre une base de données existante - - - + + + This option is used to open an existing database file. Cette option est utilisée pour ouvrir une base de données existante. - + Ctrl+O - + &Close Database &Fermer la base de données - + This button closes the connection to the currently open database file Ce bouton ferme la connexion à la base de données actuellement ouverte - - + + Ctrl+W - + &Revert Changes &Annuler les modifications - - + + Revert database to last saved state Revenir à la dernière version sauvegardée de la base de données - + This option is used to revert the current database file to its last saved state. All changes made since the last save operation are lost. Cette option permet de restaurer la base de données dans l'état de sa dernière sauvegarde. Tous les changements effectués depuis cette dernière sauvegarde seront perdus. - + &Undo Ann&uler - - + + Undo last change to the database Annuler la dernière modification apportée à la base de données - + This action undoes the last change performed to the database in the Database Browser or in Execute SQL. Redoing is not possible. Cette action annule la dernière modification apportée à la base de données dans le navigateur de bases de données ou dans l'onglet Exécuter le SQL. Il n'est pas possible d'annuler à nouveau. - + &Write Changes Enregistrer les &modifications - - + + Write changes to the database file Enregistrer les modifications dans la base de données - + This option is used to save changes to the database file. Cette option est utilisée pour enregistrer les modifications dans la base de données. - + Ctrl+S - + Open the Modify Table wizard, where it is possible to rename an existing table. It is also possible to add or delete fields from a table, as well as modify field names and types. Ouvrir l'assistant de modification d'une table où il sera possible de renommer une table existante. Il est aussi possible d'ajouter ou de supprimer des champs de la table, tout comme modifier le nom des champs et leur type. - + Execute all/selected SQL Exécuter tout ou seulement le SQL sélectionné - + This button executes the currently selected SQL statements. If no text is selected, all SQL statements are executed. Ce bouton lance l'exécution des commandes SQL actuellement sélectionnées. Si aucun texte n'est sélectionné, toutes les commandes SQL seront exécutées. - + Ctrl+Shift+T Ctrl+Maj+T - + Execute line Exécuter la ligne - + &Wiki &Wiki - + F1 - + Bug &Report... &Rapport d'erreur... - + Feature Re&quest... &Demande de fonctionnalités... - + Web&site &Site Internet - + &Donate on Patreon... Faire une &donation sur Patreon... - + &Save Project Enre&gistrer le projet - + Open &Project... Ouvrir un &projet... - + Open &Project Ouvrir un &projet - + &Attach Database... Attac&her une base de données... - - + + Add another database file to the current database connection Ajouter un autre fichier de base de données à la connexion de la base de données en cours - + This button lets you add another database file to the current database connection Ce bouton vous permet d'ajouter un autre fichier de base de données à la connexion de la base de données en cours - + &Set Encryption... Chi&ffrer... - + SQLCipher &FAQ &FAQ SQLCipher - + Table(&s) to JSON... Table(&s) vers JSON... - + Open Data&base Read Only... Ouvrir une base de données en &lecture seule... - + Ctrl+Shift+O - + Save results Enregistrer les résultats - + Save the results view Enregistrer la vue des résultats - + This button lets you save the results of the last executed query Ce bouton vous permet d'enregistrer les résultats de la dernière requête exécutée - - + + Find text in SQL editor Rechercher du texte dans l'éditeur SQL - + Find Rechercher - + This button opens the search bar of the editor Ce bouton ouvre la barre de recherche dans l'éditeur - + Ctrl+F - - + + Find or replace text in SQL editor Rechercher ou remplacer du texte dans l'éditeur SQL - + Find or replace Chercher et remplacer - + This button opens the find/replace dialog for the current editor tab Ce bouton ouvre la boîte de dialogue Rechercher/Remplacer pour l'onglet en cours de l'éditeur - + Ctrl+H - + Export to &CSV Exporter au format &CSV - + Export to &JSON Exporter au format &JSON - + Save as &view Enregistrer comme une &vue - + Save as view Enregistrer comme une vue - + &Open Database &Ouvrir une base de données - + Drag && Drop SELECT Query Glisser && Déposer la requête SELECT - - + + When dragging fields from the same table or a single table, drop a SELECT query into the editor Lorsque vous faites glisser des champs d'une même table ou d'une table unique, déposez une requête SELECT dans l'éditeur - + Browse Table Parcourir la table - - + + Ctrl+Shift+W Ctrl+Maj+W - + Table from CSV data in Clipboard... Table depuis les données CSV du Presse-papiers... - + This treats the current clipboard contents as a CSV file and opens the same import wizard that is used for importing CSV data from a file. Cette opération traite le contenu actuel du presse-papiers comme un fichier CSV et ouvre le même assistant d'importation que celui utilisé pour importer des données CSV à partir d'un fichier. - + Show &Row Counts Afficher le nomb&re de lignes - + This shows the number of rows for each table and view in the database. Indique le nombre de lignes pour chaque table et vue de la base de données. - + Save Database &As... Enregistrer la b&ase de données sous... - + Save the current database as a different file Enregistrer la base de données en cours dans un autre fichier - + Refresh Rafraîchir - + Reload the database structure Recharger la structure de la base de données - + Shows or hides the Project toolbar. Afficher ou masquer la barre d'outil Projet. - + Extra DB Toolbar Extra DB Toolbar - + This button lets you save all the settings associated to the open DB to a DB Browser for SQLite project file - Ce bouton vous permet d'enregistrer tous les paramètres associés à la base de données ouverte dans un fichier de projet DB Browser pour SQLite + Ce bouton vous permet d'enregistrer tous les paramètres associés à la base de données ouverte dans un fichier de projet DB Browser for SQLite @@ -3213,316 +3213,515 @@ x~y Fourchette : valeurs entre x et y Éditer les p&ragmas - - + + Temp Store + Stockage temporaire + + + + Secure Delete + Suppression sécurisée + + + + Case Sensitive Like + Uppercase LIKE (SQL language) + LIKE sensble à la casse + + + + Journal Mode + Mode de journal + + + + Journal Size Limit + Taille limite du journal + + + + Recursive Triggers + Uppercase TRIGGER (SQL language) + TRIGGERs récursifs + + + Delete + pragma + Supprimer + + + Truncate + pragma + Tronquer + + + Persist + pragma + Persister + + + Memory + pragma + Mémoire + + + Off + pragma + Désactivé + + + + Page Size + Taille de page + + + + Foreign Keys + Clés étrangères + + + + Auto Vacuum + Uppercase VACUUM (SQL language) + VACUUM automatique + + + + Max Page Count + Nombre maximum de pages + + + Normal + pragma + Normal + + + Exclusive + pragma + Exclusif + + + + Checkpoint Full FSYNC + Uppercase FULLSYNC (SQL language) + Checkpoint avec FULLFSYNC + + + + + Off + Désactivé + + + + + Normal + Normal + + + + + Full + Complète + + + + Default + Par défaut + + + + File + Fichier + + + + + Memory + Mémoire + + + + Delete + Supprimer + + + + Truncate + Tronquer + + + + Persist + Persister + + + + WAL + + + + + Exclusive + Exclusif + + + + Automatic Index + Index automatique + + + + Ignore Check Constraints + Ignorer les contraintes CHECK + + + + Full FSYNC + Uppercase FULLFSYNC (SQL language) + Utiliser FULLFSYNC + + + + WAL Auto Checkpoint + Pages du WAL avant checkpoint automatique + + + + User Version + Version utilisateur + + + + Synchronous + Synchronisation + + + + None + Aucun + + + + Incremental + Incrémental + + + + Locking Mode + Mode de verrouillage + + + + E&xecute SQL This has to be equal to the tab title in all the main tabs E&xécuter le SQL - + &Recent Files Fichiers &récents - + &New Database &Nouvelle base de données - + This button lets you open a DB Browser for SQLite project file - Ce bouton vous permet d'ouvrir un fichier de projet DB Browser pour SQLite + Ce bouton vous permet d'ouvrir un fichier de projet DB Browser for SQLite - + New In-&Memory Database Nouvelle base de données en &mémoire - + Drag && Drop Qualified Names Glisser && Déposer les noms qualifiés - - + + Use qualified names (e.g. "Table"."Field") when dragging the objects and dropping them into the editor Utilisez des noms qualifiés (par ex. "Table", "Champ") lorsque vous faites glisser les objets et pour les déposez dans l'éditeur - + Drag && Drop Enquoted Names Glisser && Déposer les noms indiqués - - + + Use escaped identifiers (e.g. "Table1") when dragging the objects and dropping them into the editor Utiliser les identificateurs par défaut (par ex. "Table1") lors du glisser-déposer des objets dans l'éditeur - + &Integrity Check Vérifier l'&intégrité - + Runs the integrity_check pragma over the opened database and returns the results in the Execute SQL tab. This pragma does an integrity check of the entire database. Exécute le pragma integrity_check sur la base de données ouverte et retourne les résultats dans l'onglet Exécuter le SQL. Ce pragma effectue un contrôle d'intégrité de l'ensemble de la base de données. - + &Foreign-Key Check Vérifier les clés &étrangères - + Runs the foreign_key_check pragma over the opened database and returns the results in the Execute SQL tab Exécute le pragma foreign_key_check_check sur la base de données ouverte et retourne les résultats dans l'onglet Exécuter SQL - + &Quick Integrity Check Vérification &rapide de l'intégrité - + Run a quick integrity check over the open DB Effectuer un rapide contrôle d'intégrité sur la base de données ouverte - + Runs the quick_check pragma over the opened database and returns the results in the Execute SQL tab. This command does most of the checking of PRAGMA integrity_check but runs much faster. Exécute le pragma quick_check sur la base de données ouverte et retourne les résultats dans l'onglet Exécuter SQL. Cette commande effectue la plupart des vérifications de PRAGMA integrity_check mais s'exécute beaucoup plus rapidement. - + &Optimize &Optimiser - + Attempt to optimize the database Tente d'optimiser la base de données - + Runs the optimize pragma over the opened database. This pragma might perform optimizations that will improve the performance of future queries. Exécute le pragma d'optimisation sur la base de données ouverte. Ce pragma pourrait effectuer des optimisations qui amélioreront la performance des requêtes futures. - - + + Print Imprimer - + Print text from current SQL editor tab Imprime le contenu de l'onglet en cours de l'éditeur SQL [Ctrl+P] - + Open a dialog for printing the text in the current SQL editor tab Ouvre une boite de dialogue pour imprimer le contenu de l'onglet en cours de l'éditeur SQL - + Print the structure of the opened database Imprime la structure de la base de données ouverte - + Open a dialog for printing the structure of the opened database Ouvre une boite de dialogue pour imprimer la structure de la base de données ouverte - + &Save Project As... Enr&egistrer le projet sous... - - - + + + Save the project in a file selected in a dialog Enregistrer le projet dans un fichier sélectionné dans une boite de dialogue - + Save A&ll Enregistrer &tout - - - + + + Save DB file, project file and opened SQL files Enregistre la base de données, le fichier projet et les fichiers SQL ouverts - + Ctrl+Shift+S - + Close Pro&ject Fermer le pro&jet - - + + Close project and database files and return to the initial state Fermer les fichiers du projet et de la base de données et revenir à l'état initial - + Ctrl+Shift+F4 Ctrl+Maj+F4 - - + + Detach Database Détacher une base de données - - + + Detach database file attached to the current database connection Détacher le fichier de base de données attaché à la connexion actuelle à la base de données - + Compact the database file, removing space wasted by deleted records Compacter la base de donnée, récupérer l'espace perdu par les enregistrements supprimés - - + + Compact the database file, removing space wasted by deleted records. Compacter la base de donnée, récupérer l'espace perdu par les enregistrements supprimés. - + E&xit &Quitter - + Ctrl+Q - + Import data from an .sql dump text file into a new or existing database. Importer les données depuis un fichier SQL résultant d'un vidage (sql dump) dans une nouvelle base de données ou une base existante. - + This option lets you import data from an .sql dump text file into a new or existing database. SQL dump files can be created on most database engines, including MySQL and PostgreSQL. Cette option vous permet d'importer un fichier SQL de vidage d'une base de données (SQL dump) dans une nouvelle base de données ou une base existante. Ce fichier peut être créé par la plupart des moteurs de base de données, y compris MySQL et PostgreSQL. - + Open a wizard that lets you import data from a comma separated text file into a database table. Ouvrir un assistant vous permettant d'importer des données dans une table de la base de données à partir d'un fichier texte séparé par des virgules (csv). - + Open a wizard that lets you import data from a comma separated text file into a database table. CSV files can be created on most database and spreadsheet applications. Ouvre un assistant vous permettant d'importer des données dans une table de la base de données à partir d'un fichier texte séparé par des virgules (csv). Les fichiers CSV peuvent être créés par la plupart des outils de gestion de base de données et les tableurs. - + Export a database to a .sql dump text file. Exporter la base de données vers un fichier de vidage SQL (SQL dump) au format texte. - + This option lets you export a database to a .sql dump text file. SQL dump files contain all data necessary to recreate the database on most database engines, including MySQL and PostgreSQL. Exporter la base de données vers un fichier de vidage SQL (SQL dump) au format texte. Ce fichier (SQL dump) contient toutes les informations nécessaires pour recréer une base de données par la plupart des moteurs de base de données, y compris MySQL et PostgreSQL. - + Export a database table as a comma separated text file. Exporter la table vers un fichier texte séparé par des virgules (CSV). - + Export a database table as a comma separated text file, ready to be imported into other database or spreadsheet applications. Exporter la table vers un fichier texte séparé par des virgules (CSV), prêt à être importé dans une autre base de données ou un tableur. - + &Create Table... &Créer une table... - + Open the Create Table wizard, where it is possible to define the name and fields for a new table in the database Ouvrir l'assistant de création d'une table dans lequel il sera possible de définir les noms et les champs d'une nouvelle table dans la base de données - + &Delete Table... &Supprimer la table... - + Open the Delete Table wizard, where you can select a database table to be dropped. Ouvrir l'assistant de suppression d'une table avec lequel vous pourrez sélectionner la table à supprimer. - + &Modify Table... &Modifier la table... - + Open the Create Index wizard, where it is possible to define a new index on an existing database table. Ouvrir l'assistant de création d'un index avec lequel il sera possible de définir un nouvel index dans une table préexistante de la base de données. - + &Preferences... &Préférences... - - + + Open the preferences window. Ouvrir la fenêtre des préférences. - + &DB Toolbar &Barre d'outils BDD - + Shows or hides the Database toolbar. Affiche ou masque la barre d'outils Base de données. - + Shift+F1 - + &Recently opened Ouvert &récemment - + Ctrl+T - + This is the structure of the opened database. You can drag multiple object names from the Name column and drop them into the SQL editor and you can adjust the properties of the dropped names using the context menu. This would help you in composing SQL statements. You can drag SQL statements from the Schema column and drop them into the SQL editor or into other applications. @@ -3533,58 +3732,58 @@ Vous pouvez faire glisser les instructions SQL de la colonne Schéma et les dép - - + + Project Toolbar Barre d'outil Projet - + Extra DB toolbar Extra DB Toolbar - - - + + + Close the current database file Fermer la base de données en cours - - + + Ctrl+F4 - + Compact &Database... Compacter la base de &données... - + &About À &propos - + This button opens a new tab for the SQL editor Ce bouton ouvre un nouvel onglet dans l'éditeur SQL - + &Execute SQL &Exécuter le SQL - - + + Save the current session to a file Enregistrer la session courante dans un fichier - - + + Load a working session from a file Charger une session de travail depuis un fichier @@ -3594,301 +3793,301 @@ Vous pouvez faire glisser les instructions SQL de la colonne Schéma et les dép You can drag SQL statements from an object row and drop them into other applications or into another instance of 'DB Browser for SQLite'. Ceci est la structure de la base de données ouverte. -Vous pouvez faire glisser les instructions SQL d'une ligne d'objet et les déposer dans d'autres applications ou dans une autre instance de 'DB Browser pour SQLite'. +Vous pouvez faire glisser les instructions SQL d'une ligne d'objet et les déposer dans d'autres applications ou dans une autre instance de 'DB Browser for SQLite'. - + Error Log Journal des erreurs - + Un/comment block of SQL code Dé/commenter un bloc de code SQL - + Un/comment block Dé/commenter un bloc - + Comment or uncomment current line or selected block of code Commenter ou décommenter la ligne actuelle ou le bloc de code sélectionné - + Comment or uncomment the selected lines or the current line, when there is no selection. All the block is toggled according to the first line. Commenter ou décommenter les lignes sélectionnées ou la ligne en cours, lorsqu'il n'y a pas de sélection. Tout le bloc est basculé en fonction de la première ligne. - + Ctrl+/ - + Stop SQL execution Arrête l'exécution du SQL - + Stop execution Arrêter l'exécution - + Stop the currently running SQL script Arrête le script SQL en cours d'exécution - + DB Toolbar Barre d'outils BDD - + SQL &Log &Journal SQL - + Show S&QL submitted by A&fficher le SQL soumis par - + This panel lets you examine a log of all SQL commands issued by the application or by yourself Ce panneau vous permet d'examiner un journal de toutes les commandes SQL émises par l'application ou par vous-même - + &Plot Gra&phique - + DB Sche&ma DB Sche&ma - + &Remote Serveur &distant - + &Database from SQL file... &Base de données à partir du fichier SQL... - + &Table from CSV file... &Table depuis un fichier CSV... - + &Database to SQL file... Base de &données vers un fichier SQL... - + &Table(s) as CSV file... &Table vers un fichier CSV... - + Create &Index... Créer un &index... - + W&hat's This? &Qu'est-ce que c'est ? - + New &tab Nouvel ongle&t - + Open SQL file(s) Ouvrir un fichier SQL - + This button opens files containing SQL statements and loads them in new editor tabs Ce bouton ouvre un fichier contenant des instructions SQL et le charge dans un nouvel onglet de l'éditeur - - - + + + Save SQL file Enregistrer le fichier SQL - + &Load Extension... Charger l'&extension... - - + + Execute current line Exécuter la ligne courante (Maj+F5) - + This button executes the SQL statement present in the current editor line Ce bouton exécute l'instruction SQL présente dans la ligne courante de l'éditeur - + Shift+F5 - + Sa&ve Project Enre&gistrer le projet - - + + Save SQL file as Enregistrer le fichier SQL comme - + This button saves the content of the current SQL editor tab to a file Ce bouton enregistre le contenu de l'onglet actuel de l'éditeur SQL dans un fichier - + &Browse Table &Parcourir la table - + Copy Create statement Copier l'instruction CREATE - + Copy the CREATE statement of the item to the clipboard Copie l'instruction CREATE de cet item dans le presse-papier - + Open an existing database file in read only mode Ouvrir une base de données existante en lecture seule - + Ctrl+E - + Export as CSV file Exporter les données au format CSV - + Export table as comma separated values file Exporter la table vers un fichier texte séparé par des virgules (CSV) - + Ctrl+L - - + + Ctrl+P - + Database encoding Encodage de la base de données - - + + Choose a database file Choisir une base de données - + Ctrl+Return - + Ctrl+D - + Ctrl+I - + Reset Window Layout Rétablir la disposition des fenêtres - - The database is currenctly busy. + + The database is currently busy. La base de données est actuellement occupée. - + Click here to interrupt the currently running query. Cliquez ici pour interrompre la requête en cours. - + Encrypted Chiffré - + Database is encrypted using SQLCipher La base de données a été chiffrée avec SQLCipher - + Read only Lecture seule - + Database file is read only. Editing the database is disabled. La base de données est ouverte en lecture seule. Il n'est pas possible de la modifier. - + Could not open database file. Reason: %1 La base de données ne peut être ouverte. Motif : %1 - - - + + + Choose a filename to save under Choisir un nom de fichier pour enregistrer sous - + Error while saving the database file. This means that not all changes to the database were saved. You need to resolve the following error first. %1 @@ -3897,297 +4096,297 @@ Motif : %1 %1 - + Do you want to save the changes made to SQL tabs in the project file '%1'? Voulez-vous enregistrer les modifications apportées aux onglets SQL dans le fichier du projet '%1' ? - + A new DB Browser for SQLite version is available (%1.%2.%3).<br/><br/>Please download at <a href='%4'>%4</a>. - Une nouvelle version de DB Browser pour SQLite est disponible (%1.%2.%3).<br/><br/>Vous pouvez la télécharger sur <a href='%4'>%4</a>. + Une nouvelle version de DB Browser for SQLite est disponible (%1.%2.%3).<br/><br/>Vous pouvez la télécharger sur <a href='%4'>%4</a>. - + DB Browser for SQLite project file (*.sqbpro) - Fichier de projet DB Browser pour SQLite (*.sqbpro) + Fichier de projet DB Browser for SQLite (*.sqbpro) - + Error checking foreign keys after table modification. The changes will be reverted. Erreur de vérification des clés étrangères après modification de la table. Les modifications seront annulées. - + This table did not pass a foreign-key check.<br/>You should run 'Tools | Foreign-Key Check' and fix the reported issues. Cette table n'a pas passé avec succès un contrôle de clé étrangère.<br/>Vous devez exécuter l'Outil | Contrôle des clés étrangères' et corriger les problèmes rapportés. - + Execution finished with errors. L'exécution s'est terminée avec des erreurs. - + Execution finished without errors. L'exécution s'est terminée sans erreur. - + Are you sure you want to undo all changes made to the database file '%1' since the last save? Êtes-vous sûr de vouloir annuler tous les changements effectués dans la base de données %1 depuis la dernière sauvegarde ? - + Choose a file to import Choisir un fichier à importer - + Text files(*.sql *.txt);;All files(*) Fichiers texte (*.sql *.txt);;Tous les fichiers(*) - + Do you want to create a new database file to hold the imported data? If you answer no we will attempt to import the data in the SQL file to the current database. Voulez vous créer une nouvelle base de donnée pour gérer les données importées ? Si vous répondez non, nous essaierons d'importer les données du fichier SQL dans la base de données courante. - + Ctrl+Tab Ctrl+Tab - + Ctrl+Shift+Tab Ctrl+Maj+Tab - + Clear List Effacer la liste - + Window Layout Disposition des fenêtres - + Simplify Window Layout Simplifier la disposition des fenêtres - - Shift+Alt+0 + + Alt+Shift+0 Maj+Alt+0 - + Dock Windows at Bottom Ancrer les fenêtres en bas - + Dock Windows at Left Side Ancrer les fenêtres à gauche - + Dock Windows at Top Ancrer les fenêtres en haut - + You are still executing SQL statements. Closing the database now will stop their execution, possibly leaving the database in an inconsistent state. Are you sure you want to close the database? Des traitements SQL sont en cours d'exécution. Fermer la base de données maintenant arrêtera ces traitements. Cela risque de laisser la base de données dans un état incohérent. Êtes-vous sûr de vouloir fermer la base de données ? - + Do you want to save the changes made to the project file '%1'? Voulez-vous enregistrer les changements effectués dans le fichier projet '%1' ? - + File %1 already exists. Please choose a different name. Le fichier %1 existe déjà. Veuillez choisir un nom de fichier différent. - + Error importing data: %1 Erreur lors de l'import des données : %1 - + Import completed. Import terminé. - + Delete View Supprimer la vue - + Delete Trigger Supprimer le déclencheur - + Delete Index Supprimer l'index - - + + Delete Table Supprimer la table - + Setting PRAGMA values will commit your current transaction. Are you sure? Paramétrer les valeurs du PRAGMA enregistrera les actions de votre transaction courante. Êtes-vous sûr ? - + In-Memory database Base de données en mémoire - + Automatically load the last opened DB file at startup - + Au démarrage, rouvrir la dernière base de données utilisée - + Are you sure you want to delete the table '%1'? All data associated with the table will be lost. Êtes-vous sûr de vouloir supprimer la table %1 ? Toutes les données de la table seront perdues. - + Are you sure you want to delete the view '%1'? Êtes-vous sûr de vouloir supprimer la vue %1 ? - + Are you sure you want to delete the trigger '%1'? Êtes-vous sûr de vouloir supprimer le déclencheur %1 ? - + Are you sure you want to delete the index '%1'? Êtes-vous sûr de vouloir supprimer l'index %1 ? - + Error: could not delete the table. Erreur : suppression de la table impossible. - + Error: could not delete the view. Erreur : suppression de la vue impossible. - + Error: could not delete the trigger. Erreur : suppression du déclencheur impossible. - + Error: could not delete the index. Erreur : suppression de l'index impossible. - + Message from database engine: %1 Message depuis le moteur de la base de données : %1 - + Editing the table requires to save all pending changes now. Are you sure you want to save the database? La modification de la table nécessite d'enregistrer toutes les modifications en attente maintenant. Êtes-vous sûr de vouloir enregistrer la base de données ? - + Edit View %1 Éditer la vue %1 - + Edit Trigger %1 Éditer le déclencheur %1 - + You are already executing SQL statements. Do you want to stop them in order to execute the current statements instead? Note that this might leave the database in an inconsistent state. Vous avez des instructions SQL en cours d'exécution. Voulez-vous les arrêter afin d'exécuter les instructions en cours à la place ? Cela pourrait laisser la base de données dans un état incohérent. - + -- EXECUTING SELECTION IN '%1' -- -- EXÉCUTION DE LA SELECTION DANS '%1' -- - + -- EXECUTING LINE IN '%1' -- -- EXÉCUTION DE LA LIGNE DANS '%1' -- - + -- EXECUTING ALL IN '%1' -- -- EXÉCUTER TOUT DANS '%1' -- - - + + At line %1: À la ligne %1 : - + Result: %1 Résultat : %1 - + Result: %2 Résultat : %2 - + Setting PRAGMA values or vacuuming will commit your current transaction. Are you sure? Le réglage des valeurs PRAGMA ou du "vacuuming" validera votre transaction en cours. Êtes-vous sûr ? - + Opened '%1' in read-only mode from recent file list Ouverture de '%1' en lecture seule depuis la liste des fichiers récents - + Opened '%1' from recent file list Ouverture de '%1' depuis la liste des fichiers récents - + Select the action to apply to the dropped file(s). <br/>Note: only 'Import' will process more than one file. Note for translation: Although there is no %n in the original, you can use the numerus-form to adjust 'files(s)' and remove the note when n = 1. Including %n in the translation will also work. @@ -4196,226 +4395,226 @@ Are you sure? - + The statements in the tab '%1' are still executing. Closing the tab will stop the execution. This might leave the database in an inconsistent state. Are you sure you want to close the tab? Les traitements de l'onglet '%1' sont toujours en cours d'exécution. La fermeture de l'onglet arrêtera l'exécution. Cela pourrait laisser la base de données dans un état incohérent. Êtes-vous sûr de vouloir fermer l'onglet ? - + This project file is using an old file format because it was created using DB Browser for SQLite version 3.10 or lower. Loading this file format is no longer fully supported. If you want to load it completely, please use DB Browser for SQLite version 3.12 to convert it to the new file format. Ce fichier de projet utilise un ancien format de fichier car il a été créé à l'aide de DB Browser for SQLite version 3.10 ou inférieure. Le chargement de ce format de fichier n'est plus entièrement pris en charge. Si vous souhaitez le charger complètement, veuillez utiliser DB Browser for SQLite version 3.12 pour le convertir au nouveau format de fichier. - + Project saved to file '%1' Projet enregistré dans le fichier '%1' - + Yes. Don't ask again Oui. Ne plus demander - + This action will open a new SQL tab with the following statements for you to edit and run: Need to verify if following statements ore shown bellow ou above or on the open action Cette action ouvrira un nouvel onglet SQL avec les instructions suivantes que vous pourrez modifier et exécuter : - + Rename Tab Renommer l'onglet - + Duplicate Tab Dupliquer l'onglet - + Close Tab Fermer l'onglet - + Opening '%1'... Ouverture de '%1'... - + There was an error opening '%1'... Il y a eu une erreur lors de l'ouverture de '%1'... - + Value is not a valid URL or filename: %1 Le valeur n'est pas une URL valide ou un nom de fichier : %1 - + %1 rows returned in %2ms %1 enregistrements ramenés en %2ms - + Ctrl+Alt+0 Ctrl+Alt+0 - + Ctrl+Alt+W Ctrl+Alt+W - + Choose a database file to save under Choisissez un fichier de base de donnés pour enregistrer sous - + Error while saving the database to the new file. Erreur lors de l'enregistrement de la base de données dans le nouveau fichier. - + Choose text files Choisir des fichiers texte - + Import completed. Some foreign key constraints are violated. Please fix them before saving. Importation terminée. Certaines contraintes clés étrangères sont violées. Veuillez les corriger avant de les enregistrer. - + Modify View Modifier la vue - + Modify Trigger Modifier le déclencheur - + Modify Index Modifier l'index - + Modify Table Modifier la table - + &%1 %2%3 &%1 %2%3 - + (read only) (lecture seule) - + Open Database or Project Ouvrir une base de données ou un projet - + Attach Database... Attacher une base de données... - + Import CSV file(s)... Importer un ou des fichiers CSV... - + Do you want to save the changes made to SQL tabs in a new project file? Voulez-vous enregistrer les changements effectués dans l'onglet SQL dans un nouveau fichier projet ? - + Do you want to save the changes made to the SQL file %1? Voulez-vous enregistrer les changements effectués dans le fichier SQL %1 ? - + Select SQL file to open Sélectionner un fichier SQL à ouvrir - + Select file name Sélectionner un nom de fichier - + Select extension file Sélectionner une extension de fichier - + Extension successfully loaded. L'extension a été chargée avec succès. - + Error loading extension: %1 Erreur lors du chargement de l'extension %1 - + Could not find resource file: %1 Le fichier de ressources %1 ne peut être ouvert - - + + Don't show again Ne plus afficher - + New version available. Une nouvelle version est disponible. - + Choose a project file to open Choisir un fichier de projet à ouvrir - + DB file '%1' could not be opened Le fichier DB '%1' n'a pu être ouvert - + Table '%1' not found; settings ignored Table "%1" introuvable ; paramètres ignorés - + Could not open project file for writing. Reason: %1 Le fichier projet ne peut être ouvert en écriture. Raison : %1 - + -- Reference to file "%1" (not supported by this version) -- -- Référence au fichier "%1" (non supporté par cette version) -- - + Collation needed! Proceed? Classement nécessaire ! Continuer ? - + A table in this database requires a special collation function '%1' that this application can't provide without further knowledge. If you choose to proceed, be aware bad things can happen to your database. Create a backup! @@ -4424,47 +4623,47 @@ Si vous choisissez de continuer, ayez à l'esprit que des choses non souhai Faites une sauvegarde ! - + creating collation Créer un classement - + Set a new name for the SQL tab. Use the '&&' character to allow using the following character as a keyboard shortcut. Définissez un nouveau nom pour l'onglet SQL. Utilisez le caractère '&&' pour permettre d'utiliser le caractère suivant comme raccourci clavier. - + Please specify the view name Veuillez spécifier le nom de la vue - + There is already an object with that name. Please choose a different name. Il existe déjà un objet avec ce nom. Veuillez choisir un autre nom. - + View successfully created. La vue a été crée avec succès. - + Error creating view: %1 Erreur lors de la création de la vue : %1 - + This action will open a new SQL tab for running: Cette action ouvrira un nouvel onglet SQL pour son exécution : - + Press Help for opening the corresponding SQLite reference page. Cliquez sur Aide pour ouvrir la page de référence correspondante de SQLite. - + Busy (%1) Occupé (%1) @@ -4492,7 +4691,7 @@ Faites une sauvegarde ! <html><head/><body><p>This pane shows the list of columns of the currently browsed table or the just executed query. You can select the columns that you want to be used as X or Y axis for the plot pane below. The table shows detected axis type that will affect the resulting plot. For the Y axis you can only select numeric columns, but for the X axis you will be able to select:</p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Date/Time</span>: strings with format &quot;yyyy-MM-dd hh:mm:ss&quot; or &quot;yyyy-MM-ddThh:mm:ss&quot;</li><li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Date</span>: strings with format &quot;yyyy-MM-dd&quot;</li><li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Time</span>: strings with format &quot;hh:mm:ss&quot;</li><li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Label</span>: other string formats. Selecting this column as X axis will produce a Bars plot with the column values as labels for the bars</li><li style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Numeric</span>: integer or real values</li></ul><p>Double-clicking the Y cells you can change the used color for that graph.</p></body></html> - <html><head/><body><p>Ce volet affiche la liste des colonnes de la table actuellement parcourue ou de la requête qui vient d'être exécutée. Vous pouvez sélectionner les colonnes que vous voulez utiliser comme axe X ou Y pour le volet de tracé ci-dessous. Le tableau montre le type d'axe détecté qui affectera le tracé résultant. Pour l'axe Y, vous ne pouvez sélectionner que des colonnes numériques, mais pour l'axe X, vous pourrez sélectionner :</p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Date/Heure</span> : chaînes au format &quot;aaaa-MM-jj hh:mm:ss&quot; ou &quot;aaaa-MM-jjThh:mm:ss&quot;</li><li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Date</span> : chaînes au format &quot;aaaa-MM-jj&quot;</li><li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Heures</span> : chaînes au format &quot;hh:mm:ss&quot;</li><li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Label</span> : autres formats de chaînes. Sélectionner cette colonne comme axe X produira un diagramme en barres avec les valeurs de la colonne comme étiquettes pour les barres</li><li style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Numerique</span> : Nombres entiers ou Réels</li></ul><p>En double-cliquant sur une cellule Y, vous pouvez changer la couleur utilisée dans le graphique.</p></body></html> + <html><head/><body><p>Ce volet affiche la liste des colonnes de la table actuellement parcourue ou de la requête qui vient d'être exécutée. Vous pouvez sélectionner les colonnes que vous voulez utiliser comme axe X ou Y pour le volet de tracé ci-dessous. Le tableau montre le type d'axe détecté qui affectera le tracé résultant. Pour l'axe Y, vous ne pouvez sélectionner que des colonnes numériques, mais pour l'axe X, vous pourrez sélectionner&nbsp;:</p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Date/Heure</span>&nbsp;: chaînes au format &quot;aaaa-MM-jj hh:mm:ss&quot; ou &quot;aaaa-MM-jjThh:mm:ss&quot;</li><li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Date</span>&nbsp;: chaînes au format &quot;aaaa-MM-jj&quot;</li><li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Heures</span>&nbsp;: chaînes au format &quot;hh:mm:ss&quot;</li><li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Label</span>&nbsp;: autres formats de chaînes. Sélectionner cette colonne comme axe X produira un diagramme en barres avec les valeurs de la colonne comme étiquettes pour les barres</li><li style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Numerique</span>&nbsp;: Nombres entiers ou Réels</li></ul><p>En double-cliquant sur une cellule Y, vous pouvez changer la couleur utilisée dans le graphique.</p></body></html> @@ -4659,102 +4858,107 @@ Sélectionnez les axes ou les étiquettes d'axes à faire glisser et à zoo - + Load all data and redraw plot Charger toutes les données et redessiner le graphique - - - + + + Row # # Ligne - + Copy Copier - + Print... Imprimer... - + + Help + + + + Show legend Afficher la légende - + Stacked bars Diagramme à barres empilées - + Fixed number format Format des nombres fixes - + Date/Time Date/Heure - + Date Date - + Time Heure - - + + Numeric Numérique - + Label Label - + Invalid Invalide - + Load all data and redraw plot. Warning: not all data has been fetched from the table yet due to the partial fetch mechanism. Charger toutes les données et redessiner le tracé. Attention : toutes les données n'ont pas encore été extraites du tableau en raison du mécanisme d'extraction partielle. - + Choose an axis color Choisir une couleur d'axe - + Choose a filename to save under Choisir un nom de fichier pour enregistrer sous - + PNG(*.png);;JPG(*.jpg);;PDF(*.pdf);;BMP(*.bmp);;All Files(*) PNG(*.png);;JPG(*.jpg);;PDF(*.pdf);;BMP(*.bmp);;All Files(*) - + There are curves in this plot and the selected line style can only be applied to graphs sorted by X. Either sort the table or query by X to remove curves or select one of the styles supported by curves: None or Line. Il y a des courbes dans ce graphique et le style de ligne sélectionné ne peut être appliqué qu'aux graphiques triés par X. Triez la table ou la requête par X pour supprimer les courbes ou sélectionnez un des styles pris en charge par les courbes : Aucun ou Ligne. - + Loading all remaining data for this table took %1ms. Le chargement de toutes les données restantes pour ce tableau a pris %1 ms. @@ -5007,7 +5211,7 @@ de la base de données String - Chaîne de caractère + Chaîne de caractères @@ -5380,7 +5584,7 @@ Peut être mis à 0 pour désactiver la complétion. Select extensions to load for every database: - Sélectionner une extension à charger pour toutes les bases de données : + Sélectionner les extensions à charger pour toutes les bases de données : @@ -5395,12 +5599,12 @@ Peut être mis à 0 pour désactiver la complétion. Select built-in extensions to load for every database: - + Sélectionner les extensions intégrées à charger pour toutes les bases de données : <html><head/><body><p>While supporting the REGEXP operator SQLite doesn't implement any regular expression<br/>algorithm but calls back the running application. DB Browser for SQLite implements this<br/>algorithm for you to let you use REGEXP out of the box. However, as there are multiple possible<br/>implementations of this and you might want to use another one, you're free to disable the<br/>application's implementation and load your own by using an extension. Requires restart of the application.</p></body></html> - <html><head/><body><p>Bien que SQLite supporte l'opérateur REGEXP, aucun algorithme<br>d'expression régulière n'est implémenté : l'application doit fournir le sien. DB Browser pour SQLite implémente<br/>cet algorithme pour vous permettre d'utiliser REGEXP. Cependant, comme il existe plusieurs implémentations possibles<br/>et que vous souhaitez peut-être utiliser autre chose, vous êtes libre de désactiver cette implémentation dans l'application<br/>pour utiliser la vôtre en utilisant une extension. Cela nécessite le redémarrage de l'application.</p></body></html> + <html><head/><body><p>Bien que SQLite supporte l'opérateur REGEXP, aucun algorithme<br>d'expression régulière n'est implémenté : l'application doit fournir le sien. DB Browser for SQLite implémente<br/>cet algorithme pour vous permettre d'utiliser REGEXP. Cependant, comme il existe plusieurs implémentations possibles<br/>et que vous souhaitez peut-être utiliser autre chose, vous êtes libre de désactiver cette implémentation dans l'application<br/>pour utiliser la vôtre en utilisant une extension. Cela nécessite le redémarrage de l'application.</p></body></html> @@ -5578,1878 +5782,312 @@ Toutes vos préférences seront perdues et les valeurs par défaut seront utilis Le fichier de paramètres a été enregistré à l'emplacement : - - Open Settings File - Ouvrir le fichier de paramètres - - - - The settings file was loaded properly. - Le fichier de configuration a été chargé correctement. - - - - The selected settings file is not a normal settings file. -Please check again. - Le fichier de paramètres sélectionné n'est pas un fichier de paramètres normal. -Veuillez vérifier à nouveau. - - - - ProxyDialog - - - Proxy Configuration - Configuration du proxy - - - - Pro&xy Type - Type de pro&xy - - - - Host Na&me - No&m de l'hôte - - - - Port - Port - - - - Authentication Re&quired - Authentification re&quise - - - - &User Name - Nom d'&utilisateur - - - - Password - Mot de passe - - - - None - Aucun - - - - System settings - Paramètres système - - - - HTTP - HTTP - - - - Socks v5 - Socks v5 - - - - QObject - - - Error importing data - Erreur lors de l'import des données - - - - from record number %1 - pour l'enregistrement numéro %1 - - - - . -%1 - . -%1 - - - - Importing CSV file... - Import du fichier CSV... - - - - Cancel - Annuler - - - - All files (*) - Tous les fichiers (*) - - - - SQLite database files (*.db *.sqlite *.sqlite3 *.db3) - Base de données SQLite (*.db *.sqlite *.sqlite3 *.db3) - - - - Left - Gauche - - - - Right - Droite - - - - Center - Centré - - - - Justify - Justifié - - - - SQLite Database Files (*.db *.sqlite *.sqlite3 *.db3) - Fichier de BDD SQLite (*.db *.sqlite *.sqlite3 *.db3) - - - - DB Browser for SQLite Project Files (*.sqbpro) - Fichiers projet DB Browser pour SQLite (*.sqbpro) - - - - SQL Files (*.sql) - Fichiers SQL (*.sql) - - - - All Files (*) - Tous les fichiers (*) - - - - Text Files (*.txt) - Fichiers texte (*.txt) - - - - Comma-Separated Values Files (*.csv) - Valeurs séparées par des virgules (*.csv) - - - - Tab-Separated Values Files (*.tsv) - Valeurs séparées par des tabulations (*.tsv) - - - - Delimiter-Separated Values Files (*.dsv) - Valeurs séparées par des délimiteurs (*.dsv) - - - - Concordance DAT files (*.dat) - Fichiers de concordance (*.dat) - - - - JSON Files (*.json *.js) - Fichiers JSON (*.json *.js) - - - - XML Files (*.xml) - Fichiers XML (*.xml) - - - - Binary Files (*.bin *.dat) - Fichiers binaires (*.bin *.dat) - - - - SVG Files (*.svg) - Fichiers SVG (*.svg) - - - - Hex Dump Files (*.dat *.bin) - Fichiers de dump hexadécimal (*.dat *.bin) - - - - Extensions (*.so *.dylib *.dll) - Extensions (*.so *.dylib *.dll) - - - - Initialization File (*.ini) - Fichier d'initialisation (*.ini) - - - - QsciCommand - - - Move down one line - - - - - Extend selection down one line - - - - - Extend rectangular selection down one line - - - - - Scroll view down one line - - - - - Move up one line - - - - - Extend selection up one line - - - - - Extend rectangular selection up one line - - - - - Scroll view up one line - - - - - Scroll to start of document - - - - - Scroll to end of document - - - - - Scroll vertically to centre current line - - - - - Move down one paragraph - - - - - Extend selection down one paragraph - - - - - Move up one paragraph - - - - - Extend selection up one paragraph - - - - - Move left one character - - - - - Extend selection left one character - - - - - Extend rectangular selection left one character - - - - - Move right one character - - - - - Extend selection right one character - - - - - Extend rectangular selection right one character - - - - - Move left one word - - - - - Extend selection left one word - - - - - Move right one word - - - - - Extend selection right one word - - - - - Move to end of previous word - - - - - Extend selection to end of previous word - - - - - Move to end of next word - - - - - Extend selection to end of next word - - - - - Move left one word part - - - - - Extend selection left one word part - - - - - Move right one word part - - - - - Extend selection right one word part - - - - - Move to start of document line - - - - - Extend selection to start of document line - - - - - Extend rectangular selection to start of document line - - - - - Move to start of display line - - - - - Extend selection to start of display line - - - - - Move to start of display or document line - - - - - Extend selection to start of display or document line - - - - - Move to first visible character in document line - - - - - Extend selection to first visible character in document line - - - - - Extend rectangular selection to first visible character in document line - - - - - Move to first visible character of display in document line - - - - - Extend selection to first visible character in display or document line - - - - - Move to end of document line - - - - - Extend selection to end of document line - - - - - Extend rectangular selection to end of document line - - - - - Move to end of display line - - - - - Extend selection to end of display line - - - - - Move to end of display or document line - - - - - Extend selection to end of display or document line - - - - - Move to start of document - - - - - Extend selection to start of document - - - - - Move to end of document - - - - - Extend selection to end of document - - - - - Move up one page - - - - - Extend selection up one page - - - - - Extend rectangular selection up one page - - - - - Move down one page - - - - - Extend selection down one page - - - - - Extend rectangular selection down one page - - - - - Stuttered move up one page - - - - - Stuttered extend selection up one page - - - - - Stuttered move down one page - - - - - Stuttered extend selection down one page - - - - - Delete current character - - - - - Delete previous character - - - - - Delete previous character if not at start of line - - - - - Delete word to left - - - - - Delete word to right - - - - - Delete right to end of next word - - - - - Delete line to left - - - - - Delete line to right - - - - - Delete current line - - - - - Cut current line - - - - - Copy current line - - - - - Transpose current and previous lines - - - - - Duplicate the current line - - - - - Select all - - - - - Move selected lines up one line - - - - - Move selected lines down one line - - - - - Duplicate selection - - - - - Convert selection to lower case - - - - - Convert selection to upper case - - - - - Cut selection - - - - - Copy selection - - - - - Paste - Coller - - - - Toggle insert/overtype - - - - - Insert newline - - - - - Formfeed - - - - - Indent one level - - - - - De-indent one level - - - - - Cancel - Annuler - - - - Undo last command - - - - - Redo last command - - - - - Zoom in - - - - - Zoom out - - - - - QsciLexerCPP - - - Default - Défaut - - - - Inactive default - - - - - C comment - - - - - Inactive C comment - - - - - C++ comment - - - - - Inactive C++ comment - - - - - JavaDoc style C comment - - - - - Inactive JavaDoc style C comment - - - - - Number - - - - - Inactive number - - - - - Keyword - Mot clé - - - - Inactive keyword - - - - - Double-quoted string - - - - - Inactive double-quoted string - - - - - Single-quoted string - - - - - Inactive single-quoted string - - - - - IDL UUID - - - - - Inactive IDL UUID - - - - - Pre-processor block - - - - - Inactive pre-processor block - - - - - Operator - - - - - Inactive operator - - - - - Identifier - Identifiant - - - - Inactive identifier - - - - - Unclosed string - - - - - Inactive unclosed string - - - - - C# verbatim string - - - - - Inactive C# verbatim string - - - - - JavaScript regular expression - - - - - Inactive JavaScript regular expression - - - - - JavaDoc style C++ comment - - - - - Inactive JavaDoc style C++ comment - - - - - Secondary keywords and identifiers - - - - - Inactive secondary keywords and identifiers - - - - - JavaDoc keyword - - - - - Inactive JavaDoc keyword - - - - - JavaDoc keyword error - - - - - Inactive JavaDoc keyword error - - - - - Global classes and typedefs - - - - - Inactive global classes and typedefs - - - - - C++ raw string - - - - - Inactive C++ raw string - - - - - Vala triple-quoted verbatim string - - - - - Inactive Vala triple-quoted verbatim string - - - - - Pike hash-quoted string - - - - - Inactive Pike hash-quoted string - - - - - Pre-processor C comment - - - - - Inactive pre-processor C comment - - - - - JavaDoc style pre-processor comment - - - - - Inactive JavaDoc style pre-processor comment - - - - - User-defined literal - - - - - Inactive user-defined literal - - - - - Task marker - - - - - Inactive task marker - - - - - Escape sequence - - - - - Inactive escape sequence - - - - - QsciLexerHTML - - - HTML default - - - - - Tag - - - - - Unknown tag - - - - - Attribute - - - - - Unknown attribute - - - - - HTML number - - - - - HTML double-quoted string - - - - - HTML single-quoted string - - - - - Other text in a tag - - - - - HTML comment - - - - - Entity - - - - - End of a tag - - - - - Start of an XML fragment - - - - - End of an XML fragment - - - - - Script tag - - - - - Start of an ASP fragment with @ - - - - - Start of an ASP fragment - - - - - CDATA - - - - - Start of a PHP fragment - - - - - Unquoted HTML value - - - - - ASP X-Code comment - - - - - SGML default - - - - - SGML command - - - - - First parameter of an SGML command - - - - - SGML double-quoted string - - - - - SGML single-quoted string - - - - - SGML error - - - - - SGML special entity - - - - - SGML comment - - - - - First parameter comment of an SGML command - - - - - SGML block default - - - - - Start of a JavaScript fragment - - - - - JavaScript default - - - - - JavaScript comment - - - - - JavaScript line comment - - - - - JavaDoc style JavaScript comment - - - - - JavaScript number - - - - - JavaScript word - - - - - JavaScript keyword - - - - - JavaScript double-quoted string - - - - - JavaScript single-quoted string - - - - - JavaScript symbol - - - - - JavaScript unclosed string - - - - - JavaScript regular expression - - - - - Start of an ASP JavaScript fragment - - - - - ASP JavaScript default - - - - - ASP JavaScript comment - - - - - ASP JavaScript line comment - - - - - JavaDoc style ASP JavaScript comment - - - - - ASP JavaScript number - - - - - ASP JavaScript word - - - - - ASP JavaScript keyword - - - - - ASP JavaScript double-quoted string - - - - - ASP JavaScript single-quoted string - - - - - ASP JavaScript symbol - - - - - ASP JavaScript unclosed string - - - - - ASP JavaScript regular expression - - - - - Start of a VBScript fragment - - - - - VBScript default - - - - - VBScript comment - - - - - VBScript number - - - - - VBScript keyword - - - - - VBScript string - - - - - VBScript identifier - - - - - VBScript unclosed string - - - - - Start of an ASP VBScript fragment - - - - - ASP VBScript default - - - - - ASP VBScript comment - - - - - ASP VBScript number - - - - - ASP VBScript keyword - - - - - ASP VBScript string - - - - - ASP VBScript identifier - - - - - ASP VBScript unclosed string - - - - - Start of a Python fragment - - - - - Python default - - - - - Python comment - - - - - Python number - - - - - Python double-quoted string - - - - - Python single-quoted string - - - - - Python keyword - - - - - Python triple double-quoted string - - - - - Python triple single-quoted string - - - - - Python class name - - - - - Python function or method name - - - - - Python operator - - - - - Python identifier - - - - - Start of an ASP Python fragment - - - - - ASP Python default - - - - - ASP Python comment - - - - - ASP Python number - - - - - ASP Python double-quoted string - - - - - ASP Python single-quoted string - - - - - ASP Python keyword - - - - - ASP Python triple double-quoted string - - - - - ASP Python triple single-quoted string - - - - - ASP Python class name - - - - - ASP Python function or method name - - - - - ASP Python operator - - - - - ASP Python identifier - - - - - PHP default - - - - - PHP double-quoted string - - - - - PHP single-quoted string - - - - - PHP keyword - - - - - PHP number - - - - - PHP variable - - - - - PHP comment - - - - - PHP line comment - - - - - PHP double-quoted variable - - - - - PHP operator - - - - - QsciLexerJSON - - - Default - Défaut + + Open Settings File + Ouvrir le fichier de paramètres - - Number - + + The settings file was loaded properly. + Le fichier de configuration a été chargé correctement. - - String - Chaîne de caractère + + The selected settings file is not a normal settings file. +Please check again. + Le fichier de paramètres sélectionné n'est pas un fichier de paramètres normal. +Veuillez vérifier à nouveau. + + + ProxyDialog - - Unclosed string - + + Proxy Configuration + Configuration du proxy - - Property - + + Pro&xy Type + Type de pro&xy - - Escape sequence - + + Host Na&me + No&m de l'hôte - - Line comment - + + Port + Port - - Block comment - + + Authentication Re&quired + Authentification re&quise - - Operator - + + &User Name + Nom d'&utilisateur - - IRI - + + Password + Mot de passe - - JSON-LD compact IRI - + + None + Aucun - - JSON keyword - + + System settings + Paramètres système - - JSON-LD keyword - + + HTTP + HTTP - - Parsing error - + + SOCKS5 + SOCKS5 - QsciLexerJavaScript + QObject - - Regular expression - Expression régulière + + Error importing data + Erreur lors de l'import des données - - - QsciLexerPython - - Default - Défaut + + from record number %1 + pour l'enregistrement numéro %1 - - Comment - Commentaire + + . +%1 + . +%1 - - Number - + + Importing CSV file... + Import du fichier CSV... - - Double-quoted string - + + Cancel + Annuler - - Single-quoted string - + + All files (*) + Tous les fichiers (*) - - Keyword - Mot clé + + SQLite database files (*.db *.sqlite *.sqlite3 *.db3) + Base de données SQLite (*.db *.sqlite *.sqlite3 *.db3) - - Triple single-quoted string - + + Left + Gauche - - Triple double-quoted string - + + Right + Droite - - Class name - + + Center + Centré - - Function or method name - + + Justify + Justifié - - Operator - + + SQLite Database Files (*.db *.sqlite *.sqlite3 *.db3) + Fichier de BDD SQLite (*.db *.sqlite *.sqlite3 *.db3) - - Identifier - Identifiant + + DB Browser for SQLite Project Files (*.sqbpro) + Fichiers projet DB Browser for SQLite (*.sqbpro) - - Comment block - + + SQL Files (*.sql) + Fichiers SQL (*.sql) - - Unclosed string - + + All Files (*) + Tous les fichiers (*) - - Highlighted identifier - + + Text Files (*.txt) + Fichiers texte (*.txt) - - Decorator - + + Comma-Separated Values Files (*.csv) + Valeurs séparées par des virgules (*.csv) - - Double-quoted f-string - + + Tab-Separated Values Files (*.tsv) + Valeurs séparées par des tabulations (*.tsv) - - Single-quoted f-string - + + Delimiter-Separated Values Files (*.dsv) + Valeurs séparées par des délimiteurs (*.dsv) - - Triple single-quoted f-string - + + Concordance DAT files (*.dat) + Fichiers de concordance (*.dat) - - Triple double-quoted f-string - + + JSON Files (*.json *.js) + Fichiers JSON (*.json *.js) - - - QsciLexerSQL - - Default - Défaut + + XML Files (*.xml) + Fichiers XML (*.xml) - - Comment - Commentaire + + Binary Files (*.bin *.dat) + Fichiers binaires (*.bin *.dat) - - Comment line - + + SVG Files (*.svg) + Fichiers SVG (*.svg) - - JavaDoc style comment - + + Hex Dump Files (*.dat *.bin) + Fichiers de dump hexadécimal (*.dat *.bin) - - Number - + + Extensions (*.so *.dylib *.dll) + Extensions (*.so *.dylib *.dll) - - Keyword - Mot clé + + Initialization File (*.ini) + Fichier d'initialisation (*.ini) + + + QsciCommand - - Double-quoted string - + Paste + Coller - - Single-quoted string - + Cancel + Annuler + + + QsciLexerCPP - - SQL*Plus keyword - + Default + Défaut - - SQL*Plus prompt - + Keyword + Mot clé - - Operator - + Identifier + Identifiant + + + QsciLexerJSON - - Identifier - Identifiant + Default + Défaut - - SQL*Plus comment - + String + Chaîne de caractère + + + QsciLexerJavaScript - - # comment line - + Regular expression + Expression régulière + + + QsciLexerPython - - JavaDoc keyword - + Default + Défaut - - JavaDoc keyword error - + Comment + Commentaire - - User defined 1 - + Keyword + Mot clé - - User defined 2 - + Identifier + Identifiant + + + QsciLexerSQL - - User defined 3 - + Default + Défaut - - User defined 4 - + Comment + Commentaire - - Quoted identifier - + Keyword + Mot clé - - Quoted operator - + Identifier + Identifiant QsciScintilla - &Undo - Ann&uler - - - - &Redo - - - - - Cu&t - - - - - &Copy - - - - - &Paste - - - - - Delete - + Ann&uler - Select All - Sélectionner tout + Sélectionner tout @@ -7543,7 +6181,7 @@ Veuillez vérifier à nouveau. <html><head/><body><p>In this pane, remote databases from dbhub.io website can be added to DB Browser for SQLite. First you need an identity:</p><ol style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Login to the dbhub.io website (use your GitHub credentials or whatever you want)</li><li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click the button to &quot;Generate client certificate&quot; (that's your identity). That'll give you a certificate file (save it to your local disk).</li><li style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Go to the Remote tab in DB Browser for SQLite Preferences. Click the button to add a new certificate to DB Browser for SQLite and choose the just downloaded certificate file.</li></ol><p>Now the Remote panel shows your identity and you can add remote databases.</p></body></html> - <html><head/><body><p>Dans ce volet, les bases de données distantes du site Web dbhub.io peuvent être ajoutées à DB Browser pour SQLite. Il faut d'abord vous identifier :</p><ol style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Connectez-vous sur le site dbhub.io (utilisez vos identifiants GitHub ou ce que vous voulez)</li><li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Cliquez sur le bouton &quot;Generate client certificate&quot; (c'est votre identité). Cela vous fournira un fichier de certificat (enregistrez-le sur votre disque local).</li><li style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Allez dans l'onglet Serveur distant des Préférences DB Browser pour SQLite. Cliquez sur le bouton pour ajouter un nouveau certificat à DB Browser pour SQLite et choisissez le fichier de certificat que vous venez de télécharger.</li></ol><p>Maintenant, le panneau Serveur distant affiche votre identité et vous pouvez ajouter des bases de données distantes..</p></body></html> + <html><head/><body><p>Dans ce volet, les bases de données distantes du site Web dbhub.io peuvent être ajoutées à DB Browser for SQLite. Il faut d'abord vous identifier&nbsp;:</p><ol style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Connectez-vous sur le site dbhub.io (utilisez vos identifiants GitHub ou ce que vous voulez)</li><li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Cliquez sur le bouton &quot;Generate client certificate&quot; (c'est votre identité). Cela vous fournira un fichier de certificat (enregistrez-le sur votre disque local).</li><li style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Allez dans l'onglet Serveur distant des Préférences DB Browser for SQLite. Cliquez sur le bouton pour ajouter un nouveau certificat à DB Browser for SQLite et choisissez le fichier de certificat que vous venez de télécharger.</li></ol><p>Maintenant, le panneau Serveur distant affiche votre identité et vous pouvez ajouter des bases de données distantes..</p></body></html> @@ -7668,7 +6306,7 @@ Veuillez vérifier à nouveau. <html><head/><body><p>You are currently using a built-in, read-only identity. For uploading your database, you need to configure and use your DBHub.io account.</p><p>No DBHub.io account yet? <a href="https://dbhub.io/"><span style=" text-decoration: underline; color:#007af4;">Create one now</span></a> and import your certificate <a href="#preferences"><span style=" text-decoration: underline; color:#007af4;">here</span></a> to share your databases.</p><p>For online help visit <a href="https://dbhub.io/about"><span style=" text-decoration: underline; color:#007af4;">here</span></a>.</p></body></html> - <html><head/><body><p>Vous utilisez actuellement une identité intégrée, en lecture seule. Pour télécharger votre base de données, vous devez configurer et utiliser votre compte DBHub.io. </p><p>Vous n'avez pas encore de compte DBHub.io ? <a href="https://dbhub.io/"><span style=" text-decoration : underline ; color:#007af4 ;">Créez-en un maintenant</span></a> et importez votre certificat <a href="#preferences"><span style=" text-decoration : underline ; color:#007af4 ;">ici</span></a> pour partager vos bases de données.</p><p>Pour l'aide en ligne, visitez <a href="https://dbhub.io/about"><span style=" text-decoration : underline ; color:#007af4 ;">ici</span></a>.</p></body></html> + <html><head/><body><p>Vous utilisez actuellement une identité intégrée, en lecture seule. Pour télécharger votre base de données, vous devez configurer et utiliser votre compte DBHub.io. </p><p>Vous n'avez pas encore de compte DBHub.io&nbsp;? <a href="https://dbhub.io/"><span style=" text-decoration : underline ; color:#007af4 ;">Créez-en un maintenant</span></a> et importez votre certificat <a href="#preferences"><span style=" text-decoration : underline ; color:#007af4 ;">ici</span></a> pour partager vos bases de données.</p><p>Pour l'aide en ligne, visitez <a href="https://dbhub.io/about"><span style=" text-decoration : underline ; color:#007af4 ;">ici</span></a>.</p></body></html> @@ -7845,26 +6483,26 @@ Are you sure you want to proceed? Pour vous authentifier, veuillez entrer la phrase secrète pour ce certificat client. - + Cancel Annuler - + Uploading remote database to %1 Téléchargement de la base distante dans %1 - + Downloading remote database from %1 Télécharger une base de données distante depuis %1 - + Error: Cannot open the file for sending. Erreur : le fichier à envoyer ne peut être ouvert. @@ -8070,12 +6708,12 @@ Are you sure you want to proceed? Ctrl+PgUp - Ctrl+Page Haut + Ctrl+Page Haut Ctrl+PgDown - Ctrl+Page Bas + Ctrl+Page Bas @@ -8601,32 +7239,32 @@ L'utilisation de cette fonction doit être autorisée à partir des Préfé chargement... - + References %1(%2) Hold %3Shift and click to jump there Références %1(%2) Appuyez simultanément sur %3+Maj et cliquez pour arriver ici - + Error changing data: %1 Erreur lors du changement des données : %1 - + retrieving list of columns récupération de la liste des colonnes - + Fetching data... Récupération des données... - - + + Cancel Annuler @@ -8963,12 +7601,12 @@ Appuyez simultanément sur %3+Maj et cliquez pour arriver ici - <html><head/><body><p>This button creates a new record in the database. Hold the mouse button to open a pop-up menu of different options:</p><ul><li><span style=" font-weight:600;">New Record</span>: insert a new record with default values in the database.</li><li><span style=" font-weight:600;">Insert Values...</span>: open a dialog for entering values before they are inserted in the database. This allows to enter values acomplishing the different constraints. This dialog is also open if the <span style=" font-weight:600;">New Record</span> option fails due to these constraints.</li></ul></body></html> - <html><head/><body><p>Ce bouton crée un nouvel enregistrement dans la base de données. Maintenez le bouton de la souris enfoncé pour ouvrir un menu contextuel de différentes options :</p><ul><li><span style=" font-weight:600;">Nouvel enregistrement</span> : Insère un nouvel enregistrement avec les valeurs par défaut dans la base de données.</li><li><span style=" font-weight:600;">Insérer des valeurs...</span> : ouvre une boite de dialogue pour saisir des valeurs avant leur insertion dans la base de données. Ceci permet de saisir des valeurs correspondant aux différentes contraintes. Cette boîte de dialogue est également ouverte si l'option <span style=" font-weight:600;">Nouvel enregistrement </span> est en erreur à cause de ces contraintes.</li></ul></body></html> + <html><head/><body><p>This button creates a new record in the database. Hold the mouse button to open a pop-up menu of different options:</p><ul><li><span style=" font-weight:600;">New Record</span>: insert a new record with default values in the database.</li><li><span style=" font-weight:600;">Insert Values...</span>: open a dialog for entering values before they are inserted in the database. This allows to enter values accomplishing the different constraints. This dialog is also open if the <span style=" font-weight:600;">New Record</span> option fails due to these constraints.</li></ul></body></html> + <html><head/><body><p>Ce bouton crée un nouvel enregistrement dans la base de données. Maintenez le bouton de la souris enfoncé pour ouvrir un menu contextuel de différentes options&nbsp;:</p><ul><li><span style=" font-weight:600;">Nouvel enregistrement</span>&nbsp;: Insère un nouvel enregistrement avec les valeurs par défaut dans la base de données.</li><li><span style=" font-weight:600;">Insérer des valeurs...</span>&nbsp;: ouvre une boite de dialogue pour saisir des valeurs avant leur insertion dans la base de données. Ceci permet de saisir des valeurs correspondant aux différentes contraintes. Cette boîte de dialogue est également ouverte si l'option <span style=" font-weight:600;">Nouvel enregistrement </span> est en erreur à cause de ces contraintes.</li></ul></body></html> - + Delete Record Supprimer l'enregistrement @@ -9045,8 +7683,8 @@ Appuyez simultanément sur %3+Maj et cliquez pour arriver ici - <html><head/><body><p>This popup menu provides the following options applying to the currently browsed and filtered table:</p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Export to CSV: this option exports the data of the browsed table as currently displayed (after filters, display formats and order column) to a CSV file.</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Save as view: this option saves the current setting of the browsed table (filters, display formats and order column) as an SQL view that you can later browse or use in SQL statements.</li></ul></body></html> - <html><head/><body><p>Ce menu déroulant fournit les options suivantes s'appliquant à la table actuellement parcourue et filtrée:</p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Exporter au format CSV : cette option exporte les données de la table parcourue telles qu'elles sont actuellement affichées (après filtres, formats d'affichage et colonne d'ordre) vers un fichier CSV.</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Enregistrer comme vue : cette option permet d'enregistrer les paramètres actuels de la table parcourue (filtres, formats d'affichage et colonne d'ordre) dans une vue SQL que vous pourrez ensuite parcourir ou utiliser dans les instructions SQL.</li></ul></body></html> + <html><head/><body><p>This pop-up menu provides the following options applying to the currently browsed and filtered table:</p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Export to CSV: this option exports the data of the browsed table as currently displayed (after filters, display formats and order column) to a CSV file.</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Save as view: this option saves the current setting of the browsed table (filters, display formats and order column) as an SQL view that you can later browse or use in SQL statements.</li></ul></body></html> + <html><head/><body><p>Ce menu déroulant fournit les options suivantes s'appliquant à la table actuellement parcourue et filtrée:</p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Exporter au format CSV&nbsp;: cette option exporte les données de la table parcourue telles qu'elles sont actuellement affichées (après filtres, formats d'affichage et colonne d'ordre) vers un fichier CSV.</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Enregistrer comme vue&nbsp;: cette option permet d'enregistrer les paramètres actuels de la table parcourue (filtres, formats d'affichage et colonne d'ordre) dans une vue SQL que vous pourrez ensuite parcourir ou utiliser dans les instructions SQL.</li></ul></body></html> @@ -9070,7 +7708,7 @@ Appuyez simultanément sur %3+Maj et cliquez pour arriver ici - + Set encoding Définir l'encodage @@ -9335,96 +7973,96 @@ Appuyez simultanément sur %3+Maj et cliquez pour arriver ici . Somme: %1; Moyenne: %2; Min: %3; Max: %4 - + Conditional formats for "%1" Format conditionnel pour "%1" - + determining row count... Détermination du nombre d'enregistrements... - + %L1 - %L2 of >= %L3 %L1 - %L2 of >= %L3 - + %L1 - %L2 of %L3 %L1 - %L2 of %L3 - + (clipped at %L1 rows) (coupé à %L1 lignes) - + Please enter a pseudo-primary key in order to enable editing on this view. This should be the name of a unique column in the view. Veuillez entrer une pseudo clé primaire pour permettre l'édition de la vue. Ce devrait être le nom d'une colonne unique dans la vue. - + Delete Records Supprimer les enregistrements - + Duplicate records Enregistrement en double - + Duplicate record Dupliquer l'enregistrement - + Ctrl+" - + Adjust rows to contents Ajuster les lignes au contenu - + Error deleting record: %1 Erreur dans la suppression d'un enregistrement : %1 - + Please select a record first Veuillez sélectionner au préalable un enregistrement - + Please choose a new encoding for all tables. Veuillez choisir un nouvel encodage pour toutes les tables. - + Please choose a new encoding for this table. Veuillez choisir un nouvel encodage pour cette table. - + %1 Leave the field empty for using the database encoding. %1 Laissez le champ vide pour utiliser l'encodage de la base de données. - + This encoding is either not valid or not supported. Cet encodage est invalide ou non supporté. - + %1 replacement(s) made. %1 remplacement(s) effectué(s). @@ -9452,24 +8090,6 @@ Laissez le champ vide pour utiliser l'encodage de la base de données.Donnez un nouveau nom à l'explorateur de données. Utilisez le caractère "&&" pour permettre l'utilisation du caractère suivant comme raccourci clavier. - - UndoStack - - - Inserting %1 bytes - - - - - Delete %1 chars - - - - - Overwrite %1 chars - - - VacuumDialog @@ -9485,7 +8105,7 @@ Laissez le champ vide pour utiliser l'encodage de la base de données. Please select the databases to co&mpact: - Veuillez saisir le nom de la base de données à co&mpacter : + Veuillez sélectionner les bases de données à co&mpacter : diff --git a/src/translations/sqlb_id.ts b/src/translations/sqlb_id.ts index b1b575978..599e466c0 100644 --- a/src/translations/sqlb_id.ts +++ b/src/translations/sqlb_id.ts @@ -15,8 +15,8 @@ - <html><head/><body><p>DB Browser for SQLite is an open source, freeware visual tool used to create, design and edit SQLite database files.</p><p>It is bi-licensed under the Mozilla Public License Version 2, as well as the GNU General Public License Version 3 or later. You can modify or redistribute it under the conditions of these licenses.</p><p>See <a href="https://www.gnu.org/licenses/gpl.html"><span style=" text-decoration: underline; color:#0000ff;">http://www.gnu.org/licenses/gpl.html</span></a> and <a href="https://www.mozilla.org/MPL/2.0/index.txt"><span style=" text-decoration: underline; color:#0000ff;">https://www.mozilla.org/MPL/2.0/index.txt</span></a> for details.</p><p>For more information on this program please visit our website at: <a href="https://sqlitebrowser.org"><span style=" text-decoration: underline; color:#0000ff;">http://sqlitebrowser.org</span></a></p><p><span style=" font-size:small;">This software uses the GPL/LGPL Qt Toolkit from </span><a href="http://qt-project.org/"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://qt-project.org/</span></a><span style=" font-size:small;"><br/>See </span><a href="https://doc.qt.io/qt-5/licensing.html"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://qt-project.org/doc/qt-5/licensing.html</span></a><span style=" font-size:small;"> for licensing terms and information.</span></p><p><span style=" font-size:8pt;">We use the nalgeon/sqlean library for SQLite extensions support.<br/>This library is licensed under the MIT license, see the following for more information:<br/></span><a href="https://github.com/nalgeon/sqlean"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">https://github.com/nalgeon/sqlean</span></a></p><p><span style=" font-size:small;">It also uses the Pastel SVG icon set by Michael Buckley under a Creative Commons Attribution Share Alike 4.0 license.<br/>See </span><a href="https://codefisher.org/pastel-svg/"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://codefisher.org/pastel-svg/</span></a><span style=" font-size:small;"> for details.</span></p></body></html> - + <html><head/><body><p>DB Browser for SQLite is an open source, freeware visual tool used to create, design and edit SQLite database files.</p><p>It is bi-licensed under the Mozilla Public License Version 2, as well as the GNU General Public License Version 3 or later. You can modify or redistribute it under the conditions of these licenses.</p><p>See <a href="https://www.gnu.org/licenses/gpl.html"><span style=" text-decoration: underline; color:#0000ff;">https://www.gnu.org/licenses/gpl.html</span></a> and <a href="https://www.mozilla.org/MPL/2.0/index.txt"><span style=" text-decoration: underline; color:#0000ff;">https://www.mozilla.org/MPL/2.0/index.txt</span></a> for details.</p><p>For more information on this program please visit our website at: <a href="https://sqlitebrowser.org"><span style=" text-decoration: underline; color:#0000ff;">https://sqlitebrowser.org</span></a></p><p><span style=" font-size:small;">This software uses the GPL/LGPL Qt Toolkit from </span><a href="https://qt-project.org/"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://qt-project.org/</span></a><span style=" font-size:small;"><br/>See </span><a href="https://doc.qt.io/qt-5/licensing.html"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://doc.qt.io/qt-5/licensing.html</span></a><span style=" font-size:small;"> for licensing terms and information.</span></p><p><span style=" font-size:8pt;">We use the nalgeon/sqlean library for SQLite extensions support.<br/>This library is licensed under the MIT license, see the following for more information:<br/></span><a href="https://github.com/nalgeon/sqlean"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">https://github.com/nalgeon/sqlean</span></a></p><p><span style=" font-size:small;">It also uses the Pastel SVG icon set by Michael Buckley under a Creative Commons Attribution Share Alike 4.0 license.<br/>See </span><a href="https://codefisher.org/pastel-svg/"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://codefisher.org/pastel-svg/</span></a><span style=" font-size:small;"> for details.</span></p></body></html> + <html><head/><body><p>Peramban DB untuk SQLite adalah alat visual sumber terbuka dan perangkat lunak bebas yang digunakan untuk membuat, mendesain, dan mengedit berkas basis data SQLite.</p><p>Alat ini memiliki dua lisensi yaitu Lisensi Publik Mozilla Versi 2, dan Lisensi Publik Umum GNU Versi 3 atau yang lebih baru. Anda dapat memodifikasi atau mendistribusikannya kembali berdasarkan ketentuan lisensi ini.</p><p>Lihat <a href="https://www.gnu.org/licenses/gpl.html"><span style=" text-decoration: underline; color:#0000ff;">https://www.gnu.org/licenses/gpl.html</span></a> dan <a href="https://www.mozilla.org/MPL/2.0/index.txt"><span style=" text-decoration: underline; color:#0000ff;">https://www.mozilla.org/MPL/2.0/index.txt</span></a> untuk detailnya.</p><p>Untuk informasi lebih lanjut tentang program ini, silakan kunjungi situs web kami di: <a href="https://sqlitebrowser.org"><span style=" text-decoration: underline; warna:#0000ff;">https://sqlitebrowser.org</span></a></p><p><span style=" font-size:small;">Perangkat lunak ini menggunakan GPL/LGPL Qt Toolkit dari </span><a href="https://qt-project.org/"><span style=" font-size:small; text-decoration: underline; warna:#0000ff;">https://qt-project.org/</span></a><span style=" font-size:small;"><br/>Lihat </span><a href="https://doc.qt.io/qt-5/licensing.html"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://doc.qt.io/qt-5/licensing.html</span></a><span style=" font-size:small;"> untuk ketentuan dan informasi lisensi.</span></p><p><span style=" font-size:8pt;">Kami menggunakan pustaka nalgeon/sqlean untuk dukungan ekstensi SQLite.<br/>Pustaka ini dilisensikan di bawah lisensi MIT, lihat berikut ini untuk informasi lebih lanjut:<br/></span><a href="https://github.com/nalgeon/sqlean"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">https://github.com/nalgeon/sqlean</span></a></p><p><span style=" font-size:small;">Ini juga menggunakan set ikon SVG Pastel yang dibuat oleh Michael Buckley di bawah lisensi Creative Commons Attribution Share Alike 4.0.<br/>Lihat </span><a href="https://codefisher.org/pastel-svg/"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://codefisher.org/pastel-svg/</span></a><span style=" font-size:small;"> untuk detailnya.</span></p></body></html> @@ -285,36 +285,36 @@ - Invalid option/non-existant file: %1 + Invalid option/non-existent file: %1 Opsi tidak valid/berkas tidak ada: %1 - + SQLite Version Versi SQLite - + SQLCipher Version %1 (based on SQLite %2) SQLCipher Versi %1 (berbasis SQLite %2) - + DB Browser for SQLite Version %1. Peramban DB untuk SQLite Versi %1. - + Last commit hash when built: %1 Hash commit terakhir ketika dibangun: %1 - + Built for %1, running on %2 Dibangun untuk %1, dijalankan pada %2 - + Qt Version %1 Qt Versi %1 @@ -392,7 +392,7 @@ Kunci mentah - + Please set a key to encrypt the database. Note that if you change any of the other, optional, settings you'll need to re-enter them as well every time you open the database file. Leave the password fields empty to disable the encryption. @@ -403,7 +403,7 @@ Biarkan ruas kata sandi kosong untuk menonaktifkan enkripsi. Proses enkripsi mungkin perlu beberapa waktu dan Anda mesti memiliki salinan cadangan dari basis data Anda! Perubahan yang belum tersimpan diterapkan sebelum mengubah enkripsi. - + Please enter the key used to encrypt the database. If any of the other settings were altered for this database file you need to provide this information as well. Harap masukkan kunci yang dipakai untuk mengenkripsi basis data. @@ -428,92 +428,92 @@ Bila sebarang pengaturan lain diubah untuk berkas basis data ini, Anda perlu men Pilih suatu format tampilan bagi kolom '%1' yang diterapkan ke setiap nilai sebelum menunjukkannya. - + Default Baku - + Decimal number Bilangan desimal - + Exponent notation Notasi eksponensial - + Hex blob Blob heksa - + Hex number Bilangan heksa - + Apple NSDate to date NSDate Apple ke tanggal - + Java epoch (milliseconds) to date Epos Java (milidetik) ke tanggal - + .NET DateTime.Ticks to date DateTime.Ticks .NET ke tanggal - + Julian day to date Hari Julian ke tanggal - + Unix epoch to local time Epos Unix ke waktu lokal - + WebKit / Chromium epoch to date - + Epos Webkit / Chromium ke tanggal - + WebKit / Chromium epoch to local time - + Epos Webkit / Chromium ke waktu lokal - + Date as dd/mm/yyyy Tanggal sebagai dd/mm/yyyy - + Lower case Huruf kecil - + Binary GUID to text GUID biner ke teks - + SpatiaLite Geometry to SVG SpatiaLite Geometry ke SVG - + Custom display format must contain a function call applied to %1 Format tampilan ubahan mesti memuat suatu pemanggilan fungsi yang diterapkan ke %1 - + Error in custom display format. Message from database engine: %1 @@ -522,37 +522,37 @@ Bila sebarang pengaturan lain diubah untuk berkas basis data ini, Anda perlu men %1 - + Custom display format must return only one column but it returned %1. Format tampilan ubahan mesti mengembalikan hanya satu kolom tapi itu mengembalikan %1. - + Octal number Bilangan oktal - + Round number Bilangan bulat - + Unix epoch to date Epos Unix ke tanggal - + Upper case Huruf besar - + Windows DATE to date DATE Windows ke tanggal - + Custom Ubahan @@ -679,166 +679,166 @@ Bila sebarang pengaturan lain diubah untuk berkas basis data ini, Anda perlu men DBBrowserDB - + Please specify the database name under which you want to access the attached database Harap nyatakan nama basis data yang akan dipakai untuk mengakses basis data yang dicantol - + Invalid file format Format berkas tidak valid - + Do you really want to close this temporary database? All data will be lost. Anda yakin hendak menutup basis data temporer ini? Semua data akan hilang. - + Do you want to save the changes made to the database file %1? Apakah Anda ingin menyimpan perubahan yang dibuat ke berkas basis data %1? - + Database didn't close correctly, probably still busy Basis data tidak ditutup secara benar, mungkin masih sibuk - + Cannot open destination file: '%1' Tidak bisa membuka berkas tujuan: '%1' - - + + Cannot backup to file: '%1'. Message: %2 Tidak bisa mencadangkan ke berkas: '%1'. Pesan %2 - + The database is currently busy: Basis data saat ini sibuk: - + Do you want to abort that other operation? Apakah Anda ingin menggugurkan operasi lain itu? - + Exporting database to SQL file... Mengekspor basis data ke berkas SQL... - - + + Cancel Batal - - + + No database file opened Tidak ada berkas basis data yang dibuka - + Executing SQL... Mengeksekusi SQL... - + Action cancelled. Aksi dibatalkan. - - + + Error in statement #%1: %2. Aborting execution%3. Kesalahan dalam pernyataan #%1: %2. Menggugurkan eksekusi %3. - - + + and rolling back dan me-roll back - + didn't receive any output from %1 tak menerima keluaran apa pun dari %1 - + could not execute command: %1 tidak bisa mengeksekusi perintah: %1 - + Cannot delete this object Tidak bisa menghapus objek ini - + Cannot set data on this object Tidak bisa menata data pada objek ini - - + + A table with the name '%1' already exists in schema '%2'. Sebuah tabel dengan nama '%1' sudah ada dalam skema '%2'. - + No table with name '%1' exists in schema '%2'. Tidak ada tabel dengan nama '%1' ada dalam skema '%2'. - - + + Cannot find column %1. Tidak bisa temukan kolom %1. - + Creating savepoint failed. DB says: %1 Gagal membuat savepoint. Pesan DB: %1 - + Renaming the column failed. DB says: %1 Gagal mengubah nama kolom. Pesan DB: %1 - - + + Releasing savepoint failed. DB says: %1 Gagal melepas savepoint. Pesan DB: %1 - + Creating new table failed. DB says: %1 Gagal membuat tabel baru. Pesan DB: %1 - + Copying data to new table failed. DB says: %1 Gagal menyalin data ke tabel baru. Pesan DB: %1 - + Deleting old table failed. DB says: %1 Gagal menghapus tabel lama. Pesan DB: %1 - + Restoring some of the objects associated with this table failed. This is most likely because some column names changed. Here's the SQL statement which you might want to fix and execute manually: @@ -847,27 +847,27 @@ Menggugurkan eksekusi %3. - + could not get list of databases: %1 tidak bisa memperoleh daftar basis data: %1 - + Error loading extension: %1 Kesalahan saat memuat ekstensi: %1 - + Error loading built-in extension: %1 - + Kesalahan saat memuat ekstens bawaani: %1 - + could not get column information tidak bisa memperoleh informasi kolom - + Error renaming table '%1' to '%2'. Message from database engine: %3 @@ -876,17 +876,17 @@ Pesan dari mesin basis data: %3 - + could not get list of db objects: %1 tidak bisa memperoleh daftar obyek db: %1 - + Error setting pragma %1 to %2: %3 Kesalahan saat mengatur pragma %1 ke %2: %3 - + File not found. Berkas tidak ditemukan. @@ -1439,7 +1439,7 @@ Apakah Anda hendak menerapkan data yang disunting ke baris=%1, kolom=%2? Make this a 'WITHOUT ROWID' table. Setting this flag requires specifying a PRIMARY KEY (which can be of any type, and can be composite), and forbids the AUTOINCREMENT flag. - + Jadikan ini suatu tabel 'WITHOUT ROWID'. Menetapkan flag ini memerlukan penentuan PRIMARY KEY (yang dapat berupa jenis apa pun, dan dapat berupa komposit), dan melarang flag AUTOINCREMENT. @@ -1950,7 +1950,7 @@ Semua data yang saat ini disimpan dalam ruas ini akan hilang. ExtendedScintilla - + Ctrl+H Ctrl+H @@ -1961,22 +1961,22 @@ Semua data yang saat ini disimpan dalam ruas ini akan hilang. - + Ctrl+P Ctrl+P - + Find... Cari... - + Find and Replace... Cari dan Ganti... - + Print... Cetak... @@ -1984,129 +1984,129 @@ Semua data yang saat ini disimpan dalam ruas ini akan hilang. ExtendedTableWidget - + Use as Exact Filter Gunakan sebagai Filter Eksak - + Containing Memuat - + Not containing Tidak memuat - + Not equal to Tidak sama dengan - + Greater than Lebih dari - + Less than Kurang dari - + Greater or equal Lebih dari atau sama dengan - + Less or equal Kurang dari atau sama dengan - + Between this and... Antara ini dan... - + Regular expression Ekspresi reguler - + Edit Conditional Formats... Sunting Format Bersyarat... - + Set to NULL Atur ke NULL - + Cut Potong - + Copy Salin - + Copy with Headers Salin dengan Header - + Copy as SQL Salin sebagai SQL - + Paste Tempel - + Print... Cetak... - + Use in Filter Expression Pakai dalam Ekspresi Filter - + Alt+Del Alt+Del - + Ctrl+Shift+C Ctrl+Shift+C - + Ctrl+Alt+C Ctrl+Alt+C - + The content of the clipboard is bigger than the range selected. Do you want to insert it anyway? Konten papan klip lebih besar daripada rentang yang dipilih. Tetap disisipkan? - + <p>Not all data has been loaded. <b>Do you want to load all data before selecting all the rows?</b><p><p>Answering <b>No</b> means that no more data will be loaded and the selection will not be performed.<br/>Answering <b>Yes</b> might take some time while the data is loaded but the selection will be complete.</p>Warning: Loading all the data might require a great amount of memory for big tables. <p>Belum semua data dimuat. <b>Apakah Anda ingin memuat semua data sebelum memilih semua baris?</b><p><p>Menjawab <b>Tidak</b> berarti tidak ada lagi data yang akan dimuat dan pemilihan tidak akan dilaksanakan.<br/>Menjawab <b>Ya</b> mungkin akan makan waktu ketika data dimuat tapi pemilihan akan lengkap.</p>Peringatan: Memuat semua data mungkin memerlukan sejumlah besar memori untuk tabel-tabel besar. - + Cannot set selection to NULL. Column %1 has a NOT NULL constraint. Tidak bisa menata pilihan ke NULL. Kolom %1 memiliki konstrain NOT NULL. Cannot set selection to NULL. Column %1 has a NOT NULL constraint. @@ -2159,12 +2159,12 @@ Tetap disisipkan? FilterLineEdit - + Filter Filter - + These input fields allow you to perform quick filters in the currently selected table. By default, the rows containing the input text are filtered out. The following operators are also supported: @@ -2191,92 +2191,92 @@ x~y Rentang: nilai antara x dan y /regexp/ Nilai yang cocok dengan ekspresi reguler - + Clear All Conditional Formats Bersihkan Semua Format Bersyarat - + Use for Conditional Format Gunakan untuk Format Bersyarat - + Edit Conditional Formats... Sunting Format Bersyarat... - + Set Filter Expression Atur Ekspresi Filter - + What's This? Apa Ini? - + Is NULL NULL - + Is not NULL Bukan NULL - + Is empty Kosong - + Is not empty Tidak kosong - + Not containing... Tidak memuat... - + Equal to... Sama dengan... - + Not equal to... Tidak sama dengan... - + Greater than... Lebih dari... - + Less than... Kurang dari... - + Greater or equal... Lebih dari atau sama dengan... - + Less or equal... Kurang dari atau sama dengan... - + In range... Dalam rentang... - + Regular expression... Ekspresi reguler... @@ -2499,7 +2499,7 @@ x~y Rentang: nilai antara x dan y - + Tab Tab @@ -2642,7 +2642,7 @@ x~y Rentang: nilai antara x dan y - + Deselect All Hapus Semua Pilihan @@ -2652,52 +2652,52 @@ x~y Rentang: nilai antara x dan y Cocok Serupa - + Select All Pilih Semua - + There is already a table named '%1' and an import into an existing table is only possible if the number of columns match. Sudah ada tabel bernama '%1' dan suatu impor ke tabel yang telah ada hanya mungkin bila cacah kolom cocok. - + There is already a table named '%1'. Do you want to import the data into it? Sudah ada tabel bernama '%1'. Apakah Anda ingin mengimpor data ke dalamnya? - + Creating restore point failed: %1 Gagal membuat titik pemulihan: %1 - + Creating the table failed: %1 Gagal membuat tabel: %1 - + importing CSV mengimpor CSV - + Could not prepare INSERT statement: %1 Tidak bisa mempersiapkan pernyataan INSERT: %1 - + Unexpected end of file. Please make sure that you have configured the correct quote characters and the file is not malformed. Akhir berkas yang tak diduga. Harap pastikan bahwa Anda telah mengonfigurasi karakter kutip yang benar dan berkas tidak salah bentuk. - + Importing the file '%1' took %2ms. Of this %3ms were spent in the row function. Mengimpor berkas '%1' makan waktu %2 ms. %3 ms dari total itu dihabiskan dalam fungsi baris. - + Inserting row failed: %1 Gagal menyisipkan baris: %1 @@ -2710,98 +2710,98 @@ x~y Rentang: nilai antara x dan y Peramban DB untuk SQLite - + toolBar1 bilahAlat1 - + Opens the SQLCipher FAQ in a browser window Membuka FAQ SQL Cipher dalam sebuah jendela peramban - + Export one or more table(s) to a JSON file Ekspor satu tabel atau lebih ke berkas JSON - + &File &Berkas - + &Import &Impor - + &Export &Ekspor - + &Edit &Sunting - + &View &Tilik - + &Help B&antuan - + DB Toolbar Bilah Alat DB - + Edit Database &Cell &Sunting Sel Basis Data - + DB Sche&ma Ske&ma DB - + &Remote &Remote - - + + Execute current line Eksekusi baris kini - + This button executes the SQL statement present in the current editor line Tombol ini mengeksekusi pernyataan SQL yang ada dalam baris penyunting saat ini - + Shift+F5 Shift+F5 - + Sa&ve Project Simpan Pro&yek - + Open an existing database file in read only mode Buka berkas basis data yang ada dalam mode hanya baca - + User Pengguna @@ -2815,82 +2815,82 @@ Anda dapat menyeret pernyataan SQL dari suatu baris objek dan menjatuhkan mereka - + Un/comment block of SQL code Jadikan komentar/bukan komentar blok kode SQL - + Un/comment block Jadikan komentar/bukan komentar blok - + Comment or uncomment current line or selected block of code Jadikan komentar/bukan komentar baris saat ini atau blok kode yang dipilih - + Comment or uncomment the selected lines or the current line, when there is no selection. All the block is toggled according to the first line. Jadikan komentar/bukan komentar baris yang dipilih atau baris saat ini, bila tidak ada yang dipilih. Seluruh blok dijungkitkan menurut baris pertama. - + Ctrl+/ Ctrl+/ - + Stop SQL execution Hentikan eksekusi SQL - + Stop execution Hentikan eksekusi - + Stop the currently running SQL script Hentikan skrip SQL yang saat ini sedang berjalan - + Warning: this pragma is not readable and this value has been inferred. Writing the pragma might overwrite a redefined LIKE provided by an SQLite extension. Peringatan: pragma ini tidak dapat dibaca dan nilai ini telah disimpulkan. Menulis pragma mungkin menimpa suatu LIKE yang didefinisikan ulang yang disediakan oleh sebuah ekstensi SQLite. - + Too&ls Pera&latan - + Application Aplikasi - + Error Log Log Kesalahan - + This button clears the contents of the SQL logs Tombol ini membersihkan isi log SQL - + &Clear &Bersihkan - + This panel lets you examine a log of all SQL commands issued by the application or by yourself Panel ini memungkinkan Anda memeriksa log dari semua perintah SQL yang diberikan oleh aplikasi atau oleh Anda sendiri - + This is the structure of the opened database. You can drag multiple object names from the Name column and drop them into the SQL editor and you can adjust the properties of the dropped names using the context menu. This would help you in composing SQL statements. You can drag SQL statements from the Schema column and drop them into the SQL editor or into other applications. @@ -2901,664 +2901,823 @@ Anda dapat menyeret pernyataan SQL dari kolom Skema dan menjatuhkan mereka ke da - - + + Project Toolbar Bilah Alat Proyek - + Extra DB toolbar Bilah alat DB ekstra - - - + + + Close the current database file Tutup berkas basis data saat ini - + &New Database... &Basis Data Baru... - - + + Create a new database file Buat suatu berkas basis data baru - + This option is used to create a new database file. Opsi ini dipakai untuk membuat sebuah berkas basis data baru. - + Ctrl+N Ctrl+N - - + + &Open Database... Buk&a Basis Data... - - - - - + + + + + Open an existing database file Buka sebuah berkas basis data yang ada - - - + + + This option is used to open an existing database file. Opsi ini dipakai untuk membuka sebuah berkas basis data yang ada. - + Ctrl+O Ctrl+O - + &Close Database &Tutup Basis Data - + This button closes the connection to the currently open database file Tombol ini menutup koneksi ke berkas basis data yang saat ini terbuka - - + + Ctrl+W Ctrl+W - - + + Revert database to last saved state Pulihkan basis data ke keadaan tersimpan terakhir - + This option is used to revert the current database file to its last saved state. All changes made since the last save operation are lost. Opsi ini dipakai untuk memulihkan berkas basis data saat ini ke keadaan tersimpan terakhir. Semua perubahan yang dibuat sejak operasi simpan terakhir hilang. - - + + Write changes to the database file Tulis perubahan ke berkas basis data - + This option is used to save changes to the database file. Opsi ini dipakai untuk menyimpan perubahan ke berkas basis data. - + Ctrl+S Ctrl+S - + Compact &Database... Mampatkan Basis &Data... - + Compact the database file, removing space wasted by deleted records Memampatkan berkas basis data, menghapus ruang yang terbuang oleh record yang dihapus - - + + Compact the database file, removing space wasted by deleted records. Memampatkan berkas basis data, menghapus ruang yang terbuang oleh record yang dihapus. - + E&xit &Keluar - + Ctrl+Q Ctrl+Q - + Import data from an .sql dump text file into a new or existing database. Impor data dari sebuah berkas teks dump sql ke dalam basis data baru atau yang ada. - + This option lets you import data from an .sql dump text file into a new or existing database. SQL dump files can be created on most database engines, including MySQL and PostgreSQL. Opsi ini memungkinkan Anda mengimpor data dari berkas teks curah .sql ke dalam basis data baru atau yang ada. Berkas curah SQL dapat dibuat pada kebanyakan mesin basis data, termasuk MySQL dan PostgreSQL. - + Open a wizard that lets you import data from a comma separated text file into a database table. Membuka suatu wahana pandu yang mengizinkan Anda mengimpor data dari berkas teks dengan pemisah koma ke dalam tabel basis data. - + Open a wizard that lets you import data from a comma separated text file into a database table. CSV files can be created on most database and spreadsheet applications. Opsi ini membuka suatu wahana pandu yang memungkinkan Anda mengimpor data dari berkas teks dipisah koma ke dalam tabel basis data. Berkas CSV dapat dibuat pada kebanyakan aplikasi basis data dan lembar kerja. - + Export a database to a .sql dump text file. Ekspor suatu basis data ke sebuah berkas teks curah .sql. - + This option lets you export a database to a .sql dump text file. SQL dump files contain all data necessary to recreate the database on most database engines, including MySQL and PostgreSQL. Opsi ini memungkinkan Anda mengekspor sebuah basis data ke suatu berkas teks curah .sql. Berkas curah SQL memuat semua data yang diperlukan untuk mencipta ulang basis data pada kebanyakan mesin basis data, termasuk MySQL dan PostgreSQL. - + Export a database table as a comma separated text file. Ekspor suatu tabel basis data sebagai sebuah berkas teks yang dipisah koma. - + Export a database table as a comma separated text file, ready to be imported into other database or spreadsheet applications. Ekspor suatu tabel basis data sebagai berkas teks yang dipisah koma, siap untuk diimpor ke dalam aplikasi lembar kerja atau basis data lain. - + Open the Create Table wizard, where it is possible to define the name and fields for a new table in the database Membuka wahana pandu Buat Tabel, dimana mungkin untuk mendefinisikan nama dan ruas bagi suatu tabel baru dalam basis data - - + + Delete Table Hapus Tabel - + Open the Delete Table wizard, where you can select a database table to be dropped. Membuka wahana pandu Hapus Tabel, dimana Anda dapat memilih sebuah tabel basis data yang akan di-drop. - + Open the Create Index wizard, where it is possible to define a new index on an existing database table. Membuka wahana pandu Buat Indeks, dimana mungkin untuk mendefinisikan sebuah indeks baru pada tabel basis data yang ada. - + &Preferences... &Preferensi... - - + + Open the preferences window. Buka jendela preferensi. - + &DB Toolbar Bilah Alat &DB - + Shows or hides the Database toolbar. Menampilkan atau menyembunyikan bilah alat Basis Data. - + Shift+F1 Shift+F1 - + New &tab &Tab baru - + Open SQL file(s) Buka berkas SQL - + This button opens files containing SQL statements and loads them in new editor tabs Tombol ini membuka berkas yang memuat pernyataan SQL dan memuat mereka dalam tab penyunting baru - + Execute line Eksekusi baris - + &Wiki &Wiki - + F1 F1 - + Bug &Report... Lapo&ran Bug... - + Feature Re&quest... Per&mintaan Fitur... - + Web&site &Situs Web - + &Donate on Patreon... &Donasi di Patreon... - + &Save Project &Simpan Proyek - + This button lets you save all the settings associated to the open DB to a DB Browser for SQLite project file Tombol ini memungkinkan Anda menyimpan semua pengaturan terkait DB yang terbuka ke suatu berkas proyek Peramban DB untuk SQLite - + Open &Project Buka &Proyek - + This button lets you open a DB Browser for SQLite project file Tombol ini memungkinkan Anda membuka suatu berkas proyek Peramban DB untuk SQLite - + Ctrl+Shift+O Ctrl+Shift+O - + &Save Project As... &Simpan Proyek Sebagai... - - - + + + Save the project in a file selected in a dialog Simpan proyek dalam suatu berkas yang dipilih dalam sebuah dialog - + Save A&ll Simpan Se&mua - - - + + + Save DB file, project file and opened SQL files Simpan berkas DB, berkas proyek, dan berkas SQL yang dibuka - + Ctrl+Shift+S Ctrl+Shift+S - + Browse Table Ramban Tabel - + Close Pro&ject Tutup Pro&yek - - + + Close project and database files and return to the initial state Tutup berkas basis data dan proyek, dan kembali ke keadaan awal - + Ctrl+Shift+F4 Ctrl+Shift+F4 - - + + Detach Database Lepas Cantolan Basis Data - - + + Detach database file attached to the current database connection Lepas cantolan berkas basis data yang tercantol ke koneksi basis data saat ini - + &Attach Database... C&antol Basis Data... - - + + Temp Store + Penyimpanan Sementara + + + + Secure Delete + Penghapusan Aman + + + + Case Sensitive Like + Like Peka Huruf Besar Kecil + + + + Journal Mode + Mode Jurnal + + + + Journal Size Limit + Batas Ukuran Jurnal + + + + Recursive Triggers + Trigger Rekursif + + + + Page Size + Ukuran Halaman + + + + Foreign Keys + Foreign Key + + + + Auto Vacuum + Vacuum Otomatis + + + + Max Page Count + Cacah Halaman Maks + + + + Checkpoint Full FSYNC + FSYNC Penuh Checkpoint + + + + + Off + Mati + + + + + Normal + Normal + + + + + Full + Penuh + + + + Default + Baku + + + + File + Berkas + + + + + Memory + Memori + + + + Delete + Hapus + + + + Truncate + Truncate + + + + Persist + Persist + + + + WAL + WAL + + + + Exclusive + Eksklusif + + + + Automatic Index + Indeks Otomatis + + + + Ignore Check Constraints + Abaikan Periksa Konstrain + + + + Full FSYNC + FSYNC Penuh + + + + WAL Auto Checkpoint + Checkpoint Otomatis WAL + + + + User Version + Versi Pengguna + + + + Synchronous + Sinkron + + + + None + Nihil + + + + Incremental + Inkremental + + + + Locking Mode + Mode Penguncian + + + + Add another database file to the current database connection Tambahkan berkas basis data lain ke koneksi basis data saat ini - + This button lets you add another database file to the current database connection Tombol ini memungkinkan Anda menambah berkas basis data lain ke koneksi basis data saat ini - + &Set Encryption... Atur Enkrip&si... - + SQLCipher &FAQ &FAQ SQLCipher - + Table(&s) to JSON... Tabel ke J&SON... - + Open Data&base Read Only... &Buka Basis Data Hanya-Baca... - + Save results Simpan hasil - + Save the results view Simpan view hasil - + This button lets you save the results of the last executed query Tombol ini memungkinkan Anda menyimpan hasil dari query yang terakhir dieksekusi - - + + Find text in SQL editor Cari teks dalam penyunting SQL - + Find Cari - + This button opens the search bar of the editor Tombol ini membuka bilah pencarian dari penyunting - + Ctrl+F Ctrl+F - - + + Find or replace text in SQL editor Cari atau ganti teks dalam penyunting SQL - + Find or replace Cari atau ganti - + This button opens the find/replace dialog for the current editor tab Tombol ini membuka dialog cari/ganti untuk tab penyunting saat ini - + Ctrl+H Ctrl+H - + Export to &CSV Ekspor ke &CSV - + Export to &JSON Ekspor ke &JSON - + Save as &view Simpan sebagai &view - + Save as view Simpan sebagai view - + Shows or hides the Project toolbar. Menampilkan atau menyembunyikan bilah alat Proyek. - + Extra DB Toolbar Bila Alat DB Ekstra - + &Open Database Buk&a Basis Data - + New In-&Memory Database Basis Data Dalam &Memori Baru - + Drag && Drop SELECT Query Seret && Jatuhkan Query SELECT - - + + When dragging fields from the same table or a single table, drop a SELECT query into the editor Ketika menyeret ruas dari tabel yang sama atau suatu tabel tunggal, menjatuhkan suatu query SELECT ke dalam penyunting - + Drag && Drop Qualified Names Seret && Jatuhkan Qualified Name - - + + Use qualified names (e.g. "Table"."Field") when dragging the objects and dropping them into the editor Pakai qualified name (mis. "Table"."Field") ketika menyeret objek dan menjatuhkan mereka ke dalam penyunting - + Drag && Drop Enquoted Names Seret && Jatuhkan Nama Berkutip - - + + Use escaped identifiers (e.g. "Table1") when dragging the objects and dropping them into the editor Pakai identifier berkutip (mis. "Table1") ketika menyeret objek dan menjatuhkan mereka ke dalam penyunting - + &Integrity Check Pemeriksaan &Integritas - + Runs the integrity_check pragma over the opened database and returns the results in the Execute SQL tab. This pragma does an integrity check of the entire database. Menjalankan pragma integrity_check atas basis data yang terbuka dan mengembalikan hasil dalam tab Jalankan SQL. Pragma ini melakukan pemeriksaan integritas dari seluruh basis data. - + &Foreign-Key Check Pemeriksaan &Foreign-Key - + Runs the foreign_key_check pragma over the opened database and returns the results in the Execute SQL tab Menjalankan pragma foreign_key_check atas basis data yang terbuka dan mengembalikan hasil dalam tab Jalankan SQL - + &Quick Integrity Check Pemeri&ksaan Cepat Integritas - + Run a quick integrity check over the open DB Menjalankan pemeriksaan cepat atas integritas pada DB yang terbuka - + Runs the quick_check pragma over the opened database and returns the results in the Execute SQL tab. This command does most of the checking of PRAGMA integrity_check but runs much faster. Menjalankan pragma quick_check atas basis data yang terbuka dan mengembalikan hasil dalam tab Jalankan SQL. Perintah ini melakukan hampir seluruh pemeriksaan dari PRAGMA integrity_check tapi berjalan jauh lebih cepat. - + &Optimize &Optimasikan - + Attempt to optimize the database Mencoba mengoptimasi basis data - + Runs the optimize pragma over the opened database. This pragma might perform optimizations that will improve the performance of future queries. Menjalankan pragma optimasi atas basis data yang dibuka. Pragma ini mungkin melakukan optimasi yang akan memperbaiki kinerja dari query di masa mendatang. - - + + Print Cetak - + Print text from current SQL editor tab Cetak teks dari tab penyunting SQL saat ini - + Open a dialog for printing the text in the current SQL editor tab Membuka suatu dialog untuk mencetak teks dalam tab penyunting SQL saat ini - + Print the structure of the opened database Cetak struktur dari basis data yang dibuka - + Open a dialog for printing the structure of the opened database Membuka suatu dialog untuk mencetak struktur dari basis data yang dibuka - - + + Ctrl+Shift+W Ctrl+Shift+W - + Table from CSV data in Clipboard... Tabel dari data CSV dalam Papan Klip... - + This treats the current clipboard contents as a CSV file and opens the same import wizard that is used for importing CSV data from a file. Ini memperlakukan konten papan klip saat ini sebagai suatu berkas CSV dan membuka wahana pandu impor yang sama dengan yang dipakai untuk mengimpor data CSV dari suatu berkas. - + Show &Row Counts Tampilkan Cacah Ba&ris - + This shows the number of rows for each table and view in the database. Ini menampilkan cacah baris bagi setiap tabel dan view dalam basis data. - + Save Database &As... Simpan Basis Data Seb&agai... - + Save the current database as a different file Menyimpan basis data saat ini sebagai suatu berkas yang berbeda - + Refresh Segarkan - + Reload the database structure Memuat ulang struktur basis data - + &Recently opened Ba&ru-baru ini dibuka - + Ctrl+T Ctrl+T - + SQL &Log &Log SQL @@ -3584,308 +3743,308 @@ Anda dapat menyeret pernyataan SQL dari kolom Skema dan menjatuhkan mereka ke da Sunting P&ragma - - + + E&xecute SQL This has to be equal to the tab title in all the main tabs Jalan&kan SQL - + &Recent Files Be&rkas Baru-baru Ini - + Show S&QL submitted by Tampilkan S&QL yang dikirim oleh - + &Plot &Plot - + &New Database &Basis Data Baru - - + + Ctrl+F4 Ctrl+F4 - + &Revert Changes Balikkan Pe&rubahan - + &Undo Tak Ja&di - - + + Undo last change to the database Batalkan perubahan terakhir ke basis data - + This action undoes the last change performed to the database in the Database Browser or in Execute SQL. Redoing is not possible. Aksi ini membatalkan perubahan terakhir yang dilakukan ke basis data dalam Peramban Basis Data atau dalam Jalankan SQL. Menjalankan ulang tidak mungkin. - + &Write Changes &Tulis Perubahan - + &Database from SQL file... Basis &data dari berkas SQL... - + &Table from CSV file... &Tabel dari berkas CSV... - + &Database to SQL file... Basis &data ke berkas SQL... - + &Table(s) as CSV file... &Tabel sebagai berkas CSV... - + &Create Table... &Buat Tabel... - + &Delete Table... &Hapus Tabel... - + &Modify Table... &Ubah Tabel... - + Open the Modify Table wizard, where it is possible to rename an existing table. It is also possible to add or delete fields from a table, as well as modify field names and types. Membuka wahana pandu Ubah Tabel, dimana dimungkinkan mengubah nama suatu tabel yang ada. Juga mungkin untuk menambah atau menghapus ruas dari suatu tabel, maupun mengubah nama dan tipe ruas. - + Create &Index... Buat &Indeks... - + W&hat's This? Apa &Ini? - + &About Perih&al - + This button opens a new tab for the SQL editor Tombol ini membuka suatu tab baru bagi penyunting SQL - + &Execute SQL &Eksekusi SQL - + Execute all/selected SQL Eksekusi semua/SQL yang dipilih - + This button executes the currently selected SQL statements. If no text is selected, all SQL statements are executed. Tombol ini mengeksekusi pernyataan SQL yang saat ini dipilih. Bila tidak ada teks yang dipilih, semua pernyataan dieksekusi. - + Ctrl+Shift+T Ctrl+Shift+T - - - + + + Save SQL file Simpan berkas SQL - + &Load Extension... &Muat Ekstensi... - + Ctrl+E Ctrl+E - + Export as CSV file Ekspor sebagai berkas CSV - + Export table as comma separated values file Ekspor tabel sebagai berkas nilai yang dipisah koma - - + + Save the current session to a file Simpan sesi saat ini ke suatu berkas - + Open &Project... Buka &Proyek... - - + + Load a working session from a file Muat suatu sesi kerja dari sebuah berkas - - + + Save SQL file as Simpan berkas SQL sebagai - + This button saves the content of the current SQL editor tab to a file Tombol ini menyimpan isi dari tab penyunting SQL saat ini ke sebuah berkas - + &Browse Table Ram&ban Tabel - + Copy Create statement Salin pernyataan Create - + Copy the CREATE statement of the item to the clipboard Salin pernyataan CREATE dari butir ke papan klip - + Ctrl+Return Ctrl+Return - + Ctrl+L Ctrl+L - - + + Ctrl+P Ctrl+P - + Ctrl+D Ctrl+D - + Ctrl+I Ctrl+I - + Encrypted Terenkripsi - + Read only Hanya baca - + Database file is read only. Editing the database is disabled. Berkas basis data hanya baca. Menyunting basis data dinonaktifkan. - + Database encoding Pengkodean basis data - + Database is encrypted using SQLCipher Basis data terenkripsi memakai SQLCipher - - + + Choose a database file Pilh suatu berkas basis data - - - + + + Choose a filename to save under Pilih suatu nama berkas untuk tempat menyimpan - + Error checking foreign keys after table modification. The changes will be reverted. Kesalahan saat memeriksa foreign key setelah modifikasi tabel. Perubahan akan dibalikkan. - + This table did not pass a foreign-key check.<br/>You should run 'Tools | Foreign-Key Check' and fix the reported issues. Tabel ini tidak lolos pemeriksaan foreign key.<br/>Anda mesti menjalankan 'Alat | Pemeriksaan Foreign Key' dan memperbaiki masalah-masalah yang dilaporkan. - - + + At line %1: Pada baris %1: - + Result: %2 Hasil: %2 - + Setting PRAGMA values or vacuuming will commit your current transaction. Are you sure? Menata nilai PRAGMA atau mem-vacuum akan meng-commit transaksi Anda saat ini. Anda yakin? - + Error while saving the database file. This means that not all changes to the database were saved. You need to resolve the following error first. %1 @@ -3894,452 +4053,452 @@ Anda yakin? %1 - + Are you sure you want to undo all changes made to the database file '%1' since the last save? Anda yakin ingin membatalkan semua perubahan yang dibuat ke berkas basis data '%1' sejak penyimpanan terakhir? - + Choose a file to import Pilih suatu berkas yang akan diimpor - + Text files(*.sql *.txt);;All files(*) Berkas teks(*.sql *.txt);;Semua berkas(*) - + Do you want to create a new database file to hold the imported data? If you answer no we will attempt to import the data in the SQL file to the current database. Apakah Anda ingin membuat suatu berkas basis data baru untuk menampung data yang diimpor? Bila Anda menjawab tidak kami akan mencoba mengimpor data dalam berkas SQL ke basis data saat ini. - + Automatically load the last opened DB file at startup - + Secara otomatis muat berkas DB yang terakhir dibuka saat awal mula - + You are still executing SQL statements. Closing the database now will stop their execution, possibly leaving the database in an inconsistent state. Are you sure you want to close the database? Anda masih mengeksekusi pernyataan SQL. Menutup basis data sekarang akan menghentikan eksekusi mereka, kemungkinkan meninggalkan basis data dalam keadaan tidak konsisten. Anda yakin hendak menutup basis data? - + Do you want to save the changes made to the project file '%1'? Apakah Anda ingin menyimpan perubahan yang dibuat ke berkas proyek '%1'? - + File %1 already exists. Please choose a different name. Berkas %1 sudah ada. Harap pilih nama lain. - + Error importing data: %1 Kesalahan saat mengimpor data: %1 - + Import completed. Impor selesai. - + Delete View Hapus View - + Modify View Ubah View - + Delete Trigger Hapus Trigger - + Modify Trigger Ubah Trigger - + Delete Index Hapus Indeks - + Modify Index Ubah Indeks - + Modify Table Ubah Tabel - + Do you want to save the changes made to SQL tabs in a new project file? Apakah Anda ingin menyimpan perubahan yang dibuat ke tab SQL dalam suatu berkas proyek baru? - + Do you want to save the changes made to the SQL file %1? Apakah Anda ingin menyimpan perubahan yang dibuat ke berkas SQL %1? - + Could not find resource file: %1 Tidak bisa menemukan berkas sumber daya: %1 - + Choose a project file to open Pilih sebuah berkas proyek untuk dibuka - + Could not open project file for writing. Reason: %1 Tidak bisa membuka berkas proyek untuk ditulisi. Alasan: %1 - + Busy (%1) Sibuk (%1) - + Setting PRAGMA values will commit your current transaction. Are you sure? Menata nilai PRAGMA akan meng-commit transaksi Anda saat ini. Anda yakin? - + Reset Window Layout Reset Tata Letak Jendela - - The database is currenctly busy. + + The database is currently busy. Basis data saat ini sibuk. - + Click here to interrupt the currently running query. Klik di sini untuk mengiterupsi query yang sedang berjalan. - + Ctrl+Alt+W Ctrl+Alt+W - + Could not open database file. Reason: %1 Tidak bisa membuka berkas basis data. Alasan: %1 - + In-Memory database Basis data dalam memori - + Choose a database file to save under Pilih suatu berkas basis data tempat menyimpan - + Error while saving the database to the new file. Kesalahan saat menyimpan basis data ke berkas baru. - + Are you sure you want to delete the table '%1'? All data associated with the table will be lost. Anda yakin ingin menghapus tabel '%1'? Semua data terkait dengan tabel akan hilang. - + Are you sure you want to delete the view '%1'? Anda yakin ingin menghapus view '%1'? - + Are you sure you want to delete the trigger '%1'? Anda yakin ingin menghapus trigger '%1'? - + Are you sure you want to delete the index '%1'? Anda yakin ingin menghapus indeks '%1'? - + Error: could not delete the table. Kesalahan: tidak bisa menghapus tabel. - + Error: could not delete the view. Kesalahan: tidak bisa menghapus view. - + Error: could not delete the trigger. Kesalahan: tidak bisa menghapus trigger. - + Error: could not delete the index. Kesalahan: tidak bisa menghapus indeks. - + Message from database engine: %1 Pesan dari mesin basis data: %1 - + Editing the table requires to save all pending changes now. Are you sure you want to save the database? Menyunting tabel memerlukan menyimpan semua perubahan tertunda sekarang. Anda yakin ingin menyimpan basis data? - + Edit View %1 Sunting View %1 - + Edit Trigger %1 Sunting Trigger %1 - + You are already executing SQL statements. Do you want to stop them in order to execute the current statements instead? Note that this might leave the database in an inconsistent state. Anda telah sedang mengeksekusi pernyataan SQL. Apakah Anda ingin menghentikan mereka untuk mengeksekusi pernyataan saat ini sebagai pengganti? Perhatikan bahwa ini mungkin meninggalkan basis data dalam keadaan yang tidak konsisten. - + -- EXECUTING SELECTION IN '%1' -- -- MENGEKSEKUSI PILIHAN DALAM '%1' -- - + -- EXECUTING LINE IN '%1' -- -- MENGEKSEKUSI BARIS DALAM '%1' -- - + -- EXECUTING ALL IN '%1' -- -- MENGEKSEKUSI SEMUA DALAM '%1' -- - + Result: %1 Hasil: %1 - + %1 rows returned in %2ms %1 baris dikembalikan dalam %2 ms - + Choose text files Pilih berkas teks - + Import completed. Some foreign key constraints are violated. Please fix them before saving. Impor selesai. Beberapa konstrain foreign key dilanggar. Harap perbaiki mereka sebelum menyimpan. - + Opened '%1' in read-only mode from recent file list Membuka '%1' dalam mode hanya baca dari daftar berkas terkini - + Opened '%1' from recent file list Membuka '%1' dari daftar berkas terkini - + &%1 %2%3 &%1 %2%3 - + (read only) (hanya baca) - + Open Database or Project Buka Basis Data atau Proyek - + Attach Database... Cantol Basis Data... - + Import CSV file(s)... Impor berkas CSV... - + Do you want to save the changes made to SQL tabs in the project file '%1'? Apakah Anda ingin menyimpan perubahan yang dibuat ke tab SQL dalam berkas proyek '%1'? - + The statements in the tab '%1' are still executing. Closing the tab will stop the execution. This might leave the database in an inconsistent state. Are you sure you want to close the tab? Pernyataan dalam tab '%1' masih sedang dieksekusi. Menutup tab akan menghentikan eksekusi. Ini mungkin membuat basis data dalam keadaan tidak konsisten. Anda yakin ingin menutup tab? - + Select SQL file to open Pilih berkas SQL yang akan dibuka - + DB file '%1' could not be opened Berkas DB '%1' tidak dapat dibuka - + This project file is using an old file format because it was created using DB Browser for SQLite version 3.10 or lower. Loading this file format is no longer fully supported. If you want to load it completely, please use DB Browser for SQLite version 3.12 to convert it to the new file format. Berkas proyek ini memakai format berkas lama karena itu dibuat memakai Peramban DB untuk SQLite versi 3.10 atau sebelumnya. Memuat format berkas ini tidak lagi didukung sepenuhnya. Bila Anda ingin memuatnya secara lengkap, harap gunakan Peramban DB untuk SQLite versi 3.12 untuk mengubahnya ke format berkas baru. - + Table '%1' not found; settings ignored Tabel '%1' tidak ditemukan, pengaturan diabaikan - + -- Reference to file "%1" (not supported by this version) -- -- Referensi ke berkas "%1" (tidak didukung oleh versi ini) -- - + Yes. Don't ask again Ya. Jangan tanyakan lagi - + This action will open a new SQL tab with the following statements for you to edit and run: Aksi ini akan membuka sebuah tab SQL baru dengan pernyataan berikut untuk Anda sunting dan jalankan: - + Rename Tab Ubah Nama Tab - + Duplicate Tab Duplikatkan Tab - + Close Tab Tutup Tab - + Opening '%1'... Membuka '%1'... - + There was an error opening '%1'... Ada kesalahan saat membuka '%1'... - + Value is not a valid URL or filename: %1 Nilai bukanlah URL atau nama berkas yang valid: %1 - + Select file name Pilih nama berkas - + Ctrl+Tab Ctrl+Tab - + Ctrl+Shift+Tab Ctrl+Shift+Tab - + Clear List Bersihkan Daftar - + Window Layout Tata Letak Jendela - + Ctrl+Alt+0 Ctrl+Alt+0 - + Simplify Window Layout Sederhanakan Tata Letak Jendela - - Shift+Alt+0 - Shift+Alt+0 + + Alt+Shift+0 + Alt+Shift+0 - + Dock Windows at Bottom Tambatkan Jendela ke Bawah - + Dock Windows at Left Side Tambatkan Jendela ke Sisi Kiri - + Dock Windows at Top Tambatkan Jendela ke Atas - + Select the action to apply to the dropped file(s). <br/>Note: only 'Import' will process more than one file. Note for translation: Although there is no %n in the original, you can use the numerus-form to adjust 'files(s)' and remove the note when n = 1. Including %n in the translation will also work. @@ -4347,48 +4506,48 @@ Anda yakin ingin menyimpan basis data? - + Select extension file Pilih berkas ekstensi - + Extension successfully loaded. Ekstensi sukses dimuat. - + Error loading extension: %1 Kesalahan saat memuat ekstensi: %1 - - + + Don't show again Jangan tampilkan lagi - + New version available. Tersedia versi baru. - + A new DB Browser for SQLite version is available (%1.%2.%3).<br/><br/>Please download at <a href='%4'>%4</a>. Tersedia sebuah versi baru Peramban DB bagi SQLite (%1.%2.%3).<br/><br/>Harap unduh di <a href='%4'>%4</a>. - + Project saved to file '%1' Proyek disimpan ke berkas '%1' - + Collation needed! Proceed? Perlu kolasi! Lanjutkan? - + A table in this database requires a special collation function '%1' that this application can't provide without further knowledge. If you choose to proceed, be aware bad things can happen to your database. Create a backup! @@ -4397,57 +4556,57 @@ Bila Anda memilih melanjutkan, sadari bahwa hal-hal buruk dapat terjadi ke basis Buat suatu cadangan! - + creating collation membuat kolasi - + Set a new name for the SQL tab. Use the '&&' character to allow using the following character as a keyboard shortcut. Menata sebuah nama baru bagi tab SQL. Gunakan karakter '&&' untuk mengizinkan memakai karakter berikut sebagai suatu pintasan papan ketik. - + Please specify the view name Harap tentukan nama view - + There is already an object with that name. Please choose a different name. Sudah ada objek dengan nama itu. Harap pilih nama lain. - + View successfully created. View sukses dibuat. - + Error creating view: %1 Kesalahan saat membuat view: %1 - + This action will open a new SQL tab for running: Aksi ini akan membuka sebuah tab SQL baru untuk menjalankan: - + Press Help for opening the corresponding SQLite reference page. Tekan Bantuan untuk membuka halaman referensi SQLite yang terkait. - + DB Browser for SQLite project file (*.sqbpro) Berkas proyek Peramban DB bagi SQLite (*.sqbpro) - + Execution finished with errors. Eksekusi selesai dengan kesalahan. - + Execution finished without errors. Eksekusi selesai tanpa kesalahan. @@ -4642,102 +4801,107 @@ Pilih sumbu atau label sumbu untuk menyeret dan memperbesar hanya dalam orientas - + Load all data and redraw plot Muat semua data dan gambar ulang plot - - - + + + Row # Baris # - + Copy Salin - + Print... Cetak... - + + Help + Bantuan + + + Show legend Tampilkan legenda - + Stacked bars Batang bertumpuk - + Fixed number format Format bilangan tetap - + Date/Time Tanggal/Waktu - + Date Tanggal - + Time Waktu - - + + Numeric Numerik - + Label Label - + Invalid Tidak valid - + Load all data and redraw plot. Warning: not all data has been fetched from the table yet due to the partial fetch mechanism. Muat semua data dan gambar ulang plot. Peringatan: belum semua data diambil dari tabel karena mekanisme pengambilan parsial. - + Choose an axis color Pilih suatu warna sumbu - + Choose a filename to save under Pilih suatu nama berkas untuk tempat menyimpan - + PNG(*.png);;JPG(*.jpg);;PDF(*.pdf);;BMP(*.bmp);;All Files(*) PNG(*.png);;JPG(*.jpg);;PDF(*.pdf);;BMP(*.bmp);;Semua Berkas(*) - + There are curves in this plot and the selected line style can only be applied to graphs sorted by X. Either sort the table or query by X to remove curves or select one of the styles supported by curves: None or Line. Ada kurva dalam plot ini dan gaya garis yang dipilih hanya bisa diterapkan ke grafik yang diurut berdasarkan X. Urutkan tabel atau query berdasarkan X untuk menghapus kurva atau pilih satu dari gaya yang didukung oleh kurva: Nihil atau Garis. - + Loading all remaining data for this table took %1ms. Memuat semua sisa data dari tabel ini makan waktu %1 ms. @@ -5377,7 +5541,7 @@ Dapat diatur ke 0 untuk menonaktifkan pelengkapan. Select built-in extensions to load for every database: - + Pilih ekstensi bawaan yang akan dimuat untuk setiap basis data: @@ -5476,1963 +5640,397 @@ Dapat diatur ke 0 untuk menonaktifkan pelengkapan. File - Berkas - - - - Subject Common Name - Common Name Subjek - - - - Issuer CN - CN Penerbit - - - - Issuer Common Name - Common Name Penerbit - - - - Clone databases into - Klon basis data ke - - - - - Choose a directory - Pilih suatu direktori - - - - - The language will change after you restart the application. - Bahasa akan berubah setelah Anda menjalankan ulang aplikasi. - - - - Select extension file - Pilih berkas ekstensi - - - - Extensions(*.so *.dylib *.dll);;All files(*) - Ekstensi(*.so *.dylib *.dll);;Semua berkas(*) - - - - Import certificate file - Impor berkas sertifikat - - - - No certificates found in this file. - Tidak ditemukan sertifikat dalam berkas ini. - - - - Are you sure you want do remove this certificate? All certificate data will be deleted from the application settings! - Anda yakin hendak menghapus sertifikat ini? Semua data sertifikat akan dihapus dari pengaturan aplikasi! - - - - Are you sure you want to clear all the saved settings? -All your preferences will be lost and default values will be used. - Anda yakin hendak membersihkan semua pengaturan yang disimpan? -Semua preferensi Anda akan hilang dan nilai-nilai baku akan dipakai. - - - - Save Settings File - Simpan Berkas Pengaturan - - - - - Initialization File (*.ini) - Berkas Inisialisasi (*.ini) - - - - The settings file has been saved in location : - - Berkas pengaturan telah disimpan di lokasi : - - - - - Open Settings File - Buka Berkas Pengaturan - - - - The settings file was loaded properly. - Berkas pengaturan dimuat secara benar. - - - - The selected settings file is not a normal settings file. -Please check again. - Berkas pengaturan yang dipilih bukanlah berkas pengaturan yang normal. -Harap periksa lagi. - - - - ProxyDialog - - - Proxy Configuration - Konfigurasi Proksi - - - - Pro&xy Type - Tipe Pro&ksi - - - - Host Na&me - Na&ma Host - - - - Port - Port - - - - Authentication Re&quired - &Perlu Autentikasi - - - - &User Name - Nama Pengg&una - - - - Password - Kata Sandi - - - - None - Nihil - - - - System settings - Pengaturan sistem - - - - HTTP - HTTP - - - - Socks v5 - Socks v5 - - - - QObject - - - Error importing data - Kesalahan saat mengimpor data - - - - from record number %1 - dari record nomor %1 - - - - . -%1 - . -%1 - - - - Importing CSV file... - Mengimpor berkas CSV... - - - - Cancel - Batal - - - - All files (*) - Semua berkas (*) - - - - SQLite database files (*.db *.sqlite *.sqlite3 *.db3) - Berkas basis data SQLite (*.db *.sqlite *.sqlite3 *.db3) - - - - Left - Kiri - - - - Right - Kanan - - - - Center - Tengah - - - - Justify - Rata Kiri Kanan - - - - SQLite Database Files (*.db *.sqlite *.sqlite3 *.db3) - Berkas Basis Data SQLite (*.db *.sqlite *.sqlite3 *.db3) - - - - DB Browser for SQLite Project Files (*.sqbpro) - Berkas proyek Peramban DB bagi SQLite (*.sqbpro) - - - - SQL Files (*.sql) - Berkas SQL (*.sql) - - - - All Files (*) - Semua Berkas (*) - - - - Text Files (*.txt) - Berkas Teks (*.txt) - - - - Comma-Separated Values Files (*.csv) - Berkas Nilai yang Dipisah Koma (*.csv) - - - - Tab-Separated Values Files (*.tsv) - Berkas Nilai yang Dipisah Tab (*.tsv) - - - - Delimiter-Separated Values Files (*.dsv) - Berkas Nilai yang Dipisah Pembatas (*.dsv) - - - - Concordance DAT files (*.dat) - Berkas DAT Concordance (*.dat) - - - - JSON Files (*.json *.js) - Berkas JSON (*.json *.js) - - - - XML Files (*.xml) - Berkas XML (*.xml) - - - - Binary Files (*.bin *.dat) - Berkas Biner (*.bin *.dat) - - - - SVG Files (*.svg) - Berkas SVG (*.svg) - - - - Hex Dump Files (*.dat *.bin) - Berkas Hex Dump (*.dat *.bin) - - - - Extensions (*.so *.dylib *.dll) - Ekstensi (*.so *.dylib *.dll) - - - - Initialization File (*.ini) - Berkas Inisialisasi (*.ini) - - - - QsciCommand - - - Move down one line - - - - - Extend selection down one line - - - - - Extend rectangular selection down one line - - - - - Scroll view down one line - - - - - Move up one line - - - - - Extend selection up one line - - - - - Extend rectangular selection up one line - - - - - Scroll view up one line - - - - - Scroll to start of document - - - - - Scroll to end of document - - - - - Scroll vertically to centre current line - - - - - Move down one paragraph - - - - - Extend selection down one paragraph - - - - - Move up one paragraph - - - - - Extend selection up one paragraph - - - - - Move left one character - - - - - Extend selection left one character - - - - - Extend rectangular selection left one character - - - - - Move right one character - - - - - Extend selection right one character - - - - - Extend rectangular selection right one character - - - - - Move left one word - - - - - Extend selection left one word - - - - - Move right one word - - - - - Extend selection right one word - - - - - Move to end of previous word - - - - - Extend selection to end of previous word - - - - - Move to end of next word - - - - - Extend selection to end of next word - - - - - Move left one word part - - - - - Extend selection left one word part - - - - - Move right one word part - - - - - Extend selection right one word part - - - - - Move to start of document line - - - - - Extend selection to start of document line - - - - - Extend rectangular selection to start of document line - - - - - Move to start of display line - - - - - Extend selection to start of display line - - - - - Move to start of display or document line - - - - - Extend selection to start of display or document line - - - - - Move to first visible character in document line - - - - - Extend selection to first visible character in document line - - - - - Extend rectangular selection to first visible character in document line - - - - - Move to first visible character of display in document line - - - - - Extend selection to first visible character in display or document line - - - - - Move to end of document line - - - - - Extend selection to end of document line - - - - - Extend rectangular selection to end of document line - - - - - Move to end of display line - - - - - Extend selection to end of display line - - - - - Move to end of display or document line - - - - - Extend selection to end of display or document line - - - - - Move to start of document - - - - - Extend selection to start of document - - - - - Move to end of document - - - - - Extend selection to end of document - - - - - Move up one page - - - - - Extend selection up one page - - - - - Extend rectangular selection up one page - - - - - Move down one page - - - - - Extend selection down one page - - - - - Extend rectangular selection down one page - - - - - Stuttered move up one page - - - - - Stuttered extend selection up one page - - - - - Stuttered move down one page - - - - - Stuttered extend selection down one page - - - - - Delete current character - - - - - Delete previous character - - - - - Delete previous character if not at start of line - - - - - Delete word to left - - - - - Delete word to right - - - - - Delete right to end of next word - - - - - Delete line to left - - - - - Delete line to right - - - - - Delete current line - - - - - Cut current line - - - - - Copy current line - - - - - Transpose current and previous lines - - - - - Duplicate the current line - - - - - Select all - - - - - Move selected lines up one line - - - - - Move selected lines down one line - - - - - Duplicate selection - - - - - Convert selection to lower case - - - - - Convert selection to upper case - - - - - Cut selection - - - - - Copy selection - - - - - Paste - Tempel - - - - Toggle insert/overtype - - - - - Insert newline - - - - - Formfeed - - - - - Indent one level - - - - - De-indent one level - - - - - Cancel - Batal - - - - Undo last command - - - - - Redo last command - - - - - Zoom in - - - - - Zoom out - - - - - QsciLexerCPP - - - Default - Baku - - - - Inactive default - - - - - C comment - - - - - Inactive C comment - - - - - C++ comment - - - - - Inactive C++ comment - - - - - JavaDoc style C comment - - - - - Inactive JavaDoc style C comment - - - - - Number - - - - - Inactive number - - - - - Keyword - Kata kunci - - - - Inactive keyword - - - - - Double-quoted string - - - - - Inactive double-quoted string - - - - - Single-quoted string - - - - - Inactive single-quoted string - - - - - IDL UUID - - - - - Inactive IDL UUID - - - - - Pre-processor block - - - - - Inactive pre-processor block - - - - - Operator - - - - - Inactive operator - - - - - Identifier - Identifier - - - - Inactive identifier - - - - - Unclosed string - - - - - Inactive unclosed string - - - - - C# verbatim string - - - - - Inactive C# verbatim string - - - - - JavaScript regular expression - - - - - Inactive JavaScript regular expression - - - - - JavaDoc style C++ comment - - - - - Inactive JavaDoc style C++ comment - - - - - Secondary keywords and identifiers - - - - - Inactive secondary keywords and identifiers - - - - - JavaDoc keyword - - - - - Inactive JavaDoc keyword - - - - - JavaDoc keyword error - - - - - Inactive JavaDoc keyword error - - - - - Global classes and typedefs - - - - - Inactive global classes and typedefs - - - - - C++ raw string - - - - - Inactive C++ raw string - - - - - Vala triple-quoted verbatim string - - - - - Inactive Vala triple-quoted verbatim string - - - - - Pike hash-quoted string - - - - - Inactive Pike hash-quoted string - - - - - Pre-processor C comment - - - - - Inactive pre-processor C comment - - - - - JavaDoc style pre-processor comment - - - - - Inactive JavaDoc style pre-processor comment - - - - - User-defined literal - - - - - Inactive user-defined literal - - - - - Task marker - - - - - Inactive task marker - - - - - Escape sequence - - - - - Inactive escape sequence - - - - - QsciLexerHTML - - - HTML default - - - - - Tag - - - - - Unknown tag - - - - - Attribute - - - - - Unknown attribute - - - - - HTML number - - - - - HTML double-quoted string - - - - - HTML single-quoted string - - - - - Other text in a tag - - - - - HTML comment - - - - - Entity - - - - - End of a tag - - - - - Start of an XML fragment - - - - - End of an XML fragment - - - - - Script tag - - - - - Start of an ASP fragment with @ - - - - - Start of an ASP fragment - - - - - CDATA - - - - - Start of a PHP fragment - - - - - Unquoted HTML value - - - - - ASP X-Code comment - - - - - SGML default - - - - - SGML command - - - - - First parameter of an SGML command - - - - - SGML double-quoted string - - - - - SGML single-quoted string - - - - - SGML error - - - - - SGML special entity - - - - - SGML comment - - - - - First parameter comment of an SGML command - - - - - SGML block default - - - - - Start of a JavaScript fragment - - - - - JavaScript default - - - - - JavaScript comment - - - - - JavaScript line comment - - - - - JavaDoc style JavaScript comment - - - - - JavaScript number - - - - - JavaScript word - - - - - JavaScript keyword - - - - - JavaScript double-quoted string - - - - - JavaScript single-quoted string - - - - - JavaScript symbol - - - - - JavaScript unclosed string - - - - - JavaScript regular expression - - - - - Start of an ASP JavaScript fragment - - - - - ASP JavaScript default - - - - - ASP JavaScript comment - - - - - ASP JavaScript line comment - - - - - JavaDoc style ASP JavaScript comment - - - - - ASP JavaScript number - - - - - ASP JavaScript word - - - - - ASP JavaScript keyword - - - - - ASP JavaScript double-quoted string - - - - - ASP JavaScript single-quoted string - - - - - ASP JavaScript symbol - - - - - ASP JavaScript unclosed string - - - - - ASP JavaScript regular expression - - - - - Start of a VBScript fragment - - - - - VBScript default - - - - - VBScript comment - - - - - VBScript number - - - - - VBScript keyword - - - - - VBScript string - - - - - VBScript identifier - - - - - VBScript unclosed string - - - - - Start of an ASP VBScript fragment - - - - - ASP VBScript default - - - - - ASP VBScript comment - - - - - ASP VBScript number - - - - - ASP VBScript keyword - - - - - ASP VBScript string - - - - - ASP VBScript identifier - - - - - ASP VBScript unclosed string - - - - - Start of a Python fragment - - - - - Python default - - - - - Python comment - - - - - Python number - - - - - Python double-quoted string - - - - - Python single-quoted string - - - - - Python keyword - - - - - Python triple double-quoted string - - - - - Python triple single-quoted string - - - - - Python class name - - - - - Python function or method name - - - - - Python operator - - - - - Python identifier - - - - - Start of an ASP Python fragment - - - - - ASP Python default - - - - - ASP Python comment - - - - - ASP Python number - - - - - ASP Python double-quoted string - - - - - ASP Python single-quoted string - - - - - ASP Python keyword - - - - - ASP Python triple double-quoted string - + Berkas - - ASP Python triple single-quoted string - + + Subject Common Name + Common Name Subjek - - ASP Python class name - + + Issuer CN + CN Penerbit - - ASP Python function or method name - + + Issuer Common Name + Common Name Penerbit - - ASP Python operator - + + Clone databases into + Klon basis data ke - - ASP Python identifier - + + + Choose a directory + Pilih suatu direktori - - PHP default - + + + The language will change after you restart the application. + Bahasa akan berubah setelah Anda menjalankan ulang aplikasi. - - PHP double-quoted string - + + Select extension file + Pilih berkas ekstensi - - PHP single-quoted string - + + Extensions(*.so *.dylib *.dll);;All files(*) + Ekstensi(*.so *.dylib *.dll);;Semua berkas(*) - - PHP keyword - + + Import certificate file + Impor berkas sertifikat - - PHP number - + + No certificates found in this file. + Tidak ditemukan sertifikat dalam berkas ini. - - PHP variable - + + Are you sure you want do remove this certificate? All certificate data will be deleted from the application settings! + Anda yakin hendak menghapus sertifikat ini? Semua data sertifikat akan dihapus dari pengaturan aplikasi! - - PHP comment - + + Are you sure you want to clear all the saved settings? +All your preferences will be lost and default values will be used. + Anda yakin hendak membersihkan semua pengaturan yang disimpan? +Semua preferensi Anda akan hilang dan nilai-nilai baku akan dipakai. - - PHP line comment - + + Save Settings File + Simpan Berkas Pengaturan - - PHP double-quoted variable - + + + Initialization File (*.ini) + Berkas Inisialisasi (*.ini) - - PHP operator - + + The settings file has been saved in location : + + Berkas pengaturan telah disimpan di lokasi : + - - - QsciLexerJSON - - Default - Baku + + Open Settings File + Buka Berkas Pengaturan - - Number - + + The settings file was loaded properly. + Berkas pengaturan dimuat secara benar. - - String - String + + The selected settings file is not a normal settings file. +Please check again. + Berkas pengaturan yang dipilih bukanlah berkas pengaturan yang normal. +Harap periksa lagi. + + + ProxyDialog - - Unclosed string - + + Proxy Configuration + Konfigurasi Proksi - - Property - + + Pro&xy Type + Tipe Pro&ksi - - Escape sequence - + + Host Na&me + Na&ma Host - - Line comment - + + Port + Port - - Block comment - + + Authentication Re&quired + &Perlu Autentikasi - - Operator - + + &User Name + Nama Pengg&una - - IRI - + + Password + Kata Sandi - - JSON-LD compact IRI - + + None + Nihil - - JSON keyword - + + System settings + Pengaturan sistem - - JSON-LD keyword - + + HTTP + HTTP - - Parsing error - + + SOCKS5 + SOCKS5 - QsciLexerJavaScript + QObject - - Regular expression - Ekspresi reguler + + Error importing data + Kesalahan saat mengimpor data - - - QsciLexerPython - - Default - Baku + + from record number %1 + dari record nomor %1 - - Comment - Komentar + + . +%1 + . +%1 - - Number - + + Importing CSV file... + Mengimpor berkas CSV... - - Double-quoted string - + + Cancel + Batal - - Single-quoted string - + + All files (*) + Semua berkas (*) - - Keyword - Kata kunci + + SQLite database files (*.db *.sqlite *.sqlite3 *.db3) + Berkas basis data SQLite (*.db *.sqlite *.sqlite3 *.db3) - - Triple single-quoted string - + + Left + Kiri - - Triple double-quoted string - + + Right + Kanan - - Class name - + + Center + Tengah - - Function or method name - + + Justify + Rata Kiri Kanan - - Operator - + + SQLite Database Files (*.db *.sqlite *.sqlite3 *.db3) + Berkas Basis Data SQLite (*.db *.sqlite *.sqlite3 *.db3) - - Identifier - Identifier + + DB Browser for SQLite Project Files (*.sqbpro) + Berkas proyek Peramban DB bagi SQLite (*.sqbpro) - - Comment block - + + SQL Files (*.sql) + Berkas SQL (*.sql) - - Unclosed string - + + All Files (*) + Semua Berkas (*) - - Highlighted identifier - + + Text Files (*.txt) + Berkas Teks (*.txt) - - Decorator - + + Comma-Separated Values Files (*.csv) + Berkas Nilai yang Dipisah Koma (*.csv) - - Double-quoted f-string - + + Tab-Separated Values Files (*.tsv) + Berkas Nilai yang Dipisah Tab (*.tsv) - - Single-quoted f-string - + + Delimiter-Separated Values Files (*.dsv) + Berkas Nilai yang Dipisah Pembatas (*.dsv) - - Triple single-quoted f-string - + + Concordance DAT files (*.dat) + Berkas DAT Concordance (*.dat) - - Triple double-quoted f-string - + + JSON Files (*.json *.js) + Berkas JSON (*.json *.js) - - - QsciLexerSQL - - Default - Baku + + XML Files (*.xml) + Berkas XML (*.xml) - - Comment - Komentar + + Binary Files (*.bin *.dat) + Berkas Biner (*.bin *.dat) - - Comment line - + + SVG Files (*.svg) + Berkas SVG (*.svg) - - JavaDoc style comment - + + Hex Dump Files (*.dat *.bin) + Berkas Hex Dump (*.dat *.bin) - - Number - + + Extensions (*.so *.dylib *.dll) + Ekstensi (*.so *.dylib *.dll) - - Keyword - Kata kunci + + Initialization File (*.ini) + Berkas Inisialisasi (*.ini) + + + QsciCommand - - Double-quoted string - + Paste + Tempel - - Single-quoted string - + Cancel + Batal + + + QsciLexerCPP - - SQL*Plus keyword - + Default + Baku - - SQL*Plus prompt - + Keyword + Kata kunci - - Operator - + Identifier + Identifier + + + QsciLexerJSON - - Identifier - Identifier + Default + Baku - - SQL*Plus comment - + String + String + + + QsciLexerJavaScript - - # comment line - + Regular expression + Ekspresi reguler + + + QsciLexerPython - - JavaDoc keyword - + Default + Baku - - JavaDoc keyword error - + Comment + Komentar - - User defined 1 - + Keyword + Kata kunci - - User defined 2 - + Identifier + Identifier + + + QsciLexerSQL - - User defined 3 - + Default + Baku - - User defined 4 - + Comment + Komentar - - Quoted identifier - + Keyword + Kata kunci - - Quoted operator - + Identifier + Identifier QsciScintilla - &Undo - Tak Ja&di - - - - &Redo - - - - - Cu&t - - - - - &Copy - - - - - &Paste - - - - - Delete - + Tak Ja&di - Select All - Pilih Semua + Pilih Semua @@ -7827,26 +6425,26 @@ Anda yakin ingin melanjutkan? Harap masukkan frasa sandi bagi sertifikat klien ini untuk mengautentikasi. - + Cancel Batal - + Uploading remote database to %1 Mengunggah basis data remote ke %1 - + Downloading remote database from %1 Mengunduh basis data remote dari %1 - + Error: Cannot open the file for sending. Kesalahan: Tidak bisa membuka berkas untuk pengiriman. @@ -8051,12 +6649,12 @@ Anda yakin ingin melanjutkan? Ctrl+PgUp - Ctrl+PgUp + Ctrl+PgUp Ctrl+PgDown - Ctrl+PgDown + Ctrl+PgDown @@ -8581,32 +7179,32 @@ Penggunaan fungsi ini mesti diotorisasi dari Preferensi. memuat... - + References %1(%2) Hold %3Shift and click to jump there Mengacu %1(%2) Tahan Shift%3 dan klik untuk melompat ke sana - + Error changing data: %1 Kesalahan saat mengubah data: %1 - + retrieving list of columns mengambil daftar kolom - + Fetching data... Mengambil data... - - + + Cancel Batal @@ -8943,12 +7541,12 @@ Tahan Shift%3 dan klik untuk melompat ke sana - <html><head/><body><p>This button creates a new record in the database. Hold the mouse button to open a pop-up menu of different options:</p><ul><li><span style=" font-weight:600;">New Record</span>: insert a new record with default values in the database.</li><li><span style=" font-weight:600;">Insert Values...</span>: open a dialog for entering values before they are inserted in the database. This allows to enter values acomplishing the different constraints. This dialog is also open if the <span style=" font-weight:600;">New Record</span> option fails due to these constraints.</li></ul></body></html> + <html><head/><body><p>This button creates a new record in the database. Hold the mouse button to open a pop-up menu of different options:</p><ul><li><span style=" font-weight:600;">New Record</span>: insert a new record with default values in the database.</li><li><span style=" font-weight:600;">Insert Values...</span>: open a dialog for entering values before they are inserted in the database. This allows to enter values accomplishing the different constraints. This dialog is also open if the <span style=" font-weight:600;">New Record</span> option fails due to these constraints.</li></ul></body></html> <html><head/><body><p>Tombol ini membuat sebuah record baru dalam basis data. Tahan tombol tetikus untuk membuka sebuah menu pop-up dengan opsi-opsi berbeda:</p><ul><li><span style=" font-weight:600;">Record Baru</span>: menyisipkan sebuah record baru dengan nilai-nilai baku dalam basis data.</li><li><span style=" font-weight:600;">Sisipkan Nilai...</span>: membuka suatu dialog untuk memasukkan nilai-nilai sebelum mereka disisipkan dalam basis data. Ini memungkinkan memasukkan nilai-nilai yang memenuhi konstrain lain. Dialog ini juga dibuka bila opsi <span style=" font-weight:600;">Record Baru</span> gagal karena konstrain ini.</li></ul></body></html> - + Delete Record Hapus Record @@ -9025,8 +7623,8 @@ Tahan Shift%3 dan klik untuk melompat ke sana - <html><head/><body><p>This popup menu provides the following options applying to the currently browsed and filtered table:</p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Export to CSV: this option exports the data of the browsed table as currently displayed (after filters, display formats and order column) to a CSV file.</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Save as view: this option saves the current setting of the browsed table (filters, display formats and order column) as an SQL view that you can later browse or use in SQL statements.</li></ul></body></html> - <html><head/><body><p>Menu popup ini menyediakan opsi-opsi berikut yang diterapkan ke tabel yang saat ini diramban dan disaring:</p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Ekspor ke CSV: opsi ini mengekspor data dari tabel yang diramban sebagaimana saat ini ditampilkan (setelah penyaring, format tampilan, dan urutan kolom) ke sebuah berkas CSV.</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Simpan sebagai view: opsi ini menyimpan pengaturan saat ini dari tabel yang diramban (penyaring, format tampilan, dan urutan kolom) sebagai sebuah view SQL yang nanti akan dapat Anda ramban atau pakai dalam pernyataan SQL.</li></ul></body></html> + <html><head/><body><p>This pop-up menu provides the following options applying to the currently browsed and filtered table:</p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Export to CSV: this option exports the data of the browsed table as currently displayed (after filters, display formats and order column) to a CSV file.</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Save as view: this option saves the current setting of the browsed table (filters, display formats and order column) as an SQL view that you can later browse or use in SQL statements.</li></ul></body></html> + <html><head/><body><p>Menu pop-up ini menyediakan opsi-opsi berikut yang diterapkan ke tabel yang saat ini diramban dan disaring:</p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Ekspor ke CSV: opsi ini mengekspor data dari tabel yang diramban sebagaimana saat ini ditampilkan (setelah penyaring, format tampilan, dan urutan kolom) ke sebuah berkas CSV.</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Simpan sebagai view: opsi ini menyimpan pengaturan saat ini dari tabel yang diramban (penyaring, format tampilan, dan urutan kolom) sebagai sebuah view SQL yang nanti akan dapat Anda ramban atau pakai dalam pernyataan SQL.</li></ul></body></html> @@ -9050,7 +7648,7 @@ Tahan Shift%3 dan klik untuk melompat ke sana - + Set encoding Atur pengkodean @@ -9313,96 +7911,96 @@ Tahan Shift%3 dan klik untuk melompat ke sana . Jumlah: %1; Rerata: %2; Min: %3; Maks: %4 - + Conditional formats for "%1" Format bersyarat bagi "%1" - + determining row count... menentukan cacah baris... - + %L1 - %L2 of >= %L3 %L1 - %L2 dari >= %L3 - + %L1 - %L2 of %L3 %L1 - %L2 dari %L3 - + (clipped at %L1 rows) (dipangkas pada %L1 baris) - + Please enter a pseudo-primary key in order to enable editing on this view. This should be the name of a unique column in the view. Harap masukkan suatu kunci primer pseudo agar memungkinkan penyuntingan pada view ini. Ini mesti berupa nama dari sebuah kolom unik dalam view. - + Delete Records Hapus Record - + Duplicate records Duplikatkan record - + Duplicate record Duplikatkan record - + Ctrl+" Ctrl+" - + Adjust rows to contents Setel baris ke isi - + Error deleting record: %1 Kesalahan saat menghapus record: %1 - + Please select a record first Harap pilih suatu record terlebih dahulu - + Please choose a new encoding for all tables. Harap pilih suatu enkoding baru bagi semua tabel. - + Please choose a new encoding for this table. Harap pilih suatu enkoding baru bagi tabel ini. - + %1 Leave the field empty for using the database encoding. %1 Biarkan ruas kosong untuk memakai enkoding basis data. - + This encoding is either not valid or not supported. Enkoding ini tidak valid atau tidak didukung. - + %1 replacement(s) made. %1 penggantian dibuat. @@ -9430,24 +8028,6 @@ Biarkan ruas kosong untuk memakai enkoding basis data. Mengatur sebuah nama baru bagi peramban data. Gunakan karakter '&&' untuk mengizinkan penggunaan karakter berikut sebagai pintasan papan ketik. - - UndoStack - - - Inserting %1 bytes - - - - - Delete %1 chars - - - - - Overwrite %1 chars - - - VacuumDialog diff --git a/src/translations/sqlb_it.ts b/src/translations/sqlb_it.ts index d238593d3..a4daa32f1 100644 --- a/src/translations/sqlb_it.ts +++ b/src/translations/sqlb_it.ts @@ -15,8 +15,8 @@ - <html><head/><body><p>DB Browser for SQLite is an open source, freeware visual tool used to create, design and edit SQLite database files.</p><p>It is bi-licensed under the Mozilla Public License Version 2, as well as the GNU General Public License Version 3 or later. You can modify or redistribute it under the conditions of these licenses.</p><p>See <a href="https://www.gnu.org/licenses/gpl.html"><span style=" text-decoration: underline; color:#0000ff;">http://www.gnu.org/licenses/gpl.html</span></a> and <a href="https://www.mozilla.org/MPL/2.0/index.txt"><span style=" text-decoration: underline; color:#0000ff;">https://www.mozilla.org/MPL/2.0/index.txt</span></a> for details.</p><p>For more information on this program please visit our website at: <a href="https://sqlitebrowser.org"><span style=" text-decoration: underline; color:#0000ff;">http://sqlitebrowser.org</span></a></p><p><span style=" font-size:small;">This software uses the GPL/LGPL Qt Toolkit from </span><a href="http://qt-project.org/"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://qt-project.org/</span></a><span style=" font-size:small;"><br/>See </span><a href="https://doc.qt.io/qt-5/licensing.html"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://qt-project.org/doc/qt-5/licensing.html</span></a><span style=" font-size:small;"> for licensing terms and information.</span></p><p><span style=" font-size:8pt;">We use the nalgeon/sqlean library for SQLite extensions support.<br/>This library is licensed under the MIT license, see the following for more information:<br/></span><a href="https://github.com/nalgeon/sqlean"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">https://github.com/nalgeon/sqlean</span></a></p><p><span style=" font-size:small;">It also uses the Pastel SVG icon set by Michael Buckley under a Creative Commons Attribution Share Alike 4.0 license.<br/>See </span><a href="https://codefisher.org/pastel-svg/"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://codefisher.org/pastel-svg/</span></a><span style=" font-size:small;"> for details.</span></p></body></html> - + <html><head/><body><p>DB Browser for SQLite is an open source, freeware visual tool used to create, design and edit SQLite database files.</p><p>It is bi-licensed under the Mozilla Public License Version 2, as well as the GNU General Public License Version 3 or later. You can modify or redistribute it under the conditions of these licenses.</p><p>See <a href="https://www.gnu.org/licenses/gpl.html"><span style=" text-decoration: underline; color:#0000ff;">https://www.gnu.org/licenses/gpl.html</span></a> and <a href="https://www.mozilla.org/MPL/2.0/index.txt"><span style=" text-decoration: underline; color:#0000ff;">https://www.mozilla.org/MPL/2.0/index.txt</span></a> for details.</p><p>For more information on this program please visit our website at: <a href="https://sqlitebrowser.org"><span style=" text-decoration: underline; color:#0000ff;">https://sqlitebrowser.org</span></a></p><p><span style=" font-size:small;">This software uses the GPL/LGPL Qt Toolkit from </span><a href="https://qt-project.org/"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://qt-project.org/</span></a><span style=" font-size:small;"><br/>See </span><a href="https://doc.qt.io/qt-5/licensing.html"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://doc.qt.io/qt-5/licensing.html</span></a><span style=" font-size:small;"> for licensing terms and information.</span></p><p><span style=" font-size:8pt;">We use the nalgeon/sqlean library for SQLite extensions support.<br/>This library is licensed under the MIT license, see the following for more information:<br/></span><a href="https://github.com/nalgeon/sqlean"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">https://github.com/nalgeon/sqlean</span></a></p><p><span style=" font-size:small;">It also uses the Pastel SVG icon set by Michael Buckley under a Creative Commons Attribution Share Alike 4.0 license.<br/>See </span><a href="https://codefisher.org/pastel-svg/"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://codefisher.org/pastel-svg/</span></a><span style=" font-size:small;"> for details.</span></p></body></html> + <html><head/><body><p>DB Browser for SQLite è uno strumento visuale open source e freeware utilizzato per creare, progettare ed editare files di database SQLite.</p><p>È licenziato sia sotto la Mozilla Public License Version 2, che la GNU General Public License Version 3 o successive. Puoi modificare o redistribuirlo rispettando le condizioni di queste licenze.</p><p>Visita <a href="https://www.gnu.org/licenses/gpl.html"><span style=" text-decoration: underline; color:#0000ff;">https://www.gnu.org/licenses/gpl.html</span></a> e <a href="https://www.mozilla.org/MPL/2.0/index.txt"><span style=" text-decoration: underline; color:#0000ff;">https://www.mozilla.org/MPL/2.0/index.txt</span></a> per i dettagli.</p><p>Per ulteriori informazioni su questo applicativo si prega di visitare il nostro sito: <a href="https://sqlitebrowser.org"><span style=" text-decoration: underline; color:#0000ff;">https://sqlitebrowser.org</span></a></p><p><span style=" font-size:small;">Questo software utilizza la versione GPL/LGPL del Toolkit Qt da: </span><a href="https://qt-project.org/"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://qt-project.org/</span></a><span style=" font-size:small;"><br/>Visita: </span><a href="https://doc.qt.io/qt-5/licensing.html"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://doc.qt.io/qt-5/licensing.html</span></a><span style=" font-size:small;"> per i termini della licenza ed informazioni.</span></p><p><span style=" font-size:8pt;">Utilizziamo la libreria nalgeon/sqlean per il supporto alle estensioni SQLite.<br/>Questa libreria è licenziata tramite la licenza MIT, per ulteriori informazioni visita:<br/></span><a href="https://github.com/nalgeon/sqlean"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">https://github.com/nalgeon/sqlean</span></a></p><p><span style=" font-size:small;">Utilizziamo anche il set di icone Pastel SVG di Michael Buckley tramite la licenza Creative Commons Attribution Share Alike 4.0.<br/>Visita: </span><a href="https://codefisher.org/pastel-svg/"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://codefisher.org/pastel-svg/</span></a><span style=" font-size:small;"> per i dettagli.</span></p></body></html> @@ -284,38 +284,38 @@ L'opzioni -o/--option e -O/--save-option richiedono un parametro nel formato gruppo/impostaizione=valore - + SQLite Version Versione SQLite - + SQLCipher Version %1 (based on SQLite %2) Versione SQLCipher %1 (basata su SQLite %2) - + DB Browser for SQLite Version %1. Versione DB Browser for SQLite %1. - + Last commit hash when built: %1 Ultimo hash del commit quando compilata: %1 - + Built for %1, running on %2 Compilato per %1, in esecuzione su %2 - + Qt Version %1 Versione Qt %1 - Invalid option/non-existant file: %1 + Invalid option/non-existent file: %1 Opzione non valida/file inesistente: %1 @@ -392,7 +392,7 @@ Chiave grezza - + Please set a key to encrypt the database. Note that if you change any of the other, optional, settings you'll need to re-enter them as well every time you open the database file. Leave the password fields empty to disable the encryption. @@ -403,7 +403,7 @@ Lascia i campi password vuoti per disabilitare la crittografia. Il processo di crittazione può richiedere del tempo e dovresti avere una copia di backup del database! Modifiche non salvate sono applicate prima di modificare la crittografia. - + Please enter the key used to encrypt the database. If any of the other settings were altered for this database file you need to provide this information as well. Si prega d'inserire la chiave utilizzata per criptare il database. @@ -428,122 +428,122 @@ Se una qualunque altra impostazione è stata modificata per l'inserimento d Seleziona un formato di visualizzazione per la colonna '%1' che è applicato a ciascun valore prima di mostrarlo. - + Default Default - + Decimal number Numero decimale - + Exponent notation Notazione esponenziale - + Hex blob Blob esadecimale - + Hex number Numero esadecimale - + Octal number Numero ottale - + Round number Numero arrotondato - + Apple NSDate to date Apple NSDate ad oggi - + Java epoch (milliseconds) to date Java epoch (millisecondi) ad oggi - + .NET DateTime.Ticks to date .NET DateTime.Ticks ad oggi - + Julian day to date Giorno giuliano ad oggi - + Unix epoch to date Unix epoch ad oggi - + Unix epoch to local time Unix epoch a ora locale - + WebKit / Chromium epoch to date - + WebKit / Chromium epoch ad oggi - + WebKit / Chromium epoch to local time - + WebKit / Chromium epoch a ora locale - + Windows DATE to date Windows DATE ad oggi - + Date as dd/mm/yyyy Data come gg/mm/aaaa - + Lower case Minuscolo - + Upper case Maiuscolo - + Binary GUID to text GUID binario in testo - + SpatiaLite Geometry to SVG SpatiaLite Geometry in SVG - + Custom Personalizzato - + Custom display format must contain a function call applied to %1 I formati di visualizzazione personalizzati devono contenere una chiamata a funzione applicata a %1 - + Error in custom display format. Message from database engine: %1 @@ -552,7 +552,7 @@ Se una qualunque altra impostazione è stata modificata per l'inserimento d %1 - + Custom display format must return only one column but it returned %1. Il formato di visualizzazione personalizzato deve restituire solo una colonna ma ha restituito %1. @@ -679,164 +679,164 @@ Se una qualunque altra impostazione è stata modificata per l'inserimento d DBBrowserDB - + Please specify the database name under which you want to access the attached database Si prega di specificare il nome del database con cui si vuol accedere al database collegato - + Invalid file format Formato file non valido - + Do you really want to close this temporary database? All data will be lost. Vuoi davvero chiudere questo database temporaneo? Tutti i dati andranno persi. - + Do you want to save the changes made to the database file %1? Vuoi salvare le modifiche effettuate al database %1? - + Database didn't close correctly, probably still busy Il database non è stato chiuso correttamente; probabilmente è ancora occupato - + Cannot open destination file: '%1' Impossibile aprire il file di destinazione: '%1' - - + + Cannot backup to file: '%1'. Message: %2 Impossibile creare file di backup: '%1'. Messaggio: %2 - + The database is currently busy: Il database è attualmente in uso: - + Do you want to abort that other operation? Vuoi annullare l'altra operazione? - + Exporting database to SQL file... Esportando il database in file SQL... - - + + Cancel Annulla - - + + No database file opened Nessun database aperto - + Executing SQL... Eseguendo SQL... - + Action cancelled. Azione annullata. - - + + Error in statement #%1: %2. Aborting execution%3. Errore nello statement #%1: %2. Annullo l'esecuzione %3. - - + + and rolling back e ripristino il db - + didn't receive any output from %1 non ho ricevuto alcun ouput da %1 - + could not execute command: %1 impossibile eseguire il comando: %1 - + Cannot delete this object Non posso cancellare questo oggetto - + Cannot set data on this object Non posso impostare i dati in questo oggetto - - + + A table with the name '%1' already exists in schema '%2'. Una tabella con il nome '%1' esiste già nello schema '%2'. - + No table with name '%1' exists in schema '%2'. Nessuna tabella col nome '%1' esiste nello schema '%2'. - - + + Cannot find column %1. Impossibile trovare la colonna %1. - + Creating savepoint failed. DB says: %1 Creazione del punto di salvataggio fallita. DB log: %1 - + Renaming the column failed. DB says: %1 Fallimento dell'operazione di rinomina. DB log: %1 - - + + Releasing savepoint failed. DB says: %1 Rilascio del salvataggio falitto. DB log: %1 - + Creating new table failed. DB says: %1 Creazione della nuova tabella fallita. DB log: %1 - + Copying data to new table failed. DB says: %1 Copia dei dati nella nuova tabella fallita. DB log: %1 - + Deleting old table failed. DB says: %1 Eliminazione della vecchia tabella fallita. DB log: %1 - + Error renaming table '%1' to '%2'. Message from database engine: %3 @@ -845,12 +845,12 @@ Messaggio dal DB: %3 - + could not get list of db objects: %1 non posso ottenere la listra degli oggetti db: %1 - + Restoring some of the objects associated with this table failed. This is most likely because some column names changed. Here's the SQL statement which you might want to fix and execute manually: @@ -859,32 +859,32 @@ Messaggio dal DB: - + could not get list of databases: %1 non è possibile ricavare la lista dei database: %1 - + Error setting pragma %1 to %2: %3 Errore nell'impostare pragma %1 in %2: %3 - + File not found. File non trovato. - + Error loading extension: %1 Errore nel caricamento dell'estensione: %1 - + Error loading built-in extension: %1 - + Errore nel caricamento dell'esensione inclusa: %1 - + could not get column information non è possibile ricavare informazioni sulla colonna @@ -1440,7 +1440,7 @@ Vuoi applicare i dati modificati alla riga=%1, colonna=%2? Make this a 'WITHOUT ROWID' table. Setting this flag requires specifying a PRIMARY KEY (which can be of any type, and can be composite), and forbids the AUTOINCREMENT flag. - + Rendi questa tavola 'WITHOUT ROWID'. Abilitare questo flag obbliga a specificare una PRIMARY KEY (che può essere di qualsiasi tipo, anche composita), e vieta il flag AUTOINCREMENT. @@ -1951,7 +1951,7 @@ Tutti i dati che sono attualmente memorizzati in questo campo andranno persi.ExtendedScintilla - + Ctrl+H @@ -1962,22 +1962,22 @@ Tutti i dati che sono attualmente memorizzati in questo campo andranno persi. - + Ctrl+P - + Find... Trova... - + Find and Replace... Trova e Sostituisci... - + Print... Stampa... @@ -1985,129 +1985,129 @@ Tutti i dati che sono attualmente memorizzati in questo campo andranno persi. ExtendedTableWidget - + Use as Exact Filter Usa come filtro esatto - + Containing Che contiene - + Not containing Non contenuto - + Not equal to Non uguale a - + Greater than Maggiore di - + Less than Minore di - + Greater or equal Maggiore o uguale - + Less or equal Minore o uguale - + Between this and... Tra questo e... - + Regular expression Espressione regolare - + Edit Conditional Formats... Modifica Formattazione Condizionale... - + Set to NULL Imposta a NULL - + Cut Taglia - + Copy Copia - + Copy with Headers Copia con gli Headers - + Copy as SQL Copia come SQL - + Paste Incolla - + Print... Stampa... - + Use in Filter Expression Usa nell'espressione del filtro - + Alt+Del - + Ctrl+Shift+C - + Ctrl+Alt+C - + The content of the clipboard is bigger than the range selected. Do you want to insert it anyway? Il contenuto degli appunti è più grande del range selezionato. Vuoi inserirlo comunque? - + <p>Not all data has been loaded. <b>Do you want to load all data before selecting all the rows?</b><p><p>Answering <b>No</b> means that no more data will be loaded and the selection will not be performed.<br/>Answering <b>Yes</b> might take some time while the data is loaded but the selection will be complete.</p>Warning: Loading all the data might require a great amount of memory for big tables. <p>Non tutti i dati sono stati caricati. <b>Vuoi caricare tutti i dati prima di selezionare tutte le righe?</b><p><p>Rispondere <b>No</b> significa che non verranno caricati i restanti dati e la selezione non verrà effettuata.<br/>Rispondere <b>Si</b> potrebbe richiedere del tempo per caricare i dati, ma la selezione sarà completa.</p>Attenzione: Caricare tutti i dati potrebbe richiedere un grosso quantitativo di memoria in caso di grandi tabelle. - + Cannot set selection to NULL. Column %1 has a NOT NULL constraint. Impossibile modificare la selezione in NULL. La colonna %1 ho un vincolo NOT NULL. @@ -2159,12 +2159,12 @@ Vuoi inserirlo comunque? FilterLineEdit - + Filter Filtro - + These input fields allow you to perform quick filters in the currently selected table. By default, the rows containing the input text are filtered out. The following operators are also supported: @@ -2191,92 +2191,92 @@ x~y Intervallo: valori tra x e y /regexp/ Valori che corrispondono all'espressione regolare - + Use for Conditional Format Usa per formattazioni condizionali - + Clear All Conditional Formats Elimina tutte le formattazioni condizionali - + Edit Conditional Formats... Modifica Formattazione Condizionale... - + Set Filter Expression Imposta l'espressione del filtro - + What's This? Cos'è questo? - + Is NULL È NULL - + Is not NULL Non è NULL - + Is empty È vuoto - + Is not empty Non è vuoto - + Not containing... Non contenente... - + Equal to... Uguale a... - + Not equal to... Non uguale a... - + Greater than... Maggiore di... - + Less than... Minore di... - + Greater or equal... Maggiore o uguale... - + Less or equal... Minore o uguale... - + In range... Nell'intervallo... - + Regular expression... Espressione regolare... @@ -2499,7 +2499,7 @@ x~y Intervallo: valori tra x e y - + Tab Tab @@ -2642,7 +2642,7 @@ x~y Intervallo: valori tra x e y - + Deselect All Deseleziona tutte @@ -2652,52 +2652,52 @@ x~y Intervallo: valori tra x e y Seleziona simili - + Select All Seleziona tutte - + There is already a table named '%1' and an import into an existing table is only possible if the number of columns match. Esiste già una tabella col nome '%1' e l'importazione in una tabella esistente non è possibile se il numero di colonne non corrisponde. - + There is already a table named '%1'. Do you want to import the data into it? Esiste già una tabella col nome '%1'. Vuoi importare i dati al suo interno? - + Creating restore point failed: %1 Creazione del punto di ripristino fallita: %1 - + Creating the table failed: %1 Creazione della tabella fallita: %1 - + importing CSV importo il CSV - + Could not prepare INSERT statement: %1 Non posso preparae la dichiarazione INSERT: %1 - + Inserting row failed: %1 Inserimento della riga fallito: %1 - + Unexpected end of file. Please make sure that you have configured the correct quote characters and the file is not malformed. Fine del file inaspettata. Si prega di verificare l'impostazione corretta dei caratteri di citazione e che il file non sia malformato. - + Importing the file '%1' took %2ms. Of this %3ms were spent in the row function. Importare il file '%1' ha richiesto %2ms. Di questi %3ms sono stati spesi in funzioni di riga. @@ -2719,112 +2719,112 @@ Puoi trascinare SQL da una riga oggetto e rilasciarli dentro altri applicativi o - + Warning: this pragma is not readable and this value has been inferred. Writing the pragma might overwrite a redefined LIKE provided by an SQLite extension. Attenzione: questo pragma non è leggibile e questo valore è stato dedotto. Scrivere i pragma può sovrascrivere un LIKE ridefinito provvisto da un'estensione di SQLite. - + toolBar1 - + &File &File - + &Import &Importa - + &Export &Esporta - + &Edit &Modifica - + &View &Visualizza - + &Help &Aiuto - + Too&ls &Strumenti - + DB Toolbar Barra degli strumenti del DB - + Edit Database &Cell Modifica &cella - + SQL &Log &Log SQL - + Show S&QL submitted by Mostra l'S&QL inviato da - + User Utente - + Application Applicazione - + Error Log Registro errori - + This button clears the contents of the SQL logs Questo pulsante cancella il contenuto del log SQL - + &Clear &Pulisci - + This panel lets you examine a log of all SQL commands issued by the application or by yourself Questo pannello ti permette di esaminare il log di tutti i comandi SQL inviati dall'applicazione o da te stesso - + &Plot &Grafica - + DB Sche&ma Sche&ma DB - + This is the structure of the opened database. You can drag multiple object names from the Name column and drop them into the SQL editor and you can adjust the properties of the dropped names using the context menu. This would help you in composing SQL statements. You can drag SQL statements from the Schema column and drop them into the SQL editor or into other applications. @@ -2835,451 +2835,451 @@ Puoi trascinare statement SQL dalla colonna Schema e rilasciarli dentro l'e - + &Remote &Remoto - - + + Project Toolbar Barra degli strumenti di progetto - + Extra DB toolbar Barra degli strumenti extra DB - - - + + + Close the current database file Chiudi il file di database corrente - + &New Database... &Nuovo Database... - - + + Create a new database file Crea un nuovo file di database - + This option is used to create a new database file. Questa opzione è utilizzata per creare un nuovo file di database. - + Ctrl+N - - + + &Open Database... &Apri Database... - - - - - + + + + + Open an existing database file Apre un file di database esistente - - - + + + This option is used to open an existing database file. Questa opzione è utilizzata per aprire un file esistente di database. - + Ctrl+O - + &Close Database &Chiudi Database - + This button closes the connection to the currently open database file Questo pulsnate chiude la connessione al file di database attualmente aperto - - + + Ctrl+W - + &Revert Changes &Ripristina le modifiche - - + + Revert database to last saved state Ripristina il database all'ultimo stato salvato - + This option is used to revert the current database file to its last saved state. All changes made since the last save operation are lost. Questa opzione è utilizzata per ripristinare il file di database al suo ultimo stato salvato. Tutte le modifiche fatte dall'ultima opzione di salvataggio sono perse. - + &Write Changes &Salva le modifiche - - + + Write changes to the database file Scrive le modifiche sul file di database - + This option is used to save changes to the database file. Questa opzione è utilizzata per salvare le modifiche sul file di database. - + Ctrl+S - + Compact &Database... &Compatta Database... - + Compact the database file, removing space wasted by deleted records Compatta il file di database, rimuovendo lo spazio sprecato dalle righe eliminate - - + + Compact the database file, removing space wasted by deleted records. Compatta il file di database rimuovendo lo spazio sprecato dalle righe eliminate. - + E&xit &Esci - + Ctrl+Q - + &Database from SQL file... &Database dal file SQL... - + Import data from an .sql dump text file into a new or existing database. Importa i dati da un file di testo di dump .sql all'interno di un database nuovo o esistente. - + This option lets you import data from an .sql dump text file into a new or existing database. SQL dump files can be created on most database engines, including MySQL and PostgreSQL. Questa opzione ti permette d'importare i dati da un file di testo di dump .sql all'interno di un database nuovo o esistente. I file di dump SQL possono essere creati dalla maggiorparte dei motori SQL, inclusi MySQL e PostgreSQL. - + &Table from CSV file... &Tabella da file CSV... - + Open a wizard that lets you import data from a comma separated text file into a database table. Apre un wizard che ti permette d'importare dati da un file CSV all'interno di una tabella del database. - + Open a wizard that lets you import data from a comma separated text file into a database table. CSV files can be created on most database and spreadsheet applications. Apre un wizard che ti permette d'importare dati da un file CSV all'interno di una tabella del database. I file CSV possono essere creati dalla maggiorparte delle applicazioni database o foglio di calcolo. - + &Database to SQL file... &Database in file SQL... - + Export a database to a .sql dump text file. Esporta un database in un file di testo di dump .sql. - + This option lets you export a database to a .sql dump text file. SQL dump files contain all data necessary to recreate the database on most database engines, including MySQL and PostgreSQL. Questa opzione ti permette di esportare un database in un file di testo di dump .sql. Il file di dump SQL contiene tutti i dati necessari per ricreare il database sulla maggiorparte di motori di database, inclusi MySQL e PostgreSQL. - + &Table(s) as CSV file... &Tabella(e) come file CSV... - + Export a database table as a comma separated text file. Esporta la tabella del database come un file di testo CSV. - + Export a database table as a comma separated text file, ready to be imported into other database or spreadsheet applications. Esporta la tabella del database come un file di testo CSV, pronto per essere importato in un altro database o foglio di calcolo. - + &Create Table... &Crea tabella... - + Open the Create Table wizard, where it is possible to define the name and fields for a new table in the database Apre un wizard per la creazione di una tabella, dov'è possibile definire il nome e i campi di una nuova tabella del database - + &Delete Table... &Elimina tabella... - - + + Delete Table Elimina Tabella - + Open the Delete Table wizard, where you can select a database table to be dropped. Apre un wizard per la cancellazione della tabella, da qui puoi selezionare la tabella del database da eliminare. - + &Modify Table... &Modifica Tabella... - + Create &Index... Crea &Indice... - + Open the Create Index wizard, where it is possible to define a new index on an existing database table. Apre un wizard per la crazione di un indice, da qui è possibile definire un nuovo indice s'una tabella di database pre-esistente. - + &Preferences... &Preferenze... - - + + Open the preferences window. Apre la finestra delle preferenze. - + &DB Toolbar &Barra degli strumenti - + Shows or hides the Database toolbar. Mostra o nasconde la barra degli strumenti del database. - + New &tab Nuovo &tab - + Ctrl+T - + Open SQL file(s) Apri file(s) SQL - + This button opens files containing SQL statements and loads them in new editor tabs Questo pulsante apre files contenenti dichiarazioni SQL e le carica in un nuova scheda dell'editor - + Execute line Esegui riga - + F1 - + Sa&ve Project Sal&va Progetto - + This button lets you save all the settings associated to the open DB to a DB Browser for SQLite project file Questo pulsante ti permette di salvare tutte le impostazioni associate all'apertura di un DB in un nuovo file di progetto DB Browser for SQLite - + This button lets you open a DB Browser for SQLite project file Questo pulsante ti permette di aprire un file di progetto DB Browser for SQLite - + Ctrl+Shift+O - + Find Trova - + Find or replace Trova o sostituisci - + Print text from current SQL editor tab Stampa testo dalla scheda corrente dell'editor SQL - + Print the structure of the opened database Stampa la struttura del database aperto - + Un/comment block of SQL code De/Commenta il blocco di codice SQL - + Un/comment block De/Commenta il blocco - + Comment or uncomment current line or selected block of code Commenta o decommenta la riga corrente o il blocco selezionato di codice - + Comment or uncomment the selected lines or the current line, when there is no selection. All the block is toggled according to the first line. Commenta o decommenta le righe selezionate o la riga corrente, quando non c'è nessuna selezione. Tutti i blocchi sono modificati in accordo alla prima riga. - + Ctrl+/ - + Stop SQL execution Ferma esecuzione SQL - + Stop execution Ferma esecuzione - + Stop the currently running SQL script Ferma lo script SQL attualmente in esecuzione - + &Save Project As... Salva Progetto C&ome... - - - + + + Save the project in a file selected in a dialog Salva il progetto in un file selezionato tramite una finestra di dialogo - + Save A&ll Salva T&utto - - - + + + Save DB file, project file and opened SQL files Salva il file DB, file di progetto e tutti i file SQL aperti - + Ctrl+Shift+S - + Browse Table Naviga nei dati - + Close Pro&ject Chiudi Pro&getto - - + + Close project and database files and return to the initial state Chiude il progetto e i file di database e ritorna allo stato iniziale - + Ctrl+Shift+F4 Ctrl+Shift+F4 - - + + Detach Database Scollega Database - - + + Detach database file attached to the current database connection Scollega il file di database associato alla connessione corrente - + W&hat's This? Cos'è &questo? @@ -3305,801 +3305,965 @@ Puoi trascinare statement SQL dalla colonna Schema e rilasciarli dentro l'e Modifica P&ragmas - - + + Temp Store + + + + + Secure Delete + + + + + Case Sensitive Like + + + + + Journal Mode + + + + + Journal Size Limit + + + + + Recursive Triggers + + + + Delete + pragma + Elimina + + + + Page Size + + + + + Foreign Keys + Chiavi esterne + + + + Auto Vacuum + + + + + Max Page Count + + + + + Checkpoint Full FSYNC + + + + + + Off + + + + + + Normal + + + + + + Full + + + + + Default + Default + + + + File + File + + + + + Memory + + + + + Delete + Elimina + + + + Truncate + + + + + Persist + + + + + WAL + + + + + Exclusive + + + + + Automatic Index + + + + + Ignore Check Constraints + + + + + Full FSYNC + + + + + WAL Auto Checkpoint + + + + + User Version + + + + + Synchronous + + + + + None + Nessuna + + + + Incremental + + + + + Locking Mode + + + + + E&xecute SQL This has to be equal to the tab title in all the main tabs &Esegui SQL - + &Recent Files F&iles Recenti - + &New Database &Nuovo Database - + &Undo A&nnulla - - + + Undo last change to the database Annulla l'ultima modifica al database - + This action undoes the last change performed to the database in the Database Browser or in Execute SQL. Redoing is not possible. Questa azione annulla l'ultima modifica effettuata al database in "Visualizza Dati" o in "Esegui SQL". Riapplicarla non è possibile. - + Open the Modify Table wizard, where it is possible to rename an existing table. It is also possible to add or delete fields from a table, as well as modify field names and types. Apre il wizard per Modificare la Tabella, in cui è possibile rinominare una tabella esistente. Si può anche aggiungere o eliminare campi da una tabella così come modificarne nome e tipo. - + Shift+F1 - + &About &Informazioni - + &Recently opened &Aperti di recente - + This button opens a new tab for the SQL editor Questo pulsante apre una nuova schede dell'editor SQL - + &Execute SQL &Esegui SQL - + This button executes the currently selected SQL statements. If no text is selected, all SQL statements are executed. Questo pulsante esegue gli statement SQL evidenziati. Se nessun testo è selezionato, tutti gli statement SQL vengono eseguiti. - + Ctrl+Shift+T Ctrl+Shift+T - - - + + + Save SQL file Salva file SQL - + &Load Extension... &Carica Estensioni... - - + + Execute current line Esegue la riga corrente - + This button executes the SQL statement present in the current editor line Questo pulsante esegue lo statement SQL presente nella riga corrente dell'editor - + Shift+F5 - + Export as CSV file Esporta come file CSV - + Export table as comma separated values file Esporta la tabella come file CSV - + &Wiki &Wiki - + Bug &Report... Bug &Report... - + Feature Re&quest... Richiesta &Funzionalità... - + Web&site Sito &Web - + &Donate on Patreon... &Dona su Patreon... - + &Save Project &Salva Progetto - - + + Save the current session to a file Salva la sessione correte in un file - + Open &Project... Apri &Progetto... - + Open &Project Apri &Progetto - - + + Load a working session from a file Carica una sessione di lavoro da file - + &Attach Database... Co&llega Database... - - + + Add another database file to the current database connection Aggiunge un altro file di database alla connessione corrente - + This button lets you add another database file to the current database connection Questo pulsante ti permette di aggiungere un altro file alla connessione corrente - + &Set Encryption... &Imposta cifratura... - - + + Save SQL file as Salva file SQL come - + This button saves the content of the current SQL editor tab to a file Questo pulsante salva il contenuto della scheda di editor SQL in un file - + &Browse Table &Naviga Tabella - + Copy Create statement Copia statement CREATE - + Copy the CREATE statement of the item to the clipboard Copia lo statement CREATE negli appunti - + SQLCipher &FAQ SLQCipher &FAQ - + Opens the SQLCipher FAQ in a browser window Apre le SQLCipher FAQ in una finestra del browser - + Table(&s) to JSON... Tabella(&e) in JSON... - + Export one or more table(s) to a JSON file Esporta una o più tabelle in un file JSON - + Open Data&base Read Only... Apri un Data&base in Sola Lettura... - + Open an existing database file in read only mode Apre un file databse esistente in modalità sola lettura - + Save results Salva risultati - + Save the results view Salva i risultati della vista - + This button lets you save the results of the last executed query Questo pulsante ti permette di salvare i risultati dell'ultima query eseguita - - + + Find text in SQL editor Trova testo nell'editor SQL - + This button opens the search bar of the editor Questo pulsante apre la barra di ricerca dell'editor - + Ctrl+F - - + + Find or replace text in SQL editor Trova e/o sostituisci testo nell'editor SQL - + This button opens the find/replace dialog for the current editor tab Questo pulsante apre la finestra di ricerca/sostituzione testo per la scheda corrente dell'editor - + Ctrl+H - + Export to &CSV Esporta in &CSV - + Export to &JSON Esporta in &JSON - + Save as &view Salva come &vista - + Save as view Salva come vista - + Shows or hides the Project toolbar. Mostra o nasconde la barra degli strumenti di progetto. - + Extra DB Toolbar Barra degli strumenti DB estesa - + &Open Database &Apri Database - + New In-&Memory Database Nuovo Database In M&emoria - + Drag && Drop SELECT Query Trascina && Rilascia Query SELECT - - + + When dragging fields from the same table or a single table, drop a SELECT query into the editor Quando si trascinano campi da una stessa tabella o una singola tabella, rilascia una query SELECT nell'editor - + Drag && Drop Qualified Names Trascina && Rilascia Nomi Qualificati - - + + Use qualified names (e.g. "Table"."Field") when dragging the objects and dropping them into the editor Usa nomi qualificati (es. "Table"."Campo") quando trascini gli oggetti e li rilasci all'interno dell'editor - + Drag && Drop Enquoted Names Trascina && Rilascia Nomi Quotati - - + + Use escaped identifiers (e.g. "Table1") when dragging the objects and dropping them into the editor Usa gl'identificatori di citazione (es. "Tabella1") quando trascini e rilasci gli oggetti nell'editor - + &Integrity Check Controllo &Integrità - + Runs the integrity_check pragma over the opened database and returns the results in the Execute SQL tab. This pragma does an integrity check of the entire database. Avvia il controllo integrità (integrity check pragma) sul database aperto e riporta il risultato nella scheda "Esegui SQL". Questa operazione esegue un controllo d'integrità sull'intero database. - + &Foreign-Key Check Controlla Chiave &Esterna - + Runs the foreign_key_check pragma over the opened database and returns the results in the Execute SQL tab Avvia il controllo chiavi esterne (foreign_key_check pragma) nel database aperto e riporta il risultato nella scheda "Esegui SQL" - + &Quick Integrity Check Controllo Integrità &Veloce - + Run a quick integrity check over the open DB Avvia un controllo veloce d'integrità sul DB aperto - + Runs the quick_check pragma over the opened database and returns the results in the Execute SQL tab. This command does most of the checking of PRAGMA integrity_check but runs much faster. Avvia un controllo veloce d'integrità (quick_check pragma) sul database e riporta il risultato nella scheda "Esegui SQL". Quest comando esegue la maggiorparte dei controlli d'integrità del controllo completo, ma in modo molto più veloce. - + &Optimize &Ottimizza - + Attempt to optimize the database Prova ad ottimizzare il database - + Runs the optimize pragma over the opened database. This pragma might perform optimizations that will improve the performance of future queries. Avvia l'ottimizzazione del database aperto. Questa operazione potrebbe eseguire delle ottimizzazione che miglioreranno le performance delle query future. - - + + Print Stampa - + Open a dialog for printing the text in the current SQL editor tab Apre una finetra per la stampa del testo nella scheda dell'editor SQL - + Open a dialog for printing the structure of the opened database Apre una finestra per la stampa della struttura del database aperto - - + + Ctrl+Shift+W Ctrl+Shift+W - + Table from CSV data in Clipboard... Tabella da dati CSV negli Appunti... - + This treats the current clipboard contents as a CSV file and opens the same import wizard that is used for importing CSV data from a file. Questo tratta il contenuto attuale degli Appunti come un file CSV e apre lo stesso wizard d'importazione che viene utilizzato per importare dati da un file CSV. - + Show &Row Counts Mostra Numero &Righe - + This shows the number of rows for each table and view in the database. Questo mostra il numero di righe per ogni tabella e vista del database. - + Save Database &As... Salva Database Co&me... - + Save the current database as a different file Salva il database corrente in un diverso file - + Refresh Aggiorna - + Reload the database structure Aggiorna la struttura del database - - + + Ctrl+P - - + + Ctrl+F4 - + Execute all/selected SQL Esegui tutti gli SQL o quelli selezionati - + Ctrl+Return - + Ctrl+L - + Ctrl+D - + Ctrl+I - + Ctrl+E - + Reset Window Layout Ripristina disposizione finestra - - The database is currenctly busy. + + The database is currently busy. Il database è occupato. - + Click here to interrupt the currently running query. Clicca qui per interrompere la query in esecuzione. - + Encrypted Criptato - + Database is encrypted using SQLCipher Il database è stato criptato utilizzando SQLCipher - + Read only Sola lettura - + Database file is read only. Editing the database is disabled. Il file di database è in sola lettura. Le modifiche al database sono disabilitate. - + Database encoding Codifica Database - - + + Choose a database file Seleziona un file di database - + Could not open database file. Reason: %1 Impossibile aprire il file di database. Motivo: %1 - - - + + + Choose a filename to save under Seleziona un nome file per il salvataggio - + In-Memory database Database In-Memoria - + Are you sure you want to delete the table '%1'? All data associated with the table will be lost. Sei sicuro di voler eliminare la tabella '%1'? Tutti i dati associati alla tabella andranno perduti. - + Are you sure you want to delete the view '%1'? Sei sicuro di voler eliminare la vista '%1'? - + Are you sure you want to delete the trigger '%1'? Sei sicuro di voler eliminare il trigger '%1'? - + Are you sure you want to delete the index '%1'? Sei sicuro di voler eliminare l'indice '%1'? - + Error: could not delete the table. Errore: impssibile eliminare la tabella. - + Error: could not delete the view. Errore: impossibile eliminare la vista. - + Error: could not delete the trigger. Errore: impossibile eliminare il trigger. - + Error: could not delete the index. Errore: impossibile eliminare l'indice. - + Message from database engine: %1 Messaggio dal database: %1 - + Editing the table requires to save all pending changes now. Are you sure you want to save the database? Per modificare la tabella bisogna salvare tutte le modifiche pendenti. Sei sicuro di voler salvare il database? - + Error checking foreign keys after table modification. The changes will be reverted. Errore nel controllo delle chiavi esterne dopo le modifiche alla tabella. Le modifiche saranno eliminate. - + This table did not pass a foreign-key check.<br/>You should run 'Tools | Foreign-Key Check' and fix the reported issues. Questa tabella non ha passato il controllo sulle chiavi esterne.<br/>Dovresti avviare 'Strumenti | Controllo Chiavi Esterne' e correggere i problemi riportati. - + Edit View %1 Modifica Vista %1 - + Edit Trigger %1 Modifica Trigger %1 - + You are already executing SQL statements. Do you want to stop them in order to execute the current statements instead? Note that this might leave the database in an inconsistent state. Sto eseguendo degli SQL. Vuoi fermarli per poter eseguire invece l'SQL corrente? Nota che questo potrebbe lasciare il database in uno stato inconsistente. - + -- EXECUTING SELECTION IN '%1' -- -- ESEGUO LA SELEZIONE IN '%1' -- - + -- EXECUTING LINE IN '%1' -- -- ESEGUO LINEA IN '%1' -- - + -- EXECUTING ALL IN '%1' -- -- ESEGUO TUTTO IN '%1' -- - - + + At line %1: Alla riga %1: - + Result: %1 Risultato: %1 - + Result: %2 Risultato: %2 - + Opened '%1' in read-only mode from recent file list Aperto '%1' in modalità sola lettura dalla lista dei files recenti - + Opened '%1' from recent file list Aperto '%1' dalla lista dei files recenti - + The statements in the tab '%1' are still executing. Closing the tab will stop the execution. This might leave the database in an inconsistent state. Are you sure you want to close the tab? Le dichiarazioni nella scheda '%1' sono ancora in esecuzione. Chiudere la scheda fermerà l'esecuzione. Questo potrebbe lasciare il database in uno stato inconsistente. Sei sicuro di voler chiudere la scheda? - + This project file is using an old file format because it was created using DB Browser for SQLite version 3.10 or lower. Loading this file format is no longer fully supported. If you want to load it completely, please use DB Browser for SQLite version 3.12 to convert it to the new file format. Questo file di progetto utilizza un vecchio formato perché è stato creato con DB Browser for SQLite versione 3.10 o precedente. Il caricamento di questo formato non è più pienamente supportato. Se vuoi caricarlo completamente, si prega di utilizzare DB Browser for SQLite versione 3.12 per convertirlo al nuovo formato. - + Project saved to file '%1' Progetto salvato sul file '%1' - + Yes. Don't ask again Si, non chiedere di nuovo - + This action will open a new SQL tab with the following statements for you to edit and run: Questa azione apre una nuova scheda SQL con le seguenti dichiarazioni per te da editare ed eseguire: - + Rename Tab Rinomina il Tab - + Duplicate Tab Duplica il Tab - + Close Tab Chiudi il Tab - + Opening '%1'... Apro '%1'... - + There was an error opening '%1'... Errore durante l'apertura di '%1'... - + Value is not a valid URL or filename: %1 Il valore non è un URL valida o nome file: %1 - + Setting PRAGMA values or vacuuming will commit your current transaction. Are you sure? Impostare i valori PRAGMA o pulizia chiuderanno la transazione corrente. Sei sicuro? - + Execution finished with errors. Esecuzione completata con errori. - + Execution finished without errors. Esecuzione completata senza errori. - + %1 rows returned in %2ms %1 righe ritornate in %2ms - + Automatically load the last opened DB file at startup - + Carica automaticamente l'ultimo file DB aperto all'avvio - + Choose text files Seleziona i file di testo - + Error while saving the database file. This means that not all changes to the database were saved. You need to resolve the following error first. %1 @@ -4108,298 +4272,298 @@ Sei sicuro? %1 - + Are you sure you want to undo all changes made to the database file '%1' since the last save? Sei sicuro di voler annullare tutte le modifiche effettuate al database '%1' dall'ultimo salvataggio? - + Choose a file to import Seleziona un file da importare - + &%1 %2%3 &%1 %2%3 - + (read only) (sola lettura) - + Open Database or Project Apri Database o Progetto - + Attach Database... Collega Database... - + Import CSV file(s)... Importa file(s) CSV... - + Do you want to save the changes made to SQL tabs in the project file '%1'? Vuoi salvare le modifiche effettuate ai tabs SQL nel file di progetto '%1'? - + Text files(*.sql *.txt);;All files(*) File di testo(*.sql *.txt);;Tutti i files(*) - + Do you want to create a new database file to hold the imported data? If you answer no we will attempt to import the data in the SQL file to the current database. Vuoi creare un nuovo file di database per mantenere i dati importati? Se rispondi di no proveremo ad importare i dati del file SQL all'interno del database corrente. - + Ctrl+Tab Ctrl+Tab - + Ctrl+Shift+Tab Ctrl+Shift+Tab - + Clear List Pulisci la Lista - + Window Layout Disposizione finestra - + Ctrl+Alt+0 Ctrl+Alt+0 - + Simplify Window Layout Semplifica Disposizione Finestra - - Shift+Alt+0 - Shift+Alt+0 + + Alt+Shift+0 + Alt+Shift+0 - + Dock Windows at Bottom Posiziona Finestre nel Basso - + Dock Windows at Left Side Posiziona Finestre sul Lato Sinistro - + Dock Windows at Top Posiziona Finestre in Alto - + Ctrl+Alt+W Ctrl+Alt+W - + Choose a database file to save under Scegli il file database in cui salvare - + Error while saving the database to the new file. Errore nel salvataggio in un nuovo file di database. - + You are still executing SQL statements. Closing the database now will stop their execution, possibly leaving the database in an inconsistent state. Are you sure you want to close the database? Sto ancora eseguendo comandi SQL. Se chiudi il database ora non verrano eseguiti, il database potrebbe rimanere in uno stato inconsistente. Sei sicuro di voler chiudere il database? - + Do you want to save the changes made to the project file '%1'? Vuoi salvare le modifiche fatte al file di progetto '%1'? - + File %1 already exists. Please choose a different name. Il file %1 esiste già. Si prega di scegliere un nome differente. - + Error importing data: %1 Errore nell'importazione: %1 - + Import completed. Some foreign key constraints are violated. Please fix them before saving. Importaizone completata. Alcuni vincoli per le chiavi esterne non sono rispettati. Si prega di correggerli prima di salvare. - + Import completed. Import completato. - + Delete View Elimina Vista - + Modify View Modifica Vista - + Delete Trigger Elimina Trigger - + Modify Trigger Modifica Trigger - + Delete Index Elimina Indice - + Modify Index Modifica Indice - + Modify Table Modifica Tabella - + Select the action to apply to the dropped file(s). <br/>Note: only 'Import' will process more than one file. Note for translation: Although there is no %n in the original, you can use the numerus-form to adjust 'files(s)' and remove the note when n = 1. Including %n in the translation will also work. - + Seleziona l'azione da applicare al file scartato. <br/>Nota: solo 'Importa' processa più di un file. Seleziona l'azione da applicare ai files scartati. <br/>Nota: solo 'Importa' processa più di un file. - + Setting PRAGMA values will commit your current transaction. Are you sure? Impostare i valori di PRAGMA chiuderà la transaione corrente. Sei sicuro? - + Do you want to save the changes made to SQL tabs in a new project file? Vuoi salvare le modifiche effettuate alle schede SQL in un nuovo file di progetto? - + Do you want to save the changes made to the SQL file %1? Vuoi salvare le modifiche fatte al file SQL %1? - + Select SQL file to open Selezionare il file SQL da aprire - + Select file name Seleziona il nome del file - + Select extension file Seleziona l'estensione del file - + Extension successfully loaded. Estensione caricata con successo. - + Error loading extension: %1 Errore nel caricamento dell'estensione: %1 - + Could not find resource file: %1 Non posso aprire il file di risorse: %1 - - + + Don't show again Non mostrare di nuovo - + New version available. Nuova versione disponibile. - + A new DB Browser for SQLite version is available (%1.%2.%3).<br/><br/>Please download at <a href='%4'>%4</a>. Una nuova versione di DB Browser for SQLite è disponibile (%1.%2.%3).<br/><br/>Si prega di scaricarla da <a href='%4'>%4</a>. - + Choose a project file to open Seleziona un file di progetto da aprire - + DB Browser for SQLite project file (*.sqbpro) File di progetto DB Browser for SQLite (*.sqbpro) - + DB file '%1' could not be opened Il file DB '%1' non può essere aperto - + Table '%1' not found; settings ignored Tabella '%1' non trovata; impostazioni ignorate - + Could not open project file for writing. Reason: %1 Non posso scrivere nel file di progetto. Motivo: %1 - + -- Reference to file "%1" (not supported by this version) -- -- Riferimento al file "%1" (non supportato in questa versione) -- - + Collation needed! Proceed? Necessario confronto! Procedo? - + A table in this database requires a special collation function '%1' that this application can't provide without further knowledge. If you choose to proceed, be aware bad things can happen to your database. Create a backup! @@ -4408,47 +4572,47 @@ Se scegli di proseguire, sappi che potrebbero generarsi problemi nel tuo databas Crea un backup! - + creating collation creo confronto - + Set a new name for the SQL tab. Use the '&&' character to allow using the following character as a keyboard shortcut. Imposta un nuovo nome per la scheda SQL. Usa il carattere '&&' per utilizzare il carattere succesivo come scorciatoia da tastiera. - + Please specify the view name Si prega di specificare il nome della vista - + There is already an object with that name. Please choose a different name. Esiste già un oggetto con quel nome. Si prega di scegliere un nome diverso. - + View successfully created. Vista creata con successo. - + Error creating view: %1 Errore nella creazione della vista: %1 - + This action will open a new SQL tab for running: Questa azione aprirà una nuova scheda SQL per eseguire: - + Press Help for opening the corresponding SQLite reference page. Premi Aiuto per aprire la pagina di riferimento SQLite corrispondente. - + Busy (%1) Occupato (%1) @@ -4643,102 +4807,107 @@ Seleziona le etichette dell'asse o degli assi per trascinare o ingrandire s - + Load all data and redraw plot Carica tutti i dati e ridisegna grafico - + Copy Copia - + Print... Stampa... - + + Help + + + + Show legend Mostra legenda - + Stacked bars Barre impilate - + Fixed number format Formato numero fisso - + Date/Time Data/Ora - + Date Data - + Time Ora - - + + Numeric Numerico - + Label Etichetta - + Invalid Invalido - - - + + + Row # Riga # - + Load all data and redraw plot. Warning: not all data has been fetched from the table yet due to the partial fetch mechanism. Carica tutti i dati e ridisegna grafico. Attenzione: non sono ancora stati recuperati tutti i dati dalla tabella a causa del meccanismo di recupero. - + Choose an axis color Scegli il colore per l'asse - + Choose a filename to save under Scegli il nome di salvataggio - + PNG(*.png);;JPG(*.jpg);;PDF(*.pdf);;BMP(*.bmp);;All Files(*) - + There are curves in this plot and the selected line style can only be applied to graphs sorted by X. Either sort the table or query by X to remove curves or select one of the styles supported by curves: None or Line. Ci sono delle curve in questo grafico e lo stile di line selezionato può essere applicato solo a grafici ordinati per X. Riordina la tabella o seleziona per X per rimuovere le curve o seleziona uno degli stili supportati dalle curve: Nessuno o Linea. - + Loading all remaining data for this table took %1ms. Caricare tutti i dati restanti per questa tabella ha richiesto %1ms. @@ -5363,7 +5532,7 @@ Può essere impostato a 0 per disabilitare il completamento. Select built-in extensions to load for every database: - + Seleziona quali estensioni incluse caricare per ogni database: @@ -5633,8 +5802,8 @@ Si prega di ricontrollare. - Socks v5 - Socks v5 + SOCKS5 + SOCKS5 @@ -5780,1660 +5949,1333 @@ Si prega di ricontrollare. QsciCommand - Move down one line - + Sposta in basso di una riga - Extend selection down one line - + Estendi la selezione in basso di una riga - Extend rectangular selection down one line - + Estendi la selezione rettangolare in basso di una riga - Scroll view down one line - + Scorri la vista in basso di una riga - Move up one line - + Muovi in alto di una riga - Extend selection up one line - + Estendi la selezione in alto di una riga - Extend rectangular selection up one line - + Estendi la selezione rettangolare in alto di una riga - Scroll view up one line - + Scorri la vista in alto di una riga - Scroll to start of document - + Scorri all'inizio del documento - Scroll to end of document - + Scorri alla fine del documento - Scroll vertically to centre current line - + Scorri verticalmente per centrare la riga corrente - Move down one paragraph - + Muovi in basso di un paragrafo - Extend selection down one paragraph - + Estendi la selezione in basso di un paragrafo - Move up one paragraph - + Muovi in alto di un paragrafo - Extend selection up one paragraph - + Estendi la selezione in alto di un paragrafo - Move left one character - + Muovi a sinistra di un carattere - Extend selection left one character - + Estendi la selezione a sinistra di un carattere - Extend rectangular selection left one character - + Estendi la selezione rettangolare a sinistra di un carattere - Move right one character - + Muovi a destra di un carattere - Extend selection right one character - + Estendi la selezione a destra di un carattere - Extend rectangular selection right one character - + Estendi la selezione rettangolare a destra di un carattere - Move left one word - + Muovi a sinistra di una parola - Extend selection left one word - + Estendi la selezione a sinistra di una parola - Move right one word - + Muovi a destra di una parola - Extend selection right one word - + Estendi la selezione a destra di una parola - Move to end of previous word - + Muovi alla fine della parola precedente - Extend selection to end of previous word - + Estendi la selezione alla fine della parola precedente - Move to end of next word - + Muovi alla fine della prossima parola - Extend selection to end of next word - + Estendi la selezione alla fine della prossima parola - Move left one word part - + Muovi a sinistra di una parte di parola - Extend selection left one word part - + Estendi la selezione a sinistra di una parte di parola - Move right one word part - + Muovi a destra di una parte di parola - Extend selection right one word part - + Estendi la selezione a destra di una parte di parola - Move to start of document line - + Muovi all'inizio della riga - Extend selection to start of document line - + Estendi la selezione all'inizio della riga - Extend rectangular selection to start of document line - + Estendi la selezione rettangolare all'inizio della riga - Move to start of display line - + Muovi all'inizio della riga mostrata - Extend selection to start of display line - + Estendi la selezione all'inizio della riga mostrata - Move to start of display or document line - + Muovi all'inizio della riga mostrata o del documento - Extend selection to start of display or document line - + Estendi la selezione all'inizio della riga mostrata o del documento - Move to first visible character in document line - + Muovi al primo carattere visibile nella riga - Extend selection to first visible character in document line - + Estendi la selezione al primo carattere visibile della riga - Extend rectangular selection to first visible character in document line - + Estendi la selezione rettangolare al primo carattere visibile nella riga - Move to first visible character of display in document line - + Muovi al primo carattere visibile nella riga mostrata - Extend selection to first visible character in display or document line - + Estendi la selezione al primo carattere visibile nella riga mostrata - Move to end of document line - + Muovi alla fine della riga - Extend selection to end of document line - + Estendi la selezione alla fine della riga - Extend rectangular selection to end of document line - + Estendi la selezione rettangolare alla fine della riga - Move to end of display line - + Muovi alla fine della riga mostrata - Extend selection to end of display line - + Estendi la selezione alla fine della riga mostrata - Move to end of display or document line - + Muovi alla fine della riga mostrata o del documento - Extend selection to end of display or document line - + Estendi la selezione alla fine della riga mostrata o del documento - Move to start of document - + Muovi all'inizio del documento - Extend selection to start of document - + Estendi la selezione all'inizio del documento - Move to end of document - + Muovi alla fine del documento - Extend selection to end of document - + Estendi la selezione alla fine del documento - Move up one page - + Muovi su di una pagina - Extend selection up one page - + Estendi la selezione in su di una pagina - Extend rectangular selection up one page - + Estendi la selezione rettangolare in su di una pagina - Move down one page - + Muovi in basso di una pagina - Extend selection down one page - + Estendi la selezione in basso di una pagina - Extend rectangular selection down one page - + Estendi la selezione rettangolare in basso di una pagina - Stuttered move up one page - + Muovi in alto a scatti di una pagina - Stuttered extend selection up one page - + Estendi la selezione in alto a scatti di una pagina - Stuttered move down one page - + Muovi in basso a scatti di una pagina - Stuttered extend selection down one page - + Estendi la selezione in basso a scatti di una pagina - Delete current character - + Elimina il carattere corrente - Delete previous character - + Elimina il carattere precedente - Delete previous character if not at start of line - + Elimina il carattere precedente se non corrisponde all'inizio di riga - Delete word to left - + Elimina la parola a sinistra - Delete word to right - + Elimina la parola a destra - Delete right to end of next word - + Elimina da destra alla fine della prossima parola - Delete line to left - + Elimina la riga a sinsitra - Delete line to right - + Elimina la riga a destra - Delete current line - + Elimina la riga corrente - Cut current line - + Taglia la riga corrente - Copy current line - + Copia la riga corrente - Transpose current and previous lines - + Trasponi la riga corrente e quella precedente - Duplicate the current line - + Duplica la riga corrente - Select all - + Seleziona tutto - Move selected lines up one line - + Muovi le righe selezionate in alto di una riga - Move selected lines down one line - + Muovi le righe selezionate in basso di una riga - Duplicate selection - + Duplica la selezione - Convert selection to lower case - + Converti la selezione in minuscolo - Convert selection to upper case - + Converti la selezione in maiuscolo - Cut selection - + Taglia la selezione - Copy selection - + Copia la selezione - Paste - Incolla + Incolla - Toggle insert/overtype - + Alterna inserisci/sovrascrivi - Insert newline - + Inserisci una nuova riga - Formfeed - + Separatore di pagina - Indent one level - + Indenta di un livello - De-indent one level - + Rimuovi l'indentazione di un livello - Cancel - Annulla + Annulla - Undo last command - + Annulla l'ultimo comando - Redo last command - + Ripristina l'ultimo comando - Zoom in - + Ingrandisci - Zoom out - + Rimpicciolisci QsciLexerCPP - Default - Default + Default - Inactive default - + Default inattivo - C comment - + Commento C - Inactive C comment - + Commento C inattivo - C++ comment - + Commento C++ - Inactive C++ comment - + Commento C++ inattivo - JavaDoc style C comment - + Commento JavaDoc in stile C - Inactive JavaDoc style C comment - + Commento JavaDoc in stile C inattivo - Number - + Numero - Inactive number - + Numero inattivo - Keyword - Parola chiave + Parola chiave - Inactive keyword - + Parola chiave inattiva - Double-quoted string - + Stringa tra virgolette - Inactive double-quoted string - + Stringa tra virgolette inattiva - Single-quoted string - + Stringa tra singoli apici - Inactive single-quoted string - + Stringa tra singoli apici inattiva - IDL UUID - + IDL UUID - Inactive IDL UUID - + IDL UUID inattivo - Pre-processor block - + Blocco di pre-processore - Inactive pre-processor block - + Blocco di pre-processore inattivo - Operator - + Operatore - Inactive operator - + Operatore inattivo - Identifier - Identificatore + Identificatore - Inactive identifier - + Identificatore inattivo - Unclosed string - + Stringa non terminata - Inactive unclosed string - + Stringa non terminata inattiva - C# verbatim string - + Stringa verbatim in C# - Inactive C# verbatim string - + Stringa verbatim in C# inattiva - JavaScript regular expression - + Espressione regolare JavaScript - Inactive JavaScript regular expression - + Espressione regolare JavaScript inattiva - JavaDoc style C++ comment - + Commmento JavaDoc in stile C++ - Inactive JavaDoc style C++ comment - + Commento JavaDoc in stile C++ inattivo - Secondary keywords and identifiers - + Parole chiave e identificatori secondari - Inactive secondary keywords and identifiers - + Parole chiave e identificatori secondari inattivi - JavaDoc keyword - + Parola chiave JavaDoc - Inactive JavaDoc keyword - + Parola chiave JavaDoc inattiva - JavaDoc keyword error - + Parola chiave JavaDoc errata - Inactive JavaDoc keyword error - + Parola chiava JavaDoc errata inattiva - Global classes and typedefs - + Classi globali e typedefs - Inactive global classes and typedefs - + Classi globali e typedefs inattive - C++ raw string - + Stringa grezza C++ - Inactive C++ raw string - + Stringa grezza C++ inattiva - Vala triple-quoted verbatim string - + Stringa Vala tri-apicata verbatim - Inactive Vala triple-quoted verbatim string - + Stringa Vala tri-apicata verbatim inattiva - Pike hash-quoted string - + Stringa Pike tra hash - Inactive Pike hash-quoted string - + Stringa Pike tra hash inattiva - Pre-processor C comment - + Commento di pre-processore C - Inactive pre-processor C comment - + Commento di pre-processore C inattivo - JavaDoc style pre-processor comment - + Commento di pre-processore in stile JavaDoc - Inactive JavaDoc style pre-processor comment - + Commento di pre-processore in stile JavaDoc inattivo - User-defined literal - + Letterale definito dall'utente - Inactive user-defined literal - + Letterale definito dall'utente inattivo - Task marker - + Segno di Task - Inactive task marker - + Segno di Task inattivo - Escape sequence - + Sequenza di escape - Inactive escape sequence - + Sequenza di escape inattiva QsciLexerHTML - HTML default - + Default HTML - Tag - + Tag - Unknown tag - + Tag sconosciuto - Attribute - + Attributo - Unknown attribute - + Attributo sconosciuto - HTML number - + Numero HTML - HTML double-quoted string - + Stringa tra virgolette in HTML - HTML single-quoted string - + Stringa tra apici in HTML - Other text in a tag - + Altro test in un tag - HTML comment - + Commento HTML - Entity - + Entità - End of a tag - + Fine di un tag - Start of an XML fragment - + Inizio di un frammento XML - End of an XML fragment - + Fine di un frammento XML - Script tag - + Tag di script - Start of an ASP fragment with @ - + Inizio di un frammento ASP con @ - Start of an ASP fragment - + Inizio di un frammento ASP - CDATA - + CDATA - Start of a PHP fragment - + Inizio di un frammento PHP - Unquoted HTML value - + Valore HTML senza apici - ASP X-Code comment - + Commento di codice ASP X - SGML default - + Default SGML - SGML command - + Comando SGML - First parameter of an SGML command - + Primo parametro di un comando SGML - SGML double-quoted string - + Stringa tra virgolette SGML - SGML single-quoted string - + Stringa tra apici SGML - SGML error - + Errore SGML - SGML special entity - + Entità speciale SGML - SGML comment - + Commento SGML - First parameter comment of an SGML command - + Primo parametro di un comando SGML - SGML block default - + Blocco di default SGML - Start of a JavaScript fragment - + Inizio di un frammento JavaScript - JavaScript default - + Default JavaScript - JavaScript comment - + Commento JavaScript - JavaScript line comment - + Commento di riga JavaScript - JavaDoc style JavaScript comment - + Commento JavaScript in stile JavaDoc - JavaScript number - + Numero JavaScript - JavaScript word - + Parola JavaScript - JavaScript keyword - + Parola chiave JavaScript - JavaScript double-quoted string - + Stringa tra virgolette JavaScript - JavaScript single-quoted string - + Stringa tra apici JavaScript - JavaScript symbol - + Simbolo JavaScript - JavaScript unclosed string - + Stringa non delimitata JavaScript - JavaScript regular expression - + Espressione regolare JavaScript - Start of an ASP JavaScript fragment - + Inizio di un frammento ASP in JavaScript - ASP JavaScript default - + Default ASP JavaScript - ASP JavaScript comment - + Commento ASP JavaScript - ASP JavaScript line comment - + Line di commento ASP JavaScript - JavaDoc style ASP JavaScript comment - + Commento ASP JavaScript in stile JavaDoc - ASP JavaScript number - + Numero ASP JavaScript - ASP JavaScript word - + Parola ASP JavaScript - ASP JavaScript keyword - + Parola chiave ASP JavaScript - ASP JavaScript double-quoted string - + Stringa ASP JavaScript tra virgolette - ASP JavaScript single-quoted string - + Stringa ASP JavaScript tra apici - ASP JavaScript symbol - + Simbolo ASP JavaScript - ASP JavaScript unclosed string - + Stringa non delimitata ASP JavaScript - ASP JavaScript regular expression - + Espressione regolare ASP JavaScript - Start of a VBScript fragment - + Inizio di un frammento VBScript - VBScript default - + Default VBScript - VBScript comment - + Commento VBScript - VBScript number - + Numero VBScript - VBScript keyword - + Parola chiave VBScript - VBScript string - + Stringa VBScript - VBScript identifier - + Identificatore VBScript - VBScript unclosed string - + Stringa non delimitata VBScript - Start of an ASP VBScript fragment - + Inizio di un frammento ASP VBScript - ASP VBScript default - + Default ASP VBScript - ASP VBScript comment - + Commento ASP VBScript - ASP VBScript number - + Numero ASP VBScript - ASP VBScript keyword - + Parola chiave ASP VBScript - ASP VBScript string - + Stringa ASP VBScript - ASP VBScript identifier - + Identificatore ASP VBScript - ASP VBScript unclosed string - + Stringa non delimitata ASP VBScript - Start of a Python fragment - + Inizio di un frammento Python - Python default - + Default Python - Python comment - + Commento Python - Python number - + Numero Python - Python double-quoted string - + Stringa tra virgolette Python - Python single-quoted string - + Stringa tra apici Python - Python keyword - + Parola chiave Python - Python triple double-quoted string - + Stringa tra tripilci virgolette Python - Python triple single-quoted string - + Stringa tra triplici apici Python - Python class name - + Nome di classe Python - Python function or method name - + Funzione o nome di metodo Python - Python operator - + Operatore Python - Python identifier - + Identificatore Python - Start of an ASP Python fragment - + Inizio di un frammento ASP Python - ASP Python default - + Default ASP Python - ASP Python comment - + Commento ASP Python - ASP Python number - + Numero ASP Python - ASP Python double-quoted string - + Stringa tra virgolette ASP Python - ASP Python single-quoted string - + Stringa tra apici ASP Python - ASP Python keyword - + Parola chiave ASP Python - ASP Python triple double-quoted string - + Stringa tra triplici virgolette ASP Python - ASP Python triple single-quoted string - + Stringa tra triplici apici ASP Python - ASP Python class name - + Nome di classe ASP Python - ASP Python function or method name - + Nome di funzione o metodo ASP Python - ASP Python operator - + Operatore ASP Python - ASP Python identifier - + Identificatore ASP Python - PHP default - + Default PHP - PHP double-quoted string - + Stringa tra virgolette PHP - PHP single-quoted string - + Stringa tra apici PHP - PHP keyword - + Parola chiave PHP - PHP number - + Numero PHP - PHP variable - + Variabile PHP - PHP comment - + Commento PHP - PHP line comment - + Commento di linea PHP - PHP double-quoted variable - + Variabile tra virgolette PHP - PHP operator - + Operatore PHP QsciLexerJSON - Default - Default + Default - Number - + Numero - String - Stringa + Stringa - Unclosed string - + Stringa non delimitata - Property - + Proprietà - Escape sequence - + Sequenza di escape - Line comment - + Commento di linea - Block comment - + Commento in blocco - Operator - + Operatore - IRI - + IRI - JSON-LD compact IRI - + JSON-LD IRI compatto - JSON keyword - + Parola chiave JSON - JSON-LD keyword - + Parola chiave JSON-LD - Parsing error - + Errore di analisi QsciLexerJavaScript - Regular expression - Espressione regolare + Espressione regolare QsciLexerPython - Default - Default + Default - Comment - Commento + Commento - Number - + Numero - Double-quoted string - + Stringa tra virgolette - Single-quoted string - + Stringa tra apici - Keyword - Parola chiave + Parola chiave - Triple single-quoted string - + Stringa tra triplici apici - Triple double-quoted string - + Stringa tra triplici virgolette - Class name - + Nome di classe - Function or method name - + Nome di funzione o metodo - Operator - + Operatore - Identifier - Identificatore + Identificatore - Comment block - + Commento in blocco - Unclosed string - + Stringa non delimitata - Highlighted identifier - + Identificatore evidenziato - Decorator - + Decoratore - Double-quoted f-string - + Stringa-f tra virgolette - Single-quoted f-string - + Stringa-f tra singoli apici - Triple single-quoted f-string - + Stringa-f tra triplici apici - Triple double-quoted f-string - + Stringa-f tra triplici virgolette QsciLexerSQL - Default - Default + Default - Comment - Commento + Commento - Comment line - + Commento di linea - JavaDoc style comment - + Commento in stile JavaDoc - Number - + Numero - Keyword - Parola chiave + Parola chiave - Double-quoted string - + Stringa tra virgolette - Single-quoted string - + Stringa tra apici - SQL*Plus keyword - + Parola chiave SQL*Plus - SQL*Plus prompt - + Richiesta SQL*Plus - Operator - + Operatore - Identifier - Identificatore + Identificatore - SQL*Plus comment - + Commento SQL*Plus - # comment line - + # commento di linea - JavaDoc keyword - + Parola chiave JavaDoc - JavaDoc keyword error - + Errore parola chiave JavaDoc - User defined 1 - + Definito dall'utente 1 - User defined 2 - + Definito dall'utente 2 - User defined 3 - + Definito dall'utente 3 - User defined 4 - + Definito dall'utente 4 - Quoted identifier - + Identificatore di citazione - Quoted operator - + Operatore di citazione QsciScintilla - &Undo - A&nnulla + A&nnulla - &Redo - + &Ripristina - Cu&t - + &Taglia - &Copy - + &Copia - &Paste - + &Incolla - Delete - + Elimina - Select All - + Seleziona tutto @@ -7643,6 +7485,14 @@ Si prega di ricontrollare. Upload Database Carica Database + + Paste + Incolla + + + Cancel + Annulla + Upload this database as a new commit @@ -7827,26 +7677,26 @@ Sei sicuro di voler procedere? Si prega d'inserire la passphrase per questo certificato di client in modo da permetterne l'autenticazione. - + Cancel Annulla - + Uploading remote database to %1 Carico il database remoto in %1 - + Downloading remote database from %1 Scarico il database remoto da %1 - + Error: Cannot open the file for sending. Errore: Impossibile aprire il file per l'invio. @@ -8581,32 +8431,32 @@ L'utilizzo di questa funzione dev'essere permesso tramite le Preferenz caricamento... - + References %1(%2) Hold %3Shift and click to jump there Riferimenti %1(%2) Tieni premuto %3Shift e clicca per saltare lì - + Error changing data: %1 Errore nella modifica dei dati: %1 - + retrieving list of columns recupero la lista delle colonne - + Fetching data... Recupero dati... - - + + Cancel Annulla @@ -8943,12 +8793,12 @@ Tieni premuto %3Shift e clicca per saltare lì - <html><head/><body><p>This button creates a new record in the database. Hold the mouse button to open a pop-up menu of different options:</p><ul><li><span style=" font-weight:600;">New Record</span>: insert a new record with default values in the database.</li><li><span style=" font-weight:600;">Insert Values...</span>: open a dialog for entering values before they are inserted in the database. This allows to enter values acomplishing the different constraints. This dialog is also open if the <span style=" font-weight:600;">New Record</span> option fails due to these constraints.</li></ul></body></html> + <html><head/><body><p>This button creates a new record in the database. Hold the mouse button to open a pop-up menu of different options:</p><ul><li><span style=" font-weight:600;">New Record</span>: insert a new record with default values in the database.</li><li><span style=" font-weight:600;">Insert Values...</span>: open a dialog for entering values before they are inserted in the database. This allows to enter values accomplishing the different constraints. This dialog is also open if the <span style=" font-weight:600;">New Record</span> option fails due to these constraints.</li></ul></body></html> <html><head/><body><p>Questo pulsante crea una nuova riga nel database. Mantieni premuto il tasto del mouse per ottenere più opzioni:</p><ul><li><span style=" font-weight:600;">Nuova Riga</span>: inserisce una nuova riga con i valori predefiniti.</li><li><span style=" font-weight:600;">Inserisci Valori...</span>: apre una finestra per inserire i valori prima che vengano immessi nel database. Questo permette che l'immissione dei valori rispetti diversi limiti (constraints). Questa finestra si apre anche se l'opzione <span style=" font-weight:600;">Nuova Riga</span> fallisce a causa di questi limiti (constraints).</li></ul></body></html> - + Delete Record Elimina Riga @@ -9025,7 +8875,7 @@ Tieni premuto %3Shift e clicca per saltare lì - <html><head/><body><p>This popup menu provides the following options applying to the currently browsed and filtered table:</p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Export to CSV: this option exports the data of the browsed table as currently displayed (after filters, display formats and order column) to a CSV file.</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Save as view: this option saves the current setting of the browsed table (filters, display formats and order column) as an SQL view that you can later browse or use in SQL statements.</li></ul></body></html> + <html><head/><body><p>This pop-up menu provides the following options applying to the currently browsed and filtered table:</p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Export to CSV: this option exports the data of the browsed table as currently displayed (after filters, display formats and order column) to a CSV file.</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Save as view: this option saves the current setting of the browsed table (filters, display formats and order column) as an SQL view that you can later browse or use in SQL statements.</li></ul></body></html> <html><head/><body><p>Questo menù fornisce le seguenti opzioni applicabili alla tabella filtrata e visualizzata correntemente:</p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Esporta in CSV: questa opzione esporta i dati della tabella così come visualizzati (con filtri, riordine delle colonne e formati) in un file CSV.</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Salva come vista: questa opzione salva le impostazioni correnti della tabella visualizzata (filtri, riordine delle colonne e formati) come vista SQL che puoi successivamente visualizzare o utilizzare come statement.</li></ul></body></html> @@ -9050,7 +8900,7 @@ Tieni premuto %3Shift e clicca per saltare lì - + Set encoding Imposta codifica @@ -9315,96 +9165,96 @@ Tieni premuto %3Shift e clicca per saltare lì . Somma: %1; Media: %2; Min: %3; Max: %4 - + Conditional formats for "%1" Formattazione condizionale per '%1' - + determining row count... determino il numero di righe... - + %L1 - %L2 of >= %L3 %L1 - %L2 di >= %L3 - + %L1 - %L2 of %L3 %L1 - %L2 di %L3 - + (clipped at %L1 rows) (troncato a %L1 righe) - + Please enter a pseudo-primary key in order to enable editing on this view. This should be the name of a unique column in the view. Si prega d'inserire una pseudo-chiave primaria in modo da abilitare le modifiche su questa vista. Deve corrispondere al nome di una colonna univoca nella vista. - + Delete Records Elimina i Records - + Duplicate records Duplica i records - + Duplicate record Duplica il record - + Ctrl+" - + Adjust rows to contents Adatta le righe al contenuto - + Error deleting record: %1 Errore eliminando le righe: %1 - + Please select a record first Si prega di selezionare prima un record - + Please choose a new encoding for all tables. Si prega di scegliere una nuova codifica per tutte le tabelle. - + Please choose a new encoding for this table. Si prega di scegliere una nuova codifica per questa tabella. - + %1 Leave the field empty for using the database encoding. %1 Lasciare il campo vuoto per utilizzare la codifica del database. - + This encoding is either not valid or not supported. Questa codifica non è valida o non è supportata. - + %1 replacement(s) made. %1 sostituzione(i) effettuata(e). @@ -9435,19 +9285,16 @@ Lasciare il campo vuoto per utilizzare la codifica del database. UndoStack - Inserting %1 bytes - + Inserisco %1 bytes - Delete %1 chars - + Elimino %1 caratteri - Overwrite %1 chars - + Sovrascrivo %1 caratteri diff --git a/src/translations/sqlb_ja.ts b/src/translations/sqlb_ja.ts index aa3a0c6a8..01497d431 100644 --- a/src/translations/sqlb_ja.ts +++ b/src/translations/sqlb_ja.ts @@ -15,8 +15,8 @@ - <html><head/><body><p>DB Browser for SQLite is an open source, freeware visual tool used to create, design and edit SQLite database files.</p><p>It is bi-licensed under the Mozilla Public License Version 2, as well as the GNU General Public License Version 3 or later. You can modify or redistribute it under the conditions of these licenses.</p><p>See <a href="https://www.gnu.org/licenses/gpl.html"><span style=" text-decoration: underline; color:#0000ff;">http://www.gnu.org/licenses/gpl.html</span></a> and <a href="https://www.mozilla.org/MPL/2.0/index.txt"><span style=" text-decoration: underline; color:#0000ff;">https://www.mozilla.org/MPL/2.0/index.txt</span></a> for details.</p><p>For more information on this program please visit our website at: <a href="https://sqlitebrowser.org"><span style=" text-decoration: underline; color:#0000ff;">http://sqlitebrowser.org</span></a></p><p><span style=" font-size:small;">This software uses the GPL/LGPL Qt Toolkit from </span><a href="http://qt-project.org/"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://qt-project.org/</span></a><span style=" font-size:small;"><br/>See </span><a href="https://doc.qt.io/qt-5/licensing.html"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://qt-project.org/doc/qt-5/licensing.html</span></a><span style=" font-size:small;"> for licensing terms and information.</span></p><p><span style=" font-size:8pt;">We use the nalgeon/sqlean library for SQLite extensions support.<br/>This library is licensed under the MIT license, see the following for more information:<br/></span><a href="https://github.com/nalgeon/sqlean"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">https://github.com/nalgeon/sqlean</span></a></p><p><span style=" font-size:small;">It also uses the Pastel SVG icon set by Michael Buckley under a Creative Commons Attribution Share Alike 4.0 license.<br/>See </span><a href="https://codefisher.org/pastel-svg/"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://codefisher.org/pastel-svg/</span></a><span style=" font-size:small;"> for details.</span></p></body></html> - + <html><head/><body><p>DB Browser for SQLite is an open source, freeware visual tool used to create, design and edit SQLite database files.</p><p>It is bi-licensed under the Mozilla Public License Version 2, as well as the GNU General Public License Version 3 or later. You can modify or redistribute it under the conditions of these licenses.</p><p>See <a href="https://www.gnu.org/licenses/gpl.html"><span style=" text-decoration: underline; color:#0000ff;">https://www.gnu.org/licenses/gpl.html</span></a> and <a href="https://www.mozilla.org/MPL/2.0/index.txt"><span style=" text-decoration: underline; color:#0000ff;">https://www.mozilla.org/MPL/2.0/index.txt</span></a> for details.</p><p>For more information on this program please visit our website at: <a href="https://sqlitebrowser.org"><span style=" text-decoration: underline; color:#0000ff;">https://sqlitebrowser.org</span></a></p><p><span style=" font-size:small;">This software uses the GPL/LGPL Qt Toolkit from </span><a href="https://qt-project.org/"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://qt-project.org/</span></a><span style=" font-size:small;"><br/>See </span><a href="https://doc.qt.io/qt-5/licensing.html"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://doc.qt.io/qt-5/licensing.html</span></a><span style=" font-size:small;"> for licensing terms and information.</span></p><p><span style=" font-size:8pt;">We use the nalgeon/sqlean library for SQLite extensions support.<br/>This library is licensed under the MIT license, see the following for more information:<br/></span><a href="https://github.com/nalgeon/sqlean"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">https://github.com/nalgeon/sqlean</span></a></p><p><span style=" font-size:small;">It also uses the Pastel SVG icon set by Michael Buckley under a Creative Commons Attribution Share Alike 4.0 license.<br/>See </span><a href="https://codefisher.org/pastel-svg/"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://codefisher.org/pastel-svg/</span></a><span style=" font-size:small;"> for details.</span></p></body></html> + <html><head/><body><p>DB Browser for SQLite は、SQLite データベースファイルを作成、設計、編集するための、オープンソースでフリーウェアなヴィジュアルツールです。</p><p>これは、Mozilla Public License Version 2 と、GNU General Public License Version 3 かそれ以降のすべてバージョン の両方でライセンスされています。あなたはこれらのライセンスの条件の下で変更や再配布ができます。</p><p>詳細は<a href="https://www.gnu.org/licenses/gpl.html"><span style=" text-decoration: underline; color:#0000ff;">https://www.gnu.org/licenses/gpl.html</span></a> と <a href="https://www.mozilla.org/MPL/2.0/index.txt"><span style=" text-decoration: underline; color:#0000ff;">https://www.mozilla.org/MPL/2.0/index.txt</span></a> をご覧ください。</p><p>このプログラムの更なる情報を得るには、私たちのウェブサイトを訪れてください:<a href="https://sqlitebrowser.org"><span style=" text-decoration: underline; color:#0000ff;">https://sqlitebrowser.org</span></a></p><p><span style=" font-size:small;">このソフトウェアは GPL/LGPL Qt Toolkit を使用しています。</span><a href="https://qt-project.org/"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://qt-project.org/</span></a><span style=" font-size:small;"><br/>ライセンス条項や情報は </span><a href="https://doc.qt.io/qt-5/licensing.html"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://doc.qt.io/qt-5/licensing.html</span></a><span style=" font-size:small;"> をご覧ください。</span></p><p><span style=" font-size:8pt;">このソフトウェアはSQLite拡張サポートのため、nalgeon/sqlean library を使用しています。<br/>このライブラリはMITライセンスです。更なる情報は以下をご覧ください:<br/></span><a href="https://github.com/nalgeon/sqlean"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">https://github.com/nalgeon/sqlean</span></a></p><p><span style=" font-size:small;">また、Michael Buckley の Pastel SVG icon set を Creative Commons Attribution Share Alike 4.0 license の元に使用しています。<br/>詳細は </span><a href="https://codefisher.org/pastel-svg/"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://codefisher.org/pastel-svg/</span></a><span style=" font-size:small;"> をご覧ください。</span></p></body></html> @@ -285,38 +285,38 @@ -o/--option と -O/--save-optionオプションは グループ/設定=値 の形式で引数が必要です - + SQLite Version SQLite バージョン - + SQLCipher Version %1 (based on SQLite %2) SQLCipher バージョン %1 (SQLite %2 がベース) - + DB Browser for SQLite Version %1. DB Browser for SQLite バージョン %1. - + Last commit hash when built: %1 ビルド時最新コミットのハッシュ: %1 - + Built for %1, running on %2 %1 向けビルド, %2 で動作中 - + Qt Version %1 Qt バージョン %1 - Invalid option/non-existant file: %1 + Invalid option/non-existent file: %1 不正なオプション/存在しないファイルです: %1 @@ -393,7 +393,7 @@ プレーンテキストヘッダーサイズ - + Please set a key to encrypt the database. Note that if you change any of the other, optional, settings you'll need to re-enter them as well every time you open the database file. Leave the password fields empty to disable the encryption. @@ -404,7 +404,7 @@ The encryption process might take some time and you should have a backup copy of 暗号化工程には少し時間がかかるでしょう。データベースのバックアップを作成するべきです! 保存していない変更は暗号化の前に反映されます。 - + Please enter the key used to encrypt the database. If any of the other settings were altered for this database file you need to provide this information as well. データベースの暗号化に使用するキーを入力してください。 @@ -429,122 +429,122 @@ If any of the other settings were altered for this database file you need to pro カラム '%1' の表示形式を選択してください。これは表示前に各値に適用されます。 - + Default デフォルト - + Decimal number 十進数 - + Exponent notation 指数表記 - + Hex blob 十六進Blob - + Hex number 十六進数 - + Octal number 八進数 - + Round number 概数 - + Apple NSDate to date Apple NSDate を日付に - + Java epoch (milliseconds) to date Java エポック (ミリ秒) を日付に - + .NET DateTime.Ticks to date .NET DateTime.Ticks を日付に - + Julian day to date ユリウス日を日付に - + Unix epoch to date Unix エポックを日付に - + Unix epoch to local time Unix エポックを地方時に - + WebKit / Chromium epoch to date - + WebKit / Chromium エポックを日付に - + WebKit / Chromium epoch to local time - + WebKit / Chromium エポックを地方時に - + Windows DATE to date Windows DATE を日付に - + Date as dd/mm/yyyy 日付(dd/mm/yyyy) - + Lower case 小文字 - + Upper case 大文字 - + Binary GUID to text バイナリGUIDをテキストに - + SpatiaLite Geometry to SVG SpatiaLiteジオメトリーをSVGに - + Custom カスタム - + Custom display format must contain a function call applied to %1 カスタム表示形式には、%1 に適用される関数呼び出しが含まれている必要があります - + Error in custom display format. Message from database engine: %1 @@ -553,7 +553,7 @@ If any of the other settings were altered for this database file you need to pro %1 - + Custom display format must return only one column but it returned %1. カスタム表示形式はただ1つのカラムを返す必要がありますが、%1 が返ってきました。 @@ -680,166 +680,166 @@ If any of the other settings were altered for this database file you need to pro DBBrowserDB - + Please specify the database name under which you want to access the attached database 接続したデータベースへのアクセス時に使用するデータベース名を指定してください - + Invalid file format 不正なファイルフォーマット - + Do you really want to close this temporary database? All data will be lost. 本当にこの一時データベースを閉じますか? すべてのデータは喪失します。 - + Do you want to save the changes made to the database file %1? データベースファイル '%1' への変更を保存しますか? - + Database didn't close correctly, probably still busy データベースが正常に閉じられませんでした。多分まだビジー状態です - + Cannot open destination file: '%1' 目的のファイル: '%1' を開けません - - + + Cannot backup to file: '%1'. Message: %2 ファイル: '%1' をバックアップできません。メッセージ: %2 - + The database is currently busy: データベースは現在ビジー状態です: - + Do you want to abort that other operation? 他の操作を中断しますか? - + Exporting database to SQL file... データベースをSQLファイルにエクスポート... - - + + Cancel キャンセル - - + + No database file opened データベースファイルを開いていません - + Executing SQL... SQLを実行... - + Action cancelled. 操作をキャンセルしました。 - - + + Error in statement #%1: %2. Aborting execution%3. この文でエラー #%1: %2。 実行を中断%3。 - - + + and rolling back ロールバックしました - + didn't receive any output from %1 %1 から出力を得られませんでした - + could not execute command: %1 コマンド: %1 を実行できませんでした - + Cannot delete this object このオブジェクトは削除できません - + Cannot set data on this object このオブジェクトにデータ設定はできません - - + + A table with the name '%1' already exists in schema '%2'. 名前が '%1' のテーブルはスキーマ '%2' に既に存在します。 - + No table with name '%1' exists in schema '%2'. スキーマ '%2' に名前が '%1' のテーブルがありません。 - - + + Cannot find column %1. カラム %1 が見つかりません。 - + Creating savepoint failed. DB says: %1 セーブポイントの作成に失敗。DBの反応: %1 - + Renaming the column failed. DB says: %1 カラム名変更に失敗。DBの反応: %1 - - + + Releasing savepoint failed. DB says: %1 セーブポイントの解放に失敗。DBの反応: %1 - + Creating new table failed. DB says: %1 新しいテーブルの作成に失敗。DBの反応: %1 - + Copying data to new table failed. DB says: %1 新しいテーブルへのデータのコピーに失敗。DBの反応: %1 - + Deleting old table failed. DB says: %1 古いテーブルの削除に失敗。DBの反応: %1 - + Error renaming table '%1' to '%2'. Message from database engine: %3 @@ -848,12 +848,12 @@ Message from database engine: %3 - + could not get list of db objects: %1 DBオブジェクトの一覧を取得できません: %1 - + Restoring some of the objects associated with this table failed. This is most likely because some column names changed. Here's the SQL statement which you might want to fix and execute manually: @@ -863,32 +863,32 @@ Restoring some of the objects associated with this table failed. This is most li - + could not get list of databases: %1 データベースの一覧を取得できません: %1 - + Error setting pragma %1 to %2: %3 プラグマ %1 を %2 に設定時にエラー: %3 - + File not found. ファイルが見つかりません。 - + Error loading extension: %1 拡張の読み込みでエラー: %1 - + Error loading built-in extension: %1 - + ビルトイン拡張の読み込みでエラー: %1 - + could not get column information カラム情報が取得できませんでした @@ -1446,7 +1446,7 @@ Do you want to apply the edited data to row=%1, column=%2? Make this a 'WITHOUT ROWID' table. Setting this flag requires specifying a PRIMARY KEY (which can be of any type, and can be composite), and forbids the AUTOINCREMENT flag. - + 「ROWIDなし」のテーブルを作成します。このフラグを設定するには主キー(任意の型、複合でもよい)の設定が必要です。そして、自動増加フラグは使用できません。 @@ -1952,7 +1952,7 @@ All data currently stored in this field will be lost. ExtendedScintilla - + Ctrl+H @@ -1963,22 +1963,22 @@ All data currently stored in this field will be lost. - + Ctrl+P - + Find... 検索... - + Find and Replace... 検索と置換... - + Print... 印刷... @@ -1986,129 +1986,129 @@ All data currently stored in this field will be lost. ExtendedTableWidget - + Use as Exact Filter 抽出フィルターに使う - + Containing 含む - + Not containing 含まない - + Not equal to 等しくない - + Greater than より大きい - + Less than 未満 - + Greater or equal 以上 - + Less or equal 以下 - + Between this and... これとの間... - + Regular expression 正規表現 - + Edit Conditional Formats... 条件付き書式を編集... - + Set to NULL NULLに設定 - + Cut 切り取り - + Copy コピー - + Copy with Headers ヘッダーを含めてコピー - + Copy as SQL SQLとしてコピー - + Paste 貼り付け - + Print... 印刷... - + Use in Filter Expression フィルター式を使用 - + Alt+Del - + Ctrl+Shift+C - + Ctrl+Alt+C - + The content of the clipboard is bigger than the range selected. Do you want to insert it anyway? クリップボードの内容は選択された範囲より大きいです. それでも挿入しますか? - + <p>Not all data has been loaded. <b>Do you want to load all data before selecting all the rows?</b><p><p>Answering <b>No</b> means that no more data will be loaded and the selection will not be performed.<br/>Answering <b>Yes</b> might take some time while the data is loaded but the selection will be complete.</p>Warning: Loading all the data might require a great amount of memory for big tables. <p>読み込まれていないデータがあります。<b>すべての行を選択する前に、すべてのデータを読み込みますか?</b><p><p>答えが <b>いいえ</b> ならば、データは読み込まれず、選択は実行されません。<br/>答えが <b>はい</b> ならば、時間がかかりますが、すべてのデータを読み込み、選択が実行されます。</p>警告: 大きいテーブルにあるすべてのデータの読み込みにはかなりの記憶領域を必要とします。 - + Cannot set selection to NULL. Column %1 has a NOT NULL constraint. 選択範囲にNULLを設定できません。カラム %1 には非NULL制約があります。 @@ -2160,12 +2160,12 @@ Do you want to insert it anyway? FilterLineEdit - + Filter フィルター - + These input fields allow you to perform quick filters in the currently selected table. By default, the rows containing the input text are filtered out. The following operators are also supported: @@ -2192,92 +2192,92 @@ x~y 範囲: xとyの間 /regexp/ 正規表現に一致する値 - + Set Filter Expression フィルター式を設定 - + What's This? これは何? - + Is NULL NULL - + Is not NULL NULLでない - + Is empty 空文字 - + Is not empty 空文字でない - + Not containing... 含まない... - + Equal to... 等しい... - + Not equal to... 等しくない... - + Greater than... より大きい... - + Less than... 未満... - + Greater or equal... 以上... - + Less or equal... 以下... - + In range... 範囲内... - + Regular expression... 正規表現... - + Clear All Conditional Formats すべての条件付き書式を削除 - + Use for Conditional Format 条件付き書式を使う - + Edit Conditional Formats... 条件付き書式を編集... @@ -2501,7 +2501,7 @@ x~y 範囲: xとyの間 - + Tab タブ @@ -2644,7 +2644,7 @@ x~y 範囲: xとyの間 - + Deselect All すべて非選択 @@ -2654,52 +2654,52 @@ x~y 範囲: xとyの間 類似に一致 - + Select All すべて選択 - + There is already a table named '%1' and an import into an existing table is only possible if the number of columns match. 名前が '%1' のテーブルは既に存在しています。既存のテーブルへのインポートはカラムの数が一致する場合のみ可能です。 - + There is already a table named '%1'. Do you want to import the data into it? 名前が '%1' のテーブルは既に存在しています。データをこれにインポートしますか? - + Creating restore point failed: %1 復元ポイントの作成に失敗: %1 - + Creating the table failed: %1 テーブルの作成に失敗: %1 - + importing CSV CSVのインポート - + Could not prepare INSERT statement: %1 INSERT文を準備できませんでした: %1 - + Inserting row failed: %1 行の挿入に失敗: %1 - + Unexpected end of file. Please make sure that you have configured the correct quote characters and the file is not malformed. 予想外のEoF。正しくクォートされているか、ファイル形式が不正でないか確認してください。 - + Importing the file '%1' took %2ms. Of this %3ms were spent in the row function. ファイル '%1' のインポートに %2msかかりました。内 %3ms は行関数に費やされました。 @@ -2721,112 +2721,112 @@ SQL文をオブジェクト行からドラッグしほかのアプリケーシ - + Warning: this pragma is not readable and this value has been inferred. Writing the pragma might overwrite a redefined LIKE provided by an SQLite extension. 警告: このプラグマは読み取り可能でなく、この値は推定です。プラグマを書き込んでも、SQLite 拡張などで上書きされるかもしれません。 - + toolBar1 ツールバー1 - + &File ファイル(&F) - + &Import インポート(&I) - + &Export エクスポート(&E) - + &Edit 編集(&E) - + &View ビュー(&V) - + &Help ヘルプ(&H) - + Too&ls ツール(&L) - + DB Toolbar DBツールバー - + Edit Database &Cell データベースのセルを編集(&C) - + SQL &Log SQLログ(&L) - + Show S&QL submitted by 表示するSQLの送信元は(&Q) - + User ユーザー - + Application アプリケーション - + Error Log エラーログ - + This button clears the contents of the SQL logs このボタンでSQLログの内容を消去します - + &Clear 消去(&C) - + This panel lets you examine a log of all SQL commands issued by the application or by yourself このパネルでアプリケーションやあなたが発行した全てのSQLコマンドのログを調査できます - + &Plot プロット(&P) - + DB Sche&ma DBスキーマ(&M) - + This is the structure of the opened database. You can drag multiple object names from the Name column and drop them into the SQL editor and you can adjust the properties of the dropped names using the context menu. This would help you in composing SQL statements. You can drag SQL statements from the Schema column and drop them into the SQL editor or into other applications. @@ -2837,446 +2837,446 @@ SQL文をスキーマカラムからSQLエディターや他のアプリケー - + &Remote リモート(&R) - - + + Project Toolbar プロジェクトツールバー - + Extra DB toolbar 追加DBツールバー - - - + + + Close the current database file 現在のデータベースファイルを閉じます - + &New Database... 新しいデータベース(&N)... - - + + Create a new database file 新しいデータベースファイルを作成します - + This option is used to create a new database file. このオプションは新しいデータベースファイルを作成するために使います。 - + Ctrl+N - - + + &Open Database... データベースを開く(&O)... - - - - - + + + + + Open an existing database file 既存のデータベースファイルを開きます - - - + + + This option is used to open an existing database file. このオプションは既存のデータベースファイルを開くために使います。 - + Ctrl+O - + &Close Database データベースを閉じる(&C) - + This button closes the connection to the currently open database file このボタンで現在開いているデータベースファイルとの接続を閉じます - + New &tab 新しいタブ(&T) - + Open SQL file(s) SQLファイルを開く - + This button opens files containing SQL statements and loads them in new editor tabs このボタンはSQL文を含むファイルを開き、新しい編集タブに読み込みます - + Execute line 行を実行 - + Sa&ve Project プロジェクトを保存(&V) - + This button lets you save all the settings associated to the open DB to a DB Browser for SQLite project file このボタンはDBを開くことに関係するすべての設定をDB Browser for SQLite プロジェクトファイルに保存します - + This button lets you open a DB Browser for SQLite project file このボタンはDB Browser for SQLite プロジェクトファイルを開きます - + Ctrl+Shift+O - + Find 検索 - + Find or replace 検索と置換 - + Print text from current SQL editor tab 現在のSQLエディタータブのテキストを印刷します - + Print the structure of the opened database 開いているデータベースの構造を印刷します - + Un/comment block of SQL code SQLコードのブロックをコメント/非コメントに - + Un/comment block ブロックをコメント/非コメント - + Comment or uncomment current line or selected block of code 現在行かコードの選択されたブロックをコメント/非コメントにします - + Comment or uncomment the selected lines or the current line, when there is no selection. All the block is toggled according to the first line. 選択された行か、選択がないならば現在行をコメント/非コメントにします。ブロック全体はその先頭行に従いコメント/非コメントされます。 - + Ctrl+/ - + Stop SQL execution SQLの実行を中止 - + Stop execution 実行を中止 - + Stop the currently running SQL script 現在実行中の SQL スクリプトを中止します - + &Save Project As... プロジェクトに名前を付けて保存(&S)... - - - + + + Save the project in a file selected in a dialog ダイアログで選択したファイルにプロジェクトを保存します - + Save A&ll すべて保存(&L) - - - + + + Save DB file, project file and opened SQL files DBファイル、プロジェクトファイル、開いているSQLファイルを保存します - + Ctrl+Shift+S - + Browse Table テーブルを閲覧 - + Close Pro&ject プロジェクトを閉じる(&J) - - + + Close project and database files and return to the initial state プロジェクトとデータベースを閉じて初期状態に戻します - + Ctrl+Shift+F4 - - + + Detach Database データベースを切断 - - + + Detach database file attached to the current database connection 現在のデータベース接続から使用中のデータベースファイルを切り離します - - + + Ctrl+W - + &Revert Changes 変更を取り消し(&R) - - + + Revert database to last saved state 最後に保存した状態へデータベースを戻します - + This option is used to revert the current database file to its last saved state. All changes made since the last save operation are lost. このオプションは現在のデータベースファイルを最後に保存した状態に戻すために使います。最後の保存の後に行われたすべての変更は失われます。 - + &Write Changes 変更を書き込み(&W) - - + + Write changes to the database file データベースファイルに変更を書き込みます - + This option is used to save changes to the database file. このオプションはデータベースファイルに変更を保存するために使います。 - + Ctrl+S - + Compact &Database... データベースを圧縮(&D)... - + Compact the database file, removing space wasted by deleted records 削除されたレコードが残っているスペースを取り除き、データベースファイルを圧縮します - - + + Compact the database file, removing space wasted by deleted records. 削除されたレコードが残っているスペースを取り除き、データベースファイルを圧縮します。 - + E&xit 終了(&X) - + Ctrl+Q - + &Database from SQL file... SQLファイルからデータベースへ(&D)... - + Import data from an .sql dump text file into a new or existing database. SQLダンプテキストファイルからデータを、新しいもしくは既存のデータベースにインポートします。 - + This option lets you import data from an .sql dump text file into a new or existing database. SQL dump files can be created on most database engines, including MySQL and PostgreSQL. このオプションでSQLダンプテキストファイルからデータを、新しいもしくは既存のデータベースにインポートできます。SQLダンプファイルは、MySQLやPostgreSQLなど、ほとんどのデータベースエンジンで作成できます。 - + &Table from CSV file... CSVファイルからテーブルへ(&T)... - + Open a wizard that lets you import data from a comma separated text file into a database table. カンマ区切りのテキストファイルのデータをデータベースのテーブルにインポートするウィザードを開きます。 - + Open a wizard that lets you import data from a comma separated text file into a database table. CSV files can be created on most database and spreadsheet applications. カンマ区切りのテキストファイルのデータをデータベースのテーブルにインポートするウィザードを開きます。CSVファイルはほとんどのデータベースや表計算アプリケーションで作成できます。 - + &Database to SQL file... データベースをSQLファイルへ(&D)... - + Export a database to a .sql dump text file. データベースを .sql ダンプテキストファイルにエクスポートします。 - + This option lets you export a database to a .sql dump text file. SQL dump files contain all data necessary to recreate the database on most database engines, including MySQL and PostgreSQL. このオプションでデータベースを .sql ダンプテキストファイルにエクスポートできます。SQLダンプファイルはデータベースの再作成に必要なすべてのデータを含み、MySQLやPostgreSQLなど、ほとんどのデータベースエンジンで利用できます。 - + &Table(s) as CSV file... テーブルをCSVファイルへ(&T)... - + Export a database table as a comma separated text file. データベースのテーブルをカンマ区切りのテキストファイルにエクスポートします。 - + Export a database table as a comma separated text file, ready to be imported into other database or spreadsheet applications. データベースのテーブルをカンマ区切りのテキストファイルにエクスポートします。他のデータベースや表計算アプリケーションでインポートできます。 - + &Create Table... テーブルを作成(&C)... - + Open the Create Table wizard, where it is possible to define the name and fields for a new table in the database データベースに新しいテーブルの名前とフィールドを定義できる、テーブル作成ウイザードを開きます - + &Delete Table... テーブルを削除(&D)... - - + + Delete Table テーブルを削除 - + Open the Delete Table wizard, where you can select a database table to be dropped. 削除するデータベーステーブルを選択できる、テーブル削除ウィザードをひらきます。 - + &Modify Table... テーブルを変更(&M)... - + Create &Index... インデックスの作成(&I)... - + Open the Create Index wizard, where it is possible to define a new index on an existing database table. 既存のデータベーステーブルに新しいインデックスを定義できる、インデックスウィザードを開きます。 - + &Preferences... 設定(&P)... - - + + Open the preferences window. 設定ウィンドウを開きます。 - + &DB Toolbar DBツールバー(&D) - + Shows or hides the Database toolbar. データベースツールバーを表示/非表示します。 - + Ctrl+T - + W&hat's This? これは何(&H)? @@ -3302,901 +3302,1081 @@ SQL文をスキーマカラムからSQLエディターや他のアプリケー プラグマ編集(&R) - - + + Temp Store + 一時保管 + + + + Secure Delete + セキュアな削除 + + + + Case Sensitive Like + 大文字小文字を区別したLike + + + + Journal Mode + ジャーナルモード + + + + Journal Size Limit + ジャーナルサイズ上限 + + + + Recursive Triggers + 再帰トリガー + + + + Delete + pragma + 削除 + + + + Truncate + pragma + 切り捨て + + + + Persist + pragma + 保持 + + + + Memory + pragma + メモリー + + + + WAL + pragma + WAL + + + + + Off + pragma + オフ + + + + Page Size + ページサイズ + + + + Foreign Keys + 外部キー + + + + Auto Vacuum + 自動開放 + + + + Max Page Count + 最大ページ数 + + + + Normal + pragma + 通常 + + + + Exclusive + pragma + 排他 + + + + Checkpoint Full FSYNC + チェックポイントで完全な FSYNC を行う + + + + Off + オフ + + + + Normal + 通常 + + + + + Full + 完全 + + + + Default + デフォルト + + + + File + ファイル + + + + Memory + メモリー + + + + Automatic Index + 自動的なインデックス + + + + Ignore Check Constraints + チェック制約を無視 + + + + Full FSYNC + 完全な FSYNC + + + + WAL Auto Checkpoint + WAL の自動チェックポイント + + + + User Version + ユーザーバージョン + + + + Synchronous + 同期 + + + + None + なし + + + + Incremental + インクリメンタル + + + + Locking Mode + ロックモード + + + + E&xecute SQL This has to be equal to the tab title in all the main tabs SQL実行(&X) - + &Recent Files 最近使用したファイル(&R) - + &New Database 新しいデータベース(&N) - - + + Ctrl+F4 - + &Undo 元に戻す(&U) - - + + Undo last change to the database データベースへの最後の変更を元に戻します - + This action undoes the last change performed to the database in the Database Browser or in Execute SQL. Redoing is not possible. この操作はデータ閲覧かSQL実行で最後に行ったデータベースへの変更を元に戻します。やり直しはできません。 - + Open the Modify Table wizard, where it is possible to rename an existing table. It is also possible to add or delete fields from a table, as well as modify field names and types. 既存のテーブル名を変更できるテーブル変更ウィザードを開きます。これはテーブルに対しフィ―ルドの追加や削除、フィールド名やデータ型の変更ができます。 - + Shift+F1 - + &About DB Browser for SQLite について(&A) - + &Recently opened 最近開いたファイル(&R) - + This button opens a new tab for the SQL editor このボタンでSQLエディターの新しいタブを開きます - + &Execute SQL SQL実行(&E) - + This button executes the currently selected SQL statements. If no text is selected, all SQL statements are executed. このボタンで現在選択しているSQL文を実行します。テキストが選択されていない場合、すべてのSQL文が実行されます。 - + Ctrl+Shift+T - - - + + + Save SQL file SQLファイルを保存 - + &Load Extension... 拡張を読み込み(&L)... - - + + Execute current line 現在行を実行 - + This button executes the SQL statement present in the current editor line このボタンは現在エディターの行にあるSQL文を実行します - + Shift+F5 - + Export as CSV file CSVファイルにエクスポート - + Export table as comma separated values file テーブルをカンマ区切りのファイルにエクスポートします - + &Wiki ウィキ(&W) - + F1 - + Bug &Report... バグレポート(&R)... - + Feature Re&quest... 機能を要求(&Q)... - + Web&site ウェブサイト(&S) - + &Donate on Patreon... Patreonで寄付(&D)... - + &Save Project プロジェクトを保存(&S) - - + + Save the current session to a file 現在のセッションをファイルに保存します - + Open &Project... プロジェクトを開く(&P)... - + Open &Project プロジェクトを開く(&P) - - + + Load a working session from a file 作業中のセッションをファイルから読み込みます - + &Attach Database... データベースに接続(&A)... - - + + Add another database file to the current database connection 他のデータベースファイルを現在のデータベース接続に加えます - + This button lets you add another database file to the current database connection このボタンで他のデータベースファイルを現在のデータベース接続に加えます - + &Set Encryption... 暗号化を設定(&S)... - - + + Save SQL file as 名前を付けてSQLファイルを保存 - + This button saves the content of the current SQL editor tab to a file このボタンは現在のSQLエディタータブの内容をファイルに保存します - + &Browse Table テーブルを閲覧(&B) - + Copy Create statement CREATE文をコピー - + Copy the CREATE statement of the item to the clipboard このアイテムのCREATE文をクリップボードにコピーします - + SQLCipher &FAQ SQLCipher FAQ(&F) - + Opens the SQLCipher FAQ in a browser window SQLCipher の FAQ をブラウザで開きます - + Table(&s) to JSON... テーブルをJSONへ(&S)... - + Export one or more table(s) to a JSON file 1つ以上のテーブルをJSONファイルにエクスポートします - + Open Data&base Read Only... データベースを読み取り専用で開く(&B)... - + Open an existing database file in read only mode 既存のデータベースファイルを読み取り専用モードで開きます - + Save results 結果を保存 - + Save the results view 結果のビューを保存 - + This button lets you save the results of the last executed query このボタンで最後に実行したクエリーの結果を保存します - - + + Find text in SQL editor SQLエディターの文字列を検索 - + This button opens the search bar of the editor このボタンはエディターの検索バーを開きます - + Ctrl+F - - + + Find or replace text in SQL editor SQLエディターの文字列を検索/置換します - + This button opens the find/replace dialog for the current editor tab このボタンは現在のエディタータブの検索/置換ダイアログを開きます - + Ctrl+H - + Export to &CSV CSVにエクスポート(&C) - + Export to &JSON JSONにエクスポート(&J) - + Save as &view ビューとして保存(&V) - + Save as view ビューとして保存 - + Shows or hides the Project toolbar. プロジェクトツールバーを表示/非表示します。 - + Extra DB Toolbar 追加DBツールバー - + &Open Database データベースを開く(&O) - + New In-&Memory Database 新しいインメモリーデータベース(&M) - + Drag && Drop SELECT Query SELECT クエリーをドラッグ&&ドロップ - - + + When dragging fields from the same table or a single table, drop a SELECT query into the editor 同じテーブル、もしくは、単独のテーブルからフィールドをドラッグすると、エディター内にSELECTクエリーがドロップします - + Drag && Drop Qualified Names 正規化名前をドラッグ&&ドロップ - - + + Use qualified names (e.g. "Table"."Field") when dragging the objects and dropping them into the editor オブジェクトをドラッグしエディターにドロップしたときに、正規化名称(例 "Table"."Field")を使います - + Drag && Drop Enquoted Names クォートされた名前をドラッグ&&ドロップ - - + + Use escaped identifiers (e.g. "Table1") when dragging the objects and dropping them into the editor オブジェクトをドラッグしエディターにドロップしたときに、エスケープされた名前(例 "Table1")を使います - + &Integrity Check 整合性検査(&I) - + Runs the integrity_check pragma over the opened database and returns the results in the Execute SQL tab. This pragma does an integrity check of the entire database. 開いているデータベースの整合性検査プラグマを実行し、結果をSQL実行タブに出力します。このプラグマはすべてのデータベースの整合性検査を行います。 - + &Foreign-Key Check 外部キー検査(&F) - + Runs the foreign_key_check pragma over the opened database and returns the results in the Execute SQL tab 開いているデータベースの外部キー検査プラグマを実行し、結果をSQL実行タブに出力します - + &Quick Integrity Check 即時整合性検査(&Q) - + Run a quick integrity check over the open DB 開いているDBの高速整合性検査を実行します - + Runs the quick_check pragma over the opened database and returns the results in the Execute SQL tab. This command does most of the checking of PRAGMA integrity_check but runs much faster. 開いているデータベースの高速整合性検査プラグマを実行し、結果をSQL実行タブに出力します。このコマンドは(通常の)整合性検査PRAGMAの大部分を行いますが、より高速に動作します。 - + &Optimize 最適化(&O) - + Attempt to optimize the database データベースの最適化を試みます - + Runs the optimize pragma over the opened database. This pragma might perform optimizations that will improve the performance of future queries. 開いているデータベースの最適化プラグマを実行します。このプラグマは将来のクエリーの性能を改善させます。 - - + + Print 印刷 - + Open a dialog for printing the text in the current SQL editor tab 現在のSQLエディタータブの文字列を印刷するダイアログを開きます - + Open a dialog for printing the structure of the opened database 開いているデータベースの構造を印刷するダイアログを開きます - - + + Ctrl+Shift+W - + Table from CSV data in Clipboard... クリップボードのCSVデータからテーブル... - + This treats the current clipboard contents as a CSV file and opens the same import wizard that is used for importing CSV data from a file. この処理は現在のクリップボードの内容をCSVファイルとみなして、実際のCSVファイルと同じようにインポートウィザードを開きます。 - + Show &Row Counts 行数を表示(&R) - + This shows the number of rows for each table and view in the database. データベース内にあるテーブルとビューそれぞれの行数を表示します。 - + Save Database &As... 名前を付けてデータベースを保存(&A)... - + Save the current database as a different file 現在のデータベースを別のファイルに保存します - + Refresh 更新 - + Reload the database structure データベース構造を再読み込み - - + + Ctrl+P - + Execute all/selected SQL すべて/選択したSQLを実行 - + Ctrl+Return - + Ctrl+L - + Ctrl+D - + Ctrl+I - + Ctrl+E - + Reset Window Layout ウィンドウレイアウトをリセット - + Ctrl+Tab - + Ctrl+Shift+Tab - + Clear List リストを削除 - + Window Layout ウィンドウレイアウト - + Ctrl+Alt+0 - + Simplify Window Layout ウィンドウレイアウトをシンプルに - - Shift+Alt+0 + + Alt+Shift+0 - + Dock Windows at Bottom ウィンドウを下にドッキング - + Dock Windows at Left Side ウィンドウを左にドッキング - + Dock Windows at Top ウィンドウを上にドッキング - - The database is currenctly busy. + + The database is currently busy. データベースは現在ビジー状態です。 - + Click here to interrupt the currently running query. ここをクリックして、現在実行中のクエリーを中断します。 - + Encrypted 暗号化 - + Database is encrypted using SQLCipher データベースはSQLCipherで暗号化されています - + Read only 読み取り専用 - + Database file is read only. Editing the database is disabled. データベースは読み取り専用です。データベースの編集はできません。 - + Database encoding データベースのエンコード - + Ctrl+Alt+W - - + + Choose a database file データベースファイルを選択 - + Could not open database file. Reason: %1 データベースファイルを開けません。 理由: %1 - - - + + + Choose a filename to save under 保存するファイル名を下から選択 - + In-Memory database インメモリーデータベース - + Choose a database file to save under 保存するデータベースファイルを下から選択 - + Error while saving the database to the new file. データベースを新しいファイルへ保存時にエラー。 - + You are still executing SQL statements. Closing the database now will stop their execution, possibly leaving the database in an inconsistent state. Are you sure you want to close the database? まだSQL文を実行中です。今、データベースを閉じると、実行が中止され、データベースに一貫性がない状態を残すかもしれません。本当にデータベースを閉じますか? - + Edit View %1 ビューを編集 %1 - + Edit Trigger %1 トリガーを編集 %1 - + Opened '%1' in read-only mode from recent file list 最近使ったファイルリストから読み取り専用モードで '%1' を開きました - + Opened '%1' from recent file list 最近使ったファイルリストから '%1' を開きました - + Select the action to apply to the dropped file(s). <br/>Note: only 'Import' will process more than one file. Note for translation: Although there is no %n in the original, you can use the numerus-form to adjust 'files(s)' and remove the note when n = 1. Including %n in the translation will also work. - + ドロップされたファイルに対して行う操作を選択してください。 <br/>注意: 'インポート' のみが複数ファイルを処理できます。 - + The statements in the tab '%1' are still executing. Closing the tab will stop the execution. This might leave the database in an inconsistent state. Are you sure you want to close the tab? タブ '%1' の文はまだ実行中です。タブを閉じると実行が停止します。これはデータベースの一貫性がなくなる可能性があります。本当にタブを閉じますか? - + Could not find resource file: %1 リソースファイルが見つかりません: %1 - + DB file '%1' could not be opened DBファイル '%1' を開けませんでした - + This project file is using an old file format because it was created using DB Browser for SQLite version 3.10 or lower. Loading this file format is no longer fully supported. If you want to load it completely, please use DB Browser for SQLite version 3.12 to convert it to the new file format. このプロジェクトファイルはDB Browser for SQLite バージョン 3.10 以前で作られた古いファイルフォーマットを使用しています。このファイルフォーマットの読み込みは既に完全にはサポートされていません。もし完全に読み込みたい場合は、DB Browser for SQLite バージョン3.12 を使って新しいファイルフォーマットに変換してください。 - + Table '%1' not found; settings ignored テーブル '%1' が見つかりません; 設定は無視されます - + Could not open project file for writing. Reason: %1 書き込むプロジェクトファイルを開くことができません。 理由: %1 - + -- Reference to file "%1" (not supported by this version) -- -- ファイル "%1" への参照 (このバージョンではサポートされていません) -- - + Project saved to file '%1' プロジェクトをファイル '%1' に保存しました - + Yes. Don't ask again はい。もう聞かないで - + This action will open a new SQL tab with the following statements for you to edit and run: この操作は以下の文を編集実行できる新しいSQLタブを開きます: - + Busy (%1) ビジー (%1) - + Rename Tab タブ名を変更 - + Duplicate Tab タブを複製 - + Close Tab タブを閉じる - + Opening '%1'... '%1' を開いています... - + There was an error opening '%1'... '%1' を開くときにエラーがありました... - + Value is not a valid URL or filename: %1 値は正規のURLもしくはファイル名でありません: %1 - + Are you sure you want to delete the table '%1'? All data associated with the table will be lost. 本当にテーブル '%1' を削除しますか? テーブルに関連するすべてのデータは失われます。 - + Are you sure you want to delete the view '%1'? 本当にビュー '%1' を削除しますか? - + Are you sure you want to delete the trigger '%1'? 本当にトリガー '%1' を削除しますか? - + Are you sure you want to delete the index '%1'? 本当にインデックス '%1' を削除しますか? - + Error: could not delete the table. エラー: テーブルを削除できませんでした。 - + Error: could not delete the view. エラー: ビューを削除できませんでした。 - + Error: could not delete the trigger. エラー: トリガーを削除できませんでした。 - + Error: could not delete the index. エラー: インデックスを削除できませんでした。 - + Message from database engine: %1 データベースエンジンからのメッセージ。 %1 - + Editing the table requires to save all pending changes now. Are you sure you want to save the database? テーブルの編集には保留中のすべての変更を今保存する必要があります。 本当にデータベースを保存しますか? - + Error checking foreign keys after table modification. The changes will be reverted. デーブル変更後の外部キー検査でエラー。変更は元に戻ります。 - + This table did not pass a foreign-key check.<br/>You should run 'Tools | Foreign-Key Check' and fix the reported issues. このテーブルは外部キー検査に合格しませんでした。<br/>'ツール | 外部キー検査' を実行し、報告された問題を解決します。 - + You are already executing SQL statements. Do you want to stop them in order to execute the current statements instead? Note that this might leave the database in an inconsistent state. SQL文は既に実行中です。替わりに現在の文を実行するため、中止しますか? 注意: これはデータベースに一貫性がない状態を残すかもしれません。 - + -- EXECUTING SELECTION IN '%1' -- -- '%1 内の選択部分を実行中' -- - + -- EXECUTING LINE IN '%1' -- -- '%1 内の行を実行中' -- - + -- EXECUTING ALL IN '%1' -- -- '%1 内をすべて実行中' -- - + Result: %1 結果: %1 - + Setting PRAGMA values or vacuuming will commit your current transaction. Are you sure? PRAGMA 値の設定やバキュームは現在のトランザクションをコミットします。 本当に行いますか? - + %1 rows returned in %2ms %1 行が %2ms で返されました - - + + At line %1: %1 行目: - + Result: %2 結果: %2 - + Choose text files テキストファイルを選択 - + Error while saving the database file. This means that not all changes to the database were saved. You need to resolve the following error first. %1 @@ -4205,207 +4385,207 @@ Are you sure? %1 - + Are you sure you want to undo all changes made to the database file '%1' since the last save? 本当にデータベースファイル '%1' への最後の保存後に行われたすべての変更を元に戻しますか? - + Choose a file to import インポートするファイルを選択 - + &%1 %2%3 &%1 %2%3 - + (read only) (読み取り専用) - + Open Database or Project データベース化プロジェクトを開く - + Attach Database... データベースに接続... - + Import CSV file(s)... CSVファイルをインポート... - + Do you want to save the changes made to SQL tabs in a new project file? 新しいプロジェクトファイルにSQLタブで行われた変更を保存しますか? - + Do you want to save the changes made to SQL tabs in the project file '%1'? プロジェクトファイル '%1' にSQLタブで行われた変更を保存しますか? - + Do you want to save the changes made to the SQL file %1? 変更をSQLファイル %1 に保存しますか? - + Text files(*.sql *.txt);;All files(*) テキストファイル(*.sql *.txt);;すべてのファイル(*) - + Do you want to create a new database file to hold the imported data? If you answer no we will attempt to import the data in the SQL file to the current database. インポートしたデータを保持する新しいデータベースを作成しますか いいえを選択すると、SQLファイルからのデータを現在のデータベースにインポートしようとします。 - + Automatically load the last opened DB file at startup - + 最後に開いたDBファイルを起動時に自動的に読み込む - + Do you want to save the changes made to the project file '%1'? プロジェクトファイル '%1' に変更を保存しますか? - + Execution finished with errors. エラーがありますが、実行が終了しました。 - + Execution finished without errors. エラーなしで実行が終了しました。 - + File %1 already exists. Please choose a different name. ファイル %1 は既に存在しています。違う名前を選んでください。 - + Error importing data: %1 データのインポートでエラー: %1 - + Import completed. Some foreign key constraints are violated. Please fix them before saving. インポートが終了しました。いくつかの外部キー制約に違反があります。保存前に修正してください。 - + Import completed. インポート完了。 - + Delete View ビューを削除 - + Modify View ビューを変更 - + Delete Trigger トリガーを削除 - + Modify Trigger トリガーを変更 - + Delete Index インデックスを削除 - + Modify Index インデックスを変更 - + Modify Table テーブルを変更 - + Setting PRAGMA values will commit your current transaction. Are you sure? PRAGMA 値の設定は現在のトランザクションをコミットします。 本当に行いますか? - + Select SQL file to open 開くSQLファイルを選択 - + Select file name ファイル名を選択 - + Select extension file 拡張ファイルを選択 - + Extension successfully loaded. 拡張の読み込みに成功しました。 - + Error loading extension: %1 拡張の読み込みでエラー: %1 - - + + Don't show again 二度と表示しない - + New version available. 新しいバージョンがあります。 - + A new DB Browser for SQLite version is available (%1.%2.%3).<br/><br/>Please download at <a href='%4'>%4</a>. 新しいバージョンの DB Browser for SQLite (%1.%2.%3)があります。<br/><br/><a href='%4'>%4</a>からダウンロードしてください。 - + Choose a project file to open 開くプロジェクトファイルを選択 - + DB Browser for SQLite project file (*.sqbpro) DB Browser for SQLite プロジェクトファイル (*.sqbpro) - + Collation needed! Proceed? 照合順序が必要です!続行しますか? - + A table in this database requires a special collation function '%1' that this application can't provide without further knowledge. If you choose to proceed, be aware bad things can happen to your database. Create a backup! @@ -4414,42 +4594,42 @@ Create a backup! バックアップを作成してください! - + creating collation 照合順序の作成中 - + Set a new name for the SQL tab. Use the '&&' character to allow using the following character as a keyboard shortcut. SQLタブに新しい名前を設定してください。'&&'の文字を使うと、その次の文字をキーボードショートカットにできます。 - + Please specify the view name ビューの名前を指定してください - + There is already an object with that name. Please choose a different name. その名前のオブジェクトは既に存在します。別の名前を選んでください。 - + View successfully created. ビューの作成に成功しました。 - + Error creating view: %1 ビューの作成でエラー: %1 - + This action will open a new SQL tab for running: この操作は実行のため新しいSQLタブを開きます: - + Press Help for opening the corresponding SQLite reference page. ヘルプを押すと、対応する SQLite のリファレンスページを開きます。 @@ -4644,102 +4824,107 @@ Select the axes or axes labels to drag and zoom only in that orientation. - + Load all data and redraw plot すべてのデータを読み込み再描画 - + Copy コピー - + Print... 印刷... - + + Help + + + + Show legend 凡例を表示 - + Stacked bars 値を積み重ねる - + Fixed number format 固定の数値フォーマット - + Date/Time 日時 - + Date 日付 - + Time 時刻 - - + + Numeric 数値 - + Label ラベル - + Invalid 不正 - - - + + + Row # 行 # - + Load all data and redraw plot. Warning: not all data has been fetched from the table yet due to the partial fetch mechanism. すべてのデータを読み込み再描画します。 警告: 部分的なフェッチ機構により、まだテーブルからすべてのデータがフェッチされているわけではありません。 - + Choose an axis color 軸の色を選択 - + Choose a filename to save under 保存するファイル名を下から選択 - + PNG(*.png);;JPG(*.jpg);;PDF(*.pdf);;BMP(*.bmp);;All Files(*) PNG(*.png);;JPG(*.jpg);;PDF(*.pdf);;BMP(*.bmp);;すべてのファイル(*) - + There are curves in this plot and the selected line style can only be applied to graphs sorted by X. Either sort the table or query by X to remove curves or select one of the styles supported by curves: None or Line. このプロットには未ソートなデータがあります。選択した線の種類はX軸でソートされたデータのみに適用できます。テーブルやクエリーをX軸でソートするか、未ソートのデータでも使用できる、 なし や 直線 形式を選択してください。 - + Loading all remaining data for this table took %1ms. このテーブルの残っているデータすべての読み込みに %1ms かかりました。 @@ -5363,7 +5548,7 @@ Can be set to 0 for disabling completion. Select built-in extensions to load for every database: - + すべてのデータベースで読み込むビルトイン拡張を選択 @@ -5563,1877 +5748,311 @@ All your preferences will be lost and default values will be used. - Open Settings File - 設定ファイルを開く - - - - The settings file was loaded properly. - 設定ファイルが正しく読み込まれました。 - - - - The selected settings file is not a normal settings file. -Please check again. - 選択された設定ファイルに異常があります。 -再度確認してください。 - - - - ProxyDialog - - - Proxy Configuration - プロキシ設定 - - - - Pro&xy Type - プロキシタイプ(&X) - - - - Host Na&me - ホスト名(&M) - - - - Port - ポート - - - - Authentication Re&quired - 認証が必要(&Q) - - - - &User Name - ユーザー名(&U) - - - - Password - パスワード - - - - None - なし - - - - System settings - システム設定 - - - - HTTP - HTTP - - - - Socks v5 - Socks v5 - - - - QObject - - - All files (*) - すべてのファイル (*) - - - - Error importing data - データのインポートでエラー - - - - from record number %1 - レコード番号 %1 で - - - - . -%1 - . -%1 - - - - Importing CSV file... - CSVファイルをインポート中... - - - - Cancel - キャンセル - - - - SQLite database files (*.db *.sqlite *.sqlite3 *.db3) - SQLite データベースファイル (*.db *.sqlite *.sqlite3 *.db3) - - - - Left - - - - - Right - - - - - Center - 中央 - - - - Justify - 均等 - - - - SQLite Database Files (*.db *.sqlite *.sqlite3 *.db3) - SQLite データベースファイル (*.db *.sqlite *.sqlite3 *.db3) - - - - DB Browser for SQLite Project Files (*.sqbpro) - DB Browser for SQLite プロジェクトファイル (*.sqbpro) - - - - SQL Files (*.sql) - SQL ファイル (*.sql) - - - - All Files (*) - すべてのファイル (*) - - - - Text Files (*.txt) - テキストファイル (*.txt) - - - - Comma-Separated Values Files (*.csv) - カンマ区切りファイル (*.csv) - - - - Tab-Separated Values Files (*.tsv) - タブ区切りファイル (*.tsv) - - - - Delimiter-Separated Values Files (*.dsv) - 区切りファイル (*.dsv) - - - - Concordance DAT files (*.dat) - 用語索引 DAT ファイル (*.dat) - - - - JSON Files (*.json *.js) - JSONファイル (*.json *.js) - - - - XML Files (*.xml) - XMLファイル (*.xml) - - - - Binary Files (*.bin *.dat) - バイナリーファイル (*.bin *.dat) - - - - SVG Files (*.svg) - SVG ファイル (*.svg) - - - - Hex Dump Files (*.dat *.bin) - 十六進ダンプファイル (*.dat *.bin) - - - - Extensions (*.so *.dylib *.dll) - 拡張 (*.so *.dylib *.dll) - - - - Initialization File (*.ini) - INIファイル (*.ini) - - - - QsciCommand - - - Move down one line - - - - - Extend selection down one line - - - - - Extend rectangular selection down one line - - - - - Scroll view down one line - - - - - Move up one line - - - - - Extend selection up one line - - - - - Extend rectangular selection up one line - - - - - Scroll view up one line - - - - - Scroll to start of document - - - - - Scroll to end of document - - - - - Scroll vertically to centre current line - - - - - Move down one paragraph - - - - - Extend selection down one paragraph - - - - - Move up one paragraph - - - - - Extend selection up one paragraph - - - - - Move left one character - - - - - Extend selection left one character - - - - - Extend rectangular selection left one character - - - - - Move right one character - - - - - Extend selection right one character - - - - - Extend rectangular selection right one character - - - - - Move left one word - - - - - Extend selection left one word - - - - - Move right one word - - - - - Extend selection right one word - - - - - Move to end of previous word - - - - - Extend selection to end of previous word - - - - - Move to end of next word - - - - - Extend selection to end of next word - - - - - Move left one word part - - - - - Extend selection left one word part - - - - - Move right one word part - - - - - Extend selection right one word part - - - - - Move to start of document line - - - - - Extend selection to start of document line - - - - - Extend rectangular selection to start of document line - - - - - Move to start of display line - - - - - Extend selection to start of display line - - - - - Move to start of display or document line - - - - - Extend selection to start of display or document line - - - - - Move to first visible character in document line - - - - - Extend selection to first visible character in document line - - - - - Extend rectangular selection to first visible character in document line - - - - - Move to first visible character of display in document line - - - - - Extend selection to first visible character in display or document line - - - - - Move to end of document line - - - - - Extend selection to end of document line - - - - - Extend rectangular selection to end of document line - - - - - Move to end of display line - - - - - Extend selection to end of display line - - - - - Move to end of display or document line - - - - - Extend selection to end of display or document line - - - - - Move to start of document - - - - - Extend selection to start of document - - - - - Move to end of document - - - - - Extend selection to end of document - - - - - Move up one page - - - - - Extend selection up one page - - - - - Extend rectangular selection up one page - - - - - Move down one page - - - - - Extend selection down one page - - - - - Extend rectangular selection down one page - - - - - Stuttered move up one page - - - - - Stuttered extend selection up one page - - - - - Stuttered move down one page - - - - - Stuttered extend selection down one page - - - - - Delete current character - - - - - Delete previous character - - - - - Delete previous character if not at start of line - - - - - Delete word to left - - - - - Delete word to right - - - - - Delete right to end of next word - - - - - Delete line to left - - - - - Delete line to right - - - - - Delete current line - - - - - Cut current line - - - - - Copy current line - - - - - Transpose current and previous lines - - - - - Duplicate the current line - - - - - Select all - - - - - Move selected lines up one line - - - - - Move selected lines down one line - - - - - Duplicate selection - - - - - Convert selection to lower case - - - - - Convert selection to upper case - - - - - Cut selection - - - - - Copy selection - - - - - Paste - 貼り付け - - - - Toggle insert/overtype - - - - - Insert newline - - - - - Formfeed - - - - - Indent one level - - - - - De-indent one level - - - - - Cancel - キャンセル - - - - Undo last command - - - - - Redo last command - - - - - Zoom in - - - - - Zoom out - - - - - QsciLexerCPP - - - Default - デフォルト - - - - Inactive default - - - - - C comment - - - - - Inactive C comment - - - - - C++ comment - - - - - Inactive C++ comment - - - - - JavaDoc style C comment - - - - - Inactive JavaDoc style C comment - - - - - Number - - - - - Inactive number - - - - - Keyword - キーワード - - - - Inactive keyword - - - - - Double-quoted string - - - - - Inactive double-quoted string - - - - - Single-quoted string - - - - - Inactive single-quoted string - - - - - IDL UUID - - - - - Inactive IDL UUID - - - - - Pre-processor block - - - - - Inactive pre-processor block - - - - - Operator - - - - - Inactive operator - - - - - Identifier - 識別子 - - - - Inactive identifier - - - - - Unclosed string - - - - - Inactive unclosed string - - - - - C# verbatim string - - - - - Inactive C# verbatim string - - - - - JavaScript regular expression - - - - - Inactive JavaScript regular expression - - - - - JavaDoc style C++ comment - - - - - Inactive JavaDoc style C++ comment - - - - - Secondary keywords and identifiers - - - - - Inactive secondary keywords and identifiers - - - - - JavaDoc keyword - - - - - Inactive JavaDoc keyword - - - - - JavaDoc keyword error - - - - - Inactive JavaDoc keyword error - - - - - Global classes and typedefs - - - - - Inactive global classes and typedefs - - - - - C++ raw string - - - - - Inactive C++ raw string - - - - - Vala triple-quoted verbatim string - - - - - Inactive Vala triple-quoted verbatim string - - - - - Pike hash-quoted string - - - - - Inactive Pike hash-quoted string - - - - - Pre-processor C comment - - - - - Inactive pre-processor C comment - - - - - JavaDoc style pre-processor comment - - - - - Inactive JavaDoc style pre-processor comment - - - - - User-defined literal - - - - - Inactive user-defined literal - - - - - Task marker - - - - - Inactive task marker - - - - - Escape sequence - - - - - Inactive escape sequence - - - - - QsciLexerHTML - - - HTML default - - - - - Tag - - - - - Unknown tag - - - - - Attribute - - - - - Unknown attribute - - - - - HTML number - - - - - HTML double-quoted string - - - - - HTML single-quoted string - - - - - Other text in a tag - - - - - HTML comment - - - - - Entity - - - - - End of a tag - - - - - Start of an XML fragment - - - - - End of an XML fragment - - - - - Script tag - - - - - Start of an ASP fragment with @ - - - - - Start of an ASP fragment - - - - - CDATA - - - - - Start of a PHP fragment - - - - - Unquoted HTML value - - - - - ASP X-Code comment - - - - - SGML default - - - - - SGML command - - - - - First parameter of an SGML command - - - - - SGML double-quoted string - - - - - SGML single-quoted string - - - - - SGML error - - - - - SGML special entity - - - - - SGML comment - - - - - First parameter comment of an SGML command - - - - - SGML block default - - - - - Start of a JavaScript fragment - - - - - JavaScript default - - - - - JavaScript comment - - - - - JavaScript line comment - - - - - JavaDoc style JavaScript comment - - - - - JavaScript number - - - - - JavaScript word - - - - - JavaScript keyword - - - - - JavaScript double-quoted string - - - - - JavaScript single-quoted string - - - - - JavaScript symbol - - - - - JavaScript unclosed string - - - - - JavaScript regular expression - - - - - Start of an ASP JavaScript fragment - - - - - ASP JavaScript default - - - - - ASP JavaScript comment - - - - - ASP JavaScript line comment - - - - - JavaDoc style ASP JavaScript comment - - - - - ASP JavaScript number - - - - - ASP JavaScript word - - - - - ASP JavaScript keyword - - - - - ASP JavaScript double-quoted string - - - - - ASP JavaScript single-quoted string - - - - - ASP JavaScript symbol - - - - - ASP JavaScript unclosed string - - - - - ASP JavaScript regular expression - - - - - Start of a VBScript fragment - - - - - VBScript default - - - - - VBScript comment - - - - - VBScript number - - - - - VBScript keyword - - - - - VBScript string - - - - - VBScript identifier - - - - - VBScript unclosed string - - - - - Start of an ASP VBScript fragment - - - - - ASP VBScript default - - - - - ASP VBScript comment - - - - - ASP VBScript number - - - - - ASP VBScript keyword - - - - - ASP VBScript string - - - - - ASP VBScript identifier - - - - - ASP VBScript unclosed string - - - - - Start of a Python fragment - - - - - Python default - - - - - Python comment - - - - - Python number - - - - - Python double-quoted string - - - - - Python single-quoted string - - - - - Python keyword - - - - - Python triple double-quoted string - - - - - Python triple single-quoted string - - - - - Python class name - - - - - Python function or method name - - - - - Python operator - - - - - Python identifier - - - - - Start of an ASP Python fragment - - - - - ASP Python default - - - - - ASP Python comment - - - - - ASP Python number - - - - - ASP Python double-quoted string - - - - - ASP Python single-quoted string - - - - - ASP Python keyword - - - - - ASP Python triple double-quoted string - - - - - ASP Python triple single-quoted string - - - - - ASP Python class name - - - - - ASP Python function or method name - - - - - ASP Python operator - - - - - ASP Python identifier - - - - - PHP default - - - - - PHP double-quoted string - - - - - PHP single-quoted string - - - - - PHP keyword - - - - - PHP number - - - - - PHP variable - - - - - PHP comment - - - - - PHP line comment - - - - - PHP double-quoted variable - - - - - PHP operator - - - - - QsciLexerJSON - - - Default - デフォルト + Open Settings File + 設定ファイルを開く - - Number - + + The settings file was loaded properly. + 設定ファイルが正しく読み込まれました。 - - String - 文字列 + + The selected settings file is not a normal settings file. +Please check again. + 選択された設定ファイルに異常があります。 +再度確認してください。 + + + ProxyDialog - - Unclosed string - + + Proxy Configuration + プロキシ設定 - - Property - + + Pro&xy Type + プロキシタイプ(&X) - - Escape sequence - + + Host Na&me + ホスト名(&M) - - Line comment - + + Port + ポート - - Block comment - + + Authentication Re&quired + 認証が必要(&Q) - - Operator - + + &User Name + ユーザー名(&U) - - IRI - + + Password + パスワード - - JSON-LD compact IRI - + + None + なし - - JSON keyword - + + System settings + システム設定 - - JSON-LD keyword - + + HTTP + HTTP - - Parsing error - + + SOCKS5 + SOCKS5 - QsciLexerJavaScript + QObject - - Regular expression - 正規表現 + + All files (*) + すべてのファイル (*) - - - QsciLexerPython - - Default - デフォルト + + Error importing data + データのインポートでエラー - - Comment - コメント + + from record number %1 + レコード番号 %1 で - - Number - + + . +%1 + . +%1 - - Double-quoted string - + + Importing CSV file... + CSVファイルをインポート中... - - Single-quoted string - + + Cancel + キャンセル - - Keyword - キーワード + + SQLite database files (*.db *.sqlite *.sqlite3 *.db3) + SQLite データベースファイル (*.db *.sqlite *.sqlite3 *.db3) - - Triple single-quoted string - + + Left + - - Triple double-quoted string - + + Right + - - Class name - + + Center + 中央 - - Function or method name - + + Justify + 均等 - - Operator - + + SQLite Database Files (*.db *.sqlite *.sqlite3 *.db3) + SQLite データベースファイル (*.db *.sqlite *.sqlite3 *.db3) - - Identifier - 識別子 + + DB Browser for SQLite Project Files (*.sqbpro) + DB Browser for SQLite プロジェクトファイル (*.sqbpro) - - Comment block - + + SQL Files (*.sql) + SQL ファイル (*.sql) - - Unclosed string - + + All Files (*) + すべてのファイル (*) - - Highlighted identifier - + + Text Files (*.txt) + テキストファイル (*.txt) - - Decorator - + + Comma-Separated Values Files (*.csv) + カンマ区切りファイル (*.csv) - - Double-quoted f-string - + + Tab-Separated Values Files (*.tsv) + タブ区切りファイル (*.tsv) - - Single-quoted f-string - + + Delimiter-Separated Values Files (*.dsv) + 区切りファイル (*.dsv) - - Triple single-quoted f-string - + + Concordance DAT files (*.dat) + 用語索引 DAT ファイル (*.dat) - - Triple double-quoted f-string - + + JSON Files (*.json *.js) + JSONファイル (*.json *.js) - - - QsciLexerSQL - - Default - デフォルト + + XML Files (*.xml) + XMLファイル (*.xml) - - Comment - コメント + + Binary Files (*.bin *.dat) + バイナリーファイル (*.bin *.dat) - - Comment line - + + SVG Files (*.svg) + SVG ファイル (*.svg) - - JavaDoc style comment - + + Hex Dump Files (*.dat *.bin) + 十六進ダンプファイル (*.dat *.bin) - - Number - + + Extensions (*.so *.dylib *.dll) + 拡張 (*.so *.dylib *.dll) - - Keyword - キーワード + + Initialization File (*.ini) + INIファイル (*.ini) + + + QsciCommand - - Double-quoted string - + Paste + 貼り付け - - Single-quoted string - + Cancel + キャンセル + + + QsciLexerCPP - - SQL*Plus keyword - + Default + デフォルト - - SQL*Plus prompt - + Keyword + キーワード - - Operator - + Identifier + 識別子 + + + QsciLexerJSON - - Identifier - 識別子 + Default + デフォルト - - SQL*Plus comment - + String + 文字列 + + + QsciLexerJavaScript - - # comment line - + Regular expression + 正規表現 + + + QsciLexerPython - - JavaDoc keyword - + Default + デフォルト - - JavaDoc keyword error - + Comment + コメント - - User defined 1 - + Keyword + キーワード - - User defined 2 - + Identifier + 識別子 + + + QsciLexerSQL - - User defined 3 - + Default + デフォルト - - User defined 4 - + Comment + コメント - - Quoted identifier - + Keyword + キーワード - - Quoted operator - + Identifier + 識別子 QsciScintilla - &Undo - 元に戻す(&U) - - - - &Redo - - - - - Cu&t - - - - - &Copy - - - - - &Paste - - - - - Delete - + 元に戻す(&U) - Select All - すべて選択 + すべて選択 @@ -7828,26 +6447,26 @@ Are you sure you want to proceed? このクライアント証明書を確認するためパスフレーズを入力してください。 - + Cancel キャンセル - + Uploading remote database to %1 リモートデータベースをここにアップロード中 %1 - + Downloading remote database from %1 リモートデータベースをここからダウンロード中 %1 - + Error: Cannot open the file for sending. エラー: 送信するファイルを開けません。 @@ -8053,12 +6672,12 @@ Are you sure you want to proceed? Ctrl+PgUp - + Ctrl+PgDown - + @@ -8584,32 +7203,32 @@ Use of this function must be authorized from Preferences. 読み込み中... - + References %1(%2) Hold %3Shift and click to jump there これを参照 %1(%2) %3Shift を保持しクリックでジャンプ - + Error changing data: %1 データの変更でエラー: %1 - + retrieving list of columns カラムの一覧を取得中 - + Fetching data... データを取得中... - - + + Cancel キャンセル @@ -8946,12 +7565,12 @@ Hold %3Shift and click to jump there - <html><head/><body><p>This button creates a new record in the database. Hold the mouse button to open a pop-up menu of different options:</p><ul><li><span style=" font-weight:600;">New Record</span>: insert a new record with default values in the database.</li><li><span style=" font-weight:600;">Insert Values...</span>: open a dialog for entering values before they are inserted in the database. This allows to enter values acomplishing the different constraints. This dialog is also open if the <span style=" font-weight:600;">New Record</span> option fails due to these constraints.</li></ul></body></html> + <html><head/><body><p>This button creates a new record in the database. Hold the mouse button to open a pop-up menu of different options:</p><ul><li><span style=" font-weight:600;">New Record</span>: insert a new record with default values in the database.</li><li><span style=" font-weight:600;">Insert Values...</span>: open a dialog for entering values before they are inserted in the database. This allows to enter values accomplishing the different constraints. This dialog is also open if the <span style=" font-weight:600;">New Record</span> option fails due to these constraints.</li></ul></body></html> <html><head/><body><p>このボタンは新しいレコードをデータベースに作成します。マウスボタンを押したままにすると、違うオプションのポップアップメニューが開きます:</p><ul><li><span style=" font-weight:600;">新しいレコード</span>: データベースにデフォルト値で新しいレコードを挿入します。</li><li><span style=" font-weight:600;">値を挿入...</span>: データベースに挿入する前にデータを入力するダイアログを開きます。これで他の制約を満たす値が入力できます。このダイアログは<span style=" font-weight:600;">新しいレコード</span>オプションがそれらの制約のせいで失敗したときにも開きます。</li></ul></body></html> - + Delete Record レコードを削除 @@ -9028,7 +7647,7 @@ Hold %3Shift and click to jump there - <html><head/><body><p>This popup menu provides the following options applying to the currently browsed and filtered table:</p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Export to CSV: this option exports the data of the browsed table as currently displayed (after filters, display formats and order column) to a CSV file.</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Save as view: this option saves the current setting of the browsed table (filters, display formats and order column) as an SQL view that you can later browse or use in SQL statements.</li></ul></body></html> + <html><head/><body><p>This pop-up menu provides the following options applying to the currently browsed and filtered table:</p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Export to CSV: this option exports the data of the browsed table as currently displayed (after filters, display formats and order column) to a CSV file.</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Save as view: this option saves the current setting of the browsed table (filters, display formats and order column) as an SQL view that you can later browse or use in SQL statements.</li></ul></body></html> <html><head/><body><p>このポップアップメニューは現在閲覧しているテーブルに適用される以下のオプションを提供します。:</p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">CSVにエクスポート: このオプションは閲覧中のテーブルのデータを現在の表示通り(フィルター、表示形式、カラム順番)にCSVファイルにエクスポートします。</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">ビューとして保存: このオプションは閲覧中のテーブルの現在の表示設定(フィルター、表示形式、カラム順番)をSQLビューとして保存し、あとで閲覧やSQL文として使用できるようにします。</li></ul></body></html> @@ -9053,7 +7672,7 @@ Hold %3Shift and click to jump there - + Set encoding エンコードの設定 @@ -9316,96 +7935,96 @@ Hold %3Shift and click to jump there . 合計: %1; 平均: %2; 最低: %3; 最高: %4 - + Conditional formats for "%1" "%1" の条件付き書式 - + determining row count... 行数を計算中... - + %L1 - %L2 of >= %L3 %L1 - %L2 of >= %L3 - + %L1 - %L2 of %L3 %L1 - %L2 of %L3 - + (clipped at %L1 rows) (%L1 行を抜き出し) - + Please enter a pseudo-primary key in order to enable editing on this view. This should be the name of a unique column in the view. このビューでの編集を有効にするため、疑似主キーを入力してください。ビューに一意なカラムの名前が必要です。 - + Delete Records レコードを削除 - + Duplicate records レコードを複製 - + Duplicate record レコードを複製 - + Ctrl+" - + Adjust rows to contents 行を内容に合わせ調整 - + Error deleting record: %1 レコードの削除でエラー: %1 - + Please select a record first 最初にレコードを選択してください - + Please choose a new encoding for all tables. すべてのテーブルの新しいエンコードを選択してください。 - + Please choose a new encoding for this table. すべてのテーブルの新しいエンコードを選択してください。 - + %1 Leave the field empty for using the database encoding. %1 データベースのエンコードを使うため、フィールドを空にします。 - + This encoding is either not valid or not supported. このエンコードは不正かサポートされていません。 - + %1 replacement(s) made. %1 つ置き換えました。 @@ -9433,24 +8052,6 @@ Leave the field empty for using the database encoding. データ閲覧に新しい名前を付けます。'&&'を付けるとその次の文字をキーボードのショートカットにできます。 - - UndoStack - - - Inserting %1 bytes - - - - - Delete %1 chars - - - - - Overwrite %1 chars - - - VacuumDialog diff --git a/src/translations/sqlb_ko_KR.ts b/src/translations/sqlb_ko_KR.ts index 23dd410e2..959946759 100644 --- a/src/translations/sqlb_ko_KR.ts +++ b/src/translations/sqlb_ko_KR.ts @@ -16,8 +16,8 @@ - <html><head/><body><p>DB Browser for SQLite is an open source, freeware visual tool used to create, design and edit SQLite database files.</p><p>It is bi-licensed under the Mozilla Public License Version 2, as well as the GNU General Public License Version 3 or later. You can modify or redistribute it under the conditions of these licenses.</p><p>See <a href="https://www.gnu.org/licenses/gpl.html"><span style=" text-decoration: underline; color:#0000ff;">http://www.gnu.org/licenses/gpl.html</span></a> and <a href="https://www.mozilla.org/MPL/2.0/index.txt"><span style=" text-decoration: underline; color:#0000ff;">https://www.mozilla.org/MPL/2.0/index.txt</span></a> for details.</p><p>For more information on this program please visit our website at: <a href="https://sqlitebrowser.org"><span style=" text-decoration: underline; color:#0000ff;">http://sqlitebrowser.org</span></a></p><p><span style=" font-size:small;">This software uses the GPL/LGPL Qt Toolkit from </span><a href="http://qt-project.org/"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://qt-project.org/</span></a><span style=" font-size:small;"><br/>See </span><a href="https://doc.qt.io/qt-5/licensing.html"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://qt-project.org/doc/qt-5/licensing.html</span></a><span style=" font-size:small;"> for licensing terms and information.</span></p><p><span style=" font-size:8pt;">We use the nalgeon/sqlean library for SQLite extensions support.<br/>This library is licensed under the MIT license, see the following for more information:<br/></span><a href="https://github.com/nalgeon/sqlean"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">https://github.com/nalgeon/sqlean</span></a></p><p><span style=" font-size:small;">It also uses the Pastel SVG icon set by Michael Buckley under a Creative Commons Attribution Share Alike 4.0 license.<br/>See </span><a href="https://codefisher.org/pastel-svg/"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://codefisher.org/pastel-svg/</span></a><span style=" font-size:small;"> for details.</span></p></body></html> - + <html><head/><body><p>DB Browser for SQLite is an open source, freeware visual tool used to create, design and edit SQLite database files.</p><p>It is bi-licensed under the Mozilla Public License Version 2, as well as the GNU General Public License Version 3 or later. You can modify or redistribute it under the conditions of these licenses.</p><p>See <a href="https://www.gnu.org/licenses/gpl.html"><span style=" text-decoration: underline; color:#0000ff;">https://www.gnu.org/licenses/gpl.html</span></a> and <a href="https://www.mozilla.org/MPL/2.0/index.txt"><span style=" text-decoration: underline; color:#0000ff;">https://www.mozilla.org/MPL/2.0/index.txt</span></a> for details.</p><p>For more information on this program please visit our website at: <a href="https://sqlitebrowser.org"><span style=" text-decoration: underline; color:#0000ff;">https://sqlitebrowser.org</span></a></p><p><span style=" font-size:small;">This software uses the GPL/LGPL Qt Toolkit from </span><a href="https://qt-project.org/"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://qt-project.org/</span></a><span style=" font-size:small;"><br/>See </span><a href="https://doc.qt.io/qt-5/licensing.html"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://doc.qt.io/qt-5/licensing.html</span></a><span style=" font-size:small;"> for licensing terms and information.</span></p><p><span style=" font-size:8pt;">We use the nalgeon/sqlean library for SQLite extensions support.<br/>This library is licensed under the MIT license, see the following for more information:<br/></span><a href="https://github.com/nalgeon/sqlean"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">https://github.com/nalgeon/sqlean</span></a></p><p><span style=" font-size:small;">It also uses the Pastel SVG icon set by Michael Buckley under a Creative Commons Attribution Share Alike 4.0 license.<br/>See </span><a href="https://codefisher.org/pastel-svg/"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://codefisher.org/pastel-svg/</span></a><span style=" font-size:small;"> for details.</span></p></body></html> + <html><head/><body><p>DB Browser for SQLite는 데이터베이스 파일을 생성, 디자인 및 편집하는 데 사용되는 오픈 소스 프리웨어 시각 도구입니다.</p><p>Mozilla Public License 버전 2와 GNU General Public License 버전 3 이상에 따라 이중 라이선스가 적용됩니다. 이러한 라이선스 조건에 따라 수정하거나 재배포할 수 있습니다.</p><p>자세한 사항은 <a href="https://www.gnu.org/licenses/gpl.html"><span style=" text-decoration: underline; color:#0000ff;">https://www.gnu.org/licenses/gpl.html</span></a> 및 <a href="https://www.mozilla.org/MPL/2.0/index.txt"><span style=" text-decoration: underline; color:#0000ff;">https://www.mozilla.org/MPL/2.0/index.txt</span></a>을 확인하세요.</p><p>이 프로그램에 대한 자세한 내용은 웹사이트에서 확인하세요: <a href="https://sqlitebrowser.org"><span style=" text-decoration: underline; color:#0000ff;">https://sqlitebrowser.org</span></a></p><p><span style=" font-size:small;">이 소프트웨어는 다음의 GPL/LGPL Qt 툴킷을 사용합니다.</span><a href="https://qt-project.org/"><span style=" font-size:small; text-decoration: underline; color:#0000ff;"> https://qt-project.org/</span></a><span style=" font-size:small;"><br/>자세한 라이센스 약관 및 정보는 </span><a href="https://doc.qt.io/qt-5/licensing.html"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://doc.qt.io/qt-5/licensing.html</span></a><span style=" font-size:small;">를 확인하세요.</span></p><p><span style=" font-size:8pt;">저희는 SQLite 확장 지원을 위해 nalgeon/sqlean 라이브러리를 사용합니다.<br/>이 라이브러리는 MIT 라이선스에 따라 라이선스가 부여되며, 자세한 내용은 다음을 참조하세요:<br/></span><a href="https://github.com/nalgeon/sqlean"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">https://github.com/nalgeon/sqlean</span></a></p><p><span style=" font-size:small;">또한 크리에이티브 커먼즈 저작자표시 동일조건변경허락 4.0 라이선스에 따라 Michael Buckley가 설정한 파스텔 SVG 아이콘을 사용합니다.<br/>자세한 사항은 </span><a href="https://codefisher.org/pastel-svg/"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://codefisher.org/pastel-svg/</span></a><span style=" font-size:small;"> 을 확인하세요.</span></p></body></html> @@ -286,36 +286,36 @@ - Invalid option/non-existant file: %1 + Invalid option/non-existent file: %1 잘못된 옵션을 사용하였거나 파일이 존재하지 않습니다: %1 - + SQLite Version SQLite 버전 - + SQLCipher Version %1 (based on SQLite %2) SQLCipher 버전 %1 (SQLite %2 기반) - + DB Browser for SQLite Version %1. DB Browser for SQLite 버전 %1. - + Last commit hash when built: %1 빌드 당시 최종 깃 해시 값: %1 - + Built for %1, running on %2 %1 환경을 위해 빌드됨, %2 환경에서 실행 중 - + Qt Version %1 Qt 버전 %1 @@ -393,7 +393,7 @@ Raw 키 - + Please set a key to encrypt the database. Note that if you change any of the other, optional, settings you'll need to re-enter them as well every time you open the database file. Leave the password fields empty to disable the encryption. @@ -404,7 +404,7 @@ The encryption process might take some time and you should have a backup copy of 암호화 작업은 시간이 좀 걸릴 수 있습니다. 그리고 꼭 여러분의 데이터베이스 백업본을 반드시 만들어두세요! 암호화 작업 이전에 한 저장되지 않은 변경 사항도 반영되니 주의하세요. - + Please enter the key used to encrypt the database. If any of the other settings were altered for this database file you need to provide this information as well. 데이터베이스를 암호화기 위해 사용할 키를 다시 입력해주세요. @@ -429,92 +429,92 @@ If any of the other settings were altered for this database file you need to pro '%1' 컬럼의 표시 형식을 선택하세요. - + Default 일반 - + Decimal number 숫자 - + Exponent notation 지수 - + Hex blob 이진 데이터 - + Hex number 16진수 - + Apple NSDate to date Apple NSDate 날짜 - + Java epoch (milliseconds) to date Java 시간(밀리초)을 날짜로 - + .NET DateTime.Ticks to date .NET DateTime Ticks를 날짜로 - + Julian day to date 날짜 - + Unix epoch to local time 유닉스 시간(타임스탬프)을 지역 시간으로 - + WebKit / Chromium epoch to date - + WebKit / Chromium을 날짜로 - + WebKit / Chromium epoch to local time - + 로WebKit / Chromium 시간을 지역 시간으로 - + Date as dd/mm/yyyy 날짜를 dd/mm/yyyy 형태로 - + Lower case 소문자 - + Binary GUID to text 바이너리 GUID를 텍스트로 - + SpatiaLite Geometry to SVG SpatiaLite Geometry를 SVG로 - + Custom display format must contain a function call applied to %1 사용자 정의 표시 형식은 %1에 적용된 함수 호출을 포함해야 합니다 - + Error in custom display format. Message from database engine: %1 @@ -522,37 +522,37 @@ If any of the other settings were altered for this database file you need to pro %1 - + Custom display format must return only one column but it returned %1. 사용자 지정 표시 형식은 하나의 열만 반환해야 하지만 %1개를 반환했습니다. - + Octal number 8진수 - + Round number 라운드 수 - + Unix epoch to date 유닉스 시간(타임스탬프)을 날짜로 - + Upper case 대문자 - + Windows DATE to date Windows 날짜 - + Custom 사용자 지정 @@ -679,165 +679,165 @@ If any of the other settings were altered for this database file you need to pro DBBrowserDB - + Please specify the database name under which you want to access the attached database 데이터베이스 연결을 위해 불러올 데이터베이스의 별칭을 지정해주세요 - + Invalid file format 잘못된 파일 포맷입니다 - + Do you want to save the changes made to the database file %1? %1 데이터베이스 파일을 생성하기 위해 변경사항을 저장하겠습니까? - + Exporting database to SQL file... 데이터베이스를 SQL 파일로 내보내는 중... - - + + Cancel 취소 - + Executing SQL... SQL 실행 중... - + Action cancelled. 실행이 취소되었습니다. - + Do you really want to close this temporary database? All data will be lost. 이 임시 데이터베이스를 닫을까요? 모든 데이터가 사라집니다. - + Database didn't close correctly, probably still busy 데이터베이스가 제대로 닫히지 않았습니다, 아마도 아직 사용 중일 것입니다 - + Cannot open destination file: '%1' 대상 파일을 열 수 없습니다.: '%1' - - + + Cannot backup to file: '%1'. Message: %2 파일로 백업할 수 없습니다.: '%1'. 메시지: %2 - + The database is currently busy: 이 데이터베이스는 현재 사용 중입니다: - + Do you want to abort that other operation? 이 명령을 취소하시겠습니까? - - + + No database file opened 열린 데이터베이스 파일이 없습니다 - - + + Error in statement #%1: %2. Aborting execution%3. #%1: %2 구문에 에러가 있어 실행이 중단되었습니다%3. - - + + and rolling back 그리고 롤백합니다 - + didn't receive any output from %1 %1에서 아무런 출력을 받지 못했습니다 - + could not execute command: %1 명령을 실행할 수 없습니다: %1 - + Cannot delete this object 이 객체를 삭제할 수 없습니다 - + Cannot set data on this object 이 객체에는 데이터를 저장할 수 없습니다 - - + + A table with the name '%1' already exists in schema '%2'. '%1' 이름의 테이블이 이미 스키마 '%2'에 존재합니다. - + No table with name '%1' exists in schema '%2'. 스키마 '%2'에 이름이 '%1'인 테이블이 없습니다. - - + + Cannot find column %1. %1 컬럼을 찾을 수 없습니다. - + Creating savepoint failed. DB says: %1 세이브 포인트를 생성하지 못했습니다. DB 메시지: %1 - + Renaming the column failed. DB says: %1 열 이름을 변경하지 못했습니다. DB 메시지: %1 - - + + Releasing savepoint failed. DB says: %1 세이브 포인트를 해제하지 못했습니다. DB 메시지: %1 - + Creating new table failed. DB says: %1 새 테이블을 생성하지 못했습니다. DB 메시지: %1 - + Copying data to new table failed. DB says: %1 새 테이블에 데이터를 복사하지 못했습니다. DB 메시지: %1 - + Deleting old table failed. DB says: %1 이전 테이블을 삭제하지 못했습니다. DB 메시지: %1 - + Error renaming table '%1' to '%2'. Message from database engine: %3 @@ -846,12 +846,12 @@ Message from database engine: %3 - + could not get list of db objects: %1 DB 개체 목록을 가져알 수 없습니다: %1 - + Restoring some of the objects associated with this table failed. This is most likely because some column names changed. Here's the SQL statement which you might want to fix and execute manually: @@ -860,32 +860,32 @@ Message from database engine: - + could not get list of databases: %1 데이터베이스 목록을 가져올 수 없습니다: %1 - + Error loading extension: %1 확장기능을 불러오기 에러: %1 - + Error loading built-in extension: %1 - + 내장 확장기능을 불러오는데 실패했습니다: %1 - + could not get column information 열 정보를 가져올 수 없습니다 - + Error setting pragma %1 to %2: %3 pragma 설정을 %1에서 %2로 변경하는데 에러: %3 - + File not found. 파일을 찾을 수 없습니다. @@ -1442,7 +1442,7 @@ Do you want to apply the edited data to row=%1, column=%2? Make this a 'WITHOUT ROWID' table. Setting this flag requires specifying a PRIMARY KEY (which can be of any type, and can be composite), and forbids the AUTOINCREMENT flag. - + 이 테이블을 'WITHOUT ROWID' 테이블로 만듭니다. 이 플래그를 설정하려면 PRIMARY KEY(모든 유형이 될 수 있으며 복합형일 수 있음)를 지정해야 하며 AUTOINCREMENT 플래그는 금지됩니다. @@ -1948,7 +1948,7 @@ All data currently stored in this field will be lost. ExtendedScintilla - + Ctrl+H @@ -1959,22 +1959,22 @@ All data currently stored in this field will be lost. - + Ctrl+P - + Find... 찾기... - + Find and Replace... 검색과 바꾸기... - + Print... 인쇄하기... @@ -1982,128 +1982,128 @@ All data currently stored in this field will be lost. ExtendedTableWidget - + Use as Exact Filter 정확한 필터로 적용하기 - + Containing 포함하는 - + Not containing 포함하지 않는 - + Not equal to 같지 않은 - + Greater than 초과 - + Less than 미만 - + Greater or equal 이상 - + Less or equal 이하 - + Between this and... 이 값과 사이에... - + Regular expression 정규 표현식 - + Edit Conditional Formats... 조건부 서식 편집... - + Set to NULL NULL로 변경하기 - + Cut 잘라내기 - + Copy 복사하기 - + Copy with Headers 헤더 포함 복사하기 - + Copy as SQL SQL로 복사하기 - + Paste 붙여넣기 - + Print... 인쇄하기... - + Use in Filter Expression 필터 표현식 적용하기 - + Alt+Del - + Ctrl+Shift+C - + Ctrl+Alt+C - + The content of the clipboard is bigger than the range selected. Do you want to insert it anyway? 클립보드의 내용이 선택한 범위보다 큽니다. 어쨌든 추가할까요? - + <p>Not all data has been loaded. <b>Do you want to load all data before selecting all the rows?</b><p><p>Answering <b>No</b> means that no more data will be loaded and the selection will not be performed.<br/>Answering <b>Yes</b> might take some time while the data is loaded but the selection will be complete.</p>Warning: Loading all the data might require a great amount of memory for big tables. <p>모든 데이터가 로드되지 않았습니다. <b>모든 행을 선택하기 전에 모든 데이터를 로드하시겠습니까?</b><p><p><b> 아니요</b>를 선택하면 더 이상 데이터가 로드되지 않고 선택이 수행되지 않습니다.<br/><b>예</b> 를 선택하면 데이터가 로드되는 동안 시간이 다소 걸릴 수 있지만 선택이 완료됩니다.</p>경고: 모든 데이터를 로드하려면 큰 테이블을 위해 많은 양의 메모리가 필요할 수 있습니다. - + Cannot set selection to NULL. Column %1 has a NOT NULL constraint. 선택 사항을 NULL로 설정할 수 없습니다. 열 %1에 NOT NULL 제약 조건이 있습니다. @@ -2155,12 +2155,12 @@ Do you want to insert it anyway? FilterLineEdit - + Filter 필터 - + These input fields allow you to perform quick filters in the currently selected table. By default, the rows containing the input text are filtered out. The following operators are also supported: @@ -2187,92 +2187,92 @@ x~y 범위: x와 y값 사이 값 /regexp/ 정규 표현식에 일치하는 값 - + Clear All Conditional Formats 모든 조건부 서식 지우기 - + Use for Conditional Format 조건부 서식 사용 - + Edit Conditional Formats... 조건부 서식 편집... - + Set Filter Expression 필터 표현식 설정하기 - + What's This? 이건 무엇인가요? - + Is NULL NULL임 - + Is not NULL NULL이 아님 - + Is empty 비어있음 - + Is not empty 비어있지 않음 - + Not containing... 포함하지 않는... - + Equal to... 같은... - + Not equal to... 같지 않은... - + Greater than... 초과... - + Less than... 미만... - + Greater or equal... 이상... - + Less or equal... 이하... - + In range... 범위... - + Regular expression... 정규 표현식... @@ -2495,7 +2495,7 @@ x~y 범위: x와 y값 사이 값 - + Tab @@ -2638,7 +2638,7 @@ x~y 범위: x와 y값 사이 값 - + Deselect All 모두 선택 해제 @@ -2648,52 +2648,52 @@ x~y 범위: x와 y값 사이 값 비슷한거 찾기 - + Select All 모두 선택 - + There is already a table named '%1' and an import into an existing table is only possible if the number of columns match. 이미 '%1'이라는 이름을 가진 테이블이 존재하며 기존 테이블로 데이터를 가져오는 것은 필드의 수가 같을 때만 가능합니다. - + There is already a table named '%1'. Do you want to import the data into it? 이미 '%1'라는 이름의 테이블이 존재합니다. 데이터를 이 테이블로 가져올까요? - + Creating restore point failed: %1 복원 포인트를 생성하는데 실패했습니다: %1 - + Creating the table failed: %1 테이블 생성에 실패했습니다: %1 - + importing CSV CSV 가져오기 - + Could not prepare INSERT statement: %1 INSERT 문을 준비할 수 없습니다: %1 - + Unexpected end of file. Please make sure that you have configured the correct quote characters and the file is not malformed. 예기치 않은 파일의 끝(EOF)입니다. 올바른 따옴표를 구성했는지, 파일 형식이 잘못되지 않았는지 확인하세요. - + Importing the file '%1' took %2ms. Of this %3ms were spent in the row function. 파일 '%1' 가져오는데 %2ms가 걸렸습니다. 이 중에서 행 기능을 적용하는데 %3ms가 걸렸습니다. - + Inserting row failed: %1 행 추가에 실패했습니다: %1 @@ -2706,157 +2706,157 @@ x~y 범위: x와 y값 사이 값 DB Browser for SQLite - + toolBar1 toolBar1 - + Opens the SQLCipher FAQ in a browser window SQLCipher FAQ를 봅니다 - + Export one or more table(s) to a JSON file 테이블을 JSON 파일로 내보냅니다 - + Find 찾기 - + Find or replace 검색과 바꾸기 - + Print text from current SQL editor tab 현재 SQL 편집기 탭의 텍스트 인쇄 - + Print the structure of the opened database 현재 열려 있는 데이터베이스의 구조 인쇄 - + Un/comment block of SQL code SQL 코드 블럭 주석 처리/해제 - + Un/comment block 블럭 주석 처리/해제 - + Comment or uncomment current line or selected block of code 현재 줄 또는 선택된 블럭을 주석 처리 또는 해제합니다 - + Comment or uncomment the selected lines or the current line, when there is no selection. All the block is toggled according to the first line. 선택된 줄을 주석 처리 또는 해제합니다. 선택 항목이 없는 경우 현재 줄을 처리합니다. 모든 블럭은 첫번째 줄을 통해 토글 할 수 있습니다. - + Ctrl+/ - + Stop SQL execution SQL 실행 중단 - + Stop execution 실행 중단 - + Stop the currently running SQL script 현재 실행 중인 SQL 스크립트 중단 - + Execute all/selected SQL 전체 또는 선택한 SQL 실행 - + Open an existing database file in read only mode 읽기 전용 모드로 존재하는 데이터베이스 파일을 엽니다 - + &File 파일(&F) - + &Import 가져오기(&I) - + &Export 내보내기(&E) - + &Edit 편집(&E) - + &View 보기(&V) - + &Help 도움말(&H) - + Too&ls 도구(&L) - + DB Toolbar DB 툴바 - + Edit Database &Cell 데이터베이스 셀 수정하기(&C) - + Error Log 에러 로그 - + This button clears the contents of the SQL logs 이 버튼은 SQL 로그 내용을 지웁니다 - + This panel lets you examine a log of all SQL commands issued by the application or by yourself 이 패널에서 응용 프로그램 또는 사용자가 실행한 모든 SQL 명령의 기록을 확인할 수 있습니다 - + DB Sche&ma DB 스키마(&M) - + This is the structure of the opened database. You can drag multiple object names from the Name column and drop them into the SQL editor and you can adjust the properties of the dropped names using the context menu. This would help you in composing SQL statements. You can drag SQL statements from the Schema column and drop them into the SQL editor or into other applications. @@ -2868,246 +2868,246 @@ You can drag SQL statements from the Schema column and drop them into the SQL ed - + &Remote 원격(&R) - + This button executes the SQL statement present in the current editor line 이 버튼은 현재 편집기 행에 있는 SQL 문을 실행합니다 - + Shift+F5 - + Sa&ve Project 프로젝트 저장하기(&V) - + User 사용자 - + Application 애플리케이션 - + &Clear 지우기(&C) - + &New Database... 새 데이터베이스(&N)... - - + + Create a new database file 새 데이터베이스 파일을 생성합니다 - + This option is used to create a new database file. 이 옵션은 새 데이터베이스 파일을 생성하려고 할 때 사용합니다. - + Ctrl+N - - + + &Open Database... 데이터베이스 열기(&O)... - - - - - + + + + + Open an existing database file 기존 데이터베이스 파일을 엽니다 - - - + + + This option is used to open an existing database file. 이 옵션은 기존 데이터베이스 파일을 열 때 사용합니다. - + Ctrl+O - + &Close Database 데이터베이스 닫기(&C) - + This button closes the connection to the currently open database file 이 버튼은 현재 열려 있는 데이터베이스 파일에 대한 연결을 닫습니다 - - + + Ctrl+W - - + + Revert database to last saved state 마지막 저장된 상태로 데이터베이스를 되돌립니다 - + This option is used to revert the current database file to its last saved state. All changes made since the last save operation are lost. 이 옵션은 현재 데이터베이스를 마지막 저장된 상태로 되돌릴 때 사용합니다. 저장 이후에 이루어진 모든 변경 사항을 되돌립니다. - - + + Write changes to the database file 변경 사항을 데이터베이스 파일에 반영합니다 - + This option is used to save changes to the database file. 이 옵션은 데이터베이스 파일에 변경 사항을 저장하기 위해 사용됩니다. - + Ctrl+S - + Compact the database file, removing space wasted by deleted records 삭제된 레코드로 낭비되는 공간을 제거하여 데이터베이스 파일 압축 - - + + Compact the database file, removing space wasted by deleted records. 삭제된 레코드로 낭비되는 공간을 제거하여 데이터베이스 파일 압축. - + E&xit 종료(&X) - + Ctrl+Q - + Import data from an .sql dump text file into a new or existing database. .sql 덤프 문자열 파일에서 데이터를 새 데이터베이스나 기존 데이터베이스로 가져옵니다. - + This option lets you import data from an .sql dump text file into a new or existing database. SQL dump files can be created on most database engines, including MySQL and PostgreSQL. 이 옵션은 .sql 덤프 문자열 파일에서 데이터를 새 데이터베이스나 기존 데이터베이스로 가져옵니다. SQL 덤프 파일은 MySQL이나 PostgreSQL 등 대부분의 데이터베이스 엔진에서 생성할 수 있습니다. - + Open a wizard that lets you import data from a comma separated text file into a database table. 마법사를 사용하여 CSV 파일(쉼로 필드가 나누어진 문자열 파일)에서 데이터베이스 테이블로 데이터를 가져올 수 있습니다. - + Open a wizard that lets you import data from a comma separated text file into a database table. CSV files can be created on most database and spreadsheet applications. 마법사를 사용하여 CSV 파일(쉼표로 필드가 나누어진 문자열 파일)에서 데이터베이스 테이블로 데이터를 가져올 수 있습니다. CSV 파일은 대부분의 데이터베이스와 스프레드시트 애플리케이션에서 생성할 수 있습니다. - + Export a database to a .sql dump text file. 데이터베이스를 .sql 덤프 문자열 파일로 내보내기. - + This option lets you export a database to a .sql dump text file. SQL dump files contain all data necessary to recreate the database on most database engines, including MySQL and PostgreSQL. 이 옵션은 데이터베이스를 .sql 덤프 문자열 파일로 내보낼 수 있습니다. SQL 덤프 파일은 MySQL과 PostgreSQL 등 대부분의 데이터베이스 엔진에서 데이터베이스를 재생성하기 위한 모든 필요한 데이터를 포함하고 있습니다. - + Export a database table as a comma separated text file. 데이터베이스 테이블을 CSV(쉼표로 분리된 문자열 파일)로 내보내기. - + Export a database table as a comma separated text file, ready to be imported into other database or spreadsheet applications. 데이터베이스 테이블을 CSV(쉼표로 분리된 문자열 파일)로 내보내기. 다른 데이터베이스나 스프레드시트 애플리케이션에서 가져와서 사용할 수 있습니다. - + Open the Create Table wizard, where it is possible to define the name and fields for a new table in the database 테이블 생성 마법사를 사용하여 데이터베이스에서 새 테이블을 위한 이름과 필드를 정의할 수 있습니다 - - + + Delete Table 테이블 삭제하기 - + Open the Delete Table wizard, where you can select a database table to be dropped. 테이블 삭제 마법사를 사용하여 선택한 데이터베이스 테이블을 삭제할 수 있습니다. - + Open the Create Index wizard, where it is possible to define a new index on an existing database table. 인덱스 생성 마법사를 사용하여 기존 데이터베이스 테이블에 새 인덱스를 정의할 수 있습니다. - + &Preferences... 환경설정(&P)... - - + + Open the preferences window. 환경설정 창을 엽니다. - + &DB Toolbar DB 툴바(&D) - + Shows or hides the Database toolbar. 데이터베이스 툴바를 보이거나 숨깁니다. - + Shift+F1 - + &Recently opened 최근 열었던 파일들(&R) - + Ctrl+T @@ -3121,119 +3121,119 @@ You can drag SQL statements from an object row and drop them into other applicat - + Warning: this pragma is not readable and this value has been inferred. Writing the pragma might overwrite a redefined LIKE provided by an SQLite extension. 경고: 이 pragma는 읽기 전용이 아니며 이 값은 추측된 값입니다. pragma를 작성하면 SQLite에서 제공하는 재정의 된 LIKE를 덮어 쓸 수 있습니다. - + &Recent Files 최근 파일 열기(&R) - - + + Ctrl+F4 - + Compact &Database... 데이터베이스 압축(&D)... - + Open the Modify Table wizard, where it is possible to rename an existing table. It is also possible to add or delete fields from a table, as well as modify field names and types. 기존 테이블의 이름을 바꿀 수 있는 테이블 수정 마법사를 엽니다. 테이블에서 필드를 추가 또는 삭제하고 필드 이름 및 유형을 수정할 수도 있습니다. - + This button executes the currently selected SQL statements. If no text is selected, all SQL statements are executed. 이 버튼은 현재 선택되어 있는 SQL 명령문을 실행합니다. 만약 선택 항목이 없으면 모든 SQL 명령문이 실행됩니다. - + &Load Extension... 확장도구 불러오기(&L)... - + Execute line 줄 실행 - + &Wiki 위키(&W) - + F1 - + Bug &Report... 버그 보고(&R)... - + Feature Re&quest... 기능 제안(&Q)... - + Web&site 웹 사이트(&S) - + &Donate on Patreon... 후원하기(&D)... - + Open &Project... 프로젝트 열기(&P)... - + &Attach Database... 데이터베이스 연결(&A)... - - + + Add another database file to the current database connection 현재 데이터베이스 연결에 다른 데이터베이스 연결을 추가합니다 - + This button lets you add another database file to the current database connection 이 버튼을 사용하면 현재 데이터베이스 연결에 다른 데이터베이스 파일을 추가할 수 있습니다 - + &Set Encryption... 암호화 설정(&S)... - + SQLCipher &FAQ SQLCipher FAQ(&F) - + Table(&s) to JSON... 테이블을 JSON으로 내보내기(&S)... - + Browse Table 테이블 탐색 - + Open Data&base Read Only... 읽기 전용으로 데이터베이스 열기(&B)... @@ -3259,602 +3259,789 @@ You can drag SQL statements from an object row and drop them into other applicat Pragma 수정(&R) - - + + Temp Store + + + + + Secure Delete + I didn't translate it because I think it's better for users to understand it without it. If you disagree, please open a discussion. + Secure Delete + + + + Case Sensitive Like + I didn't translate it because I think it's better for users to understand it without it. If you disagree, please open a discussion. + Case Sensitive Like + + + + Journal Mode + I didn't translate it because I think it's better for users to understand it without it. If you disagree, please open a discussion. + Journal Mode + + + + Journal Size Limit + I didn't translate it because I think it's better for users to understand it without it. If you disagree, please open a discussion. + Journal Size Limit + + + + Recursive Triggers + I didn't translate it because I think it's better for users to understand it without it. If you disagree, please open a discussion. + Resursive Triggers + + + + Page Size + I didn't translate it because I think it's better for users to understand it without it. If you disagree, please open a discussion. + Page Size + + + + Foreign Keys + I didn't translate it because I think it's better for users to understand it without it. If you disagree, please open a discussion. + Foreign Keys + + + + Auto Vacuum + I didn't translate it because I think it's better for users to understand it without it. If you disagree, please open a discussion. + Auto Vaccum + + + + Max Page Count + I didn't translate it because I think it's better for users to understand it without it. If you disagree, please open a discussion. + Max Page Count + + + + Checkpoint Full FSYNC + I didn't translate it because I think it's better for users to understand it without it. If you disagree, please open a discussion. + Checkpoint FULL FSYNC + + + + + Off + + + + + + Normal + I didn't translate it because I think it's better for users to understand it without it. If you disagree, please open a discussion. + Normal + + + + + Full + I didn't translate it because I think it's better for users to understand it without it. If you disagree, please open a discussion. + Full + + + + Default + I didn't translate it because I think it's better for users to understand it without it. If you disagree, please open a discussion. + 기본값 + + + + File + I didn't translate it because I think it's better for users to understand it without it. If you disagree, please open a discussion. + File + + + + + Memory + I didn't translate it because I think it's better for users to understand it without it. If you disagree, please open a discussion. + Memory + + + + Delete + I didn't translate it because I think it's better for users to understand it without it. If you disagree, please open a discussion. + Delete + + + + Truncate + I didn't translate it because I think it's better for users to understand it without it. If you disagree, please open a discussion. + Truncate + + + + Persist + I didn't translate it because I think it's better for users to understand it without it. If you disagree, please open a discussion. + Persist + + + + WAL + I didn't translate it because I think it's better for users to understand it without it. If you disagree, please open a discussion. + WAL + + + + Exclusive + I didn't translate it because I think it's better for users to understand it without it. If you disagree, please open a discussion. + Exclusive + + + + Automatic Index + I didn't translate it because I think it's better for users to understand it without it. If you disagree, please open a discussion. + Automatic Index + + + + Ignore Check Constraints + I didn't translate it because I think it's better for users to understand it without it. If you disagree, please open a discussion. + Ignore Check Constraints + + + + Full FSYNC + I didn't translate it because I think it's better for users to understand it without it. If you disagree, please open a discussion. + Full FSYNC + + + + WAL Auto Checkpoint + I didn't translate it because I think it's better for users to understand it without it. If you disagree, please open a discussion. + WAL Auto Checkpoint + + + + User Version + I didn't translate it because I think it's better for users to understand it without it. If you disagree, please open a discussion. + User Version + + + + Synchronous + I didn't translate it because I think it's better for users to understand it without it. If you disagree, please open a discussion. + Synchronous + + + + None + 사용하지 않음 + + + + Incremental + I didn't translate it because I think it's better for users to understand it without it. If you disagree, please open a discussion. + Incremental + + + + Locking Mode + I didn't translate it because I think it's better for users to understand it without it. If you disagree, please open a discussion. + Locking Mode + + + + E&xecute SQL This has to be equal to the tab title in all the main tabs SQL 실행(&E) - + &New Database 새 데이터베이스(&N) - + &Undo 실행 취소(&U) - - + + Undo last change to the database 데이터베이스에 대한 마지막 변경 사항 실행 취소합니다 - + This action undoes the last change performed to the database in the Database Browser or in Execute SQL. Redoing is not possible. 이 작업은 데이터베이스 브라우저 또는 SQL 실행에서 데이터베이스에 마지막으로 수행한 변경 사항을 실행 취소합니다. 다시 실행할 수 없습니다. - + New &tab 새 탭(&T) - + Open SQL file(s) SQL 파일 열기 - + This button opens files containing SQL statements and loads them in new editor tabs 이 버튼은 SQL 문이 포함된 파일을 열고 새 편집기 탭에 로드합니다 - + Ctrl+Shift+T - + &Save Project 프로젝트 저장하기(&S) - + This button lets you save all the settings associated to the open DB to a DB Browser for SQLite project file 이 버튼을 사용하면 열린 DB와 관련된 모든 설정을 DB Browser for SQLite 프로젝트 파일로 저장할 수 있습니다 - + Open &Project 프로젝트 열기(&P) - + This button lets you open a DB Browser for SQLite project file 이 버튼을 사용하면 DB Browser for SQLite 프로젝트 파일을 열 수 있습니다 - + Ctrl+Shift+O - + Save results 결과 저장 - + Save the results view 결과 뷰 저장 - + This button lets you save the results of the last executed query 이 버튼은 마지막으로 실행한 쿼리의 결과값을 저장합니다 - - + + Find text in SQL editor SQL 편집기에서 텍스트 찾기 - + This button opens the search bar of the editor 이 버튼은 편집기의 검색창을 엽니다 - + Ctrl+F - - + + Find or replace text in SQL editor SQL 편집기에서 텍스트 찾아 바꾸기 - + This button opens the find/replace dialog for the current editor tab 이 버튼은 현재 열려 있는 편집기의 찾기 바꾸기 대화상자를 엽니다 - + Ctrl+H - + Export to &CSV CSV로 내보내기(&C) - + Export to &JSON &JSON으로 내보내기 - + Save as &view 뷰로 저장하기(&V) - + Save as view 다른 이름의 뷰로 저장하기 - + Shows or hides the Project toolbar. 프로젝트 툴바를 표시하거나 숨깁니다. - + Extra DB Toolbar 확장 DB 툴바 - + &Open Database 데이터베이스 열기(&O) - + New In-&Memory Database In-Memory 데이터베이스 생성(&M) - + Drag && Drop SELECT Query 드래그 앤 드롭 SELECT 쿼리 - - + + When dragging fields from the same table or a single table, drop a SELECT query into the editor 동일한 테이블 또는 단일 테이블에서 필드를 드래그할 때 SELECT 쿼리를 편집기에 드롭합니다 - + Drag && Drop Qualified Names 정규화된 이름을 끌어서 놓기 - - + + Use qualified names (e.g. "Table"."Field") when dragging the objects and dropping them into the editor 개체를 끌어서 편집기에 놓을 때 정규화된 이름(예: "Table", "Field")을 사용합니다 - + Drag && Drop Enquoted Names 인용된 이름을 끌어서 놓기 - - + + Use escaped identifiers (e.g. "Table1") when dragging the objects and dropping them into the editor 개체를 끌어서 편집기에 놓을 때 이스케이프된 식별자(예: "Table1")을 사용합니다 - + &Integrity Check 무결성 검사(&I) - + Runs the integrity_check pragma over the opened database and returns the results in the Execute SQL tab. This pragma does an integrity check of the entire database. 열린 데이터베이스에 대해 integrity_check pragma를 실행하고 SQL 실행 탭에 결과를 반환합니다. 이 pragma는 전체 데이터베이스의 무결성 검사를 수행합니다. - + &Foreign-Key Check 외래키 검사(&F) - + Runs the foreign_key_check pragma over the opened database and returns the results in the Execute SQL tab 열린 데이터베이스에 대해 foreign_key_check pragma를 실행하고 SQL 실행 탭에 결과를 반환합니다 - + &Quick Integrity Check 빠른 무결성 검사(&Q) - + Run a quick integrity check over the open DB 열린 데이터베이스 대해 빠른 무결성 검사 실행 - + Runs the quick_check pragma over the opened database and returns the results in the Execute SQL tab. This command does most of the checking of PRAGMA integrity_check but runs much faster. 열린 데이터베이스에 대해 quick_check pragma를 실행하고 SQL 실행 탭에 결과를 반환합니다. 이 명령은 대부분의 PRAGMA integrity_check 검사를 수행하지만 훨씬 빠르게 실행됩니다. - + &Optimize 최적화(&O) - + Attempt to optimize the database 데이터베이스 최적화 - + Runs the optimize pragma over the opened database. This pragma might perform optimizations that will improve the performance of future queries. 열린 데이터베이스에 대해 최적화 pragma를 실행합니다. 이 pragma는 향후 쿼리의 성능을 향상시키는 최적화를 수행할 수 있습니다. - - + + Print 인쇄하기 - + &Save Project As... 다른 이름으로 프로젝트 저장(&S)... - - - + + + Save the project in a file selected in a dialog 대화상자에서 선택한 파일에 프로젝트 저장 - + Save A&ll 모두 저장(&l) - - - + + + Save DB file, project file and opened SQL files DB 파일, 프로젝트 파일 및 열린 SQL 파일 저장 - + Ctrl+Shift+S - + Close Pro&ject 프로젝트 닫기(&J) - - + + Close project and database files and return to the initial state 프로젝트 및 프로젝트 파일을 닫고 초기 상태로 돌아갑니다 - - + + Ctrl+Shift+W - + Table from CSV data in Clipboard... 클립보드에 저장된 CSV 데이터에서 테이블 가져오기... - + This treats the current clipboard contents as a CSV file and opens the same import wizard that is used for importing CSV data from a file. 현재 클립보드에 저장된 내용을 CSV파일로 간주하여 파일로부터 CSV데이터를 불러올때 사용되는 불러오기 마법사를 엽니다. - + Show &Row Counts 행 개수 보기 (&R) - + This shows the number of rows for each table and view in the database. 데이터베이스의 각 테이블과 뷰에 저장된 행의 개수를 표시합니다. - + Save Database &As... 다른 이름으로 저장하기...(&A) - + Save the current database as a different file 현재 데이터베이스를 다른 파일로 저장하기 - + Refresh 새로고침 - + Reload the database structure 데이터베이스 구조를 다시 로드합니다 - + Ctrl+Shift+F4 - - + + Detach Database 데이터베이스 분리 - - + + Detach database file attached to the current database connection 현재 데이터베이스 연결에 연결되어 있는 데이터베이스 파일 분리 - + Open a dialog for printing the text in the current SQL editor tab 현재 SQL 편집기 탭에서 텍스트를 인쇄하기 위한 대화상자를 엽니다 - + Open a dialog for printing the structure of the opened database 열린 데이터베이스의 구조를 인쇄하기 위한 대화상자를 엽니다 - + SQL &Log SQL 로그(&L) - + Show S&QL submitted by ~에 의해 실행된 SQL 보기(&Q) - + &Plot 플롯(&P) - - + + Project Toolbar 프로젝트 툴바 - + Extra DB toolbar 확장 DB 툴바 - - - + + + Close the current database file 현재 데이터베이스 파일 닫기 - + &Revert Changes 변경사항 취소하기(&R) - + &Write Changes 변경사항 저장하기(&W) - + &Database from SQL file... SQL 파일로부터 데이터베이스 가져오기(&D)... - + &Table from CSV file... CSV 파일에서 테이블 가져오기(&T)... - + &Database to SQL file... 데이터베이스를 SQL로 내보내기(&D)... - + &Table(s) as CSV file... 테이블을 CSV 파일로 내보내기(&T)... - + &Create Table... 테이블 생성하기(&C)... - + &Delete Table... 테이블 삭제하기(&D)... - + &Modify Table... 테이블 수정하기(&M)... - + Create &Index... 인덱스 생성하기(&I)... - + W&hat's This? 이건 무엇인가요?(&H) - + &About 정보(&A) - + This button opens a new tab for the SQL editor 이 버튼은 SQL 편집기의 새로운 탭을 엽니다 - + &Execute SQL SQL 실행하기(&E) - - - + + + Save SQL file SQL 파일 저장하기 - - + + Execute current line 현재 행 실행하기 - + Ctrl+E - + Export as CSV file CSV 파일로 내보내기 - + Export table as comma separated values file 테이블을 CSV 파일로 내보내기 - - + + Save the current session to a file 현재 세션을 파일로 저장하기 - - + + Load a working session from a file 파일에서 작업 세션 불러오기 - - + + Save SQL file as SQL 파일 다름 이름으로 저장하기 - + This button saves the content of the current SQL editor tab to a file 이 버튼은 현재 SQL 편집기의 내용을 파일로 저장합니다 - + &Browse Table 테이블 보기(&B) - + Copy Create statement 생성 구문 복사하기 - + Copy the CREATE statement of the item to the clipboard 항목의 생성 구문을 클립보드에 복사합니다 - + Ctrl+Return - + Ctrl+L - - + + Ctrl+P - + Ctrl+D - + Ctrl+I - + Encrypted 암호화됨 - + Read only 읽기 전용 - + Database file is read only. Editing the database is disabled. 데이터베이스 파일이 읽기 전용입니다. 데이터베이스 수정 기능이 비활성화됩니다. - + Database encoding 데이터베이스 인코딩 - + Database is encrypted using SQLCipher 데이터베이스는 SQLCipher를 통해 암호화됩니다 - - + + Choose a database file 데이터베이스 파일을 선택하세요 - - - + + + Choose a filename to save under 저장하려는 파일명을 선택하세요 - + Error while saving the database file. This means that not all changes to the database were saved. You need to resolve the following error first. %1 @@ -3862,294 +4049,294 @@ You can drag SQL statements from an object row and drop them into other applicat %1 - + Are you sure you want to undo all changes made to the database file '%1' since the last save? 정말로 데이터베이스 파일 '%1'의 모든 변경 사항을 마지막 저장된 상태로 되돌립니까? - + Choose a file to import 가져올 파일을 선택하세요 - + &%1 %2%3 &%1 %2%3 - + (read only) (읽기 전용) - + Open Database or Project 데이터베이스 또는 프로젝트 열기 - + Attach Database... 데이터베이스 연결... - + Import CSV file(s)... CSV 파일 가져오기... - + Do you want to save the changes made to SQL tabs in the project file '%1'? '%1' 프로젝트 파일에 SQL 탭을 추가하기 위해 변경사항을 저장하시겠습니까? - + Text files(*.sql *.txt);;All files(*) 문자열 파일(*.sql *.txt);;모든 파일(*) - + Do you want to create a new database file to hold the imported data? If you answer no we will attempt to import the data in the SQL file to the current database. 데이터를 가져와서 새 데이터베이스 파일을 생성하고 싶은신가요? 아니라면 SQL 파일의 데이터를 현재 데이터베이스로 가져오기를 할 것입니다. - + You are still executing SQL statements. Closing the database now will stop their execution, possibly leaving the database in an inconsistent state. Are you sure you want to close the database? 아직 SQL 명령문이 실행되는 중입니다. 데이터베이스를 닫으면 실행이 중단되어 데이터베이스가 일관성이 없어질 수 있습니다. 정말로 데이터베이스를 닫으시겠습니까? - + Do you want to save the changes made to the project file '%1'? %1 데이터베이스 파일을 생성하기 위해 변경사항을 저장하시겠습니까? - + File %1 already exists. Please choose a different name. 파일 %1이 이미 존재합니다. 다른 파일명을 선택하세요. - + Error importing data: %1 데이터 가져오기 에러: %1 - + Import completed. 가져오기가 완료되었습니다. - + Delete View 뷰 삭제하기 - + Modify View 뷰 수정하기 - + Delete Trigger 트리거 삭제하기 - + Modify Trigger 트리거 수정하기 - + Delete Index 인덱스 삭제하기 - + Modify Index 인덱스 수정하기 - + Modify Table 테이블 수정하기 - + Do you want to save the changes made to SQL tabs in a new project file? 새 프로젝트 파일에 SQL 탭을 추가하기 위해 변경사항을 저장하시겠습니까? - + Do you want to save the changes made to the SQL file %1? %1 SQL 파일을 생성하기 위해 변경사항을 저장하시겠습니까? - + Could not find resource file: %1 리소스 파일을 찾을 수 없습니다: %1 - + Choose a project file to open 불러올 프로젝트 파일을 선택하세요 - + Could not open project file for writing. Reason: %1 쓰기 모드로 프로젝트 파일을 열 수 없습니다. 원인: %1 - + Busy (%1) 사용 중 (%1) - + Setting PRAGMA values will commit your current transaction. Are you sure? PRAGMA 설정을 변경하려면 여러분의 현재 트랜잭션을 커밋해야합니다. 동의하십니까? - + Ctrl+Tab - + Ctrl+Shift+Tab - + Clear List 목록 지우기 - + Window Layout 창 레이아웃 - + Reset Window Layout 창 레이아웃 초기화 - + Simplify Window Layout 창 레이아웃 단순화 - - Shift+Alt+0 + + Alt+Shift+0 - + Dock Windows at Bottom 하단에 창 고정 - + Dock Windows at Left Side 좌측에 창 고정 - + Dock Windows at Top 상단에 창 고정 - - The database is currenctly busy. + + The database is currently busy. 이 데이터베이스는 현재 사용 중입니다. - + Click here to interrupt the currently running query. 여기를 눌러 현재 실행 중인 쿼리를 강제 중단합니다. - + Ctrl+Alt+W - + Could not open database file. Reason: %1 데이터베이스 파일을 열 수 없습니다. 원인: %1 - + In-Memory database In-Memory 데이터베이스 - + Choose a database file to save under 저장하려는 파일명을 선택하세요 - + Error while saving the database to the new file. 데이터베이스를 새 파일에 저장할 때 오류가 발생했습니다. - + Are you sure you want to delete the table '%1'? All data associated with the table will be lost. 정말로 테이블 '%1'을 삭제하시겠습니까? 테이블의 모든 데이터가 삭제됩니다. - + Are you sure you want to delete the view '%1'? 정말로 '%1' 뷰를 삭제할까요? - + Are you sure you want to delete the trigger '%1'? 정말로 '%1' 트리거를 삭제할까요? - + Are you sure you want to delete the index '%1'? 정말로 '%1' 인덱스를 삭제할까요? - + Error: could not delete the table. 에러: 테이블을 삭제할 수 없습니다. - + Error: could not delete the view. 에러: 뷰를 삭제할 수 없습니다. - + Error: could not delete the trigger. 에러: 트리거를 삭제할 수 없습니다. - + Error: could not delete the index. 에러: 인덱스를 삭제할 수 없습니다. - + Message from database engine: %1 데이터베이스 엔진 메시지: %1 - + Editing the table requires to save all pending changes now. Are you sure you want to save the database? 'pending'의 뜻이 보류입니다만, 여기서는 작업 중이던이 더 맞다고 판단했습니다. @@ -4157,224 +4344,224 @@ Are you sure you want to save the database? 데이터베이스를 저장하시겠습니까? - + Edit View %1 뷰 편집 %1 - + Edit Trigger %1 트리거 편집 %1 - + You are already executing SQL statements. Do you want to stop them in order to execute the current statements instead? Note that this might leave the database in an inconsistent state. 이미 SQL 명령문을 실행하였습니다. 현재 명령문을 대신 실행하기 위해 기존 실행을 중단하시겠습니까? 이로 인해 데이터베이스가 일관성이 없는 상태가 될 수 있습니다. - + -- EXECUTING SELECTION IN '%1' -- -- '%1의 선택 항목 실행 -- - + -- EXECUTING LINE IN '%1' -- --'%1'에서 라인 실행 중 -- - + -- EXECUTING ALL IN '%1' -- -- '%1'로부터 전체 실행 -- - - + + At line %1: %1번째 줄: - + Result: %1 결과: %1 - + Result: %2 결과: %2 - + Setting PRAGMA values or vacuuming will commit your current transaction. Are you sure? PRAGMA 값을 지정하지 않으면 현재 트랜잭션에 DB 파일 청소 작업(Vacuum)이 커밋됩니다. 진행할까요? - + Opened '%1' in read-only mode from recent file list 최근 파일 목록에서 읽기 전용 모드로 '%1'을(를) 열었습니다 - + Opened '%1' from recent file list 최근 파일 목록에서 '%1'을(를) 열었습니다 - + Select the action to apply to the dropped file(s). <br/>Note: only 'Import' will process more than one file. Note for translation: Although there is no %n in the original, you can use the numerus-form to adjust 'files(s)' and remove the note when n = 1. Including %n in the translation will also work. - + 드롭된 파일에 적용할 작업을 선택합니다. <br/>참고: '가져오기'만 두 개 이상의 파일을 처리합니다. - + The statements in the tab '%1' are still executing. Closing the tab will stop the execution. This might leave the database in an inconsistent state. Are you sure you want to close the tab? %1 탭의 문이 여전히 실행 중입니다. 탭을 닫으면 실행이 중단됩니다. 이로 인해 데이터베이스가 일관성이 없는 상태가 될 수 있습니다. 정말로 탭을 닫으시겠습니까? - + DB file '%1' could not be opened DB 파일 '%1'을(를) 열 수 없습니다 - + This project file is using an old file format because it was created using DB Browser for SQLite version 3.10 or lower. Loading this file format is no longer fully supported. If you want to load it completely, please use DB Browser for SQLite version 3.12 to convert it to the new file format. 이 프로젝트 파일은 DB Browser for SQLite 버전 3.10 이하를 사용하여 생성되었기 때문에 이전 파일 형식을 사용하고 있습니다. 이 파일 형식을 로드하는 것은 더 이상 완전히 지원되지 않습니다. 완벽하게 로드하려면 DB Browser for SQLite 버전 3.12를 사용하여 새 파일 형식으로 변환하세요. - + Table '%1' not found; settings ignored 테이블 '%1'을(를) 찾을 수 없습니다. 설정이 무시됩니다 - + -- Reference to file "%1" (not supported by this version) -- -- "%1" 파일에 대한 참조(이 버전에서는 지원되지 않음) -- - + Yes. Don't ask again 예. 다시 묻지 않습니다 - + This action will open a new SQL tab with the following statements for you to edit and run: 이 작업을 수행하면 편집하거나 실행할 수 있는 다음 명령문이 포함된 새 SQL 탭이 열립니다: - + Rename Tab 탭 이름 변경 - + Duplicate Tab 탭 복제 - + Close Tab 탭 닫기 - + Opening '%1'... '%1' 여는 중... - + There was an error opening '%1'... '%1'을 여는 중 에러가 발생했습니다... - + Value is not a valid URL or filename: %1 올바른 URL 또는 파일 이름이 아닙니다: %1 - + %1 rows returned in %2ms %2ms의 시간이 걸려서 %1 행이 반환되었습니다 - + Automatically load the last opened DB file at startup - + 시작 시 마지막으로 연 DB 파일 자동으로 불러오기 - + Ctrl+Alt+0 - + Choose text files 텍스트 파일 선택 - + Import completed. Some foreign key constraints are violated. Please fix them before saving. 가져오기가 완료되었습니다. 일부 외래 키의 제약 조건이 위반되었습니다. 저장 하기 전에 수정하십시오. - + Select SQL file to open 열 SQL 파일을 선택하세요 - + Select file name 파일 이름을 선택하세요 - + Select extension file 파일 확장자를 선택하세요 - + Extension successfully loaded. 확장기능을 성공적으로 불러왔습니다. - + Error loading extension: %1 확장기능 불러오기 에러: %1 - - + + Don't show again 다시 보지 않기 - + New version available. 이용 가능한 새 버전이 있습니다. - + A new DB Browser for SQLite version is available (%1.%2.%3).<br/><br/>Please download at <a href='%4'>%4</a>. 이용 가능한 새 버전이 있습니다 (%1.%2.%3).<br/><br/><a href='%4'>%4</a>에서 다운로드하세요. - + Project saved to file '%1' '%1' 파일로 프로젝트가 저장되었습니다 - + Collation needed! Proceed? 콜레이션이 필요합니다! 진행할까요? - + A table in this database requires a special collation function '%1' that this application can't provide without further knowledge. If you choose to proceed, be aware bad things can happen to your database. Create a backup! @@ -4383,67 +4570,67 @@ Create a backup! 백업을 생성하세요! - + creating collation 콜레이션 생성 - + Set a new name for the SQL tab. Use the '&&' character to allow using the following character as a keyboard shortcut. SQL 탭의 새 이름을 설정하세요. '&&' 문자를 사용하여 다음에 따라오는 문자를 키보드 단축키로서 사용할 수 있습니다. - + Please specify the view name 뷰 이름을 지정해주세요 - + There is already an object with that name. Please choose a different name. 이미 같은 이름의 객체가 존재합니다. 다른 이름을 고르세요. - + View successfully created. 뷰가 성공적으로 생성되었습니다. - + Error creating view: %1 뷰 생성 에러: %1 - + This action will open a new SQL tab for running: 이 작업은 다음을 실행하는 새 SQL 탭을 엽니다: - + Press Help for opening the corresponding SQLite reference page. 해당 SQLite 참조 페이지를 열려면 도움말을 누르십시오. - + DB Browser for SQLite project file (*.sqbpro) DB Browser for SQLite 프로젝트 파일 (*.sqbpro) - + Error checking foreign keys after table modification. The changes will be reverted. 테이블 수정 후 외래 키를 확인하는 중 오류가 발생하였습니다. 변경 사항이 되돌려집니다. - + This table did not pass a foreign-key check.<br/>You should run 'Tools | Foreign-Key Check' and fix the reported issues. 이 테이블은 외래 키 검사를 통과하지 못했습니다.<br/>'도구 -> 외래 키 검사'를 실행하여 보고된 문제를 해결하십시오. - + Execution finished with errors. 에러가 발생하여 실행 중단됨. - + Execution finished without errors. 에러 없이 실행 완료. @@ -4638,102 +4825,107 @@ Select the axes or axes labels to drag and zoom only in that orientation. - + Load all data and redraw plot 모든 데이터를 불러와서 플롯을 다시 그립니다 - - - + + + Row # 행 # - + Copy 복사 - + Print... 인쇄하기... - + + Help + 도움말 + + + Show legend 범례 표시 - + Stacked bars 누적 막대 - + Fixed number format 고정 숫자 형식 - + Date/Time 날짜/시간 - + Date 날짜 - + Time 시간 - - + + Numeric 숫자 - + Label 레이블 - + Invalid 올바르지 않음 - + Load all data and redraw plot. Warning: not all data has been fetched from the table yet due to the partial fetch mechanism. 모든 데이터를 불러와서 플롯을 다시 그립니다. 주의: 이 기능은 부분만 가져오는 메커니즘으로 인하여 테이블에서 모든 데이터가 가져와지지는 않습니다. - + Choose an axis color 축 색깔을 선택하세요 - + Choose a filename to save under 저장하려는 파일명을 선택하세요 - + PNG(*.png);;JPG(*.jpg);;PDF(*.pdf);;BMP(*.bmp);;All Files(*) PNG(*.png);;JPG(*.jpg);;PDF(*.pdf);;BMP(*.bmp);;모든 파일(*) - + There are curves in this plot and the selected line style can only be applied to graphs sorted by X. Either sort the table or query by X to remove curves or select one of the styles supported by curves: None or Line. 플롯에 있는 곡선들 중에 X축으로 정렬된 그래프만 선택한 선의 스타일을 변경할 수 있습니다. X로 표 또는 쿼리를 정렬하여 곡선을 제거하려면 '사용하지 않음'을, 곡선이 지원하는 스타일 중 하나를 선택하려면 '행'을 선택하세요. - + Loading all remaining data for this table took %1ms. 테이블의 나머지 데이터를 불러오는데 %1ms가 소요되었습니다. @@ -5070,7 +5262,7 @@ Can be set to 0 for disabling completion. Select built-in extensions to load for every database: - + 모든 데이터베이스에 대해 불러 올 내장 확장기능: @@ -5476,1959 +5668,377 @@ Can be set to 0 for disabling completion. - <html><head/><body><p>While supporting the REGEXP operator SQLite doesn't implement any regular expression<br/>algorithm but calls back the running application. DB Browser for SQLite implements this<br/>algorithm for you to let you use REGEXP out of the box. However, as there are multiple possible<br/>implementations of this and you might want to use another one, you're free to disable the<br/>application's implementation and load your own by using an extension. Requires restart of the application.</p></body></html> - <html><head/><body><p>SQLite에서는 기본적으로 정규 표현식 기능을 제공하지 않습니다만 애플리케이션을 실행하여 호출하는 것은 가능합니다. DB Browser for SQLite에서는 이 알고리즘을 박스 밖에서도 정규 표현식을 사용할 수 있도록 이 알고리즘을 구현해줍니다. 하지만 확장기능을 사용하여 외부에서 만든 알고리즘 구현을 사용하고자 한다면 DB Browser for SQLite에서 제공하는 구현 사용을 자유롭게 끌 수 있습니다. 이 기능은 애플리케이션을 재시작해야 합니다.</p></body></html> - - - - Disable Regular Expression extension - 정규 표현식 확장기능 비활성화 - - - - Export Settings - 환경설정 내보내기 - - - - Import Settings - 환경설정 불러오기 - - - - - Choose a directory - 디렉터리를 선택하세요 - - - - - The language will change after you restart the application. - 언어 변경은 애플리케이션을 재시작해야 반영됩니다. - - - - Select extension file - 확장기능 파일을 선택하세요 - - - - Extensions(*.so *.dylib *.dll);;All files(*) - 확장기능(*.so *.dylib *dll);;모든 파일(*) - - - - Import certificate file - 인증서 파일 가져오기 - - - - No certificates found in this file. - 이 파일에는 인증서가 없습니다. - - - - Are you sure you want do remove this certificate? All certificate data will be deleted from the application settings! - 정말로 이 인증서를 삭제하겠습니까? 애플리케이션 설정에서 모든 증명 데이터가 삭제될 것입니다! - - - - Are you sure you want to clear all the saved settings? -All your preferences will be lost and default values will be used. - 저장된 모든 설정을 정말로 초기화하시겠습니까? -모든 설정이 초기화되고 기본값으로 대체됩니다. - - - - Save Settings File - 환경설정을 내보낼 파일을 선택하세요 - - - - - Initialization File (*.ini) - 환경설정 파일 (*.ini) - - - - The settings file has been saved in location : - - 환경설정 파일이 다음 경로에 저장되었습니다 : - - - - - Open Settings File - 가져오려는 환경설정 파일을 선택하세요 - - - - The settings file was loaded properly. - 환경설정 파일을 정상적으로 불러 왔습니다. - - - - The selected settings file is not a normal settings file. -Please check again. - 선택하신 환경설정 파일은 정상적인 환경설정 파일이 아닙니다. -다시 확인해주세요. - - - - ProxyDialog - - - Proxy Configuration - 프록시 설정 - - - - Pro&xy Type - 프록시 종류(&X) - - - - Host Na&me - 서버 주소(&M) - - - - Port - 포트 - - - - Authentication Re&quired - 인증 정보 필요(&Q) - - - - &User Name - 사용자명(&U) - - - - Password - 암호 - - - - None - 사용하지 않음 - - - - System settings - 시스템 설정 - - - - HTTP - HTTP - - - - Socks v5 - Socks v5 - - - - QObject - - - Error importing data - 데이터 가져오기 에러 - - - - from record number %1 - 레코드 넘버: %1 - - - - . -%1 - . -%1 - - - - Importing CSV file... - CSV 파일 가져오기... - - - - Cancel - 취소 - - - - All files (*) - 모든 파일(*) - - - - SQLite database files (*.db *.sqlite *.sqlite3 *.db3) - SQLite 데이터베이스 파일(*.db *.sqlite *.sqlite3 *.db3) - - - - Left - 왼쪽 - - - - Right - 오른쪽 - - - - Center - 중앙 - - - - Justify - 정렬 - - - - SQLite Database Files (*.db *.sqlite *.sqlite3 *.db3) - SQLite 데이터베이스 파일 (*.db *.sqlite *.sqlite3 *.db3) - - - - DB Browser for SQLite Project Files (*.sqbpro) - DB Browser for SQLite 프로젝트 파일 (*.sqbpro) - - - - SQL Files (*.sql) - SQL 파일 (*.sql) - - - - All Files (*) - 모든 파일 (*) - - - - Text Files (*.txt) - 텍스트 파일 (*.txt) - - - - Comma-Separated Values Files (*.csv) - 쉼표로 구분된 파일 (*.csv) - - - - Tab-Separated Values Files (*.tsv) - 탭으로 분리된 파일 (*.tsv) - - - - Delimiter-Separated Values Files (*.dsv) - 구분자로 구분된 파일 (*.dsv) - - - - Concordance DAT files (*.dat) - Concordance DAT 파일 (*.dat) - - - - JSON Files (*.json *.js) - JSON 파일 (*.json *.js) - - - - XML Files (*.xml) - XML 파일 (*.xml) - - - - Binary Files (*.bin *.dat) - 바이너리 파일 (*bin *.dat) - - - - SVG Files (*.svg) - SVG 파일 (*.svg) - - - - Hex Dump Files (*.dat *.bin) - Hex 덤프 파일 (*.dat *bin) - - - - Extensions (*.so *.dylib *.dll) - 확장기능 (*.so *.dylib *.dll) - - - - Initialization File (*.ini) - 환경설정 파일 (*.ini) - - - - QsciCommand - - - Move down one line - - - - - Extend selection down one line - - - - - Extend rectangular selection down one line - - - - - Scroll view down one line - - - - - Move up one line - - - - - Extend selection up one line - - - - - Extend rectangular selection up one line - - - - - Scroll view up one line - - - - - Scroll to start of document - - - - - Scroll to end of document - - - - - Scroll vertically to centre current line - - - - - Move down one paragraph - - - - - Extend selection down one paragraph - - - - - Move up one paragraph - - - - - Extend selection up one paragraph - - - - - Move left one character - - - - - Extend selection left one character - - - - - Extend rectangular selection left one character - - - - - Move right one character - - - - - Extend selection right one character - - - - - Extend rectangular selection right one character - - - - - Move left one word - - - - - Extend selection left one word - - - - - Move right one word - - - - - Extend selection right one word - - - - - Move to end of previous word - - - - - Extend selection to end of previous word - - - - - Move to end of next word - - - - - Extend selection to end of next word - - - - - Move left one word part - - - - - Extend selection left one word part - - - - - Move right one word part - - - - - Extend selection right one word part - - - - - Move to start of document line - - - - - Extend selection to start of document line - - - - - Extend rectangular selection to start of document line - - - - - Move to start of display line - - - - - Extend selection to start of display line - - - - - Move to start of display or document line - - - - - Extend selection to start of display or document line - - - - - Move to first visible character in document line - - - - - Extend selection to first visible character in document line - - - - - Extend rectangular selection to first visible character in document line - - - - - Move to first visible character of display in document line - - - - - Extend selection to first visible character in display or document line - - - - - Move to end of document line - - - - - Extend selection to end of document line - - - - - Extend rectangular selection to end of document line - - - - - Move to end of display line - - - - - Extend selection to end of display line - - - - - Move to end of display or document line - - - - - Extend selection to end of display or document line - - - - - Move to start of document - - - - - Extend selection to start of document - - - - - Move to end of document - - - - - Extend selection to end of document - - - - - Move up one page - - - - - Extend selection up one page - - - - - Extend rectangular selection up one page - - - - - Move down one page - - - - - Extend selection down one page - - - - - Extend rectangular selection down one page - - - - - Stuttered move up one page - - - - - Stuttered extend selection up one page - - - - - Stuttered move down one page - - - - - Stuttered extend selection down one page - - - - - Delete current character - - - - - Delete previous character - - - - - Delete previous character if not at start of line - - - - - Delete word to left - - - - - Delete word to right - - - - - Delete right to end of next word - - - - - Delete line to left - - - - - Delete line to right - - - - - Delete current line - - - - - Cut current line - - - - - Copy current line - - - - - Transpose current and previous lines - - - - - Duplicate the current line - - - - - Select all - - - - - Move selected lines up one line - - - - - Move selected lines down one line - - - - - Duplicate selection - - - - - Convert selection to lower case - - - - - Convert selection to upper case - - - - - Cut selection - - - - - Copy selection - - - - - Paste - 붙여넣기 - - - - Toggle insert/overtype - - - - - Insert newline - - - - - Formfeed - - - - - Indent one level - - - - - De-indent one level - - - - - Cancel - 취소 - - - - Undo last command - - - - - Redo last command - - - - - Zoom in - - - - - Zoom out - - - - - QsciLexerCPP - - - Default - - - - - Inactive default - - - - - C comment - - - - - Inactive C comment - - - - - C++ comment - - - - - Inactive C++ comment - - - - - JavaDoc style C comment - - - - - Inactive JavaDoc style C comment - - - - - Number - - - - - Inactive number - - - - - Keyword - 키워드 - - - - Inactive keyword - - - - - Double-quoted string - - - - - Inactive double-quoted string - - - - - Single-quoted string - - - - - Inactive single-quoted string - - - - - IDL UUID - - - - - Inactive IDL UUID - - - - - Pre-processor block - - - - - Inactive pre-processor block - - - - - Operator - - - - - Inactive operator - - - - - Identifier - 식별자 - - - - Inactive identifier - - - - - Unclosed string - - - - - Inactive unclosed string - - - - - C# verbatim string - - - - - Inactive C# verbatim string - - - - - JavaScript regular expression - - - - - Inactive JavaScript regular expression - - - - - JavaDoc style C++ comment - - - - - Inactive JavaDoc style C++ comment - - - - - Secondary keywords and identifiers - - - - - Inactive secondary keywords and identifiers - - - - - JavaDoc keyword - - - - - Inactive JavaDoc keyword - - - - - JavaDoc keyword error - - - - - Inactive JavaDoc keyword error - - - - - Global classes and typedefs - - - - - Inactive global classes and typedefs - - - - - C++ raw string - - - - - Inactive C++ raw string - - - - - Vala triple-quoted verbatim string - - - - - Inactive Vala triple-quoted verbatim string - - - - - Pike hash-quoted string - - - - - Inactive Pike hash-quoted string - - - - - Pre-processor C comment - - - - - Inactive pre-processor C comment - - - - - JavaDoc style pre-processor comment - - - - - Inactive JavaDoc style pre-processor comment - - - - - User-defined literal - - - - - Inactive user-defined literal - - - - - Task marker - - - - - Inactive task marker - - - - - Escape sequence - - - - - Inactive escape sequence - - - - - QsciLexerHTML - - - HTML default - - - - - Tag - - - - - Unknown tag - - - - - Attribute - - - - - Unknown attribute - - - - - HTML number - - - - - HTML double-quoted string - - - - - HTML single-quoted string - - - - - Other text in a tag - - - - - HTML comment - - - - - Entity - - - - - End of a tag - - - - - Start of an XML fragment - - - - - End of an XML fragment - - - - - Script tag - - - - - Start of an ASP fragment with @ - - - - - Start of an ASP fragment - - - - - CDATA - - - - - Start of a PHP fragment - - - - - Unquoted HTML value - - - - - ASP X-Code comment - - - - - SGML default - - - - - SGML command - - - - - First parameter of an SGML command - - - - - SGML double-quoted string - - - - - SGML single-quoted string - - - - - SGML error - - - - - SGML special entity - - - - - SGML comment - - - - - First parameter comment of an SGML command - - - - - SGML block default - - - - - Start of a JavaScript fragment - - - - - JavaScript default - - - - - JavaScript comment - - - - - JavaScript line comment - - - - - JavaDoc style JavaScript comment - - - - - JavaScript number - - - - - JavaScript word - - - - - JavaScript keyword - - - - - JavaScript double-quoted string - - - - - JavaScript single-quoted string - - - - - JavaScript symbol - - - - - JavaScript unclosed string - - - - - JavaScript regular expression - - - - - Start of an ASP JavaScript fragment - - - - - ASP JavaScript default - - - - - ASP JavaScript comment - - - - - ASP JavaScript line comment - - - - - JavaDoc style ASP JavaScript comment - - - - - ASP JavaScript number - - - - - ASP JavaScript word - - - - - ASP JavaScript keyword - - - - - ASP JavaScript double-quoted string - - - - - ASP JavaScript single-quoted string - - - - - ASP JavaScript symbol - - - - - ASP JavaScript unclosed string - - - - - ASP JavaScript regular expression - - - - - Start of a VBScript fragment - - - - - VBScript default - - - - - VBScript comment - - - - - VBScript number - - - - - VBScript keyword - - - - - VBScript string - - - - - VBScript identifier - - - - - VBScript unclosed string - - - - - Start of an ASP VBScript fragment - - - - - ASP VBScript default - - - - - ASP VBScript comment - - - - - ASP VBScript number - - - - - ASP VBScript keyword - - - - - ASP VBScript string - - - - - ASP VBScript identifier - - - - - ASP VBScript unclosed string - - - - - Start of a Python fragment - - - - - Python default - - - - - Python comment - - - - - Python number - - - - - Python double-quoted string - - - - - Python single-quoted string - - - - - Python keyword - - - - - Python triple double-quoted string - - - - - Python triple single-quoted string - - - - - Python class name - - - - - Python function or method name - - - - - Python operator - - - - - Python identifier - - - - - Start of an ASP Python fragment - - - - - ASP Python default - - - - - ASP Python comment - - - - - ASP Python number - - - - - ASP Python double-quoted string - - - - - ASP Python single-quoted string - - - - - ASP Python keyword - - - - - ASP Python triple double-quoted string - - - - - ASP Python triple single-quoted string - - - - - ASP Python class name - + <html><head/><body><p>While supporting the REGEXP operator SQLite doesn't implement any regular expression<br/>algorithm but calls back the running application. DB Browser for SQLite implements this<br/>algorithm for you to let you use REGEXP out of the box. However, as there are multiple possible<br/>implementations of this and you might want to use another one, you're free to disable the<br/>application's implementation and load your own by using an extension. Requires restart of the application.</p></body></html> + <html><head/><body><p>SQLite에서는 기본적으로 정규 표현식 기능을 제공하지 않습니다만 애플리케이션을 실행하여 호출하는 것은 가능합니다. DB Browser for SQLite에서는 이 알고리즘을 박스 밖에서도 정규 표현식을 사용할 수 있도록 이 알고리즘을 구현해줍니다. 하지만 확장기능을 사용하여 외부에서 만든 알고리즘 구현을 사용하고자 한다면 DB Browser for SQLite에서 제공하는 구현 사용을 자유롭게 끌 수 있습니다. 이 기능은 애플리케이션을 재시작해야 합니다.</p></body></html> - - ASP Python function or method name - + + Disable Regular Expression extension + 정규 표현식 확장기능 비활성화 - - ASP Python operator - + + Export Settings + 환경설정 내보내기 - - ASP Python identifier - + + Import Settings + 환경설정 불러오기 - - PHP default - + + + Choose a directory + 디렉터리를 선택하세요 - - PHP double-quoted string - + + + The language will change after you restart the application. + 언어 변경은 애플리케이션을 재시작해야 반영됩니다. - - PHP single-quoted string - + + Select extension file + 확장기능 파일을 선택하세요 - - PHP keyword - + + Extensions(*.so *.dylib *.dll);;All files(*) + 확장기능(*.so *.dylib *dll);;모든 파일(*) - - PHP number - + + Import certificate file + 인증서 파일 가져오기 - - PHP variable - + + No certificates found in this file. + 이 파일에는 인증서가 없습니다. - - PHP comment - + + Are you sure you want do remove this certificate? All certificate data will be deleted from the application settings! + 정말로 이 인증서를 삭제하겠습니까? 애플리케이션 설정에서 모든 증명 데이터가 삭제될 것입니다! - - PHP line comment - + + Are you sure you want to clear all the saved settings? +All your preferences will be lost and default values will be used. + 저장된 모든 설정을 정말로 초기화하시겠습니까? +모든 설정이 초기화되고 기본값으로 대체됩니다. - - PHP double-quoted variable - + + Save Settings File + 환경설정을 내보낼 파일을 선택하세요 - - PHP operator - + + + Initialization File (*.ini) + 환경설정 파일 (*.ini) - - - QsciLexerJSON - - Default - + + The settings file has been saved in location : + + 환경설정 파일이 다음 경로에 저장되었습니다 : + - - Number - + + Open Settings File + 가져오려는 환경설정 파일을 선택하세요 - - String - 문자열 + + The settings file was loaded properly. + 환경설정 파일을 정상적으로 불러 왔습니다. - - Unclosed string - + + The selected settings file is not a normal settings file. +Please check again. + 선택하신 환경설정 파일은 정상적인 환경설정 파일이 아닙니다. +다시 확인해주세요. + + + ProxyDialog - - Property - + + Proxy Configuration + 프록시 설정 - - Escape sequence - + + Pro&xy Type + 프록시 종류(&X) - - Line comment - + + Host Na&me + 서버 주소(&M) - - Block comment - + + Port + 포트 - - Operator - + + Authentication Re&quired + 인증 정보 필요(&Q) - - IRI - + + &User Name + 사용자명(&U) - - JSON-LD compact IRI - + + Password + 암호 - - JSON keyword - + + None + 사용하지 않음 - - JSON-LD keyword - + + System settings + 시스템 설정 - - Parsing error - + + HTTP + HTTP - - - QsciLexerJavaScript - - Regular expression - 정규 표현식 + + SOCKS5 + SOCKS5 - QsciLexerPython - - - Default - - + QObject - - Comment - 주석 + + Error importing data + 데이터 가져오기 에러 - - Number - + + from record number %1 + 레코드 넘버: %1 - - Double-quoted string - + + . +%1 + . +%1 - - Single-quoted string - + + Importing CSV file... + CSV 파일 가져오기... - - Keyword - 키워드 + + Cancel + 취소 - - Triple single-quoted string - + + All files (*) + 모든 파일(*) - - Triple double-quoted string - + + SQLite database files (*.db *.sqlite *.sqlite3 *.db3) + SQLite 데이터베이스 파일(*.db *.sqlite *.sqlite3 *.db3) - - Class name - + + Left + 왼쪽 - - Function or method name - + + Right + 오른쪽 - - Operator - + + Center + 중앙 - - Identifier - 식별자 + + Justify + 정렬 - - Comment block - + + SQLite Database Files (*.db *.sqlite *.sqlite3 *.db3) + SQLite 데이터베이스 파일 (*.db *.sqlite *.sqlite3 *.db3) - - Unclosed string - + + DB Browser for SQLite Project Files (*.sqbpro) + DB Browser for SQLite 프로젝트 파일 (*.sqbpro) - - Highlighted identifier - + + SQL Files (*.sql) + SQL 파일 (*.sql) - - Decorator - + + All Files (*) + 모든 파일 (*) - - Double-quoted f-string - + + Text Files (*.txt) + 텍스트 파일 (*.txt) - - Single-quoted f-string - + + Comma-Separated Values Files (*.csv) + 쉼표로 구분된 파일 (*.csv) - - Triple single-quoted f-string - + + Tab-Separated Values Files (*.tsv) + 탭으로 분리된 파일 (*.tsv) - - Triple double-quoted f-string - + + Delimiter-Separated Values Files (*.dsv) + 구분자로 구분된 파일 (*.dsv) - - - QsciLexerSQL - - Default - + + Concordance DAT files (*.dat) + Concordance DAT 파일 (*.dat) - - Comment - 주석 + + JSON Files (*.json *.js) + JSON 파일 (*.json *.js) - - Comment line - + + XML Files (*.xml) + XML 파일 (*.xml) - - JavaDoc style comment - + + Binary Files (*.bin *.dat) + 바이너리 파일 (*bin *.dat) - - Number - + + SVG Files (*.svg) + SVG 파일 (*.svg) - - Keyword - 키워드 + + Hex Dump Files (*.dat *.bin) + Hex 덤프 파일 (*.dat *bin) - - Double-quoted string - + + Extensions (*.so *.dylib *.dll) + 확장기능 (*.so *.dylib *.dll) - - Single-quoted string - + + Initialization File (*.ini) + 환경설정 파일 (*.ini) + + + QsciCommand - - SQL*Plus keyword - + Paste + 붙여넣기 - - SQL*Plus prompt - + Cancel + 취소 + + + QsciLexerCPP - - Operator - + Keyword + 키워드 - Identifier - 식별자 - - - - SQL*Plus comment - - - - - # comment line - + 식별자 + + + QsciLexerJSON - - JavaDoc keyword - + String + 문자열 + + + QsciLexerJavaScript - - JavaDoc keyword error - + Regular expression + 정규 표현식 + + + QsciLexerPython - - User defined 1 - + Comment + 주석 - - User defined 2 - + Keyword + 키워드 - - User defined 3 - + Identifier + 식별자 + + + QsciLexerSQL - - User defined 4 - + Comment + 주석 - - Quoted identifier - + Keyword + 키워드 - - Quoted operator - + Identifier + 식별자 QsciScintilla - &Undo - 실행 취소(&U) - - - - &Redo - - - - - Cu&t - - - - - &Copy - - - - - &Paste - - - - - Delete - + 실행 취소(&U) - Select All - 모두 선택 + 모두 선택 @@ -7821,25 +6431,25 @@ Are you sure you want to proceed? 인증을 위한 클라이언트 인증서 암호를 입력해주세요. - + Cancel 취소 - + Uploading remote database to %1 %1로 원격 데이터베이스를 업로드 중입니다 - + Downloading remote database from %1 %1 에서 원격 데이터베이스를 다운로드 중입니다. {1?} - + Error: Cannot open the file for sending. 에러: 보내려는 파일을 열 수 없습니다. @@ -8044,12 +6654,12 @@ Are you sure you want to proceed? Ctrl+PgUp - + Ctrl+PgDown - + @@ -8575,33 +7185,33 @@ Use of this function must be authorized from Preferences. - + References %1(%2) Hold %3Shift and click to jump there 참조 %1(%2) %3Shift를 누른 상태에서 이동하고자 하는 곳을 클릭하세요 - + Error changing data: %1 데이터 수정 에러: %1 - + retrieving list of columns 컬럼은 필드로 표현합니다. 필드 목록 가져오기 - + Fetching data... 데이터를 가져오는 중입니다... - - + + Cancel 취소 @@ -8896,12 +7506,12 @@ Hold %3Shift and click to jump there - <html><head/><body><p>This button creates a new record in the database. Hold the mouse button to open a pop-up menu of different options:</p><ul><li><span style=" font-weight:600;">New Record</span>: insert a new record with default values in the database.</li><li><span style=" font-weight:600;">Insert Values...</span>: open a dialog for entering values before they are inserted in the database. This allows to enter values acomplishing the different constraints. This dialog is also open if the <span style=" font-weight:600;">New Record</span> option fails due to these constraints.</li></ul></body></html> + <html><head/><body><p>This button creates a new record in the database. Hold the mouse button to open a pop-up menu of different options:</p><ul><li><span style=" font-weight:600;">New Record</span>: insert a new record with default values in the database.</li><li><span style=" font-weight:600;">Insert Values...</span>: open a dialog for entering values before they are inserted in the database. This allows to enter values accomplishing the different constraints. This dialog is also open if the <span style=" font-weight:600;">New Record</span> option fails due to these constraints.</li></ul></body></html> <html><head/><body><p>이 버튼은 데이터베이스에 새 레코드를 생성합니다.</p><ul><li><span style=" font-weight:600;">새 레코드</span>: 데이터베이스의 기본값으로 새 레코드를 생성합니다.</li><li><span style=" font-weight:600;">값 삽입...</span>: 데이터베이스에 값을 삽입하기 전에 값을 입력할 수 있는 대화상자를 엽니다. 이를 통해 다양한 제약 조건에 충족하는 값을 입력할 수 있습니다. 이러한 제약으로 인해 <span style=" font-weight:600;">새 레코드</span> 옵션이 실패한 경우에도 이 대화상자가 열립니다.</li></ul></body></html> - + Delete Record 레코드 삭제 @@ -8994,7 +7604,7 @@ Hold %3Shift and click to jump there - <html><head/><body><p>This popup menu provides the following options applying to the currently browsed and filtered table:</p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Export to CSV: this option exports the data of the browsed table as currently displayed (after filters, display formats and order column) to a CSV file.</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Save as view: this option saves the current setting of the browsed table (filters, display formats and order column) as an SQL view that you can later browse or use in SQL statements.</li></ul></body></html> + <html><head/><body><p>This pop-up menu provides the following options applying to the currently browsed and filtered table:</p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Export to CSV: this option exports the data of the browsed table as currently displayed (after filters, display formats and order column) to a CSV file.</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Save as view: this option saves the current setting of the browsed table (filters, display formats and order column) as an SQL view that you can later browse or use in SQL statements.</li></ul></body></html> <html><head/><body><p>이 팝업 메뉴는 현재 탐색 및 필터링된 표에 적용되는 다음 옵션을 제공합니다.</p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">CSV로 내보내기: 이 옵션은 현재 표시된대로(필터, 표시 형식 및 열 순서) 탐색된 테이블의 데이터를 CSV 파일로 내보냅니다.</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">뷰로 저장: 이 옵션은 검색된 테이블의 현재 설정(필터, 표시 형식 및 열 순서)을 나중에 SQL 문에서 검색하거나 사용할 수 있는 SQL 뷰로 저장합니다.</li></ul></body></html> @@ -9019,7 +7629,7 @@ Hold %3Shift and click to jump there - + Set encoding 인코딩 지정하기 @@ -9308,96 +7918,96 @@ Hold %3Shift and click to jump there . 합계: %1, 평균: %2, 최소값: %3, 최대값: %4 - + Conditional formats for "%1" "%1"에 대한 조건부 서식 - + determining row count... 행 개수 결정 중... - + %L1 - %L2 of >= %L3 L1 - %L2의 >= %L3 - + %L1 - %L2 of %L3 - L1 - %L2의 %L3 + %L1 - %L2의 %L3 - + (clipped at %L1 rows) (%L1 행에서 잘림) - + Please enter a pseudo-primary key in order to enable editing on this view. This should be the name of a unique column in the view. 이 뷰에서 수정을 활성화하기 위하여 pseudo-primary key를 입력하시기 바랍니다. 이것은 뷰에서 유일한 이름이어야 합니다. - + Delete Records 레코드 삭제 - + Duplicate records 레코드 복제하기 - + Duplicate record 레코드 복제하기 - + Ctrl+" - + Adjust rows to contents 내용에 맞게 행 크기 조절 - + Error deleting record: %1 레코드 추가 에러: %1 - + Please select a record first 레코드를 먼저 선택하세요 - + Please choose a new encoding for all tables. 모든 테이블에 설정할 새 인코딩을 선택하세요. - + Please choose a new encoding for this table. 이 테이블에 적용할 새 인코딩을 선택하세요. - + %1 Leave the field empty for using the database encoding. %1 데이터베이스 인코딩을 사용하기 위해 필드를 비워둡니다. - + This encoding is either not valid or not supported. 이 인코딩은 올바르지 않거나 지원되지 않습니다. - + %1 replacement(s) made. %1개의 교체가 이루어졌습니다. @@ -9425,24 +8035,6 @@ Leave the field empty for using the database encoding. 데이터 브라우저의 새 이름을 설정하세요. '&&' 문자를 사용하여 다음에 따라오는 문자를 키보드 단축키로서 사용할 수 있습니다. - - UndoStack - - - Inserting %1 bytes - - - - - Delete %1 chars - - - - - Overwrite %1 chars - - - VacuumDialog diff --git a/src/translations/sqlb_nl.ts b/src/translations/sqlb_nl.ts index 41cad3060..131b7f8c3 100644 --- a/src/translations/sqlb_nl.ts +++ b/src/translations/sqlb_nl.ts @@ -15,7 +15,7 @@ - <html><head/><body><p>DB Browser for SQLite is an open source, freeware visual tool used to create, design and edit SQLite database files.</p><p>It is bi-licensed under the Mozilla Public License Version 2, as well as the GNU General Public License Version 3 or later. You can modify or redistribute it under the conditions of these licenses.</p><p>See <a href="https://www.gnu.org/licenses/gpl.html"><span style=" text-decoration: underline; color:#0000ff;">http://www.gnu.org/licenses/gpl.html</span></a> and <a href="https://www.mozilla.org/MPL/2.0/index.txt"><span style=" text-decoration: underline; color:#0000ff;">https://www.mozilla.org/MPL/2.0/index.txt</span></a> for details.</p><p>For more information on this program please visit our website at: <a href="https://sqlitebrowser.org"><span style=" text-decoration: underline; color:#0000ff;">http://sqlitebrowser.org</span></a></p><p><span style=" font-size:small;">This software uses the GPL/LGPL Qt Toolkit from </span><a href="http://qt-project.org/"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://qt-project.org/</span></a><span style=" font-size:small;"><br/>See </span><a href="https://doc.qt.io/qt-5/licensing.html"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://qt-project.org/doc/qt-5/licensing.html</span></a><span style=" font-size:small;"> for licensing terms and information.</span></p><p><span style=" font-size:8pt;">We use the nalgeon/sqlean library for SQLite extensions support.<br/>This library is licensed under the MIT license, see the following for more information:<br/></span><a href="https://github.com/nalgeon/sqlean"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">https://github.com/nalgeon/sqlean</span></a></p><p><span style=" font-size:small;">It also uses the Pastel SVG icon set by Michael Buckley under a Creative Commons Attribution Share Alike 4.0 license.<br/>See </span><a href="https://codefisher.org/pastel-svg/"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://codefisher.org/pastel-svg/</span></a><span style=" font-size:small;"> for details.</span></p></body></html> + <html><head/><body><p>DB Browser for SQLite is an open source, freeware visual tool used to create, design and edit SQLite database files.</p><p>It is bi-licensed under the Mozilla Public License Version 2, as well as the GNU General Public License Version 3 or later. You can modify or redistribute it under the conditions of these licenses.</p><p>See <a href="https://www.gnu.org/licenses/gpl.html"><span style=" text-decoration: underline; color:#0000ff;">https://www.gnu.org/licenses/gpl.html</span></a> and <a href="https://www.mozilla.org/MPL/2.0/index.txt"><span style=" text-decoration: underline; color:#0000ff;">https://www.mozilla.org/MPL/2.0/index.txt</span></a> for details.</p><p>For more information on this program please visit our website at: <a href="https://sqlitebrowser.org"><span style=" text-decoration: underline; color:#0000ff;">https://sqlitebrowser.org</span></a></p><p><span style=" font-size:small;">This software uses the GPL/LGPL Qt Toolkit from </span><a href="https://qt-project.org/"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://qt-project.org/</span></a><span style=" font-size:small;"><br/>See </span><a href="https://doc.qt.io/qt-5/licensing.html"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://doc.qt.io/qt-5/licensing.html</span></a><span style=" font-size:small;"> for licensing terms and information.</span></p><p><span style=" font-size:8pt;">We use the nalgeon/sqlean library for SQLite extensions support.<br/>This library is licensed under the MIT license, see the following for more information:<br/></span><a href="https://github.com/nalgeon/sqlean"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">https://github.com/nalgeon/sqlean</span></a></p><p><span style=" font-size:small;">It also uses the Pastel SVG icon set by Michael Buckley under a Creative Commons Attribution Share Alike 4.0 license.<br/>See </span><a href="https://codefisher.org/pastel-svg/"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://codefisher.org/pastel-svg/</span></a><span style=" font-size:small;"> for details.</span></p></body></html> @@ -285,36 +285,36 @@ - Invalid option/non-existant file: %1 + Invalid option/non-existent file: %1 Ongeldige optie of niet bestaand bestand: %1 - + SQLite Version SQLite-versie - + SQLCipher Version %1 (based on SQLite %2) SQLCipher-versie %1 (gebaseerd op SQLite %2) - + DB Browser for SQLite Version %1. DB-browser voor SQLite versie %1. - + Last commit hash when built: %1 - + Built for %1, running on %2 Gebouwd voor %1, draaiend op %2 - + Qt Version %1 Qt-versie %1 @@ -392,7 +392,7 @@ Platte-&tekstheadergrootte - + Please set a key to encrypt the database. Note that if you change any of the other, optional, settings you'll need to re-enter them as well every time you open the database file. Leave the password fields empty to disable the encryption. @@ -403,7 +403,7 @@ Laat wachtwoordvelden leeg om de versleuteling uit te schakelen. Versleuteling kan wat tijd in beslag nemen en je doet er tevens verstandig aan een backup van je database te hebben! Onopgeslagen wijzigingen worden toegepast voordat de versleuteling aangepast wordt. - + Please enter the key used to encrypt the database. If any of the other settings were altered for this database file you need to provide this information as well. Voer de sleutel in waarmee database is versleuteld. @@ -428,122 +428,122 @@ Indien enige andere opties voor dit databasebestand gewijzigd waren dan dien je Kies een opmaak voor de kolom '%1' die op iedere waarde wordt toegepast voordat deze getoond wordt. - + Default Standaard - + Decimal number Decimaal getal - + Exponent notation Wetenschappelijke E-notatie - + Hex blob Hexadecimale blob - + Hex number Hexadecimaal getal - + Octal number Octaal getal - + Round number Afgerond getal - + Apple NSDate to date Apple NSDate naar datum - + Java epoch (milliseconds) to date Java-epoch (milliseconden) naar datum - + .NET DateTime.Ticks to date .NET DateTime.Ticks naar datum - + Julian day to date Juliaanse dag naar datum - + Unix epoch to date Unix-epoch naar datum - + Unix epoch to local time Unix-epoch naar lokale tijd - + WebKit / Chromium epoch to date - + WebKit / Chromium epoch to local time - + Windows DATE to date Windows DATE naar datum - + Date as dd/mm/yyyy Datum als dd/mm/jjjj - + Lower case onderkast - + Upper case BOVENKAST - + Binary GUID to text Binair GUID naar datum - + SpatiaLite Geometry to SVG - + Custom Aangepast - + Custom display format must contain a function call applied to %1 Aangepaste opmaak moet bestaan uit een functie-aanroep die toegepast wordt op %1 - + Error in custom display format. Message from database engine: %1 @@ -552,7 +552,7 @@ Indien enige andere opties voor dit databasebestand gewijzigd waren dan dien je %1 - + Custom display format must return only one column but it returned %1. Aangepaste opmaak moet slechts één kolom retourneren, maar retourneerde er %1. @@ -679,164 +679,164 @@ Indien enige andere opties voor dit databasebestand gewijzigd waren dan dien je DBBrowserDB - + Please specify the database name under which you want to access the attached database Geef de databasenaam zoals je de gekoppelde database wilt benaderen - + Invalid file format Ongeldig bestandsformaat - + Do you really want to close this temporary database? All data will be lost. Weet je zeker dat je deze tijdelijke database wilt sluiten? Alle gegevens zullen verloren gaan. - + Do you want to save the changes made to the database file %1? Wil je de wijzigingen opslaan die je de gemaakt hebt voor database %1? - + Database didn't close correctly, probably still busy Database is niet goed afgesloten; waarschijnlijk nog steeds bezig - + Cannot open destination file: '%1' - - + + Cannot backup to file: '%1'. Message: %2 - + The database is currently busy: De database is momenteel bezig: - + Do you want to abort that other operation? Wil je die andere handeling afbreken? - + Exporting database to SQL file... Database wordt geëxporteerd naar SQL-bestand... - - + + Cancel Annuleren - - + + No database file opened Er is geen databasebestand open - + Executing SQL... SQL wordt uitgevoerd... - + Action cancelled. Handeling geannuleerd. - - + + Error in statement #%1: %2. Aborting execution%3. Fout in instructie #%1: %2. Uitvoering wordt afgebroken%3. - - + + and rolling back en teruggedraaid - + didn't receive any output from %1 Geen uitvoer ontvangen van %1 - + could not execute command: %1 kon opdracht niet uitvoeren: %1 - + Cannot delete this object Kan dit object niet verwijderen - + Cannot set data on this object Kan de gegevens niet toepassen op dit object - - + + A table with the name '%1' already exists in schema '%2'. Er bestaat al een tabel met de naam '%1' in schema '%2'. - + No table with name '%1' exists in schema '%2'. Er bestaat geen tabel met de naam '%1' in schema '%2'. - - + + Cannot find column %1. Kan kolom %1 niet vinden. - + Creating savepoint failed. DB says: %1 Het maken van een herstelpunt is niet gelukt. Melding van de database: %1 - + Renaming the column failed. DB says: %1 Het hernoemen van de kolom is niet gelukt. Melding van de database: %1 - - + + Releasing savepoint failed. DB says: %1 Het opheffen van een herstelpunt is niet gelukt. Melding van de database: %1 - + Creating new table failed. DB says: %1 Het maken van de nieuwe tabel is niet gelukt. Melding van de database: %1 - + Copying data to new table failed. DB says: %1 Het kopiëren van de gegevens naar de nieuwe tabel is niet gelukt. Melding van de database: %1 - + Deleting old table failed. DB says: %1 Het verwijderen van de oude tabel is niet gelukt. Melding van de database: %1 - + Restoring some of the objects associated with this table failed. This is most likely because some column names changed. Here's the SQL statement which you might want to fix and execute manually: @@ -845,7 +845,7 @@ Uitvoering wordt afgebroken%3. - + Error renaming table '%1' to '%2'. Message from database engine: %3 @@ -854,37 +854,37 @@ Melding van de database: %3 - + could not get list of db objects: %1 Fout bij het verkrijgen van lijst met database-objecten: %1 - + could not get list of databases: %1 Fout bij het verkrijgen van lijst met databases: %1 - + Error setting pragma %1 to %2: %3 Fout bij het omzetten van pragma %1 naar %2: %3 - + File not found. Bestand niet gevonden. - + Error loading extension: %1 Fout bij het laden van extensie: %1 - + Error loading built-in extension: %1 - + could not get column information Fout bij het verkrijgen van kolominformatie @@ -1945,7 +1945,7 @@ Alle waarden die momenteel opgeslagen zijn in dit veld zullen verloren gaan.ExtendedScintilla - + Ctrl+H @@ -1956,22 +1956,22 @@ Alle waarden die momenteel opgeslagen zijn in dit veld zullen verloren gaan. - + Ctrl+P - + Find... Zoeken... - + Find and Replace... Zoeken en Vervangen... - + Print... Afdrukken... @@ -1979,129 +1979,129 @@ Alle waarden die momenteel opgeslagen zijn in dit veld zullen verloren gaan. ExtendedTableWidget - + Use as Exact Filter Als exact filter gebruiken - + Containing Bevat - + Not containing Bevat niet - + Not equal to Niet gelijk aan - + Greater than Groter dan - + Less than Kleiner dan - + Greater or equal Groter dan of gelijk aan - + Less or equal Kleiner dan of gelijk aan - + Between this and... Binnen het bereik van dit en... - + Regular expression Als reguliere expressie - + Edit Conditional Formats... Voorwaardelijke opmaakregels bewerken... - + Set to NULL Omzetten naar NULL - + Cut Knippen - + Copy Kopiëren - + Copy with Headers Kopiëren met kolomnamen - + Copy as SQL Kopiëren als SQL - + Paste Plakken - + Print... Afdrukken... - + Use in Filter Expression Gebruiken in filterexpressie - + Alt+Del - + Ctrl+Shift+C - + Ctrl+Alt+C - + The content of the clipboard is bigger than the range selected. Do you want to insert it anyway? De inhoud van het klembord is groter dan het geselecteerde bereik. Wil je het desondanks invoegen? - + <p>Not all data has been loaded. <b>Do you want to load all data before selecting all the rows?</b><p><p>Answering <b>No</b> means that no more data will be loaded and the selection will not be performed.<br/>Answering <b>Yes</b> might take some time while the data is loaded but the selection will be complete.</p>Warning: Loading all the data might require a great amount of memory for big tables. <p>Niet alle gegevens zijn geladen. <b>Wil je alle gegevens laden voordat alle records geselecteerd worden?</b><p><p> <b>Nee</b> betekent dat gegevens laden gestopt wordt en de selectie niet toegepast zal worden.<br/> <b>Ja</b> betekent dat het een tijd kan duren totdat alle gegevens geladen zijn, maar de selectie wel toegepast zal worden.</p>Waarschuwing: Alle gegevens laden kan een grote hoeveelheid werkgeheugen vereisen voor grote tabellen. - + Cannot set selection to NULL. Column %1 has a NOT NULL constraint. Kan de selectie niet omzetten naar NULL. Kolom %1 heeft een NIET NULL-beperking. @@ -2153,12 +2153,12 @@ Wil je het desondanks invoegen? FilterLineEdit - + Filter Filter - + These input fields allow you to perform quick filters in the currently selected table. By default, the rows containing the input text are filtered out. The following operators are also supported: @@ -2185,92 +2185,92 @@ x~y Bereik: waarden tussen x en y /regexp/ Waarden die voldoen aan de reguliere expressie - + Set Filter Expression Filterexpressie toepassen - + What's This? Wat is dit? - + Is NULL Is NULL - + Is not NULL Is niet NULL - + Is empty Is leeg - + Is not empty Is niet leeg - + Not containing... Bevat niet... - + Equal to... Gelijk aan... - + Not equal to... Niet gelijk aan... - + Greater than... Groter dan... - + Less than... Kleiner dan... - + Greater or equal... Groter dan of gelijk aan... - + Less or equal... Kleiner dan of gelijk aan... - + In range... Binnen het bereik... - + Regular expression... Reguliere expressie... - + Clear All Conditional Formats Verwijder alle voorwaardelijke opmaakregels - + Use for Conditional Format Gebruiken voor voorwaardelijke opmaak - + Edit Conditional Formats... Voorwaardelijke opmaakregels bewerken... @@ -2493,7 +2493,7 @@ x~y Bereik: waarden tussen x en y - + Tab Tab @@ -2636,7 +2636,7 @@ x~y Bereik: waarden tussen x en y - + Deselect All Alles deselecteren @@ -2646,52 +2646,52 @@ x~y Bereik: waarden tussen x en y Overeenkomende selecteren - + Select All Alles selecteren - + There is already a table named '%1' and an import into an existing table is only possible if the number of columns match. Er bestaat al een tabel met de naam '%1' en importeren in een al bestaande tabel is alleen mogelijk als het aantal kolommen overeenkomt. - + There is already a table named '%1'. Do you want to import the data into it? Er bestaat al een tabel met de naam '%1'. Wil je de gegevens hierin importeren? - + Creating restore point failed: %1 Maken van een herstelpunt is mislukt: %1 - + Creating the table failed: %1 Maken van de tabel is mislukt: %1 - + importing CSV CSV wordt geïmporteerd - + Could not prepare INSERT statement: %1 - + Inserting row failed: %1 Invoegen van record is mislukt: %1 - + Unexpected end of file. Please make sure that you have configured the correct quote characters and the file is not malformed. Onverwachts einde van bestand bereikt. Verzeker je ervan dat je de juiste aanhalingstekens ingesteld hebt en dat de bestandsinhoud goed geformuleerd is. - + Importing the file '%1' took %2ms. Of this %3ms were spent in the row function. Het importeren van het bestand '%1' duurde %2ms. Hiervan werd %3ms gebruikt voor de rijfunctie. @@ -2713,112 +2713,112 @@ Je kunt SQL-instructies vanuit een objectrij naar andere applicaties of andere v - + Warning: this pragma is not readable and this value has been inferred. Writing the pragma might overwrite a redefined LIKE provided by an SQLite extension. Waarschuwing: dit pragma kan niet uitgelezen worden en de waarde is daarom afgeleid. Dit pragma wijzigen kan ervoor zorgen dat een door een SQLite-extensie hergedefinieerde LIKE overschreven wordt. - + toolBar1 werkbalk1 - + &File &Bestand - + &Import &Importeren - + &Export &Exporteren - + &Edit Be&werken - + &View Bee&ld - + &Help &Help - + Too&ls E&xtra - + DB Toolbar Databasewerkbalk - + Edit Database &Cell Database&cel bewerken - + SQL &Log SQL-&log - + Show S&QL submitted by Toon S&QL van - + User Gebruiker - + Application Applicatie - + Error Log Foutenlog - + This button clears the contents of the SQL logs Deze knop leegt de inhoud van de SQL-logs - + &Clear &Legen - + This panel lets you examine a log of all SQL commands issued by the application or by yourself In dit kader kun je de logs inspecteren van alle SQL-opdrachten die door de applicatie of door jezelf zijn uitgevoerd - + &Plot &Plot - + DB Sche&ma Databasesche&ma - + This is the structure of the opened database. You can drag multiple object names from the Name column and drop them into the SQL editor and you can adjust the properties of the dropped names using the context menu. This would help you in composing SQL statements. You can drag SQL statements from the Schema column and drop them into the SQL editor or into other applications. @@ -2829,243 +2829,243 @@ Je kunt SQL-instructies vanuit de Schema-kolom naar de SQL-bewerker of naar ande - + &Remote Toegang op &afstand - - + + Project Toolbar Projectwerkbalk - + Extra DB toolbar Werkbalk voor gekoppelde databases - - - + + + Close the current database file Sluit het huidige databasebestand - + &New Database... &Nieuwe database... - - + + Create a new database file Maak een nieuw databasebestand - + This option is used to create a new database file. Deze optie wordt gebruikt om een nieuw databasebestand te maken. - + Ctrl+N - - + + &Open Database... &Database openen... - - - - - + + + + + Open an existing database file Een bestaand databasebestand openen - - - + + + This option is used to open an existing database file. Deze optie wordt gebruikt om een bestaand databasebestand te openen. - + Ctrl+O - + &Close Database Database &sluiten - + This button closes the connection to the currently open database file Deze knop verbreekt de verbinding met het huidig geopende databasebestand - - + + Ctrl+F4 - + &Revert Changes Wijzigingen &terugdraaien - - + + Revert database to last saved state Database terugdraaien naar de laatst opgeslagen staat - + This option is used to revert the current database file to its last saved state. All changes made since the last save operation are lost. Deze optie wordt gebruikt om het huidig geopende databasebestand terug te draaien naar de laatst opgeslagen staat. Alle wijzigingen die gemaakt zijn sinds de laatste opslag gaan verloren. - + &Write Changes &Wijzigingen opslaan - - + + Write changes to the database file Wijzigingen opslaan in het databasebestand - + This option is used to save changes to the database file. Deze optie wordt gebruikt om wijzigingen op te slaan in het databasebestand. - + Ctrl+S - + Compact &Database... &Database comprimeren... - + Compact the database file, removing space wasted by deleted records Comprimeer het databasebestand door lege ruimte van verwijderde records te op te schonen - - + + Compact the database file, removing space wasted by deleted records. Comprimeer het databasebestand door lege ruimte van verwijderde records te op te schonen. - + E&xit A&fsluiten - + Ctrl+Q - + &Database from SQL file... &Database vanuit SQL-bestand... - + Import data from an .sql dump text file into a new or existing database. Importeer gegevens vanuit een .sql dump tekstbestand naar een nieuwe of bestaande database. - + This option lets you import data from an .sql dump text file into a new or existing database. SQL dump files can be created on most database engines, including MySQL and PostgreSQL. Deze optie stelt je in staat om gegevens vanuit een .sql dump tekstbestand te importeren naar een nieuwe of bestaande database. De meeste databaseprogramma's kunnen SQL-dumpbestanden maken, waaronder MySQL en PostgreSQL. - + &Table from CSV file... &Tabel vanuit CSV-bestand... - + Open a wizard that lets you import data from a comma separated text file into a database table. Open een assistent om gegevens uit een kommagescheiden tekstbestand te importeren naar een databasetabel. - + Open a wizard that lets you import data from a comma separated text file into a database table. CSV files can be created on most database and spreadsheet applications. Open een assistent om gegevens uit een kommagescheiden tekstbestand (CSV) te importeren naar een databasetabel. De meeste database- en spreadsheetprogramma's kunnen CSV-bestanden maken. - + &Database to SQL file... &Database naar SQL-bestand... - + Export a database to a .sql dump text file. Exporteer een database naar een .sql dump tekstbestand. - + This option lets you export a database to a .sql dump text file. SQL dump files contain all data necessary to recreate the database on most database engines, including MySQL and PostgreSQL. Deze optie stelt je in staat om een database te exporteren naar een .sql dump tekstbestand. SQL-dumpbestanden bevatten de benodigde gegevens om de database opnieuw te maken in de meeste databaseprogramma's, waaronder MySQL en PostgreSQL. - + &Table(s) as CSV file... &Tabel(-len) naar CSV-bestand... - + Export a database table as a comma separated text file. Exporteer een databasetabel naar een kommagescheiden tekstbestand. - + Export a database table as a comma separated text file, ready to be imported into other database or spreadsheet applications. Exporteer een databasetabel naar een kommagescheiden tekstbestand, om deze te kunnen importeren in ander database- of spreadsheetprogramma. - + &Create Table... Tabel &maken... - + Open the Create Table wizard, where it is possible to define the name and fields for a new table in the database Open de tabel-makenassistent, waarin je namen en velden voor een nieuwe databasetabel kunt definiëren - + &Delete Table... Tabel &verwijderen... - - + + Delete Table Tabel verwijderen - + Open the Delete Table wizard, where you can select a database table to be dropped. Open de tabel-verwijderassistent, waarin je databasetabellen kunt selecteren om te verwijderen. - + &Modify Table... Tabel &wijzigen... @@ -3091,1019 +3091,1178 @@ Je kunt SQL-instructies vanuit de Schema-kolom naar de SQL-bewerker of naar ande - - + + Temp Store + + + + + Secure Delete + + + + + Case Sensitive Like + + + + + Journal Mode + + + + + Journal Size Limit + + + + + Recursive Triggers + + + + + Page Size + + + + + Foreign Keys + + + + + Auto Vacuum + + + + + Max Page Count + + + + + Checkpoint Full FSYNC + + + + + + Off + + + + + + Normal + + + + + + Full + + + + + Default + Standaard + + + + File + Bestand + + + + + Memory + + + + + Delete + + + + + Truncate + + + + + Persist + + + + + WAL + + + + + Exclusive + + + + + Automatic Index + + + + + Ignore Check Constraints + + + + + Full FSYNC + + + + + WAL Auto Checkpoint + + + + + User Version + + + + + Synchronous + + + + + None + Geen + + + + Incremental + + + + + Locking Mode + + + + + E&xecute SQL This has to be equal to the tab title in all the main tabs - + &Recent Files - + &New Database - + &Undo - - + + Undo last change to the database - + This action undoes the last change performed to the database in the Database Browser or in Execute SQL. Redoing is not possible. - + Open the Modify Table wizard, where it is possible to rename an existing table. It is also possible to add or delete fields from a table, as well as modify field names and types. - + Create &Index... &Index maken... - + Open the Create Index wizard, where it is possible to define a new index on an existing database table. Open de index-makenassistent, waarin je een nieuwe index voor een bestaande databasetabel kunt definiëren. - + &Preferences... I&nstellingen... - - + + Open the preferences window. Open het instellingenvenster. - + &DB Toolbar &Databasewerkbalk - + Shows or hides the Database toolbar. Toont of verbergt de databasewerkbalk. - + W&hat's This? W&at is dit? - + Shift+F1 - + &About &Over - + &Recently opened &Recent geopend - + New &tab Nieuw &tabblad - + This button opens a new tab for the SQL editor Deze knop opent een nieuw tabblad in de SQL-bewerker - + Ctrl+T - + &Execute SQL SQL &uitvoeren - + Execute all/selected SQL Voer alle of de geselecteerde SQL uit - + This button executes the currently selected SQL statements. If no text is selected, all SQL statements are executed. Deze knop voert de huidig geselecteerde SQL-instructies uit. Indien geen tekst geselecteerd is worden alle SQL-instructies uitgevoerd. - + Ctrl+Return - + Open SQL file(s) SQL-bestand(-en) openen - + This button opens files containing SQL statements and loads them in new editor tabs Deze knop opent bestanden die SQL-instructies bevatten en laadt deze in nieuwe bewerkerstabbladen - + Ctrl+Shift+T - - - + + + Save SQL file SQL-bestand opslaan - + &Load Extension... Extensie &laden... - - + + Execute current line Huidige regel uitvoeren - + Execute line Regel uitvoeren - + This button executes the SQL statement present in the current editor line Deze knop voert de SQL-instructies uit die zich op de huidige bewerkingsregel bevindt - + Shift+F5 - + Export as CSV file Exporteren als CSV-bestand - + Export table as comma separated values file Tabel exporteren als bestand met kommagescheiden waarden - + &Wiki &Wiki - + F1 - + Bug &Report... Bugs &rapporteren... - + Feature Re&quest... Functionaliteit &verzoeken... - + Web&site Web&site - + &Donate on Patreon... &Doneren op Patreon... - + Sa&ve Project P&roject opslaan - + &Save Project - - + + Save the current session to a file De huidige sessie oplaan in een bestand - + This button lets you save all the settings associated to the open DB to a DB Browser for SQLite project file Deze knop stelt je in staat om alle instellingen met betrekking tot de geopende database op te slaan in een DB-browser voor SQLite-projectbestand - + Open &Project... &Project openen... - + Open &Project - - + + Load a working session from a file Een sessie laden vanuit een bestand - + This button lets you open a DB Browser for SQLite project file Deze knop stelt je in staat om DB-browser voor SQLite-projectbestand te openen - + &Attach Database... Database &koppelen... - - + + Add another database file to the current database connection Koppel nog een databasebestand aan de huidige databaseverbinding - + This button lets you add another database file to the current database connection Deze knop stelt je in staat om nog een databasebestand aan de huidige databaseverbinding te koppelen - + &Set Encryption... Encr&yptie instellen... - - + + Save SQL file as SQL-bestand opslaan als - + This button saves the content of the current SQL editor tab to a file Deze knop slaat de inhoud van het huidige SQL-bewerkingstabblad op in een bestand - + &Browse Table &Bladeren door tabel - + Copy Create statement CREATE-instructie kopiëren - + Copy the CREATE statement of the item to the clipboard De CREATE-instructie van het item kopiëren naar het klembord - + SQLCipher &FAQ SQLCipher &FAQ - + Opens the SQLCipher FAQ in a browser window Opent de SQLCipher FAQ in een browservenster - + Table(&s) to JSON... Tabel(-&len) naar JSON-bestand... - + Export one or more table(s) to a JSON file Exporteer een of meerdere tabel(-len) naar een JSON-bestand - + Open Data&base Read Only... Database als &alleen-lezen openen... - + Open an existing database file in read only mode Een bestaand databasebestand openen in alleen-lezenmodus - + Ctrl+Shift+O - + Save results Resultaten opslaan - + Save the results view Het resultatenoverzicht opslaan - + This button lets you save the results of the last executed query Deze knop stelt je in staat om de resultaten van de laatst uitgevoerde opdracht op te slaan - - + + Find text in SQL editor Tekst zoeken in de SQL-bewerker - + Find Zoeken - + This button opens the search bar of the editor Deze knop opent de zoekbalk van de bewerker - + Ctrl+F - - + + Find or replace text in SQL editor Tekst zoeken of vervangen in de SQL-bewerker - + Find or replace Zoeken of vervangen - + This button opens the find/replace dialog for the current editor tab Deze knop opent het zoek-en-vervangdialoogvenster voor het huidige bewerkerstabblad - + Ctrl+H - + Export to &CSV Exporteren naar &CSV - + Export to &JSON - + Save as &view Opslaan als &view - + Save as view Opslaan als view - + Shows or hides the Project toolbar. Toont of verbergt de projectwerkbalk. - + Extra DB Toolbar Gekoppelde-databaseswerkbalk - + &Open Database - + New In-&Memory Database Nieuwe werk&geheugendatabase - + Drag && Drop SELECT Query - - + + When dragging fields from the same table or a single table, drop a SELECT query into the editor - + Drag && Drop Qualified Names Gekwalificeerde namen verslepen - - + + Use qualified names (e.g. "Table"."Field") when dragging the objects and dropping them into the editor Gebruik gekwalificeerde namen (bijv. "Tabel"."Veld") wanneer ik objecten versleep naar de bewerker - + Drag && Drop Enquoted Names Aangehaalde namen verslepen - - + + Use escaped identifiers (e.g. "Table1") when dragging the objects and dropping them into the editor Gebruik aangehaalde entiteitsnamen (bijv. "Tabel1") wanneer ik objecten versleep naar de bewerker - + &Integrity Check &Integriteit controleren - + Runs the integrity_check pragma over the opened database and returns the results in the Execute SQL tab. This pragma does an integrity check of the entire database. Voert het pragma integrity_check uit op de geopende database en toont de resultaten in het tabblad SQL uitvoeren. Dit pragma doet een integriteitscontrole over de gehele database. - + &Foreign-Key Check &Vreemde sleutels controleren - + Runs the foreign_key_check pragma over the opened database and returns the results in the Execute SQL tab Voert het pragma foreign_key_check uit op de geopende database en toont de resultaten in het tabblad SQL uitvoeren - + &Quick Integrity Check Integriteit &snel controleren - + Run a quick integrity check over the open DB Voert een snelle integriteitscontrole uit op de geopende database - + Runs the quick_check pragma over the opened database and returns the results in the Execute SQL tab. This command does most of the checking of PRAGMA integrity_check but runs much faster. Voert het pragma quick_check uit op de geopende database en toont de resultaten in het tabblad SQL uitvoeren. Dit commando voert veel van de controles uit die het pragma integrity_check ook uitvoert, maar verloopt veel sneller. - + &Optimize &Optimaliseren - + Attempt to optimize the database Probeert de database te optimaliseren - + Runs the optimize pragma over the opened database. This pragma might perform optimizations that will improve the performance of future queries. Voert het pragma optimize uit op de geopende database. Dit pragma kan optimalisaties uitvoeren die de prestaties van toekomstige SQL-opdrachten mogelijk verbeteren. - - + + Print Afdrukken - + Print text from current SQL editor tab Tekst uit het huidige SQL-bewerkerstabblad afdrukken - + Open a dialog for printing the text in the current SQL editor tab Opent een dialoogvenster voor het afdrukken van tekst uit het huidige SQL-bewerkerstabblad - - + + Ctrl+P - + Print the structure of the opened database De structuur van de geopende database afdrukken - + Open a dialog for printing the structure of the opened database Opent een dialoogvenster voor het afdrukken van de structuur van de geopende database - + Un/comment block of SQL code Blok SQL-code wel/niet commentaar - + Un/comment block Blok wel/niet commentaar - + Comment or uncomment current line or selected block of code De huidige regel of het geselecteerde codeblok wel/niet markeren als commentaar - + Comment or uncomment the selected lines or the current line, when there is no selection. All the block is toggled according to the first line. Markeert het geselecteerde codeblok, of de huidige regel indien er geen selectie is, wel/niet als commentaar. Het gehele blok wordt omgezet op basis van de eerste regel. - + Ctrl+/ - + Stop SQL execution SQL uitvoeren stoppen - + Stop execution Uitvoeren stoppen - + Stop the currently running SQL script Stop het SQL script dat nu uitgevoerd wordt - + &Save Project As... Pr&oject opslaan als... - - - + + + Save the project in a file selected in a dialog Het project opslaan in een bestand dat je selecteert in een dialoogvenster - + Save A&ll A&lles opslaan - - - + + + Save DB file, project file and opened SQL files Het databasebestand, projectbestand en alle geopende SQL-bestanden opslaan - + Ctrl+Shift+S - + Browse Table Bladeren door tabel - + Close Pro&ject Pro&ject sluiten - - + + Close project and database files and return to the initial state Het project en databasebestanden sluiten en terugkeren naar de oorspronkelijke staat - - + + Ctrl+Shift+W - + Table from CSV data in Clipboard... - + This treats the current clipboard contents as a CSV file and opens the same import wizard that is used for importing CSV data from a file. - + Show &Row Counts - + This shows the number of rows for each table and view in the database. - + Save Database &As... - + Save the current database as a different file - + Refresh Verversen - + Reload the database structure - + Ctrl+Shift+F4 - - + + Detach Database Database ontkoppelen - - + + Detach database file attached to the current database connection Ontkoppel het databasebestand dat aan de huidige databaseverbinding gekoppeld is - - + + Ctrl+W - + Ctrl+Tab - + Ctrl+Shift+Tab - + Automatically load the last opened DB file at startup - + Clear List Lijst legen - + Ctrl+L - + Ctrl+D - + Ctrl+I - + Ctrl+E - + Window Layout Vensterindeling - + Reset Window Layout Vensterindeling herstellen - + Ctrl+Alt+0 - + Simplify Window Layout Vensterindeling versimpelen - - Shift+Alt+0 + + Alt+Shift+0 - + Dock Windows at Bottom Vensters dokken aan onderzijde - + Dock Windows at Left Side Vensters dokken aan de linkerzijde - + Dock Windows at Top Vensters dokken aan de bovenzijde - - The database is currenctly busy. + + The database is currently busy. De database is momenteel bezig. - + Click here to interrupt the currently running query. Klik hier om het SQL script dat nu uitgevoerd wordt te onderbreken. - + Encrypted Versleuteld - + Database is encrypted using SQLCipher Database is versleuteld met SQLCipher - + Read only Aleen-lezen - + Database file is read only. Editing the database is disabled. Het databasebestand is alleen-lezen. Het bewerken van de database is uitgeschakeld. - + Database encoding Databasecodering - + Ctrl+Alt+W - - + + Choose a database file Kies een databasebestand - + Could not open database file. Reason: %1 Kon het databasebestand niet openen. Reden: %1 - - - + + + Choose a filename to save under Kies een bestandsnaam om in op te slaan - + In-Memory database Werkgeheugendatabase - + Choose a database file to save under - + Error while saving the database to the new file. - + You are still executing SQL statements. Closing the database now will stop their execution, possibly leaving the database in an inconsistent state. Are you sure you want to close the database? Je voert nog steeds SQL-instructies uit. Het sluiten van de database zal het uitvoeren stoppen en de database daarmee mogelijk inconsistent maken. Weet je zeker dat je de database wilt sluiten? - + Do you want to save the changes made to the project file '%1'? Wil je de wijzigingen opslaan die je de gemaakt hebt voor projectbestand %1? - + Are you sure you want to delete the table '%1'? All data associated with the table will be lost. Weet je zeker dat je de tabel '%1' wilt verwijderen? Alle gegevens die met deze tabel geassocieerd worden zullen verloren gaan. - + Are you sure you want to delete the view '%1'? Weet je zeker dat je de view '%1' wilt verwijderen? - + Are you sure you want to delete the trigger '%1'? Weet je zeker dat je de trigger '%1' wilt verwijderen? - + Are you sure you want to delete the index '%1'? Weet je zeker dat je de index '%1' wilt verwijderen? - + Error: could not delete the table. Fout: kon de tabel niet verwijderen. - + Error: could not delete the view. Fout: kon de view niet verwijderen. - + Error: could not delete the trigger. Fout: kon de trigger niet verwijderen. - + Error: could not delete the index. Fout: kon de index niet verwijderen. - + Message from database engine: %1 Melding van de database: %1 - + Editing the table requires to save all pending changes now. Are you sure you want to save the database? Het bewerken van de tabel vereist dat niet-opgeslagen wijzigingen nu opgeslagen worden. Weet je zeker dat de database op wilt slaan? - + Error checking foreign keys after table modification. The changes will be reverted. Fout bij het controleren van vreemde sleutels na tabelwijzigingen. De wijzigingen zullen teruggedraaid worden. - + This table did not pass a foreign-key check.<br/>You should run 'Tools | Foreign-Key Check' and fix the reported issues. Deze tabel kwam niet door de vreemde-sleutelscontrole.<br/>Voer 'Extra | Vreemde sleutels controleren' uit en repareer de gerapporteerde problemen. - + Edit View %1 View %1 bewerken - + Edit Trigger %1 Trigger %1 bewerken - + You are already executing SQL statements. Do you want to stop them in order to execute the current statements instead? Note that this might leave the database in an inconsistent state. Je voert momenteel al SQL-instructies uit. Wil je deze stoppen en in plaats daarvan de huidige instructies uitvoeren? Wees je ervan bewust dat dit ervoor kan zorgen dat de database inconsistent wordt. - + -- EXECUTING SELECTION IN '%1' -- -- SELECTIE WORDT UITGEVOERD IN '%1' -- - + -- EXECUTING LINE IN '%1' -- -- REGEL WORDT UITGEVOERD IN '%1' -- - + -- EXECUTING ALL IN '%1' -- -- ALLES WORDT UITGEVOERD IN '%1' -- - - + + At line %1: In regel %1: - + Result: %1 Resultaat: %1 - + Result: %2 Resultaat: %2 - + %1 rows returned in %2ms %1 records geretourneerd in %2ms - + Setting PRAGMA values or vacuuming will commit your current transaction. Are you sure? Vacuümeren of pragma's omzetten zal jouw huidige transactie committeren. Weet je het zeker? - + Execution finished with errors. Uitvoering voltooid met fouten. - + Execution finished without errors. Uitvoering voltooid zonder fouten. - + Choose text files Kies tekstbestanden - + Error while saving the database file. This means that not all changes to the database were saved. You need to resolve the following error first. %1 @@ -4112,114 +4271,114 @@ Weet je het zeker? %1 - + Are you sure you want to undo all changes made to the database file '%1' since the last save? Weet je zeker dat je alle wijzigingen die je gemaakt hebt in databasebestand '%1', nadat je deze voor het laatst opgeslagen hebt, ongedaan wilt maken? - + Choose a file to import Kies een bestand om te importeren - + Do you want to create a new database file to hold the imported data? If you answer no we will attempt to import the data in the SQL file to the current database. Wil je een nieuw databasebestand aanmaken om de geïmporteerde gegevens in te bewaren? Als je nee antwoordt, wordt geprobeerd om de gegevens uit het SQL-bestand te importeren in de huidige database. - + File %1 already exists. Please choose a different name. Bestand %1 bestaat al. Kies een andere naam. - + Error importing data: %1 Fout bij het importeren van de gegevens: %1 - + Import completed. Some foreign key constraints are violated. Please fix them before saving. Importeren voltooid. Sommige vreemde-sleutelbeperkingen werden echter geschonden. Repareer deze voordat je opslaat. - + Import completed. Importeren voltooid. - + Delete View View verwijderen - + Modify View View wijzigen - + Delete Trigger Trigger verwijderen - + Modify Trigger Trigger wijzigen - + Delete Index Index verwijderen - + Modify Index Index wijzigen - + Modify Table Tabel wijzigen - + Opened '%1' in read-only mode from recent file list '%1' geopend vanuit recent-geopende-bestandenlijst in alleen-lezenmodus - + Opened '%1' from recent file list '%1' geopend vanuit recent-geopende-bestandenlijst - + &%1 %2%3 &%1 %2%3 - + (read only) (alleen-lezen) - + Open Database or Project Database of project openen - + Attach Database... Database koppelen... - + Import CSV file(s)... CSV-bestand(-en) importeren... - + Select the action to apply to the dropped file(s). <br/>Note: only 'Import' will process more than one file. Note for translation: Although there is no %n in the original, you can use the numerus-form to adjust 'files(s)' and remove the note when n = 1. Including %n in the translation will also work. @@ -4228,137 +4387,137 @@ Als je nee antwoordt, wordt geprobeerd om de gegevens uit het SQL-bestand te imp - + Setting PRAGMA values will commit your current transaction. Are you sure? Pragma's omzetten zal jouw huidige transactie committeren. Weet je het zeker? - + Do you want to save the changes made to SQL tabs in a new project file? Wil je de wijzigingen die je in de SQL-tabbladen gemaakt hebt opslaan in een nieuw projectbestand? - + Do you want to save the changes made to SQL tabs in the project file '%1'? Wil je de wijzigingen die je in de SQL-tabbladen gemaakt hebt opslaan in het projectbestand '%1'? - + Do you want to save the changes made to the SQL file %1? Wil je de wijzigingen die je in SQL-bestand %1 gemaakt hebt opslaan? - + The statements in the tab '%1' are still executing. Closing the tab will stop the execution. This might leave the database in an inconsistent state. Are you sure you want to close the tab? De instructies in tabblad '%1' worden nog steeds uitgevoerd. Het sluiten van het tabblad zal het uitvoeren stoppen en de database daarmee mogelijk inconsistent maken. Weet je zeker dat je het tabblad wilt sluiten? - + Select SQL file to open Selecteer SQL-bestanden om te openen - + Text files(*.sql *.txt);;All files(*) Tekstbestanden(*.sql *.txt);;Alle bestanden(*) - + Select file name Selecteer bestandsnaam - + Select extension file Selecteer extensiebestand - + Extension successfully loaded. Extensie laden gelukt. - + Error loading extension: %1 Fout bij het laden van extensie: %1 - + Could not find resource file: %1 Kon het bronbestand niet vinden: %1 - - + + Don't show again Toon dit niet nogmaals - + New version available. Nieuwe versie beschikbaar. - + A new DB Browser for SQLite version is available (%1.%2.%3).<br/><br/>Please download at <a href='%4'>%4</a>. Er is een nieuwe versie van DB-browser voor SQLite beschikbaar (%1.%2.%3).<br/><br/>Je kunt deze downloaden op <a href='%4'>%4</a>. - + Choose a project file to open Kies een projectbestand om te openen - + DB Browser for SQLite project file (*.sqbpro) DB-browser voor SQLite-projectbestanden (*.sqbpro) - + DB file '%1' could not be opened - + This project file is using an old file format because it was created using DB Browser for SQLite version 3.10 or lower. Loading this file format is no longer fully supported. If you want to load it completely, please use DB Browser for SQLite version 3.12 to convert it to the new file format. Dit projectbestand gebruikt een oud bestandsformaat omdat het gemaakt is met versie 3.10 of lager van DB-browser voor SQLite. Dit bestandsformaat wordt niet meer volledig ondersteund. Als je het volledig wilt kunnen laden, gebruik dan versie 3.12 van DB-browser voor SQLite om het om te zetten naar het nieuwe bestandsformaat. - + Table '%1' not found; settings ignored - + Could not open project file for writing. Reason: %1 Kon het projectbestand niet openen om naar te schrijven. Reden: %1 - + -- Reference to file "%1" (not supported by this version) -- - + Project saved to file '%1' Project opgeslagen in bestand '%1' - + Yes. Don't ask again Ja. Niet nogmaals vragen - + Collation needed! Proceed? Collatie vereist! Doorgaan? - + A table in this database requires a special collation function '%1' that this application can't provide without further knowledge. If you choose to proceed, be aware bad things can happen to your database. Create a backup! @@ -4367,82 +4526,82 @@ Wees je er bewust van dat als je doorgaat er slechte dingen kunnen gebeuren met Maak een backup! - + creating collation collatie aan het maken - + Set a new name for the SQL tab. Use the '&&' character to allow using the following character as a keyboard shortcut. Geef een nieuwe naam voor het SQL-tabblad. Gebruik het '&&'-teken om de een van de volgende tekens als sneltoets in te stellen. - + Please specify the view name Geef de viewnaam op - + There is already an object with that name. Please choose a different name. Er bestaat al een object met die naam. Kies een andere naam. - + View successfully created. View maken gelukt. - + Error creating view: %1 Fout bij het maken van view: %1 - + This action will open a new SQL tab for running: Deze handeling opent een nieuw SQL-tabblad om het volgende uit te voeren: - + This action will open a new SQL tab with the following statements for you to edit and run: Deze handeling opent een nieuw SQL-tabblad met volgende instructies die je zodoende kunt bewerken en uitvoeren: - + Press Help for opening the corresponding SQLite reference page. Druk op Help om de bijbehorende SQLlite-referentiepagina te openen. - + Busy (%1) Bezig (%1) - + Rename Tab Tabblad hernoemen - + Duplicate Tab Tabblad dupliceren - + Close Tab Tabblad sluiten - + Opening '%1'... Opent '%1'... - + There was an error opening '%1'... Fout bij het openen van '%1'... - + Value is not a valid URL or filename: %1 Waarde is geen geldige URL of bestandsnaam: %1 @@ -4637,102 +4796,107 @@ Selecteer de as of aslabels om alleen in die richting te slepen en te zoomen. - + Load all data and redraw plot Laad alle gegevens en teken plot opnieuw - + Copy Kopiëren - + Print... Afdrukken... - + + Help + + + + Show legend Legenda tonen - + Stacked bars Gestapelde staven - + Fixed number format - + Date/Time Datum/Tijd - + Date Datum - + Time Tijd - - + + Numeric Numeriek - + Label Label - + Invalid Ongeldig - - - + + + Row # Record # - + Load all data and redraw plot. Warning: not all data has been fetched from the table yet due to the partial fetch mechanism. Laad alle gegevens en teken plot opnieuw. Waarschuwing: door het partiële laadmechanisme zijn nog niet alle gegevens zijn uit de tabel opgehaald. - + Choose an axis color Kies een askleur - + Choose a filename to save under Kies een bestandsnaam om in op te slaan - + PNG(*.png);;JPG(*.jpg);;PDF(*.pdf);;BMP(*.bmp);;All Files(*) PNG(*.png);;JPG(*.jpg);;PDF(*.pdf);;BMP(*.bmp);;Alle bestanden(*) - + There are curves in this plot and the selected line style can only be applied to graphs sorted by X. Either sort the table or query by X to remove curves or select one of the styles supported by curves: None or Line. Dit plot bevat curves, maar de geselecteerde lijnstijl kan alleen toegepast worden op diagrammen die gesorteerd worden op X. Sorteer daarom de tabel of SQL-opdracht op X of selecteer een stijl die curves ondersteunt: Geen of Lijn. - + Loading all remaining data for this table took %1ms. Het laden van alle overgebleven gegevens voor deze tabel duurde %1ms. @@ -5556,1877 +5720,307 @@ Al jouw instellingen zullen worden verwijderd en de standaardinstellingen zullen - - Open Settings File - Instellingenbestand openen - - - - The settings file was loaded properly. - Het instellingenbestand is correct geladen. - - - - The selected settings file is not a normal settings file. -Please check again. - Het gekozen instellingenbestand is geen normaal instellingenbestand. Controleer het nogmaals. - - - - ProxyDialog - - - Proxy Configuration - Proxy-instellingen - - - - Pro&xy Type - Pro&xytype - - - - Host Na&me - &Hostnaam - - - - Port - &Poort - - - - Authentication Re&quired - &Authenticatie vereist - - - - &User Name - &Gebruikersnaam - - - - Password - &Wachtwoord - - - - None - Geen - - - - System settings - Systeeminstellingen - - - - HTTP - HTTP - - - - Socks v5 - Socks v5 - - - - QObject - - - Left - Links - - - - Right - Rechts - - - - Center - Gecentreerd - - - - Justify - Uitgevuld - - - - All files (*) - Alle bestanden (*) - - - - SQLite Database Files (*.db *.sqlite *.sqlite3 *.db3) - SQLite-databasebestanden (*.db *.sqlite *.sqlite3 *.db3) - - - - DB Browser for SQLite Project Files (*.sqbpro) - DB-browser voor SQLite-projectbestanden (*.sqbpro) - - - - SQL Files (*.sql) - SQL-bestanden (*.sql) - - - - All Files (*) - Alle bestanden (*) - - - - Text Files (*.txt) - Tekstbestanden (*.txt) - - - - Comma-Separated Values Files (*.csv) - Kommagescheiden bestanden (*.csv) - - - - Tab-Separated Values Files (*.tsv) - Tabgescheiden bestanden (*.tsv) - - - - Delimiter-Separated Values Files (*.dsv) - Scheidingstekengescheiden bestanden (*.dsv) - - - - Concordance DAT files (*.dat) - Concordance-DAT-bestanden (*.dat) - - - - JSON Files (*.json *.js) - JSON-bestanden (*.json *.js) - - - - XML Files (*.xml) - XML-bestanden (*.xml) - - - - Binary Files (*.bin *.dat) - Binaire bestanden (*.bin *.dat) - - - - SVG Files (*.svg) - SVG-bestanden (*.svg) - - - - Hex Dump Files (*.dat *.bin) - Hexdump-bestand (*.dat *.bin) - - - - Extensions (*.so *.dylib *.dll) - Extensies (*.so *.dylib *.dll) - - - - Initialization File (*.ini) - Initialisatiebestand (*.ini) - - - - Error importing data - Fout bij het importeren van de gegevens - - - - from record number %1 - van recordnummer %1 - - - - . -%1 - . -%1 - - - - Importing CSV file... - CSV-bestand importeren... - - - - Cancel - Annuleren - - - - SQLite database files (*.db *.sqlite *.sqlite3 *.db3) - SQLite-databasebestanden (*.db *.sqlite *.sqlite3 *.db3) - - - - QsciCommand - - - Move down one line - - - - - Extend selection down one line - - - - - Extend rectangular selection down one line - - - - - Scroll view down one line - - - - - Move up one line - - - - - Extend selection up one line - - - - - Extend rectangular selection up one line - - - - - Scroll view up one line - - - - - Scroll to start of document - - - - - Scroll to end of document - - - - - Scroll vertically to centre current line - - - - - Move down one paragraph - - - - - Extend selection down one paragraph - - - - - Move up one paragraph - - - - - Extend selection up one paragraph - - - - - Move left one character - - - - - Extend selection left one character - - - - - Extend rectangular selection left one character - - - - - Move right one character - - - - - Extend selection right one character - - - - - Extend rectangular selection right one character - - - - - Move left one word - - - - - Extend selection left one word - - - - - Move right one word - - - - - Extend selection right one word - - - - - Move to end of previous word - - - - - Extend selection to end of previous word - - - - - Move to end of next word - - - - - Extend selection to end of next word - - - - - Move left one word part - - - - - Extend selection left one word part - - - - - Move right one word part - - - - - Extend selection right one word part - - - - - Move to start of document line - - - - - Extend selection to start of document line - - - - - Extend rectangular selection to start of document line - - - - - Move to start of display line - - - - - Extend selection to start of display line - - - - - Move to start of display or document line - - - - - Extend selection to start of display or document line - - - - - Move to first visible character in document line - - - - - Extend selection to first visible character in document line - - - - - Extend rectangular selection to first visible character in document line - - - - - Move to first visible character of display in document line - - - - - Extend selection to first visible character in display or document line - - - - - Move to end of document line - - - - - Extend selection to end of document line - - - - - Extend rectangular selection to end of document line - - - - - Move to end of display line - - - - - Extend selection to end of display line - - - - - Move to end of display or document line - - - - - Extend selection to end of display or document line - - - - - Move to start of document - - - - - Extend selection to start of document - - - - - Move to end of document - - - - - Extend selection to end of document - - - - - Move up one page - - - - - Extend selection up one page - - - - - Extend rectangular selection up one page - - - - - Move down one page - - - - - Extend selection down one page - - - - - Extend rectangular selection down one page - - - - - Stuttered move up one page - - - - - Stuttered extend selection up one page - - - - - Stuttered move down one page - - - - - Stuttered extend selection down one page - - - - - Delete current character - - - - - Delete previous character - - - - - Delete previous character if not at start of line - - - - - Delete word to left - - - - - Delete word to right - - - - - Delete right to end of next word - - - - - Delete line to left - - - - - Delete line to right - - - - - Delete current line - - - - - Cut current line - - - - - Copy current line - - - - - Transpose current and previous lines - - - - - Duplicate the current line - - - - - Select all - - - - - Move selected lines up one line - - - - - Move selected lines down one line - - - - - Duplicate selection - - - - - Convert selection to lower case - - - - - Convert selection to upper case - - - - - Cut selection - - - - - Copy selection - - - - - Paste - Plakken - - - - Toggle insert/overtype - - - - - Insert newline - - - - - Formfeed - - - - - Indent one level - - - - - De-indent one level - - - - - Cancel - Annuleren - - - - Undo last command - - - - - Redo last command - - - - - Zoom in - - - - - Zoom out - - - - - QsciLexerCPP - - - Default - Standaard - - - - Inactive default - - - - - C comment - - - - - Inactive C comment - - - - - C++ comment - - - - - Inactive C++ comment - - - - - JavaDoc style C comment - - - - - Inactive JavaDoc style C comment - - - - - Number - - - - - Inactive number - - - - - Keyword - Sleutelwoord - - - - Inactive keyword - - - - - Double-quoted string - - - - - Inactive double-quoted string - - - - - Single-quoted string - - - - - Inactive single-quoted string - - - - - IDL UUID - - - - - Inactive IDL UUID - - - - - Pre-processor block - - - - - Inactive pre-processor block - - - - - Operator - - - - - Inactive operator - - - - - Identifier - Entiteitsnaam - - - - Inactive identifier - - - - - Unclosed string - - - - - Inactive unclosed string - - - - - C# verbatim string - - - - - Inactive C# verbatim string - - - - - JavaScript regular expression - - - - - Inactive JavaScript regular expression - - - - - JavaDoc style C++ comment - - - - - Inactive JavaDoc style C++ comment - - - - - Secondary keywords and identifiers - - - - - Inactive secondary keywords and identifiers - - - - - JavaDoc keyword - - - - - Inactive JavaDoc keyword - - - - - JavaDoc keyword error - - - - - Inactive JavaDoc keyword error - - - - - Global classes and typedefs - - - - - Inactive global classes and typedefs - - - - - C++ raw string - - - - - Inactive C++ raw string - - - - - Vala triple-quoted verbatim string - - - - - Inactive Vala triple-quoted verbatim string - - - - - Pike hash-quoted string - - - - - Inactive Pike hash-quoted string - - - - - Pre-processor C comment - - - - - Inactive pre-processor C comment - - - - - JavaDoc style pre-processor comment - - - - - Inactive JavaDoc style pre-processor comment - - - - - User-defined literal - - - - - Inactive user-defined literal - - - - - Task marker - - - - - Inactive task marker - - - - - Escape sequence - - - - - Inactive escape sequence - - - - - QsciLexerHTML - - - HTML default - - - - - Tag - - - - - Unknown tag - - - - - Attribute - - - - - Unknown attribute - - - - - HTML number - - - - - HTML double-quoted string - - - - - HTML single-quoted string - - - - - Other text in a tag - - - - - HTML comment - - - - - Entity - - - - - End of a tag - - - - - Start of an XML fragment - - - - - End of an XML fragment - - - - - Script tag - - - - - Start of an ASP fragment with @ - - - - - Start of an ASP fragment - - - - - CDATA - - - - - Start of a PHP fragment - - - - - Unquoted HTML value - - - - - ASP X-Code comment - - - - - SGML default - - - - - SGML command - - - - - First parameter of an SGML command - - - - - SGML double-quoted string - - - - - SGML single-quoted string - - - - - SGML error - - - - - SGML special entity - - - - - SGML comment - - - - - First parameter comment of an SGML command - - - - - SGML block default - - - - - Start of a JavaScript fragment - - - - - JavaScript default - - - - - JavaScript comment - - - - - JavaScript line comment - - - - - JavaDoc style JavaScript comment - - - - - JavaScript number - - - - - JavaScript word - - - - - JavaScript keyword - - - - - JavaScript double-quoted string - - - - - JavaScript single-quoted string - - - - - JavaScript symbol - - - - - JavaScript unclosed string - - - - - JavaScript regular expression - - - - - Start of an ASP JavaScript fragment - - - - - ASP JavaScript default - - - - - ASP JavaScript comment - - - - - ASP JavaScript line comment - - - - - JavaDoc style ASP JavaScript comment - - - - - ASP JavaScript number - - - - - ASP JavaScript word - - - - - ASP JavaScript keyword - - - - - ASP JavaScript double-quoted string - - - - - ASP JavaScript single-quoted string - - - - - ASP JavaScript symbol - - - - - ASP JavaScript unclosed string - - - - - ASP JavaScript regular expression - - - - - Start of a VBScript fragment - - - - - VBScript default - - - - - VBScript comment - - - - - VBScript number - - - - - VBScript keyword - - - - - VBScript string - - - - - VBScript identifier - - - - - VBScript unclosed string - - - - - Start of an ASP VBScript fragment - - - - - ASP VBScript default - - - - - ASP VBScript comment - - - - - ASP VBScript number - - - - - ASP VBScript keyword - - - - - ASP VBScript string - - - - - ASP VBScript identifier - - - - - ASP VBScript unclosed string - - - - - Start of a Python fragment - - - - - Python default - - - - - Python comment - - - - - Python number - - - - - Python double-quoted string - - - - - Python single-quoted string - - - - - Python keyword - - - - - Python triple double-quoted string - - - - - Python triple single-quoted string - - - - - Python class name - - - - - Python function or method name - - - - - Python operator - - - - - Python identifier - - - - - Start of an ASP Python fragment - - - - - ASP Python default - - - - - ASP Python comment - - - - - ASP Python number - - - - - ASP Python double-quoted string - - - - - ASP Python single-quoted string - - - - - ASP Python keyword - - - - - ASP Python triple double-quoted string - - - - - ASP Python triple single-quoted string - - - - - ASP Python class name - - - - - ASP Python function or method name - - - - - ASP Python operator - - - - - ASP Python identifier - - - - - PHP default - - - - - PHP double-quoted string - - - - - PHP single-quoted string - - - - - PHP keyword - - - - - PHP number - - - - - PHP variable - - - - - PHP comment - - - - - PHP line comment - - - - - PHP double-quoted variable - - - - - PHP operator - - - - - QsciLexerJSON - - - Default - Standaard - - - - Number - + + Open Settings File + Instellingenbestand openen - - String - Tekenreeks + + The settings file was loaded properly. + Het instellingenbestand is correct geladen. - - Unclosed string - + + The selected settings file is not a normal settings file. +Please check again. + Het gekozen instellingenbestand is geen normaal instellingenbestand. Controleer het nogmaals. + + + ProxyDialog - - Property - + + Proxy Configuration + Proxy-instellingen - - Escape sequence - + + Pro&xy Type + Pro&xytype - - Line comment - + + Host Na&me + &Hostnaam - - Block comment - + + Port + &Poort - - Operator - + + Authentication Re&quired + &Authenticatie vereist - - IRI - + + &User Name + &Gebruikersnaam - - JSON-LD compact IRI - + + Password + &Wachtwoord - - JSON keyword - + + None + Geen - - JSON-LD keyword - + + System settings + Systeeminstellingen - - Parsing error - + + HTTP + HTTP - - - QsciLexerJavaScript - - Regular expression - Als reguliere expressie + + SOCKS5 + SOCKS5 - QsciLexerPython + QObject - - Default - Standaard + + Left + Links - - Comment - Commentaar + + Right + Rechts - - Number - + + Center + Gecentreerd - - Double-quoted string - + + Justify + Uitgevuld - - Single-quoted string - + + All files (*) + Alle bestanden (*) - - Keyword - Sleutelwoord + + SQLite Database Files (*.db *.sqlite *.sqlite3 *.db3) + SQLite-databasebestanden (*.db *.sqlite *.sqlite3 *.db3) - - Triple single-quoted string - + + DB Browser for SQLite Project Files (*.sqbpro) + DB-browser voor SQLite-projectbestanden (*.sqbpro) - - Triple double-quoted string - + + SQL Files (*.sql) + SQL-bestanden (*.sql) - - Class name - + + All Files (*) + Alle bestanden (*) - - Function or method name - + + Text Files (*.txt) + Tekstbestanden (*.txt) - - Operator - + + Comma-Separated Values Files (*.csv) + Kommagescheiden bestanden (*.csv) - - Identifier - Entiteitsnaam + + Tab-Separated Values Files (*.tsv) + Tabgescheiden bestanden (*.tsv) - - Comment block - + + Delimiter-Separated Values Files (*.dsv) + Scheidingstekengescheiden bestanden (*.dsv) - - Unclosed string - + + Concordance DAT files (*.dat) + Concordance-DAT-bestanden (*.dat) - - Highlighted identifier - + + JSON Files (*.json *.js) + JSON-bestanden (*.json *.js) - - Decorator - + + XML Files (*.xml) + XML-bestanden (*.xml) - - Double-quoted f-string - + + Binary Files (*.bin *.dat) + Binaire bestanden (*.bin *.dat) - - Single-quoted f-string - + + SVG Files (*.svg) + SVG-bestanden (*.svg) - - Triple single-quoted f-string - + + Hex Dump Files (*.dat *.bin) + Hexdump-bestand (*.dat *.bin) - - Triple double-quoted f-string - + + Extensions (*.so *.dylib *.dll) + Extensies (*.so *.dylib *.dll) - - - QsciLexerSQL - - Default - Standaard + + Initialization File (*.ini) + Initialisatiebestand (*.ini) - - Comment - Commentaar + + Error importing data + Fout bij het importeren van de gegevens - - Comment line - + + from record number %1 + van recordnummer %1 - - JavaDoc style comment - + + . +%1 + . +%1 - - Number - + + Importing CSV file... + CSV-bestand importeren... - - Keyword - Sleutelwoord + + Cancel + Annuleren - - Double-quoted string - + + SQLite database files (*.db *.sqlite *.sqlite3 *.db3) + SQLite-databasebestanden (*.db *.sqlite *.sqlite3 *.db3) + + + QsciCommand - - Single-quoted string - + Paste + Plakken - - SQL*Plus keyword - + Cancel + Annuleren + + + QsciLexerCPP - - SQL*Plus prompt - + Default + Standaard - - Operator - + Keyword + Sleutelwoord - Identifier - Entiteitsnaam - - - - SQL*Plus comment - - - - - # comment line - - - - - JavaDoc keyword - + Entiteitsnaam + + + QsciLexerJSON - - JavaDoc keyword error - + Default + Standaard - - User defined 1 - + String + Tekenreeks + + + QsciLexerJavaScript - - User defined 2 - + Regular expression + Als reguliere expressie + + + QsciLexerPython - - User defined 3 - + Default + Standaard - - User defined 4 - + Comment + Commentaar - - Quoted identifier - + Keyword + Sleutelwoord - - Quoted operator - + Identifier + Entiteitsnaam - QsciScintilla - - - &Undo - - - - - &Redo - - + QsciLexerSQL - - Cu&t - + Default + Standaard - - &Copy - + Comment + Commentaar - - &Paste - + Keyword + Sleutelwoord - - Delete - + Identifier + Entiteitsnaam + + + QsciScintilla - Select All - Alles selecteren + Alles selecteren @@ -7821,26 +6415,26 @@ Weet je zeker dat je door wilt gaan? Geef de toegangsfrase voor dit client-certificaat op om te authenticeren. - + Cancel Annuleren - + Uploading remote database to %1 Externe database wordt geüploadt naar %1 - + Downloading remote database from %1 Externe database wordt gedownload vanaf %1 - + Error: Cannot open the file for sending. Fout: kan het te verzenden bestand niet openen. @@ -8630,32 +7224,32 @@ bestaat in de partitie dan wordt NULL geretourneerd. aan het laden... - + References %1(%2) Hold %3Shift and click to jump there Verwijst naar %1(%2) Houdt %3Shift ingedrukt terwijl je klikt om er naartoe te springen - + Error changing data: %1 Fout bij het aanpassen van gegevens: %1 - + retrieving list of columns lijst met kolommen aan het ophalen - + Fetching data... Gegevens aan het ophalen... - - + + Cancel Annuleren @@ -8992,12 +7586,12 @@ Houdt %3Shift ingedrukt terwijl je klikt om er naartoe te springen - <html><head/><body><p>This button creates a new record in the database. Hold the mouse button to open a pop-up menu of different options:</p><ul><li><span style=" font-weight:600;">New Record</span>: insert a new record with default values in the database.</li><li><span style=" font-weight:600;">Insert Values...</span>: open a dialog for entering values before they are inserted in the database. This allows to enter values acomplishing the different constraints. This dialog is also open if the <span style=" font-weight:600;">New Record</span> option fails due to these constraints.</li></ul></body></html> - <html><head/><body><p>Deze knop maakt een nieuw record aan in de database. Houd de muis ingedrukt om een popupmenu met opties te openen:</p><ul><li><span style=" font-weight:600;">Nieuw record</span>: een nieuw record met standaardwaarden invoegen.</li><li><span style=" font-weight:600;">Waarden invoeren...</span>: opent een dialoogvenster om waarden in te voeren voordat ze in de database worden ingevoegd. Hiermee kun je waarden invoeren die aan de beperkingen voldoen. Dit dialoogvenster wordt tevens geopend als <span style=" font-weight:600;">Nieuw record</span> mislukte door deze beperkingen.</li></ul></body></html> + <html><head/><body><p>This button creates a new record in the database. Hold the mouse button to open a pop-up menu of different options:</p><ul><li><span style=" font-weight:600;">New Record</span>: insert a new record with default values in the database.</li><li><span style=" font-weight:600;">Insert Values...</span>: open a dialog for entering values before they are inserted in the database. This allows to enter values accomplishing the different constraints. This dialog is also open if the <span style=" font-weight:600;">New Record</span> option fails due to these constraints.</li></ul></body></html> + <html><head/><body><p>Deze knop maakt een nieuw record aan in de database. Houd de muis ingedrukt om een pop-upmenu met opties te openen:</p><ul><li><span style=" font-weight:600;">Nieuw record</span>: een nieuw record met standaardwaarden invoegen.</li><li><span style=" font-weight:600;">Waarden invoeren...</span>: opent een dialoogvenster om waarden in te voeren voordat ze in de database worden ingevoegd. Hiermee kun je waarden invoeren die aan de beperkingen voldoen. Dit dialoogvenster wordt tevens geopend als <span style=" font-weight:600;">Nieuw record</span> mislukte door deze beperkingen.</li></ul></body></html> - + Delete Record Record verwijderen @@ -9074,8 +7668,8 @@ Houdt %3Shift ingedrukt terwijl je klikt om er naartoe te springen - <html><head/><body><p>This popup menu provides the following options applying to the currently browsed and filtered table:</p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Export to CSV: this option exports the data of the browsed table as currently displayed (after filters, display formats and order column) to a CSV file.</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Save as view: this option saves the current setting of the browsed table (filters, display formats and order column) as an SQL view that you can later browse or use in SQL statements.</li></ul></body></html> - <html><head/><body><p>Dit popupmenu biedt de volgende opties om toe te passen op de huidig getoonde en gefilterde tabel:</p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Exporteren naar CSV: Deze optie exporteert de gegevens van de tabel zoals deze nu getoond worden (door filters, opmaak en kolomsorteringen) naar een CSV-bestand.</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Opslaan als view: Deze optie slaat de gegevens van de tabel zoals deze nu getoond worden (door filters, opmaak en kolomsorteringen) op als SQL-view zodat je er later doorheen kunt bladeren of deze in SQL-instructies kunt gebruiken.</li></ul></body></html> + <html><head/><body><p>This pop-up menu provides the following options applying to the currently browsed and filtered table:</p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Export to CSV: this option exports the data of the browsed table as currently displayed (after filters, display formats and order column) to a CSV file.</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Save as view: this option saves the current setting of the browsed table (filters, display formats and order column) as an SQL view that you can later browse or use in SQL statements.</li></ul></body></html> + <html><head/><body><p>Dit pop-upmenu biedt de volgende opties om toe te passen op de huidig getoonde en gefilterde tabel:</p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Exporteren naar CSV: Deze optie exporteert de gegevens van de tabel zoals deze nu getoond worden (door filters, opmaak en kolomsorteringen) naar een CSV-bestand.</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Opslaan als view: Deze optie slaat de gegevens van de tabel zoals deze nu getoond worden (door filters, opmaak en kolomsorteringen) op als SQL-view zodat je er later doorheen kunt bladeren of deze in SQL-instructies kunt gebruiken.</li></ul></body></html> @@ -9099,7 +7693,7 @@ Houdt %3Shift ingedrukt terwijl je klikt om er naartoe te springen - + Set encoding Encodering aanpassen @@ -9364,96 +7958,96 @@ Houdt %3Shift ingedrukt terwijl je klikt om er naartoe te springen . Som: %1; Gemiddelde: %2; Min.: %3; Max.: %4 - + Conditional formats for "%1" Voorwaardelijke opmaakregels voor "%1" - + determining row count... aantal records bepalen... - + %L1 - %L2 of >= %L3 - + %L1 - %L2 of %L3 - + (clipped at %L1 rows) - + Please enter a pseudo-primary key in order to enable editing on this view. This should be the name of a unique column in the view. Voer een pseudo-primaire sleutel in om het bewerken van deze view in te schakelen. Dit dient de naam van een unieke-waardenkolom in de view te zijn. - + Delete Records Records verwijderen - + Duplicate records Records dupliceren - + Duplicate record Record dupliceren - + Ctrl+" - + Adjust rows to contents Rijen aanpassen aan inhoud - + Error deleting record: %1 Fout bij het verwijderen van record: %1 - + Please select a record first Selecteer eerst een record - + Please choose a new encoding for all tables. Kies een nieuwe codering voor alle tabellen. - + Please choose a new encoding for this table. Kies een nieuwe codering voor deze tabel. - + %1 Leave the field empty for using the database encoding. %1 Laat het veld leeg om de databasecodering te gebruiken. - + This encoding is either not valid or not supported. De codering is niet geldig of wordt niet ondersteund. - + %1 replacement(s) made. %1 vervangin(-en) gedaan. @@ -9481,24 +8075,6 @@ Laat het veld leeg om de databasecodering te gebruiken. Geef een nieuwe naam voor de gegevensbrowser. Gebruik het '&&'-teken om de een van de volgende tekens als sneltoets in te stellen. - - UndoStack - - - Inserting %1 bytes - - - - - Delete %1 chars - - - - - Overwrite %1 chars - - - VacuumDialog diff --git a/src/translations/sqlb_pl.ts b/src/translations/sqlb_pl.ts index 77db65072..bfd578f6f 100644 --- a/src/translations/sqlb_pl.ts +++ b/src/translations/sqlb_pl.ts @@ -15,7 +15,7 @@ - <html><head/><body><p>DB Browser for SQLite is an open source, freeware visual tool used to create, design and edit SQLite database files.</p><p>It is bi-licensed under the Mozilla Public License Version 2, as well as the GNU General Public License Version 3 or later. You can modify or redistribute it under the conditions of these licenses.</p><p>See <a href="https://www.gnu.org/licenses/gpl.html"><span style=" text-decoration: underline; color:#0000ff;">http://www.gnu.org/licenses/gpl.html</span></a> and <a href="https://www.mozilla.org/MPL/2.0/index.txt"><span style=" text-decoration: underline; color:#0000ff;">https://www.mozilla.org/MPL/2.0/index.txt</span></a> for details.</p><p>For more information on this program please visit our website at: <a href="https://sqlitebrowser.org"><span style=" text-decoration: underline; color:#0000ff;">http://sqlitebrowser.org</span></a></p><p><span style=" font-size:small;">This software uses the GPL/LGPL Qt Toolkit from </span><a href="http://qt-project.org/"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://qt-project.org/</span></a><span style=" font-size:small;"><br/>See </span><a href="https://doc.qt.io/qt-5/licensing.html"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://qt-project.org/doc/qt-5/licensing.html</span></a><span style=" font-size:small;"> for licensing terms and information.</span></p><p><span style=" font-size:8pt;">We use the nalgeon/sqlean library for SQLite extensions support.<br/>This library is licensed under the MIT license, see the following for more information:<br/></span><a href="https://github.com/nalgeon/sqlean"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">https://github.com/nalgeon/sqlean</span></a></p><p><span style=" font-size:small;">It also uses the Pastel SVG icon set by Michael Buckley under a Creative Commons Attribution Share Alike 4.0 license.<br/>See </span><a href="https://codefisher.org/pastel-svg/"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://codefisher.org/pastel-svg/</span></a><span style=" font-size:small;"> for details.</span></p></body></html> + <html><head/><body><p>DB Browser for SQLite is an open source, freeware visual tool used to create, design and edit SQLite database files.</p><p>It is bi-licensed under the Mozilla Public License Version 2, as well as the GNU General Public License Version 3 or later. You can modify or redistribute it under the conditions of these licenses.</p><p>See <a href="https://www.gnu.org/licenses/gpl.html"><span style=" text-decoration: underline; color:#0000ff;">https://www.gnu.org/licenses/gpl.html</span></a> and <a href="https://www.mozilla.org/MPL/2.0/index.txt"><span style=" text-decoration: underline; color:#0000ff;">https://www.mozilla.org/MPL/2.0/index.txt</span></a> for details.</p><p>For more information on this program please visit our website at: <a href="https://sqlitebrowser.org"><span style=" text-decoration: underline; color:#0000ff;">https://sqlitebrowser.org</span></a></p><p><span style=" font-size:small;">This software uses the GPL/LGPL Qt Toolkit from </span><a href="https://qt-project.org/"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://qt-project.org/</span></a><span style=" font-size:small;"><br/>See </span><a href="https://doc.qt.io/qt-5/licensing.html"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://doc.qt.io/qt-5/licensing.html</span></a><span style=" font-size:small;"> for licensing terms and information.</span></p><p><span style=" font-size:8pt;">We use the nalgeon/sqlean library for SQLite extensions support.<br/>This library is licensed under the MIT license, see the following for more information:<br/></span><a href="https://github.com/nalgeon/sqlean"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">https://github.com/nalgeon/sqlean</span></a></p><p><span style=" font-size:small;">It also uses the Pastel SVG icon set by Michael Buckley under a Creative Commons Attribution Share Alike 4.0 license.<br/>See </span><a href="https://codefisher.org/pastel-svg/"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://codefisher.org/pastel-svg/</span></a><span style=" font-size:small;"> for details.</span></p></body></html> @@ -284,36 +284,36 @@ - Invalid option/non-existant file: %1 + Invalid option/non-existent file: %1 Nieprawidłowa opcja lub nieistniejący plik: %1 - + SQLite Version Wersja SQLite - + SQLCipher Version %1 (based on SQLite %2) Wersja SQLCipher %1 (oparta na SQLite %2) - + DB Browser for SQLite Version %1. Przeglądarka BD dla SQLite w wersji %1. - + Last commit hash when built: %1 Skrót zmiany, na której zbudowano: %1 - + Built for %1, running on %2 Zbudowane dla %1, uruchomione na %2 - + Qt Version %1 Wersja Qt %1 @@ -391,7 +391,7 @@ Klucz - + Please set a key to encrypt the database. Note that if you change any of the other, optional, settings you'll need to re-enter them as well every time you open the database file. Leave the password fields empty to disable the encryption. @@ -404,7 +404,7 @@ Proces szyfrowania może zabrać dużo czasu w zależności od wielkości bazy d Wszelkie niezapisane zmiany będą wprowadzone do bazy danych zanim szyfrowanie się rozpocznie. - + Please enter the key used to encrypt the database. If any of the other settings were altered for this database file you need to provide this information as well. Proszę podać hasło do zaszyfrowania bazy danych. @@ -429,122 +429,122 @@ Jeśli zostały zmienione jakiekolwiek dodatkowe ustawienia dla pliku tej bazy d Wybierz domyślny format wyświetlania dla kolumny '%1', który będzie stosowany dla każdej wartości, zanim zostanie ona wyświetlona. - + Default Domyślny - + Decimal number Liczba dziesiętna - + Exponent notation Zapis wykładniczy - + Hex blob Blob szestnastkowy - + Hex number Liczba szesnastkowa - + Octal number Liczba ósemkowa - + Round number Liczba zaokrąglona - + Apple NSDate to date Apple NSDate do daty - + Java epoch (milliseconds) to date Java epoch (milisekundy) do daty - + .NET DateTime.Ticks to date .NET DateTime.Ticks na datę - + Julian day to date Data Juliańska do daty - + Unix epoch to date Unix epoch do daty - + Unix epoch to local time Unix epoch do czasu lokalnego - + WebKit / Chromium epoch to date - + WebKit / Chromium epoch to local time - + Windows DATE to date Windows DATE do daty - + Date as dd/mm/yyyy Data w formacie dd/mm/rrrr - + Lower case Małe litery - + Upper case Duże litery - + Binary GUID to text Dwójkowy GUID na tekst - + SpatiaLite Geometry to SVG Geometria SpatiaLite do SVG - + Custom Niestandardowy - + Custom display format must contain a function call applied to %1 Własny format wyświetlania musi zawierać wywołanie funkcji zastosowanej na %1 - + Error in custom display format. Message from database engine: %1 @@ -553,7 +553,7 @@ Jeśli zostały zmienione jakiekolwiek dodatkowe ustawienia dla pliku tej bazy d %1 - + Custom display format must return only one column but it returned %1. Własny format wyświetlania musi zwracać tylko jedną kolumnę, a zwrócił %1. @@ -680,166 +680,166 @@ Jeśli zostały zmienione jakiekolwiek dodatkowe ustawienia dla pliku tej bazy d DBBrowserDB - + Please specify the database name under which you want to access the attached database Proszę podaj nazwę bazy danych za pomocą której chcesz uzyskać dostęp do załączonej bazy - + Invalid file format Nieprawidłowy format pliku - + Do you really want to close this temporary database? All data will be lost. Czy na pewno chcesz zamknąć tę tymczasową bazę danych? Wszelkie zmiany bedą zapomniane. - + Do you want to save the changes made to the database file %1? Czy na pewno chcesz zapisać zmiany dokonane w pliku bazy danych %1? - + Database didn't close correctly, probably still busy Baza danych nie została zamknięta poprawnie, prawdopodobnie była nadal zajęta - + Cannot open destination file: '%1' Nie można otworzyć pliku docelowego: '%1' - - + + Cannot backup to file: '%1'. Message: %2 Nie można utworzyć pliku kopii zapasowej: '%1'. Opis: %2 - + The database is currently busy: Baza danych jest obecnie zajęta: - + Do you want to abort that other operation? Czy na pewno chcesz przerwać tą inną operację? - + Exporting database to SQL file... Eksportowanie bazy danych do pliku SQL… - - + + Cancel Zaniechaj - - + + No database file opened Plik z bazą danych nie jest obecnie otwarty - + Executing SQL... Wykonywanie SQL… - + Action cancelled. Zaniechano działania. - - + + Error in statement #%1: %2. Aborting execution%3. Błąd w poleceniu #%1: %2. Przerywam wykonywanie%3. - - + + and rolling back i przywracam - + didn't receive any output from %1 nie otrzymano żadnego wyniku z %1 - + could not execute command: %1 nie można wykonać polecenia: %1 - + Cannot delete this object Nie można usunąć tego obiektu - + Cannot set data on this object Nie można ustawić danych na tym objekcie - - + + A table with the name '%1' already exists in schema '%2'. Tabela o nazwie '%1' już istnieje w schemacie '%2'. - + No table with name '%1' exists in schema '%2'. Tabela o nazwie '%1' nie istnieje w schemacie '%2'. - - + + Cannot find column %1. Nie można znaleźć kolumny %1. - + Creating savepoint failed. DB says: %1 Nie można utworzyć punktu zapisu. BD zwraca: %1 - + Renaming the column failed. DB says: %1 Nie można przemianować tej kolumny. BD zwraca: %1 - - + + Releasing savepoint failed. DB says: %1 Nie można zwolnić punktu zapisu. BD zwraca: %1 - + Creating new table failed. DB says: %1 Nie można utworzyć nowej tabeli. BD zwraca: %1 - + Copying data to new table failed. DB says: %1 Nie można skopiować nowej tabeli. BD zwraca: %1 - + Deleting old table failed. DB says: %1 Nie można usunąć starej tabeli. BD zwraca: %1 - + Error renaming table '%1' to '%2'. Message from database engine: %3 @@ -848,12 +848,12 @@ Wiadomość z silnika bazy danych: %3 - + could not get list of db objects: %1 nie można pobrać listy obiektów bd: %1 - + Restoring some of the objects associated with this table failed. This is most likely because some column names changed. Here's the SQL statement which you might want to fix and execute manually: @@ -862,32 +862,32 @@ Wiadomość z silnika bazy danych: - + could not get list of databases: %1 nie mogę odczytać listy baz danych: %1 - + Error setting pragma %1 to %2: %3 Błąd przy ustawianiu pragmy %1 do %2: %3 - + File not found. Nie znaleziono pliku. - + Error loading extension: %1 Nie można wczytać rozszerzenia: %1 - + Error loading built-in extension: %1 - + could not get column information nie można uzyskać informacji o kolumnie @@ -1958,7 +1958,7 @@ Wszystkie dane przechowywane w tym polu zostaną utracone. ExtendedScintilla - + Ctrl+H Ctrl+H @@ -1969,22 +1969,22 @@ Wszystkie dane przechowywane w tym polu zostaną utracone. - + Ctrl+P Ctrl+P - + Find... Znajdź... - + Find and Replace... Znajdź i zamień… - + Print... Wydrukuj... @@ -1992,128 +1992,128 @@ Wszystkie dane przechowywane w tym polu zostaną utracone. ExtendedTableWidget - + Use as Exact Filter Użyj jako dokładnego filtra - + Containing Zawiera - + Not containing Nie zawiera - + Not equal to Nierówny - + Greater than Większy niż - + Less than Mniejszy niż - + Greater or equal Większy lub równy - + Less or equal Mniejszy lub równy - + Between this and... Pomiędzy tym a... - + Regular expression Wyrażenie regularne - + Edit Conditional Formats... Zmień formatowanie warunkowe... - + Set to NULL Ustaw jako NULL - + Cut Wytnij - + Copy Skopiuj - + Copy with Headers Skopiuj wraz z nagłówkami - + Copy as SQL Skopiuj jako SQL - + Paste Wklej - + Print... Wydrukuj... - + Use in Filter Expression Użyj w wyrażeniu filtra - + <p>Not all data has been loaded. <b>Do you want to load all data before selecting all the rows?</b><p><p>Answering <b>No</b> means that no more data will be loaded and the selection will not be performed.<br/>Answering <b>Yes</b> might take some time while the data is loaded but the selection will be complete.</p>Warning: Loading all the data might require a great amount of memory for big tables. <p>Nie wczytano wszystkich danych. <b>Czu chcesz wczytać wszystkie dane przez zaznaczeniem wszystkich wierszy?</b><p><p>Odpowiedź <b>Nie</b> oznacza, że nie zostanie wczytanych więcej danych i nie zostanie nic zaznaczone.<br/>Odpowiedź <b>Tak</b> oznacza, że trochę czasu może być potrzebne na wczytanie danych za to zaznaczenie będzie pełne.</p>Uwaga: Wczytanie wszystkich danych może wymagać dużej ilości pamięci dla dużych tabel. - + Cannot set selection to NULL. Column %1 has a NOT NULL constraint. Nie można ustawić zaznaczonych na NULL. Kolumna %1 ma ograniczenie NOT NULL. - + Alt+Del Alt+Del - + Ctrl+Shift+C Ctrl+Shift+C - + Ctrl+Alt+C Ctrl+Alt+C - + The content of the clipboard is bigger than the range selected. Do you want to insert it anyway? Zawartość schowka jest większa niż zaznaczony zakres. @@ -2167,12 +2167,12 @@ Czy chcesz go wstawić mimo tego? FilterLineEdit - + Filter Filtr - + These input fields allow you to perform quick filters in the currently selected table. By default, the rows containing the input text are filtered out. The following operators are also supported: @@ -2199,92 +2199,92 @@ x~y Zakres: wartości pomiędzy x oraz y /regexp/ Wartości pasujące do wyrażenia regularnego - + Clear All Conditional Formats Wyczyść wszystkie formatowania warunkowe - + Use for Conditional Format Użyj do formatowania warunkowego - + Edit Conditional Formats... Edytuj formatowanie warunkowe... - + Set Filter Expression Ustaw wyrażenia filtra - + What's This? Co to jest? - + Is NULL Jest NULL - + Is not NULL Nie jest NULL - + Is empty Jest puste - + Is not empty Nie jest puste - + Not containing... Nie zawiera... - + Equal to... Równe... - + Not equal to... Nierówne... - + Greater than... Większe niż... - + Less than... Mniejsze niż... - + Greater or equal... Większe lub równe... - + Less or equal... Mniejsze lub równe... - + In range... W zakresie... - + Regular expression... Wyrażenie regularne... @@ -2508,7 +2508,7 @@ x~y Zakres: wartości pomiędzy x oraz y - + Tab Tab @@ -2651,7 +2651,7 @@ x~y Zakres: wartości pomiędzy x oraz y - + Deselect All Odznacz wszystkie @@ -2661,52 +2661,52 @@ x~y Zakres: wartości pomiędzy x oraz y Dopasuj do podobnych - + Select All Zaznacz wszystkie - + There is already a table named '%1' and an import into an existing table is only possible if the number of columns match. Tabela o nazwie '%1' już istnieje i importowanie do istniejącej tabeli jest możliwe tylko gdy liczba kolumn zgadza się. - + There is already a table named '%1'. Do you want to import the data into it? Tabela o nazwie '%1' już istnieje. Czy chcesz zaimportować dane do niej? - + Creating restore point failed: %1 Nie można utworzyć punktu przywracania: %1 - + Creating the table failed: %1 Tworzenie tabeli nie powiodło się: %1 - + importing CSV importowanie CSV - + Could not prepare INSERT statement: %1 Nie można było przygotować polecania INSERT: %1 - + Inserting row failed: %1 Wstawianie rzędu nie powiodło się: %1 - + Unexpected end of file. Please make sure that you have configured the correct quote characters and the file is not malformed. Nieoczekiwany koniec pliku. Upewnij się, że masz poprawnie ustawione znaki cytowania i że plik nie jest zniekształcony. - + Importing the file '%1' took %2ms. Of this %3ms were spent in the row function. Importowanie pliku '%1' zajęło %2ms. Z tego %3ms spędzono na funkcji wiersza. @@ -2719,12 +2719,12 @@ x~y Zakres: wartości pomiędzy x oraz y Przeglądarka SQLite - + Warning: this pragma is not readable and this value has been inferred. Writing the pragma might overwrite a redefined LIKE provided by an SQLite extension. Uwaga: to polecenie pragma nie jest czytelne, więc ta wartość powstała z domysłu. Zapisanie polecenie pragma może zastąpić LIKE dostarczony przez rozszerzenie SQLite. - + toolBar1 toolBar1 @@ -2738,379 +2738,379 @@ Można przeciągać polecenia SQL z wiersza obiektu i upuszczać je na innych ap - + Execute line Wykonaj wiersz - + Un/comment block of SQL code Dodaj/Usuń uwagę do kawałka kodu SQL - + Un/comment block Dodaj/Usuń uwagę do kawałka kodu - + Comment or uncomment current line or selected block of code Dodaj lub usuń uwagę do bieżącego wiersza lub zaznaczonego kawałka kodu - + Comment or uncomment the selected lines or the current line, when there is no selection. All the block is toggled according to the first line. Dodaj lub usuń uwagę do bieżącego wiersza lub zaznaczonych wierszy, gdy jest coś zaznaczone. Cały kawałek przełączany jest wg pierwszego wiersza. - + Ctrl+/ Ctrl+/ - + Stop SQL execution Zatrzymaj wykonywanie SQL - + Stop execution Zatrzymaj wykonywanie - + Stop the currently running SQL script Zatrzymaj wykonywanie bieżącego skryptu SQL - + &File &Plik - + &Import Za&importuj - + &Export Wy&eksportuj - + &Edit &Edycja - + &View &Widok - + &Help Po&moc - + Too&ls &Narzędzia - + DB Toolbar Pasek zadań bazy danych - + Edit Database &Cell Zmiana komórki bazy dany&ch - + SQL &Log Dziennik SQ&L - + Show S&QL submitted by Pokaż S&QL wydane przez - + User Użytkownika - + Application Aplikację - + Error Log Dziennik błędów - + This button clears the contents of the SQL logs Ten przycisk czyści zawartość logów SQL - + &Clear Wy&czyść - + This panel lets you examine a log of all SQL commands issued by the application or by yourself Ten panel umożliwia przegląd dziennika wszystkich poleceń SQL wydanych przez aplikację lub przez ciebie - + &Plot &Wykres - + DB Sche&ma Układ da&nych - + &Remote &Zdalne BD - - + + Project Toolbar Pasek zadań projektu - + Extra DB toolbar Dodatkowy pasek zadań bazy danych - - - + + + Close the current database file Zamknij obecny plik bazy danych - + &New Database... &Nowa baza danych… - - + + Create a new database file Utwórz nowy plik bazy danych - + This option is used to create a new database file. Ta opcja jest wykorzystywana do tworzenia nowego pliku bazy danych. - + Ctrl+N Ctrl+N - - + + &Open Database... &Otwórz bazę danych… - - - - - + + + + + Open an existing database file Otwórz istniejącą bazę danych - - - + + + This option is used to open an existing database file. Ta opcja otwiera istniejący plik bazy danych. - + Ctrl+O Ctrl+O - + &Close Database Zamknij bazę dany&ch - + This button closes the connection to the currently open database file Ten przycisk kończy połączenie z obecnie otwartym plikiem bazy danych - + New &tab Nowa kar&ta - + Open SQL file(s) Otwórz plik(i) SQL - + This button opens files containing SQL statements and loads them in new editor tabs Przycisk ten otwiera pliki, zawierające polecenia SQL oraz wczytuje je do kart nowego edytora - + This button lets you save all the settings associated to the open DB to a DB Browser for SQLite project file Przycisk ten umożliwia zapisanie wszystkich ustawień związanych z otwieraniem bazy danych w Przeglądarce BD w przypadku pliku projektu - + This button lets you open a DB Browser for SQLite project file Przycisk ten umożliwia ci otwarcie pliku projektu Przeglądarki BD - + &Open Database &Otwórz bazę danych - + Drag && Drop SELECT Query Przeciągnij && upuść zapytanie SELECT - - + + When dragging fields from the same table or a single table, drop a SELECT query into the editor Przy przeciągniu pól z tej samej tabeli lub pojedynczej tabeli upuść zapytania SELECT na edytor - + Browse Table Przeglądaj tabelę - + Close Pro&ject Zamknij pro&jekt - - + + Close project and database files and return to the initial state Zamknij plik projektu i bazy danych oraz zwróć początkowy stan - + Ctrl+Shift+F4 Ctrl+Shift+F4 - - + + Detach Database Odłącz bazę danych - - + + Detach database file attached to the current database connection Odłącz plik bazy danych dołączony do bieżącego połączenia bazy danych - - + + Ctrl+W Ctrl+W - + &Revert Changes &Wycofaj zmiany - - + + Revert database to last saved state Przywróć bazę danych do ostatniego zapisanego stanu - + This option is used to revert the current database file to its last saved state. All changes made since the last save operation are lost. Ten działanie służy do przywrócenia bieżącej bazy danych do ostatnio zapisanego stanu. Wszystkie zmiany od czasu ostatniego zapisu zostaną utracone. - + &Write Changes &Zapisz zmiany - - + + Write changes to the database file Zapisz zmiany w pliku bazy danych - + This option is used to save changes to the database file. Ta opcja zapisuje zmiany w pliku bazy danych. - + Ctrl+S Ctrl+S - + Ctrl+Shift+O Ctrl+Shift+O - + &Save Project As... Zapi&sz projekt jako... - - - + + + Save the project in a file selected in a dialog Zapisuje projekt w pliku wskazanym w dialogu - + Save A&ll Zapisz w&szystko - - - + + + Save DB file, project file and opened SQL files Zapisuje plik bazy danych, projektu i otwarte pliki SQL - + Ctrl+Shift+S Ctrl+Shift+S - + This is the structure of the opened database. You can drag multiple object names from the Name column and drop them into the SQL editor and you can adjust the properties of the dropped names using the context menu. This would help you in composing SQL statements. You can drag SQL statements from the Schema column and drop them into the SQL editor or into other applications. @@ -3121,345 +3121,345 @@ Można przeciągać polecenia SQL z kolumny schematu i upuszczać je w edytorze - + Compact &Database... Ściśnij bazę &danych... - + Compact the database file, removing space wasted by deleted records Ściśnij plik bazę danych, usuwając przestrzenie marnowane przez usunięte rekordy - - + + Compact the database file, removing space wasted by deleted records. Ściśnij plik bazę danych, usuwając przestrzenie marnowane przez usunięte rekordy. - + E&xit &Wyjdź - + Ctrl+Q Ctrl+Q - + &Database from SQL file... Bazę &danych z pliku SQL… - + Import data from an .sql dump text file into a new or existing database. Zaimportuj dane z pliku tekstowego zrzutu .sql do nowej lub istniejącej bazy danych. - + This option lets you import data from an .sql dump text file into a new or existing database. SQL dump files can be created on most database engines, including MySQL and PostgreSQL. To działanie, umożliwia importowanie danych z pliku tekstowego zrzutu .sql do nowej lub istniejącej bazy danych. Pliki zrzutu SQL można utworzyć w większości silników baz danych, włączając w to MySQL oraz PostgreSQL. - + &Table from CSV file... &Tabelę z pliku CSV… - + Open a wizard that lets you import data from a comma separated text file into a database table. Otwiera okno pomocnika do importowania danych z pliku CSV do tabeli bazy danych. - + Open a wizard that lets you import data from a comma separated text file into a database table. CSV files can be created on most database and spreadsheet applications. Otwiera okno pomocnika do importowania danych z pliku CSV do tabeli bazy danych. Plik CSV można stworzyć na podstawie większości baz danych i aplikacji arkuszy kalkulacyjnych. - + &Database to SQL file... Bazę &danych do pliku SQL… - + Export a database to a .sql dump text file. Wyeksportuj bazę danych do pliku tekstowego zrzutu .sql. - + This option lets you export a database to a .sql dump text file. SQL dump files contain all data necessary to recreate the database on most database engines, including MySQL and PostgreSQL. To działanie umożliwia eksportowanie bazy danych do pliku tekstowego zrzutu .sql. Plik zrzutu SQL zawiera wszystkie dane niezbędne do odtworzenia bazy danych na większości silników baz danych, włączając w to MySQL oraz PostgreSQL. - + &Table(s) as CSV file... &Tabelę do pliku CSV… - + Export a database table as a comma separated text file. Eksportuje tabelę bazy danych jako plik tekstowy, oddzielając wartości przecinkami. - + Export a database table as a comma separated text file, ready to be imported into other database or spreadsheet applications. Eksportuje tabelę bazy danych jako plik tekstowym który można zaimportować w innych aplikacjach bazodanowych lub arkuszach kalkulacyjnych; oddzielając wartości przecinkami. - + &Create Table... &Utwórz tabelę… - + Open the Create Table wizard, where it is possible to define the name and fields for a new table in the database Otwiera okno tworzenia tabel, gdzie można zdefiniować nazwę i pola w nowej tabeli w bazie danych - + &Delete Table... U&suń tabelę… - - + + Delete Table Usuń tabelę - + Open the Delete Table wizard, where you can select a database table to be dropped. Otwiera pomocnika do Usunięcia Tabeli, gdzie można wybrać tabelę bazy danych do usunięcia. - + &Modify Table... &Dostosuj tabelę... - + Create &Index... Utwórz &indeks… - + Open the Create Index wizard, where it is possible to define a new index on an existing database table. Otwiera pomocnika do Tworzenia Indeksu, gdzie można określić nowy indeks na istniejącej tabeli bazy danych. - + &Preferences... U&stawienia... - - + + Open the preferences window. Otwórz okno ustawień. - + &DB Toolbar Pasek narzędzi bazy &danych - + Shows or hides the Database toolbar. Pokazuje lub ukrywa pasek narzędzi od bazy danych. - + Ctrl+T Ctrl+T - + W&hat's This? &Co to jest? - - + + Ctrl+F4 Ctrl+F4 - + Shift+F1 Shift+F1 - + &About O progr&amie - + &Load Extension... &Wczytaj rozszerzenia... - + &Wiki &Wiki - + F1 F1 - + Bug &Report... &Zgłoszenie błędu... - + Feature Re&quest... Zgłoszenie ż&yczenia... - + Web&site Strona &sieciowa - + &Donate on Patreon... &Darowizna na Patreon... - + Open &Project... Otwórz &projekt... - + &Attach Database... Dołącz bazę d&anych... - + &Set Encryption... U&staw szyfrowanie... - + This button saves the content of the current SQL editor tab to a file Ten przycisk zapisuje treść bieżącej karty edytora SQL do pliku - + SQLCipher &FAQ &Najczęściej zadawane pytania SQLCipher - + New In-&Memory Database Nowa baza danych w-pa&mięci - + Drag && Drop Qualified Names Przeciągnij && upuść nazwy z układu - - + + Use qualified names (e.g. "Table"."Field") when dragging the objects and dropping them into the editor Używaj nazw z układu (np. "Tabela"."Pole") przy przeciąganiu obiektów i upuszczaniu ich w edytorze - + Drag && Drop Enquoted Names Przeciągnij && upuść nazw w cudzysłowach - - + + Use escaped identifiers (e.g. "Table1") when dragging the objects and dropping them into the editor Używaj nazw w cudzysłowach (np. "Tabela1") przy przeciąganiu obiektów i upuszczaniu ich w edytorze - + &Integrity Check Sprawdzanie spójnośc&i - + Runs the integrity_check pragma over the opened database and returns the results in the Execute SQL tab. This pragma does an integrity check of the entire database. Wykonuje polecenie pragma integrity_check na bieżącej bazie danych i zwraca wynik na karcie Wykonywania SQL. To polecenie pragma wykonuje sprawdzenie spójności całej bazy danych. - + &Foreign-Key Check &Sprawdzenie obcego klucza - + Runs the foreign_key_check pragma over the opened database and returns the results in the Execute SQL tab Wykonuje polecenie pragma foreign_key_check na bieżącej bazie danych i zwraca wynik na karcie Wykonywania SQL - + &Quick Integrity Check &Szybkie sprawdzenie spójności - + Run a quick integrity check over the open DB Wykonaj sprawdzenie spójności bieżącej bazy danych - + Runs the quick_check pragma over the opened database and returns the results in the Execute SQL tab. This command does most of the checking of PRAGMA integrity_check but runs much faster. Wykonuje polecenie pragma quick_check na bieżącej bazie danych i zwraca wynik na karcie Wykonywania SQL. To polecenie pragma wykonuje większość tego, co wykonuje polecenie pragma integrity_check lecz robi to znacznie szybciej. - + &Optimize &Optymalizacja - + Attempt to optimize the database Próba optymalizacji bazy danych - + Runs the optimize pragma over the opened database. This pragma might perform optimizations that will improve the performance of future queries. Wykonuje polecenie pragma optimize na bieżącej bazie danych. To polecenie może wykonać optymalizacje, które zwiększą wydajność przyszłych zapytań. - - + + Print Wydrukuj - + Print text from current SQL editor tab Wydrukuj tekst z bieżącej karty edytora SQL - + Open a dialog for printing the text in the current SQL editor tab Otwiera okno dialogowe do drukowania tekstu w bieżącej karcie edytora SQL - + Print the structure of the opened database Wydrukuj układ bieżącej bazy danych - + Open a dialog for printing the structure of the opened database Otwiera okno do drukowania układu bieżącej bazy danych - + &Recently opened Ostatnio otwie&rane @@ -3485,412 +3485,571 @@ Plik CSV można stworzyć na podstawie większości baz danych i aplikacji arkus Edytuj p&ragmy - - + + Temp Store + + + + + Secure Delete + + + + + Case Sensitive Like + + + + + Journal Mode + + + + + Journal Size Limit + + + + + Recursive Triggers + + + + + Page Size + + + + + Foreign Keys + Klucze obce + + + + Auto Vacuum + + + + + Max Page Count + + + + + Checkpoint Full FSYNC + + + + + + Off + + + + + + Normal + + + + + + Full + + + + + Default + + + + + File + Plik + + + + + Memory + + + + + Delete + + + + + Truncate + + + + + Persist + + + + + WAL + + + + + Exclusive + + + + + Automatic Index + + + + + Ignore Check Constraints + + + + + Full FSYNC + + + + + WAL Auto Checkpoint + + + + + User Version + + + + + Synchronous + + + + + None + Brak + + + + Incremental + + + + + Locking Mode + + + + + E&xecute SQL This has to be equal to the tab title in all the main tabs W&ykonaj SQL - + &Recent Files Os&tatnie pliki - + &New Database &Nowa baza danych - + &Undo &Cofnij - - + + Undo last change to the database Wycofaj ostatnią zmianę w bazie danych - + This action undoes the last change performed to the database in the Database Browser or in Execute SQL. Redoing is not possible. To działanie wycofuje ostatnią zmianę dokonaną w bazie danych w Przeglądarce Bazy Danych lub poprzez Wykonanie Polecenia SQL. Ponowienie tego działania jest niemożliwe. - + Open the Modify Table wizard, where it is possible to rename an existing table. It is also possible to add or delete fields from a table, as well as modify field names and types. Otwiera pomocnika Zmiany Tabeli, gdzie można zmienić nazwę istniejącej tabeli. Można także dodawać i usuwać pola z tabeli, a także zmieniać nazwy oraz rodzaje pól. - + This button opens a new tab for the SQL editor Ten przycisk otwiera nową tabelę w edytorze SQL - + &Execute SQL &Wykonaj polecenie SQL - + Execute all/selected SQL Wykonaj wszystkie/zaznaczone SQL - + This button executes the currently selected SQL statements. If no text is selected, all SQL statements are executed. Ten przycisk wykona obecnie zaznaczone polecenia SQL. Jeśli nie zaznaczone tekstu, to zostaną wykonane wszystkie polecenia SQL. - + Ctrl+Shift+T Ctrl+Shift+T - - - + + + Save SQL file Zapisz plik SQL - - + + Execute current line Wykonaj bieżący wiersz - + This button executes the SQL statement present in the current editor line Ten przycisk wykonuje polecenie SQL z obecnego wiersza edytora - + Shift+F5 Shift+F5 - + Export as CSV file Wyeksportuj do pliku CSV - + Export table as comma separated values file Wyeksportuj tabelę jako plik z wartościami oddzielonymi przecinkami - + Sa&ve Project &Zapisz projekt - + &Save Project Zapi&sz projekt - - + + Save the current session to a file Zapisz obecną sesję do pliku - + Open &Project Otwórz &projekt - - + + Load a working session from a file Wczytaj otoczenie pracy z pliku - - + + Add another database file to the current database connection Dodaj kolejny plik bazy danych do połączenia bieżącej bazy danych - + This button lets you add another database file to the current database connection Ten przycisk umożliwia dodanie kolejnego pliku bazy danych do połączenia bieżącej bazy danych - - + + Save SQL file as Zapisz plik SQL jako - + &Browse Table &Przeglądaj tabelę - + Copy Create statement Skopiuj polecenie tworzące - + Copy the CREATE statement of the item to the clipboard Skopiuj polecenie CREATE elementu do schowka - + Opens the SQLCipher FAQ in a browser window Otwiera FAQ SQLCipher w oknie przeglądarki - + Table(&s) to JSON... Tabele do pliku J&SON… - + Export one or more table(s) to a JSON file Wyeksportuj jedną lub więcej tabel do pliku JSON - + Open Data&base Read Only... Otwórz &bazę danych tylko do odczytu… - + Open an existing database file in read only mode Otwórz istniejący plik bazy danych w trybie tylko do odczytu - + Save results Zapisz wyniki - + Save the results view Zapisuje widok wyniku - + This button lets you save the results of the last executed query Ten przycisk umożliwia zapisanie wyników ostatnio wykonanego zapytania - - + + Find text in SQL editor Znajdź tekst w edytorze SQL - + Find Znajdź - + This button opens the search bar of the editor Ten przycisk otwiera pasek wyszukiwania edytora - + Ctrl+F Ctrl+F - - + + Find or replace text in SQL editor Znajdź lub zastąp tekst w edytorze SQL - + Find or replace Znajdź i zastąp - + This button opens the find/replace dialog for the current editor tab Ten przycisk otwiera okno dialogowe znajdowania/zastępowania dla bieżącej karty edytora - + Ctrl+H Ctrl+H - + Export to &CSV Wyeksportuj do &CSV - + Export to &JSON Wyeksportuj do &JSON - + Save as &view Zapisz jako &widok - + Save as view Zapisz jako widok - + Shows or hides the Project toolbar. Pokazuje lub ukrywa pasek narzędzi Projekt. - + Extra DB Toolbar Dodatkowy pasek narzędzi bazy danych - - + + Ctrl+Shift+W Ctrl+Shift+W - + Table from CSV data in Clipboard... Tabela z danych CSV ze schowka... - + This treats the current clipboard contents as a CSV file and opens the same import wizard that is used for importing CSV data from a file. Traktuje to bieżącą zawartość schowka jako plik CSV i otwiera tego samego pomocnika importowania, co w przypadku importowania danych CSV z pliku. - + Show &Row Counts Pokaż licznik wie&rszy - + This shows the number of rows for each table and view in the database. Pokazuje to liczbę wierszy dla każdej tabeli i wodku w bazie danych. - + Save Database &As... Z&apisz bazę danych jako... - + Save the current database as a different file Zapisz bieżącą bazę danych do innego pliku - + Refresh Odśwież - + Reload the database structure Wczytaj ponownie strukturę bazy danych - + Ctrl+Return Ctrl+Enter - + Ctrl+L Ctrl+L - - + + Ctrl+P Ctrl+P - + Ctrl+D Ctrl+D - + Ctrl+I Ctrl+I - + Ctrl+E Ctrl+E - + Reset Window Layout Wyzeruj układ okien - - The database is currenctly busy. + + The database is currently busy. Baza danych jest obecnie zajęta. - + Click here to interrupt the currently running query. Naciśnij tutaj, aby przerwać wykonywanie bieżącego zapytania. - + Encrypted Szyfrowana - + Database is encrypted using SQLCipher Baza danych jest zaszyfrowana z użyciem SQLCipher - + Read only Tylko do odczytu - + Database file is read only. Editing the database is disabled. Plik bazy danych jest tylko do odczytu. Edytowanie bazy danych jest wyłączone. - + Database encoding Kodowanie bazy danych - - + + Choose a database file Wybierz plik bazy danych - + Could not open database file. Reason: %1 Nie można otworzyć pliku bazy danych. Powód: %1 - - - + + + Choose a filename to save under Wybierz nazwę pliku do zapisu - + Setting PRAGMA values or vacuuming will commit your current transaction. Are you sure? Ustawianie wartości PRAGMA lub odkurzanie spowoduje wdrożenie twoich zmian @@ -3898,180 +4057,180 @@ z bieżącej transakcji. Czy na pewno? - + In-Memory database Baza danych w-pamięci - + Automatically load the last opened DB file at startup - + Ctrl+Alt+0 Ctrl+Alt+0 - + Ctrl+Alt+W Ctrl+Alt+W - + Choose a database file to save under Wybierz plik, do którego zapisać bazę danych - + Error while saving the database to the new file. Napotkano błąd podczas zapisywania bazy danych do nowego pliku. - + Do you want to save the changes made to the project file '%1'? Czy chcesz zapisać zmiany wprowadzone w plik projektu '%1'? - + Are you sure you want to delete the table '%1'? All data associated with the table will be lost. Czy na pewno usunąć tabelę '%1'? Wszystkie dane skojarzone z tą tabelą zostaną utracone. - + Are you sure you want to delete the view '%1'? Czy na pewno usunąć widok '%1'? - + Are you sure you want to delete the trigger '%1'? Czy na pewno usunąć wyzwalacz '%1'? - + Are you sure you want to delete the index '%1'? Czy na pewno usunąć indeks '%1'? - + Error: could not delete the table. Błąd: nie można usunąć bazy danych. - + Error: could not delete the view. Błąd: nie można usunąć widoku. - + Error: could not delete the trigger. Błąd: nie można usunąć wyzwalacza. - + Error: could not delete the index. Błąd: nie można usunąć indeksu. - + Message from database engine: %1 Wiadomość z silnika bazy danych: %1 - + Editing the table requires to save all pending changes now. Are you sure you want to save the database? Zmiana tabeli wymaga zapisania wszystkich oczekujących zmian. Czy na pewno zapisać bazę danych? - + Error checking foreign keys after table modification. The changes will be reverted. Błąd sprawdzania kluczy obcych po zmianie tabeli. Zmiany zostaną wycofane. - + This table did not pass a foreign-key check.<br/>You should run 'Tools | Foreign-Key Check' and fix the reported issues. Tabela nie przeszła sprawdzenia klucza obcego.<br/>Należy wykonać 'Narzędzia | Sprawdzenie obcego klucza' i naprawić zgłoszone kłopoty. - + Edit View %1 Edytuj widok %1 - + Edit Trigger %1 Edytuj wyzwalacz %1 - + You are already executing SQL statements. Do you want to stop them in order to execute the current statements instead? Note that this might leave the database in an inconsistent state. Już wykonujesz polecenia SQL. Czy zatrzymać je, aby wykonać bieżące polecenia? Działanie to może spowodować niespójność w bazie danych. - + -- EXECUTING SELECTION IN '%1' -- -- WYKONYWANIE ZAZNACZENIA W '%1' -- - + -- EXECUTING LINE IN '%1' -- -- WYKONYWANIE WIERSZA W '%1' -- - + -- EXECUTING ALL IN '%1' -- -- WYKONYWANIE WSZYSTKIEGO W '%1' -- - - + + At line %1: W wierszu %1: - + Result: %1 Wynik: %1 - + Result: %2 Wynik: %2 - + %1 rows returned in %2ms Zwrócono %1 wierszy w czasie %2ms - + Choose text files Wybierz pliki tekstowe - + Opened '%1' in read-only mode from recent file list Otworzono '%1' w trybie tylko do odczytu ze spisu ostatnich plików - + Opened '%1' from recent file list Otwarto '%1' ze spisu ostatnich plików - + Select the action to apply to the dropped file(s). <br/>Note: only 'Import' will process more than one file. Note for translation: Although there is no %n in the original, you can use the numerus-form to adjust 'files(s)' and remove the note when n = 1. Including %n in the translation will also work. @@ -4081,77 +4240,77 @@ Czy na pewno zapisać bazę danych? - + The statements in the tab '%1' are still executing. Closing the tab will stop the execution. This might leave the database in an inconsistent state. Are you sure you want to close the tab? Polecenia na karcie '%1' nadal są wykonywane. Zamknięcie tej karty przerwie ich wykonywanie. Może to pozostawić bazę danych w niespójnym stanie. Czy na pewno zamknąć tę kartę? - + DB file '%1' could not be opened Nie można otworzyć pliku BD '%1' - + This project file is using an old file format because it was created using DB Browser for SQLite version 3.10 or lower. Loading this file format is no longer fully supported. If you want to load it completely, please use DB Browser for SQLite version 3.12 to convert it to the new file format. Projekt ten używa starego formatu pliku, bo został stworzony w Przeglądarce BD w wersji 3.10 lub wcześniejszej. Wczytywanie takich formatów plików nie jest już obsługiwane. Jeśli chcesz go wczytać całkowicie, to użyj Przeglądarki BD w wersji 3.12 i przekształć go na nowy format pliku. - + Table '%1' not found; settings ignored Nie można było odnaleźć tabeli '%1'; pominięto ustawienia - + -- Reference to file "%1" (not supported by this version) -- -- Odniesienie do pliku "%1" (nieobsługiwane w tej wersji) -- - + Project saved to file '%1' Projekt zapisano do pliku '%1' - + Yes. Don't ask again Tak. Nie pytaj - + This action will open a new SQL tab with the following statements for you to edit and run: Działanie to otworzy nową kartę SQL z następującymi poleceniami, które możesz dostosować i wykonać: - + Rename Tab Przemianuj kartę - + Duplicate Tab Powiel kartę - + Close Tab Zamknij kartę - + Opening '%1'... Otwieranie '%1'... - + There was an error opening '%1'... Błąd otwierania '%1'... - + Value is not a valid URL or filename: %1 Wartość nie jest prawidłowym adresem URL lub nazwą pliku: %1 - + Error while saving the database file. This means that not all changes to the database were saved. You need to resolve the following error first. %1 @@ -4160,164 +4319,164 @@ Czy na pewno zapisać bazę danych? %1 - + Are you sure you want to undo all changes made to the database file '%1' since the last save? Czy na pewno wycofać wszystkie zmiany wprowadzone w pliku bazy danych '%1' od czasu ostatniego zapisu? - + Choose a file to import Wybierz pliki do zaimportowania - + &%1 %2%3 &%1 %2%3 - + (read only) (tylko do odczytu) - + Open Database or Project Otwórz bazę danych lub projekt - + Attach Database... Dołącz bazę danych... - + Import CSV file(s)... Zaimportuj plik(i) CSV... - + Do you want to save the changes made to SQL tabs in the project file '%1'? Czy chcesz zapisać zmiany wprowadzone w tabelach SQL do pliku projektu '%1'? - + Text files(*.sql *.txt);;All files(*) Pliki tekstowe(*.sql *.txt);;Wszystkie pliki(*) - + Do you want to create a new database file to hold the imported data? If you answer no we will attempt to import the data in the SQL file to the current database. Czy utworzyć plik nowej bazy danych do przechowania zaimportowanych danych? Jeśli nie, to dane zostaną zaimportowane do pliku bieżącej bazy danych. - + Ctrl+Tab Ctrl+Tab - + Ctrl+Shift+Tab Ctrl+Shift+Tab - + Clear List Wyczyść spis - + Window Layout Układ okna - + Simplify Window Layout Uprość układ okien - - Shift+Alt+0 - Shift+Alt+0 + + Alt+Shift+0 + Alt+Shift+0 - + Dock Windows at Bottom Zadokuj okna na dole - + Dock Windows at Left Side Zadokuj okna po lewej stronie - + Dock Windows at Top Zadokuj okna na górze - + You are still executing SQL statements. Closing the database now will stop their execution, possibly leaving the database in an inconsistent state. Are you sure you want to close the database? Nadal wykonujesz polecenia SQL. Wykonywanie tych poleceń zostanie zatrzymane, po zamknięciu bazy danych, co może spowodować w niej niespójności. Czy na pewno zamknąć tę bazę danych? - + File %1 already exists. Please choose a different name. Plik %1 już istnieje. Wybierz inną nazwę. - + Error importing data: %1 Błąd importowania danych: %1 - + Import completed. Some foreign key constraints are violated. Please fix them before saving. Ukończono import. Nastąpiło przekroczenie niektórych z ograniczeń obcego klucza. Napraw je przed zapisaniem. - + Import completed. Importowanie zakończone. - + Delete View Usuń widok - + Modify View Zmień widok - + Delete Trigger Usuń wyzwalacz - + Modify Trigger Zmień wyzwalacz - + Delete Index Usuń indeks - + Modify Index Zmień indeks - + Modify Table Dostosuj tabelę - + Setting PRAGMA values will commit your current transaction. Are you sure? Ustawianie wartości PRAGMA spowoduje wdrożenie twoich zmian @@ -4325,95 +4484,95 @@ z bieżącej transakcji. Czy na pewno? - + Select SQL file to open Wybierz plik SQL do otworzenia - + Select file name Wybierz nazwę pliku - + Select extension file Wybierz plik rozszerzenia - + Execution finished with errors. Wykonano z błędami. - + Execution finished without errors. Wykonano bez błędów. - + Do you want to save the changes made to SQL tabs in a new project file? Czy chcesz zapisać zmiany wprowadzone w tabelach SQL do nowego pliku projektu? - + Do you want to save the changes made to the SQL file %1? Czy chcesz zapisać zmiany wprowadzone w SQL do pliku %1? - + Extension successfully loaded. Pomyślnie wczytano rozszerzenie. - + Error loading extension: %1 Nie można wczytać rozszerzenia: %1 - + Could not find resource file: %1 Nie można znaleźć pliku zasobów: %1 - - + + Don't show again Nie pokazuj ponownie - + New version available. Nowa wersja jest dostępna. - + A new DB Browser for SQLite version is available (%1.%2.%3).<br/><br/>Please download at <a href='%4'>%4</a>. Dostępna jest nowa wersja Przeglądarki SQLite (%1.%2.%3).<br/><br/>Pobierz z <a href='%4'>%4</a>. - + Choose a project file to open Wybierz plik projektu do otworzenia - + DB Browser for SQLite project file (*.sqbpro) Plik projektu Przeglądarki SQLite (*.sqbpro) - + Could not open project file for writing. Reason: %1 Nie można otworzyć pliku projektu do zapisu. Powód: %1 - + Collation needed! Proceed? Potrzebne zestawianie! Postąpić naprzód? - + A table in this database requires a special collation function '%1' that this application can't provide without further knowledge. If you choose to proceed, be aware bad things can happen to your database. Create a backup! @@ -4422,47 +4581,47 @@ Pójścia z tym dalej, może spowodować uszkodzenia w bazie danych. Stwórz kopię zapasową! - + creating collation tworzenie zestawienia - + Set a new name for the SQL tab. Use the '&&' character to allow using the following character as a keyboard shortcut. Przemianowuje kartę SQL. Wstaw znaku '&&' aby móc wykorzystać następujący po nim znak jako skrót klawiszowy. - + Please specify the view name Określ nazwę widoku - + There is already an object with that name. Please choose a different name. Istnieje już obiekt o tej nazwie. Nadaj inną nazwę. - + View successfully created. Pomyślnie utworzono widok. - + Error creating view: %1 Błąd tworzenia widoku: %1 - + This action will open a new SQL tab for running: To działanie otworzy nową kartę SQL aby wykonać: - + Press Help for opening the corresponding SQLite reference page. Naciśnij Pomoc, aby otworzyć powiązaną stronę w podręczniku SQLite. - + Busy (%1) Zajęty (%1) @@ -4657,102 +4816,107 @@ Aby przeciągnąć i powiększyć tylko w jedną stronę, należy wybrać osie l - + Load all data and redraw plot Wczytaj wszystkie dane i przerysuj wykres - + Copy Skopiuj - + Print... Wydrukuj... - + + Help + + + + Show legend Pokaż legendę - + Stacked bars Słupki na stosie - + Fixed number format Format stałej liczby - + Date/Time Data/Czas - + Date Data - + Time Czas - - + + Numeric Liczbowa - + Label Podpis - + Invalid Nieprawidłowy - - - + + + Row # Nr wiersza - + Load all data and redraw plot. Warning: not all data has been fetched from the table yet due to the partial fetch mechanism. Wczytaj wszystkie dane i przerysuj wykres. Uwaga: jeszcze nie wczytano wszystkich danych z tabeli ze względu na mechanizm częściowego wczytywania. - + Choose an axis color Wybierz barwę osi - + Choose a filename to save under Wybierz nazwę pliku do zapisu - + PNG(*.png);;JPG(*.jpg);;PDF(*.pdf);;BMP(*.bmp);;All Files(*) PNG(*.png);;JPG(*.jpg);;PDF(*.pdf);;BMP(*.bmp);;Wszystkie pliki(*) - + There are curves in this plot and the selected line style can only be applied to graphs sorted by X. Either sort the table or query by X to remove curves or select one of the styles supported by curves: None or Line. W tym wykresie występują krzywe, a wybrany wygląd linii można zastosować tylko dla wykresów uszeregowanych po X. Uszereguj tabelę lub zapytaj po X, aby usunąć krzywe lub wybierz jeden z wyglądów obsługiwanych przez krzywe: Brak lub Linia. - + Loading all remaining data for this table took %1ms. Wczytywanie wszystkich pozostałych danych dla tej tabeli zajęło %1ms. @@ -5648,8 +5812,8 @@ Sprawdź go ponownie. - Socks v5 - Socks v5 + SOCKS5 + SOCKS5 @@ -5795,1878 +5959,296 @@ Sprawdź go ponownie. QsciCommand - - Move down one line - - - - - Extend selection down one line - + Paste + Wklej - - Extend rectangular selection down one line - + Cancel + Zaniechaj + + + QsciLexerCPP - - Scroll view down one line - + Keyword + Słowo kluczowe - - Move up one line - + Identifier + Identyfikator + + + QsciLexerJSON - - Extend selection up one line - + String + Ciąg znaków + + + QsciLexerJavaScript - - Extend rectangular selection up one line - + Regular expression + Wyrażenie regularne + + + QsciLexerPython - - Scroll view up one line - + Comment + Uwaga - - Scroll to start of document - + Keyword + Słowo kluczowe - - Scroll to end of document - + Identifier + Identyfikator + + + QsciLexerSQL - - Scroll vertically to centre current line - + Comment + Uwaga - - Move down one paragraph - + Keyword + Słowo kluczowe - - Extend selection down one paragraph - + Identifier + Identyfikator + + + QsciScintilla - - Move up one paragraph - + &Undo + &Cofnij - - Extend selection up one paragraph - + Select All + Zaznacz wszystkie + + + RemoteCommitsModel - - Move left one character - + + Commit ID + ID zmiany - - Extend selection left one character - + + Message + Wiadomość - - Extend rectangular selection left one character - + + Date + Data - - Move right one character - + + Author + Autor - - Extend selection right one character - + + Size + Rozmiar - - Extend rectangular selection right one character - + + Authored and committed by %1 + Napisał i wdrożył %1 - - Move left one word - + + Authored by %1, committed by %2 + Napisał %1, wdrożył %2 + + + RemoteDatabase - - Extend selection left one word - + + Error opening local databases list. +%1 + Nie można otworzyć wykazu lokalnych baz danych. +%1 - - Move right one word - + + Error creating local databases list. +%1 + Nie można utworzyć wykazu lokalnych baz danych. +%1 + + + RemoteDock - - Extend selection right one word - + + Remote + Zdalne BD - - Move to end of previous word - + + Identity + Tożsamość - - Extend selection to end of previous word - + + Push currently opened database to server + Wypchnij bieżącą bazę danych na serwer - - Move to end of next word - + + Upload + Wyślij - - Extend selection to end of next word - + + DBHub.io + DBHub.io - - Move left one word part - + + Local + Miejscowa - - Extend selection left one word part - + + Current Database + Bieżąca baza danych - - Move right one word part - + + Clone + Powiel - - Extend selection right one word part - + + Branch + Gałąź - - Move to start of document line - + + Commits + Zmiany - - Extend selection to start of document line - + + Commits for + Zmiany dla - - Extend rectangular selection to start of document line - + + Delete Database + Usuń bazę danych - - Move to start of display line - + + Delete the local clone of this database + Usuń miejscową kopię tej bazy danych - - Extend selection to start of display line - + + Open in Web Browser + Otwórz w przeglądarce sieciowej - - Move to start of display or document line - + + Open the web page for the current database in your browser + Otwórz stronę sieciową bieżącej bazy danych w swojej przeglądarce - - Extend selection to start of display or document line - + + Clone from Link + Powiel z odnośnika - - Move to first visible character in document line - + + Use this to download a remote database for local editing using a URL as provided on the web page of the database. + Użyj tego, aby pobrać zdalną bazę danych do miejscowego edytowania przy użyciu adresu URL podanego na stronie sieciowej bazy danych. - - Extend selection to first visible character in document line - + + Refresh + Odśwież - - Extend rectangular selection to first visible character in document line - + + Reload all data and update the views + Wczytaj ponownie wszystkie dane i uaktualnij widoki - - Move to first visible character of display in document line - + + Clone Database + Powiel bazę danych - - Extend selection to first visible character in display or document line - + + Open Database + Otwórz bazę danych - - Move to end of document line - + + Open the local copy of this database + Otwórz miejscową kopię bazy danych - - Extend selection to end of document line - + + Check out Commit + Ustaw na zmianie - - Extend rectangular selection to end of document line - + + Download and open this specific commit + Pobierz i otwórz daną zmianę - - Move to end of display line - + + Check out Latest Commit + Sprawdź ostatnie zmiany - - Extend selection to end of display line - + + Check out the latest commit of the current branch + Sprawdź ostatnią zmianę w bieżącej gałęzi - - Move to end of display or document line - + + Save Revision to File + Zapisz wersję do pliku - - Extend selection to end of display or document line - + + Saves the selected revision of the database to another file + Zapisuje wybraną wersję bazy danych do innego pliku - - Move to start of document - + + Upload Database + Wyślij bazę danych - - Extend selection to start of document - + + Upload this database as a new commit + Wyślij tę bazę danych jako nową zmianę - - Move to end of document - + + <html><head/><body><p>You are currently using a built-in, read-only identity. For uploading your database, you need to configure and use your DBHub.io account.</p><p>No DBHub.io account yet? <a href="https://dbhub.io/"><span style=" text-decoration: underline; color:#007af4;">Create one now</span></a> and import your certificate <a href="#preferences"><span style=" text-decoration: underline; color:#007af4;">here</span></a> to share your databases.</p><p>For online help visit <a href="https://dbhub.io/about"><span style=" text-decoration: underline; color:#007af4;">here</span></a>.</p></body></html> + <html><head/><body><p>Obecnie używasz wbudowanej tożsamości, która jest tylko do odczytu. Aby wysłać bazę danych musisz posłużyć się kontem z DBHub.io.</p><p>Nie masz jeszcze konta DBHub.io? <a href="https://dbhub.io/"><span style=" text-decoration: underline; color:#007af4;">Utwórz je teraz</span></a> i zaimportuj swój certyfikat<a href="#preferences"><span style=" text-decoration: underline; color:#007af4;">tutaj</span></a>, aby móc dzielić się swoimi bazami danych.</p><p>Aby uzyskać pomoc w sieci, zajrzyj <a href="https://dbhub.io/about"><span style=" text-decoration: underline; color:#007af4;">tutaj</span></a>.</p></body></html> - - Extend selection to end of document - - - - - Move up one page - - - - - Extend selection up one page - - - - - Extend rectangular selection up one page - - - - - Move down one page - - - - - Extend selection down one page - - - - - Extend rectangular selection down one page - - - - - Stuttered move up one page - - - - - Stuttered extend selection up one page - - - - - Stuttered move down one page - - - - - Stuttered extend selection down one page - - - - - Delete current character - - - - - Delete previous character - - - - - Delete previous character if not at start of line - - - - - Delete word to left - - - - - Delete word to right - - - - - Delete right to end of next word - - - - - Delete line to left - - - - - Delete line to right - - - - - Delete current line - - - - - Cut current line - - - - - Copy current line - - - - - Transpose current and previous lines - - - - - Duplicate the current line - - - - - Select all - - - - - Move selected lines up one line - - - - - Move selected lines down one line - - - - - Duplicate selection - - - - - Convert selection to lower case - - - - - Convert selection to upper case - - - - - Cut selection - - - - - Copy selection - - - - - Paste - Wklej - - - - Toggle insert/overtype - - - - - Insert newline - - - - - Formfeed - - - - - Indent one level - - - - - De-indent one level - - - - - Cancel - Zaniechaj - - - - Undo last command - - - - - Redo last command - - - - - Zoom in - - - - - Zoom out - - - - - QsciLexerCPP - - - Default - - - - - Inactive default - - - - - C comment - - - - - Inactive C comment - - - - - C++ comment - - - - - Inactive C++ comment - - - - - JavaDoc style C comment - - - - - Inactive JavaDoc style C comment - - - - - Number - - - - - Inactive number - - - - - Keyword - Słowo kluczowe - - - - Inactive keyword - - - - - Double-quoted string - - - - - Inactive double-quoted string - - - - - Single-quoted string - - - - - Inactive single-quoted string - - - - - IDL UUID - - - - - Inactive IDL UUID - - - - - Pre-processor block - - - - - Inactive pre-processor block - - - - - Operator - - - - - Inactive operator - - - - - Identifier - Identyfikator - - - - Inactive identifier - - - - - Unclosed string - - - - - Inactive unclosed string - - - - - C# verbatim string - - - - - Inactive C# verbatim string - - - - - JavaScript regular expression - - - - - Inactive JavaScript regular expression - - - - - JavaDoc style C++ comment - - - - - Inactive JavaDoc style C++ comment - - - - - Secondary keywords and identifiers - - - - - Inactive secondary keywords and identifiers - - - - - JavaDoc keyword - - - - - Inactive JavaDoc keyword - - - - - JavaDoc keyword error - - - - - Inactive JavaDoc keyword error - - - - - Global classes and typedefs - - - - - Inactive global classes and typedefs - - - - - C++ raw string - - - - - Inactive C++ raw string - - - - - Vala triple-quoted verbatim string - - - - - Inactive Vala triple-quoted verbatim string - - - - - Pike hash-quoted string - - - - - Inactive Pike hash-quoted string - - - - - Pre-processor C comment - - - - - Inactive pre-processor C comment - - - - - JavaDoc style pre-processor comment - - - - - Inactive JavaDoc style pre-processor comment - - - - - User-defined literal - - - - - Inactive user-defined literal - - - - - Task marker - - - - - Inactive task marker - - - - - Escape sequence - - - - - Inactive escape sequence - - - - - QsciLexerHTML - - - HTML default - - - - - Tag - - - - - Unknown tag - - - - - Attribute - - - - - Unknown attribute - - - - - HTML number - - - - - HTML double-quoted string - - - - - HTML single-quoted string - - - - - Other text in a tag - - - - - HTML comment - - - - - Entity - - - - - End of a tag - - - - - Start of an XML fragment - - - - - End of an XML fragment - - - - - Script tag - - - - - Start of an ASP fragment with @ - - - - - Start of an ASP fragment - - - - - CDATA - - - - - Start of a PHP fragment - - - - - Unquoted HTML value - - - - - ASP X-Code comment - - - - - SGML default - - - - - SGML command - - - - - First parameter of an SGML command - - - - - SGML double-quoted string - - - - - SGML single-quoted string - - - - - SGML error - - - - - SGML special entity - - - - - SGML comment - - - - - First parameter comment of an SGML command - - - - - SGML block default - - - - - Start of a JavaScript fragment - - - - - JavaScript default - - - - - JavaScript comment - - - - - JavaScript line comment - - - - - JavaDoc style JavaScript comment - - - - - JavaScript number - - - - - JavaScript word - - - - - JavaScript keyword - - - - - JavaScript double-quoted string - - - - - JavaScript single-quoted string - - - - - JavaScript symbol - - - - - JavaScript unclosed string - - - - - JavaScript regular expression - - - - - Start of an ASP JavaScript fragment - - - - - ASP JavaScript default - - - - - ASP JavaScript comment - - - - - ASP JavaScript line comment - - - - - JavaDoc style ASP JavaScript comment - - - - - ASP JavaScript number - - - - - ASP JavaScript word - - - - - ASP JavaScript keyword - - - - - ASP JavaScript double-quoted string - - - - - ASP JavaScript single-quoted string - - - - - ASP JavaScript symbol - - - - - ASP JavaScript unclosed string - - - - - ASP JavaScript regular expression - - - - - Start of a VBScript fragment - - - - - VBScript default - - - - - VBScript comment - - - - - VBScript number - - - - - VBScript keyword - - - - - VBScript string - - - - - VBScript identifier - - - - - VBScript unclosed string - - - - - Start of an ASP VBScript fragment - - - - - ASP VBScript default - - - - - ASP VBScript comment - - - - - ASP VBScript number - - - - - ASP VBScript keyword - - - - - ASP VBScript string - - - - - ASP VBScript identifier - - - - - ASP VBScript unclosed string - - - - - Start of a Python fragment - - - - - Python default - - - - - Python comment - - - - - Python number - - - - - Python double-quoted string - - - - - Python single-quoted string - - - - - Python keyword - - - - - Python triple double-quoted string - - - - - Python triple single-quoted string - - - - - Python class name - - - - - Python function or method name - - - - - Python operator - - - - - Python identifier - - - - - Start of an ASP Python fragment - - - - - ASP Python default - - - - - ASP Python comment - - - - - ASP Python number - - - - - ASP Python double-quoted string - - - - - ASP Python single-quoted string - - - - - ASP Python keyword - - - - - ASP Python triple double-quoted string - - - - - ASP Python triple single-quoted string - - - - - ASP Python class name - - - - - ASP Python function or method name - - - - - ASP Python operator - - - - - ASP Python identifier - - - - - PHP default - - - - - PHP double-quoted string - - - - - PHP single-quoted string - - - - - PHP keyword - - - - - PHP number - - - - - PHP variable - - - - - PHP comment - - - - - PHP line comment - - - - - PHP double-quoted variable - - - - - PHP operator - - - - - QsciLexerJSON - - - Default - - - - - Number - - - - - String - Ciąg znaków - - - - Unclosed string - - - - - Property - - - - - Escape sequence - - - - - Line comment - - - - - Block comment - - - - - Operator - - - - - IRI - - - - - JSON-LD compact IRI - - - - - JSON keyword - - - - - JSON-LD keyword - - - - - Parsing error - - - - - QsciLexerJavaScript - - - Regular expression - Wyrażenie regularne - - - - QsciLexerPython - - - Default - - - - - Comment - Uwaga - - - - Number - - - - - Double-quoted string - - - - - Single-quoted string - - - - - Keyword - Słowo kluczowe - - - - Triple single-quoted string - - - - - Triple double-quoted string - - - - - Class name - - - - - Function or method name - - - - - Operator - - - - - Identifier - Identyfikator - - - - Comment block - - - - - Unclosed string - - - - - Highlighted identifier - - - - - Decorator - - - - - Double-quoted f-string - - - - - Single-quoted f-string - - - - - Triple single-quoted f-string - - - - - Triple double-quoted f-string - - - - - QsciLexerSQL - - - Default - - - - - Comment - Uwaga - - - - Comment line - - - - - JavaDoc style comment - - - - - Number - - - - - Keyword - Słowo kluczowe - - - - Double-quoted string - - - - - Single-quoted string - - - - - SQL*Plus keyword - - - - - SQL*Plus prompt - - - - - Operator - - - - - Identifier - Identyfikator - - - - SQL*Plus comment - - - - - # comment line - - - - - JavaDoc keyword - - - - - JavaDoc keyword error - - - - - User defined 1 - - - - - User defined 2 - - - - - User defined 3 - - - - - User defined 4 - - - - - Quoted identifier - - - - - Quoted operator - - - - - QsciScintilla - - - &Undo - &Cofnij - - - - &Redo - - - - - Cu&t - - - - - &Copy - - - - - &Paste - - - - - Delete - - - - - Select All - Zaznacz wszystkie - - - - RemoteCommitsModel - - - Commit ID - ID zmiany - - - - Message - Wiadomość - - - - Date - Data - - - - Author - Autor - - - - Size - Rozmiar - - - - Authored and committed by %1 - Napisał i wdrożył %1 - - - - Authored by %1, committed by %2 - Napisał %1, wdrożył %2 - - - - RemoteDatabase - - - Error opening local databases list. -%1 - Nie można otworzyć wykazu lokalnych baz danych. -%1 - - - - Error creating local databases list. -%1 - Nie można utworzyć wykazu lokalnych baz danych. -%1 - - - - RemoteDock - - - Remote - Zdalne BD - - - - Identity - Tożsamość - - - - Push currently opened database to server - Wypchnij bieżącą bazę danych na serwer - - - - Upload - Wyślij - - - - DBHub.io - DBHub.io - - - - Local - Miejscowa - - - - Current Database - Bieżąca baza danych - - - - Clone - Powiel - - - - Branch - Gałąź - - - - Commits - Zmiany - - - - Commits for - Zmiany dla - - - - Delete Database - Usuń bazę danych - - - - Delete the local clone of this database - Usuń miejscową kopię tej bazy danych - - - - Open in Web Browser - Otwórz w przeglądarce sieciowej - - - - Open the web page for the current database in your browser - Otwórz stronę sieciową bieżącej bazy danych w swojej przeglądarce - - - - Clone from Link - Powiel z odnośnika - - - - Use this to download a remote database for local editing using a URL as provided on the web page of the database. - Użyj tego, aby pobrać zdalną bazę danych do miejscowego edytowania przy użyciu adresu URL podanego na stronie sieciowej bazy danych. - - - - Refresh - Odśwież - - - - Reload all data and update the views - Wczytaj ponownie wszystkie dane i uaktualnij widoki - - - - Clone Database - Powiel bazę danych - - - - Open Database - Otwórz bazę danych - - - - Open the local copy of this database - Otwórz miejscową kopię bazy danych - - - - Check out Commit - Ustaw na zmianie - - - - Download and open this specific commit - Pobierz i otwórz daną zmianę - - - - Check out Latest Commit - Sprawdź ostatnie zmiany - - - - Check out the latest commit of the current branch - Sprawdź ostatnią zmianę w bieżącej gałęzi - - - - Save Revision to File - Zapisz wersję do pliku - - - - Saves the selected revision of the database to another file - Zapisuje wybraną wersję bazy danych do innego pliku - - - - Upload Database - Wyślij bazę danych - - - - Upload this database as a new commit - Wyślij tę bazę danych jako nową zmianę - - - - <html><head/><body><p>You are currently using a built-in, read-only identity. For uploading your database, you need to configure and use your DBHub.io account.</p><p>No DBHub.io account yet? <a href="https://dbhub.io/"><span style=" text-decoration: underline; color:#007af4;">Create one now</span></a> and import your certificate <a href="#preferences"><span style=" text-decoration: underline; color:#007af4;">here</span></a> to share your databases.</p><p>For online help visit <a href="https://dbhub.io/about"><span style=" text-decoration: underline; color:#007af4;">here</span></a>.</p></body></html> - <html><head/><body><p>Obecnie używasz wbudowanej tożsamości, która jest tylko do odczytu. Aby wysłać bazę danych musisz posłużyć się kontem z DBHub.io.</p><p>Nie masz jeszcze konta DBHub.io? <a href="https://dbhub.io/"><span style=" text-decoration: underline; color:#007af4;">Utwórz je teraz</span></a> i zaimportuj swój certyfikat<a href="#preferences"><span style=" text-decoration: underline; color:#007af4;">tutaj</span></a>, aby móc dzielić się swoimi bazami danych.</p><p>Aby uzyskać pomoc w sieci, zajrzyj <a href="https://dbhub.io/about"><span style=" text-decoration: underline; color:#007af4;">tutaj</span></a>.</p></body></html> - - - - <html><head/><body><p>In this pane, remote databases from dbhub.io website can be added to DB Browser for SQLite. First you need an identity:</p><ol style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Login to the dbhub.io website (use your GitHub credentials or whatever you want)</li><li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click the button to &quot;Generate client certificate&quot; (that's your identity). That'll give you a certificate file (save it to your local disk).</li><li style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Go to the Remote tab in DB Browser for SQLite Preferences. Click the button to add a new certificate to DB Browser for SQLite and choose the just downloaded certificate file.</li></ol><p>Now the Remote panel shows your identity and you can add remote databases.</p></body></html> - <html><head/><body><p>W tym panelu można dodać zdalne bazy danych ze strony sieciowej dbhub.io do Przeglądarki Baz Danych SQLite. Jednak najpierw potrzebujesz swojej tożsamości:</p><ol style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Wejdź na stronę sieciową dbhub.io (użyj swoich danych dostępowych z GitHuba lub dowolnych innych)</li><li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Naciśnij przycisk &quot;Utwórz certyfikat klienta&quot; (oto i ta tożsamość, której potrzebujesz). Dostaniesz plik certyfikatu (zapisz go na swój dysk).</li><li style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Przejdź do karty Zdalnych w Przeglądarce Baz Danych SQLite i wskaż co dopiero pobrany plik certyfikatu.</li></ol><p>Od teraz panel Zdalnych będzie pokazywał twoją tożsamość, a ty będziesz mógł dodawać zdalne bazy danych.</p></body></html> + + <html><head/><body><p>In this pane, remote databases from dbhub.io website can be added to DB Browser for SQLite. First you need an identity:</p><ol style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Login to the dbhub.io website (use your GitHub credentials or whatever you want)</li><li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click the button to &quot;Generate client certificate&quot; (that's your identity). That'll give you a certificate file (save it to your local disk).</li><li style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Go to the Remote tab in DB Browser for SQLite Preferences. Click the button to add a new certificate to DB Browser for SQLite and choose the just downloaded certificate file.</li></ol><p>Now the Remote panel shows your identity and you can add remote databases.</p></body></html> + <html><head/><body><p>W tym panelu można dodać zdalne bazy danych ze strony sieciowej dbhub.io do Przeglądarki Baz Danych SQLite. Jednak najpierw potrzebujesz swojej tożsamości:</p><ol style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Wejdź na stronę sieciową dbhub.io (użyj swoich danych dostępowych z GitHuba lub dowolnych innych)</li><li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Naciśnij przycisk &quot;Utwórz certyfikat klienta&quot; (oto i ta tożsamość, której potrzebujesz). Dostaniesz plik certyfikatu (zapisz go na swój dysk).</li><li style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Przejdź do karty Zdalnych w Przeglądarce Baz Danych SQLite i wskaż co dopiero pobrany plik certyfikatu.</li></ol><p>Od teraz panel Zdalnych będzie pokazywał twoją tożsamość, a ty będziesz mógł dodawać zdalne bazy danych.</p></body></html> @@ -7841,26 +6423,26 @@ Are you sure you want to proceed? Wpisz hasło dla certyfikatu tego klienta, aby się uwierzytelnić. - + Cancel Zaniechaj - + Uploading remote database to %1 Wysyłanie zdalnej bazy danych do %1 - + Downloading remote database from %1 Pobieranie zdalnej bazy danych z %1 - + Error: Cannot open the file for sending. Błąd: Nie można otworzyć pliku do wysłania. @@ -8598,32 +7180,32 @@ elementu w grupie, a wiersze-partycji to liczba wierszy w partycji.wczytywanie... - + References %1(%2) Hold %3Shift and click to jump there Odwołania %1(%2) Przyciśnij %3Shift i kliknij, aby tu przejść - + Error changing data: %1 Wystąpił błąd podczas zmiany danych: %1 - + retrieving list of columns uzyskiwanie listy kolumn - + Fetching data... Uzyskiwanie danych… - - + + Cancel Zaniechaj @@ -8960,12 +7542,12 @@ Przyciśnij %3Shift i kliknij, aby tu przejść - <html><head/><body><p>This button creates a new record in the database. Hold the mouse button to open a pop-up menu of different options:</p><ul><li><span style=" font-weight:600;">New Record</span>: insert a new record with default values in the database.</li><li><span style=" font-weight:600;">Insert Values...</span>: open a dialog for entering values before they are inserted in the database. This allows to enter values acomplishing the different constraints. This dialog is also open if the <span style=" font-weight:600;">New Record</span> option fails due to these constraints.</li></ul></body></html> + <html><head/><body><p>This button creates a new record in the database. Hold the mouse button to open a pop-up menu of different options:</p><ul><li><span style=" font-weight:600;">New Record</span>: insert a new record with default values in the database.</li><li><span style=" font-weight:600;">Insert Values...</span>: open a dialog for entering values before they are inserted in the database. This allows to enter values accomplishing the different constraints. This dialog is also open if the <span style=" font-weight:600;">New Record</span> option fails due to these constraints.</li></ul></body></html> <html><head/><body><p>Ten przycisk tworzy nowy rekord w bazie danych. Przyciśnij przycisk myszy, aby otworzyć menu podręczne z różnymi ustawieniami:</p><ul><li><span style=" font-weight:600;">Nowy rekord</span>: wstawia nowy rekord o domyślnych wartościach do bazy danych.</li><li><span style=" font-weight:600;">Wstaw wartości...</span>: otwiera okno dialogowe do wpisywania wartości przed ich wstawieniem do bazy danych. Umożliwia to wpisanie wartości przy zachowaniu różnych ograniczeń. To okno dialogowe jest także otwarte, gdy nie powiedzie się wykonanie polecenia <span style=" font-weight:600;">Nowy rekord</span> ze względu na te ograniczenia .</li></ul></body></html> - + Delete Record Usuń rekord @@ -9042,7 +7624,7 @@ Przyciśnij %3Shift i kliknij, aby tu przejść - <html><head/><body><p>This popup menu provides the following options applying to the currently browsed and filtered table:</p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Export to CSV: this option exports the data of the browsed table as currently displayed (after filters, display formats and order column) to a CSV file.</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Save as view: this option saves the current setting of the browsed table (filters, display formats and order column) as an SQL view that you can later browse or use in SQL statements.</li></ul></body></html> + <html><head/><body><p>This pop-up menu provides the following options applying to the currently browsed and filtered table:</p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Export to CSV: this option exports the data of the browsed table as currently displayed (after filters, display formats and order column) to a CSV file.</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Save as view: this option saves the current setting of the browsed table (filters, display formats and order column) as an SQL view that you can later browse or use in SQL statements.</li></ul></body></html> <html><head/><body><p>To menu podręczne zawiera następujące ustawienie stosujące się do obecnie oglądanej i filtrowanej tabeli:</p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Eksportuj do CSV: eksportuje dane oglądanej tabeli tak jak jest obecnie wyświetlana (po filtrach, z formatami wyświetlania i kolejnością kolumn) do pliku CSV.</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Zapisz jako widok: zapisuje bieżące ustawienia oglądanej tabeli (filtry, formaty wyświetlania i kolejność kolumn) jako widok SQL, który można później przeglądać lub wstawić do polecenia SQL.</li></ul></body></html> @@ -9067,7 +7649,7 @@ Przyciśnij %3Shift i kliknij, aby tu przejść - + Set encoding Ustaw kodowanie @@ -9334,96 +7916,96 @@ Przyciśnij %3Shift i kliknij, aby tu przejść . Suma: %1; Średnia: %2; Min: %3; Maks: %4 - + Conditional formats for "%1" Formatowania warunkowe dla "%1" - + determining row count... określanie liczby wierszy… - + %L1 - %L2 of >= %L3 %L1 - %L2 z >= %L3 - + %L1 - %L2 of %L3 %L1 - %L2 z %L3 - + (clipped at %L1 rows) (przycięta na %L1 wirszach) - + Please enter a pseudo-primary key in order to enable editing on this view. This should be the name of a unique column in the view. Podaj pseudo-główny klucz, aby rozpocząć edytowanie w tym widoku. Powinna to być nazwa niepowtarzalnej kolumny w widoku. - + Delete Records Usuń rekordy - + Duplicate records Powielone rekordy - + Duplicate record Powiel rekord - + Ctrl+" Ctrl+" - + Adjust rows to contents Dostosuj wiersze do treści - + Error deleting record: %1 Błąd usuwania rekordu: %1 - + Please select a record first Najpierw wybierz rekord - + Please choose a new encoding for all tables. Wybierz nowe kodowanie dla wszystkich tabel. - + Please choose a new encoding for this table. Wybierz kodowanie dla tej tabeli. - + %1 Leave the field empty for using the database encoding. %1 Pozostaw pole pustym, aby użyć kodowania bazy danych. - + This encoding is either not valid or not supported. To kodowanie jest nieprawidłowe lub nieobsługiwane. - + %1 replacement(s) made. Wykonano %1 zastąpień. @@ -9451,24 +8033,6 @@ Pozostaw pole pustym, aby użyć kodowania bazy danych. Nadaj nową nazwę dla przeglądarki danych. Użyj znaku '&&', aby móc użyć następującego znaku jako skrótu klawiszowego. - - UndoStack - - - Inserting %1 bytes - - - - - Delete %1 chars - - - - - Overwrite %1 chars - - - VacuumDialog diff --git a/src/translations/sqlb_pt_BR.ts b/src/translations/sqlb_pt_BR.ts index 33bfb7fce..1c91864b5 100644 --- a/src/translations/sqlb_pt_BR.ts +++ b/src/translations/sqlb_pt_BR.ts @@ -15,7 +15,7 @@ - <html><head/><body><p>DB Browser for SQLite is an open source, freeware visual tool used to create, design and edit SQLite database files.</p><p>It is bi-licensed under the Mozilla Public License Version 2, as well as the GNU General Public License Version 3 or later. You can modify or redistribute it under the conditions of these licenses.</p><p>See <a href="https://www.gnu.org/licenses/gpl.html"><span style=" text-decoration: underline; color:#0000ff;">http://www.gnu.org/licenses/gpl.html</span></a> and <a href="https://www.mozilla.org/MPL/2.0/index.txt"><span style=" text-decoration: underline; color:#0000ff;">https://www.mozilla.org/MPL/2.0/index.txt</span></a> for details.</p><p>For more information on this program please visit our website at: <a href="https://sqlitebrowser.org"><span style=" text-decoration: underline; color:#0000ff;">http://sqlitebrowser.org</span></a></p><p><span style=" font-size:small;">This software uses the GPL/LGPL Qt Toolkit from </span><a href="http://qt-project.org/"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://qt-project.org/</span></a><span style=" font-size:small;"><br/>See </span><a href="https://doc.qt.io/qt-5/licensing.html"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://qt-project.org/doc/qt-5/licensing.html</span></a><span style=" font-size:small;"> for licensing terms and information.</span></p><p><span style=" font-size:8pt;">We use the nalgeon/sqlean library for SQLite extensions support.<br/>This library is licensed under the MIT license, see the following for more information:<br/></span><a href="https://github.com/nalgeon/sqlean"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">https://github.com/nalgeon/sqlean</span></a></p><p><span style=" font-size:small;">It also uses the Pastel SVG icon set by Michael Buckley under a Creative Commons Attribution Share Alike 4.0 license.<br/>See </span><a href="https://codefisher.org/pastel-svg/"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://codefisher.org/pastel-svg/</span></a><span style=" font-size:small;"> for details.</span></p></body></html> + <html><head/><body><p>DB Browser for SQLite is an open source, freeware visual tool used to create, design and edit SQLite database files.</p><p>It is bi-licensed under the Mozilla Public License Version 2, as well as the GNU General Public License Version 3 or later. You can modify or redistribute it under the conditions of these licenses.</p><p>See <a href="https://www.gnu.org/licenses/gpl.html"><span style=" text-decoration: underline; color:#0000ff;">https://www.gnu.org/licenses/gpl.html</span></a> and <a href="https://www.mozilla.org/MPL/2.0/index.txt"><span style=" text-decoration: underline; color:#0000ff;">https://www.mozilla.org/MPL/2.0/index.txt</span></a> for details.</p><p>For more information on this program please visit our website at: <a href="https://sqlitebrowser.org"><span style=" text-decoration: underline; color:#0000ff;">https://sqlitebrowser.org</span></a></p><p><span style=" font-size:small;">This software uses the GPL/LGPL Qt Toolkit from </span><a href="https://qt-project.org/"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://qt-project.org/</span></a><span style=" font-size:small;"><br/>See </span><a href="https://doc.qt.io/qt-5/licensing.html"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://doc.qt.io/qt-5/licensing.html</span></a><span style=" font-size:small;"> for licensing terms and information.</span></p><p><span style=" font-size:8pt;">We use the nalgeon/sqlean library for SQLite extensions support.<br/>This library is licensed under the MIT license, see the following for more information:<br/></span><a href="https://github.com/nalgeon/sqlean"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">https://github.com/nalgeon/sqlean</span></a></p><p><span style=" font-size:small;">It also uses the Pastel SVG icon set by Michael Buckley under a Creative Commons Attribution Share Alike 4.0 license.<br/>See </span><a href="https://codefisher.org/pastel-svg/"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://codefisher.org/pastel-svg/</span></a><span style=" font-size:small;"> for details.</span></p></body></html> @@ -285,36 +285,36 @@ - Invalid option/non-existant file: %1 + Invalid option/non-existent file: %1 Opção inválida/arquivo inexistente: %1 - + SQLite Version Versão do SQLite - + SQLCipher Version %1 (based on SQLite %2) SQLCipher versão %1 (baseado em SQLite %2) - + DB Browser for SQLite Version %1. - + Last commit hash when built: %1 - + Built for %1, running on %2 Compilado para %1, rodando em %2 - + Qt Version %1 @@ -377,14 +377,14 @@ Tamanho do cabeçalho de texto - + Please enter the key used to encrypt the database. If any of the other settings were altered for this database file you need to provide this information as well. Por favor, entre a chave usada para encriptar o banco de dados. Se quaisquer das outras configurações foram alteradas você terá de prover essas informações também. - + Please set a key to encrypt the database. Note that if you change any of the other, optional, settings you'll need to re-enter them as well every time you open the database file. Leave the password fields empty to disable the encryption. @@ -428,72 +428,72 @@ O processo de encriptação pode demorar alguns minutos e você deve ter um back Escolha um formato de exibição para a coluna '%1' que será aplicado a cada valor antes de exibí-lo. - + Default Padrão - + Decimal number Número decimal - + Exponent notation Notação exponencial - + Hex blob BLOB hexadecimal - + Hex number Número hexadecimal - + .NET DateTime.Ticks to date - + Julian day to date Dia juliano para data - + WebKit / Chromium epoch to date - + WebKit / Chromium epoch to local time - + Lower case Caixa baixa - + Binary GUID to text - + SpatiaLite Geometry to SVG - + Custom display format must contain a function call applied to %1 Formato de exibição customizado precisa conter uma função aplicada a %1 - + Error in custom display format. Message from database engine: %1 @@ -502,57 +502,57 @@ O processo de encriptação pode demorar alguns minutos e você deve ter um back %1 - + Custom display format must return only one column but it returned %1. Formato de exibição customizado precisa retornar apenas uma coluna mas retornou %1. - + Octal number Octal - + Round number Número arredondado - + Unix epoch to date Era unix para data - + Upper case Caixa alta - + Windows DATE to date DATE do Windows para data - + Custom Personalizado - + Apple NSDate to date NSDate da Apple para date - + Java epoch (milliseconds) to date Época Java (ms) para data - + Unix epoch to local time Época Unix para tempo local - + Date as dd/mm/yyyy Data como dd/mm/yyyy @@ -679,38 +679,38 @@ O processo de encriptação pode demorar alguns minutos e você deve ter um back DBBrowserDB - + Please specify the database name under which you want to access the attached database Por favor, especifique o nome do banco de dados sob o qual você quer acessar o banco de dados anexado - + Do you want to save the changes made to the database file %1? Você quer salvar as alterações feitas ao arquivo de banco de dados %1? - + Exporting database to SQL file... Exportando banco de dados para arquivo SQL... - - + + Cancel Cancelar - + Executing SQL... Executando SQL... - + Action cancelled. Ação cancelada. - + Restoring some of the objects associated with this table failed. This is most likely because some column names changed. Here's the SQL statement which you might want to fix and execute manually: @@ -719,155 +719,155 @@ O processo de encriptação pode demorar alguns minutos e você deve ter um back - + Error setting pragma %1 to %2: %3 Erro definindo pragma %1 para %2: %3 - + File not found. Arquivo não encontrado. - + Invalid file format Formato de arquivo inválido - - + + Error in statement #%1: %2. Aborting execution%3. Erro no comando #%1: %2. Aborting execution%3. - - + + and rolling back e revertendo - + Cannot set data on this object Não se pode definir dados nesse objeto - + Error loading built-in extension: %1 - + could not get column information não pôde obter informação sobre a coluna - + Do you really want to close this temporary database? All data will be lost. Você realmente quer fechar esse banco de dados temporário? Todos os dados serão perdidos. - + Database didn't close correctly, probably still busy A base de dados não fechou corretamente, provavelmente ainda ocupada - + Cannot open destination file: '%1' - - + + Cannot backup to file: '%1'. Message: %2 - + The database is currently busy: O banco de dados está ocupado: - + Do you want to abort that other operation? Você quer abortar a outra operação? - - + + No database file opened Não há um arquivo de banco de dados aberto - + didn't receive any output from %1 não recebeu nenhuma saída de %1 - + could not execute command: %1 não pode executar comando: %1 - + Cannot delete this object Não pode deletar esse objeto - - + + A table with the name '%1' already exists in schema '%2'. Uma tabela com o nome '%1' já existe no esquema '%2'. - + No table with name '%1' exists in schema '%2'. Nem uma tabela chamada '%1' existe no esquema '%2'. - - + + Cannot find column %1. Não pode encontrar coluna %1. - + Creating savepoint failed. DB says: %1 Criação de savepoint falhou. BD diz: %1 - + Renaming the column failed. DB says: %1 Renomeação de coluna falhou. BD diz: %1 - - + + Releasing savepoint failed. DB says: %1 Liberação de savepoint falhou. BD diz: %1 - + Creating new table failed. DB says: %1 Criação de tabela falhou. BD diz: %1 - + Copying data to new table failed. DB says: %1 Cópia de dados para uma nova tabela falhou. BD diz: %1 - + Deleting old table failed. DB says: %1 Deletando tabela antiga falhou. BD diz: %1 - + Error renaming table '%1' to '%2'. Message from database engine: %3 @@ -876,17 +876,17 @@ Mensagem da engine do banco de dados: %3 - + could not get list of db objects: %1 não conseguiu listar objetos da BD: %1 - + could not get list of databases: %1 não pôde obter a lista de bancos de dados: %1 - + Error loading extension: %1 Erro carregado extensão: %1 @@ -1947,7 +1947,7 @@ Todos os dados atualmente armazenados nesse campo serão perdidos. ExtendedScintilla - + Ctrl+H @@ -1958,22 +1958,22 @@ Todos os dados atualmente armazenados nesse campo serão perdidos. - + Ctrl+P - + Find... Encontrar... - + Find and Replace... Encontrar e substituir... - + Print... Imprimir... @@ -1981,129 +1981,129 @@ Todos os dados atualmente armazenados nesse campo serão perdidos. ExtendedTableWidget - + Set to NULL Definir como NULL - + Copy Copiar - + Paste Colar - + The content of the clipboard is bigger than the range selected. Do you want to insert it anyway? O conteúdo da área de transferência é maior do que o intervalo selecionado. Deseja inserir mesmo assim? - + Use as Exact Filter Usar como filtro exato - + Containing Contendo - + Not containing Não contendo - + Not equal to Diferente de - + Greater than Maior que - + Less than Menor que - + Greater or equal Maior ou igual a - + Less or equal Menor ou igual a - + Between this and... Entre isso e... - + Regular expression Expressão regular - + Edit Conditional Formats... Editar formatos condicionais... - + Cut - + Copy with Headers Copiar com cabeçalhos - + Copy as SQL Copiar como SQL - + Print... Imprimir... - + Use in Filter Expression Usar na expressão de filtro - + Alt+Del - + Ctrl+Shift+C - + Ctrl+Alt+C - + <p>Not all data has been loaded. <b>Do you want to load all data before selecting all the rows?</b><p><p>Answering <b>No</b> means that no more data will be loaded and the selection will not be performed.<br/>Answering <b>Yes</b> might take some time while the data is loaded but the selection will be complete.</p>Warning: Loading all the data might require a great amount of memory for big tables. <p>Nem todos os dados foram carregados. <b>Você quer carregar todos os dados antes de selecionar todas as linhas?</b><p><p>Respondendo <b>Não</b> significa que mais dados não serão carregados e a seleção não será executada.<br/>Respondendo <b>Sim</b> pode levar algum tempo enquanto os dados são carregados mas a seleção será incompleta.</p>Aviso: carregar todos os dados pode exigir uma grande quantidade de memória para tabelas grandes. - + Cannot set selection to NULL. Column %1 has a NOT NULL constraint. Não é possível definir a seleção como NULL. Coluna %1 tem uma restrição de nulidade. @@ -2155,12 +2155,12 @@ Deseja inserir mesmo assim? FilterLineEdit - + Filter Filtro - + These input fields allow you to perform quick filters in the currently selected table. By default, the rows containing the input text are filtered out. The following operators are also supported: @@ -2187,92 +2187,92 @@ x~y Intervalo: valores entre x e y /regexp/ Valores satisfazendo a expressão regular - + Clear All Conditional Formats Limpar todos os formatos condicionais - + Use for Conditional Format Usar para formato condicional - + Edit Conditional Formats... Editar formatos condicionais... - + Set Filter Expression Definir expressão de filtro - + What's This? O que é isso? - + Is NULL É NULL - + Is not NULL Não é NULL - + Is empty É vazio - + Is not empty Não é vazio - + Not containing... Não contendo... - + Equal to... Igual a... - + Not equal to... Diferente de... - + Greater than... Maior que... - + Less than... Menor que... - + Greater or equal... Maior ou igual... - + Less or equal... Menor ou igual... - + In range... No intervalo... - + Regular expression... Expressão regular... @@ -2490,7 +2490,7 @@ x~y Intervalo: valores entre x e y - + Tab Tab @@ -2557,17 +2557,17 @@ x~y Intervalo: valores entre x e y Trim fields? - + Creating restore point failed: %1 Criação de ponto de restauração falhou: %1 - + Creating the table failed: %1 Criação de tabela falhou: %1 - + Inserting row failed: %1 Inserir linha falhou: %1 @@ -2613,7 +2613,7 @@ x~y Intervalo: valores entre x e y - + Deselect All Limpar seleção @@ -2623,7 +2623,7 @@ x~y Intervalo: valores entre x e y Detectar similares - + Select All Selecionar tudo @@ -2668,32 +2668,32 @@ x~y Intervalo: valores entre x e y Desativa a detecção automática de tipo de dados quando criando uma nova tabela. - + There is already a table named '%1' and an import into an existing table is only possible if the number of columns match. Já existe uma tabela chamada '%1' e uma importação em uma tabela existente só é possível se o número de colunas bate. - + There is already a table named '%1'. Do you want to import the data into it? Já existe uma tabela chamada '%1'. Você quer importar os dados nela? - + importing CSV Importando CSV - + Could not prepare INSERT statement: %1 - + Unexpected end of file. Please make sure that you have configured the correct quote characters and the file is not malformed. - + Importing the file '%1' took %2ms. Of this %3ms were spent in the row function. Importando o arquivo '%1' levou %2 ms. Desses, %3 ms foram gastos na função da linha. @@ -2706,528 +2706,528 @@ x~y Intervalo: valores entre x e y DB Browser para SQLite - + toolBar1 toolBar1 - + &File &Arquivo - + &Import &Importar - + &Export E&xportar - + &Edit &Editar - + &View &Exibir - + &Help A&juda - + DB Toolbar Barra de ferramentas do banco de dados - + User Usuário - + Application Aplicativo - + &Clear &Limpar - + &New Database... &Novo banco de dados... - - + + Create a new database file Criar um novo arquivo de banco de dados - + This option is used to create a new database file. Essa opção e utilizada para criar um novo arquivo de banco de dados. - + Ctrl+N - - + + &Open Database... &Abrir banco de dados... - - - - - + + + + + Open an existing database file Abre um arquivo de banco de dados existente - - - + + + This option is used to open an existing database file. Esta opção abre um arquivo de banco de dados existente. - + Ctrl+O - + &Close Database &Fechar banco de dados - - + + Ctrl+W - - + + Revert database to last saved state Reverter banco de dados para o último estado salvo - + This option is used to revert the current database file to its last saved state. All changes made since the last save operation are lost. Essa opção é usada para reverter o atual arquivo de banco de dados para seu último estado salvo. Todas as modificações feitas desde a última operação de salvamento são perdidas. - - + + Write changes to the database file Salva modificações para o arquivo de banco de dados - + This option is used to save changes to the database file. Essa opção é usada para salvar modificações para o arquivo de banco de dados. - + Ctrl+S - + Compact the database file, removing space wasted by deleted records Compactar o arquivo do banco de dados, removendo espaço desperdiçado por registros deletados - - + + Compact the database file, removing space wasted by deleted records. Compactar o arquivo do banco de dados, removendo espaço desperdiçado por registros deletados. - + E&xit &Sair - + Ctrl+Q - + Import data from an .sql dump text file into a new or existing database. Importar dados de um arquivo de texto .sql em um banco de dados. - + This option lets you import data from an .sql dump text file into a new or existing database. SQL dump files can be created on most database engines, including MySQL and PostgreSQL. Essa opção deixa você importar dados de um arquivo SQL em um banco de dados. Arquivos de SQL podem ser criados na maioria dos bancos de dados, como MySQL e PostgreSQL. - + Open a wizard that lets you import data from a comma separated text file into a database table. Abre um assistente que permite você importar dados de um arquivo CSV em uma tabela de banco de dados. - + Open a wizard that lets you import data from a comma separated text file into a database table. CSV files can be created on most database and spreadsheet applications. Abre um assistente que permite você importar dados de um arquivo CSV em uma tabela de banco de dados. Arquivos CSV podem ser criados pela maioria dos programas de banco de dados e planilhas. - + Export a database to a .sql dump text file. Exportar o banco de dados para um arquivo de texto .sql. - + This option lets you export a database to a .sql dump text file. SQL dump files contain all data necessary to recreate the database on most database engines, including MySQL and PostgreSQL. Essa opção permite você exportar um banco de dados para um arquivo de texto .sql. Arquivos de despejo SQL contêm todos os dados necessários para recriar o banco de dados na maioria dos motores de banco de dados, incluindo MySQL e PostgreSQL. - + Export a database table as a comma separated text file. Exportar uma tabela de banco de dados como um arquivo CSV. - + Export a database table as a comma separated text file, ready to be imported into other database or spreadsheet applications. Exportar uma tabela de banco de dados como um arquivo CSV, pronto para ser importado por outro banco de dados ou planilhas. - + Open the Create Table wizard, where it is possible to define the name and fields for a new table in the database Abre o assistente de criação de tabelas, em que é possível definir o nome e os campos para uma nova tabela no banco de dados - - + + Delete Table Deletar tabela - + Open the Delete Table wizard, where you can select a database table to be dropped. Abre o assistente de deleção de tabelas, em que você pode selecionar uma tabela para ser eliminada. - + Open the Create Index wizard, where it is possible to define a new index on an existing database table. Abre o assistente de criação de índice, em que é possível definir um novo índice em um tabela de banco de dados já existente. - + &Preferences... &Configurações... - - + + Open the preferences window. Abre a janela de configurações. - + &DB Toolbar Barra de ferramentas do banco de &dados - + Shows or hides the Database toolbar. Exibe ou oculta a barra de ferramentas do banco de dados. - + Shift+F1 - + &Recently opened &Recentemente aberto - + Ctrl+T - + &Execute SQL &Executar SQL - - - + + + Save SQL file Salvar arquivo SQL - - + + Execute current line Executar linha atual - + Ctrl+E - + Export as CSV file Exportar como arquivo CSV - + Export table as comma separated values file Exportar tabela como CSV - - + + Save the current session to a file Salvar a atual sessão para um arquivo - - + + Load a working session from a file Carregar uma sessão de um arquivo - - + + Save SQL file as Salvar arquivo SQL como - + &Browse Table &Navegar tabela - + Copy Create statement Copiar comando Create - + Copy the CREATE statement of the item to the clipboard Copia o comando CREATE do item para a área de transferência - + Ctrl+Return - + Ctrl+L - - + + Ctrl+P - + Ctrl+D - + Ctrl+I - + Reset Window Layout Resetar layout da janela - - The database is currenctly busy. + + The database is currently busy. O banco de dados está ocupado. - + Click here to interrupt the currently running query. Clique aqui para interromper a consulta atual. - + Database encoding Codificação do banco de dados - + Database is encrypted using SQLCipher Banco de dados encriptado usando SQLCipher - - + + Choose a database file Escolha um arquivo de banco de dados - - - + + + Choose a filename to save under Escolha um nome de arquivo para salvar - + Are you sure you want to undo all changes made to the database file '%1' since the last save? Você tem certeza de que deseja desfazer todas as modificações feitas no arquivo de banco de dados '%1' desde o último salvamento? - + Choose a file to import Escolha um arquivo para importar - + Text files(*.sql *.txt);;All files(*) Arquivos de texto(*.sql *.txt);;Todos os arquivos(*) - + Do you want to create a new database file to hold the imported data? If you answer no we will attempt to import the data in the SQL file to the current database. Você deseja criar um novo arquivo de banco de dados para armazenar os dados importados? Se você disser que não, tentaremos importar os dados do arquivo SQL para o banco de dados atual. - + Ctrl+Tab - + Ctrl+Shift+Tab - + Clear List - + Window Layout - + Ctrl+Alt+0 - + Simplify Window Layout - - Shift+Alt+0 + + Alt+Shift+0 - + Dock Windows at Bottom - + Dock Windows at Left Side - + Dock Windows at Top - + Ctrl+Alt+W - + Choose a database file to save under - + Error while saving the database to the new file. - + You are still executing SQL statements. Closing the database now will stop their execution, possibly leaving the database in an inconsistent state. Are you sure you want to close the database? Você ainda está executando comandos SQL. Fechar o banco de dados agora fará a execução parar, talvez deixando o banco de dados em um estado inconsistente. Você tem certeza de que deseja fechar o banco de dados? - + Do you want to save the changes made to the project file '%1'? Você quer salvar as modificações feitas para o arquivo de projeto '%1'? - + Result: %1 Resulto: %1 - + File %1 already exists. Please choose a different name. Arquivo %1 já existe. Por favor, escolha um nome diferente. - + Error importing data: %1 Erro importando dados: %1 - + Import completed. Importação completa. - + Delete View Deletar vista - + Delete Trigger Deletar gatilho - + Delete Index Deletar índice - + Select the action to apply to the dropped file(s). <br/>Note: only 'Import' will process more than one file. Note for translation: Although there is no %n in the original, you can use the numerus-form to adjust 'files(s)' and remove the note when n = 1. Including %n in the translation will also work. @@ -3236,200 +3236,200 @@ Se você disser que não, tentaremos importar os dados do arquivo SQL para o ban - + Setting PRAGMA values will commit your current transaction. Are you sure? Definir valores de PRAGMA vai cometer sua transação atual. Você tem certeza? - + Do you want to save the changes made to SQL tabs in the project file '%1'? Você quer salvar as mudanças feitas nas abas de SQL no arquivo de projeto '%1'? - + Select SQL file to open Selecione arquivo SQL para abrir - + Select file name Selecione o nome do arquivo - + Select extension file Selecione o arquivo de extensão - + Extension successfully loaded. Extensão carregada com sucesso. - + Error loading extension: %1 Erro carregado extensão: %1 - - + + Don't show again Não mostrar novamente - + New version available. Nova versão disponível. - + A new DB Browser for SQLite version is available (%1.%2.%3).<br/><br/>Please download at <a href='%4'>%4</a>. Uma nova vesão do DB Browser para SQLite está disponível (%1.%2.%3)<br/><br/>Por favor, baixe em <a href='%4'>%4</a>. - + DB Browser for SQLite project file (*.sqbpro) Arquivo de projeto DB Browser para SQLite (*.sqbpro) - + SQL &Log &Log do SQL - + Show S&QL submitted by Exibir S&QL enviado por - + &Plot &Plotar - + &Revert Changes &Reverter modificações - + &Write Changes &Escrever modificações - + &Database from SQL file... &Banco de dados a partir de arquivo SQL... - + &Table from CSV file... &Tabela a partir de arquivo CSV... - + &Database to SQL file... &Banco de dados para arquivo SQL... - + &Table(s) as CSV file... &Tabela para arquivo CSV... - + &Create Table... &Criar tabela... - + &Delete Table... &Deletar tabela... - + &Modify Table... &Modificar tabela... - + Create &Index... &Criar índice... - + W&hat's This? O &que é isso? - + Sa&ve Project &Salvar projeto - + Encrypted Encriptado - + Read only Somente leitura - + Database file is read only. Editing the database is disabled. Arquivo de banco de dados é somente leitura. Edição do banco de dados está desativada. - + Execution finished with errors. Execução finalizada com erros. - + Execution finished without errors. Execução finalizada sem erros. - + Edit Database &Cell Editar &célula do banco de dados - + DB Sche&ma Esque&ma do banco de dados - + Open SQL file(s) - + This button opens files containing SQL statements and loads them in new editor tabs - + Shift+F5 - + Opens the SQLCipher FAQ in a browser window Abre o FAQ do SQLCipher em uma janela do navegador - + Export one or more table(s) to a JSON file Exporta uma ou mais tabela(s) para um arquivo JSON - + Error while saving the database file. This means that not all changes to the database were saved. You need to resolve the following error first. %1 @@ -3438,49 +3438,49 @@ Você tem certeza? %1 - + &Remote &Remoto - + Open an existing database file in read only mode Abre um banco de dados existente em modo somente leitura - + Could not open database file. Reason: %1 Não pôde abrir arquivo do banco de dados. Motivo: %1 - + Choose text files Escolha arquivos de texto - + Modify View Modificar vista - + Modify Trigger Modificar gatilho - + Modify Index Modificar índice - + Modify Table Modificar tabela - + Setting PRAGMA values or vacuuming will commit your current transaction. Are you sure? Definir valores de PRAGMA ou fazer vacuum irá commitar sua transação atual. @@ -3496,32 +3496,191 @@ Você pode arrastar comandos SQL de uma linha e soltá-los em outras aplicaçõe - + + Temp Store + + + + + Secure Delete + + + + + Case Sensitive Like + + + + + Journal Mode + + + + + Journal Size Limit + + + + + Recursive Triggers + + + + + Page Size + + + + + Foreign Keys + + + + + Auto Vacuum + + + + + Max Page Count + + + + + Checkpoint Full FSYNC + + + + + + Off + + + + + + Normal + + + + + + Full + + + + + Default + + + + + File + Arquivo + + + + + Memory + + + + + Delete + + + + + Truncate + + + + + Persist + + + + + WAL + + + + + Exclusive + + + + + Automatic Index + + + + + Ignore Check Constraints + + + + + Full FSYNC + + + + + WAL Auto Checkpoint + + + + + User Version + + + + + Synchronous + + + + Warning: this pragma is not readable and this value has been inferred. Writing the pragma might overwrite a redefined LIKE provided by an SQLite extension. Alerta: esse pragma não é legível e esse valor foi inferido. Escrever o pragma pode sobrescrever um LIKE redefinido provido por uma extensão SQL. - + + None + Nenhum + + + + Incremental + + + + + Locking Mode + + + + Too&ls Ferr&amentas - + Error Log Log de erros - + This button clears the contents of the SQL logs Esse botão limpa os logs do SQL - + This panel lets you examine a log of all SQL commands issued by the application or by yourself Esse painel deixa você examinar um log de todos os comandos SQL dados pela aplicação ou por você - + This is the structure of the opened database. You can drag multiple object names from the Name column and drop them into the SQL editor and you can adjust the properties of the dropped names using the context menu. This would help you in composing SQL statements. You can drag SQL statements from the Schema column and drop them into the SQL editor or into other applications. @@ -3532,336 +3691,336 @@ Você pode arrastar comandos SQL da coluna Esquema e largá-los no editor SQL ou - - + + Project Toolbar Barra de ferramentas do projeto - + Extra DB toolbar Barra de ferramentas do banco de dados extra - - - + + + Close the current database file Fechar o arquivo de banco de dados aberto - + &New Database - + This button closes the connection to the currently open database file Esse botão fecha a conexão com o arquivo aberto - - + + Ctrl+F4 - + &Undo - - + + Undo last change to the database - + This action undoes the last change performed to the database in the Database Browser or in Execute SQL. Redoing is not possible. - + Compact &Database... Compactar banco de &dados... - + Open the Modify Table wizard, where it is possible to rename an existing table. It is also possible to add or delete fields from a table, as well as modify field names and types. - + &About &Sobre - + New &tab - + This button opens a new tab for the SQL editor Esse botão abre uma nova aba para o editor SQL - + Execute all/selected SQL Executar todo/selecionado SQL - + This button executes the currently selected SQL statements. If no text is selected, all SQL statements are executed. Esse botão executa o SQL selecionado. Se não existe SQL selecionado, todo o SQL é executado. - + Ctrl+Shift+T - + &Load Extension... &Carregar extensão... - + Execute line Executar linha - + This button executes the SQL statement present in the current editor line Esse botão executa o comando SQL presente na linha atual do editor - + &Wiki &Wiki - + F1 - + Bug &Report... &Reportar bug... - + Feature Re&quest... Re&quisitar feature... - + Web&site &Site - + &Donate on Patreon... &Doar no Patreon... - + &Save Project - + Open &Project... Abrir &projeto... - + Open &Project - + &Attach Database... &Anexar banco de dados... - - + + Add another database file to the current database connection Adiciona outro arquivo de banco de dados para a conexão atual - + This button lets you add another database file to the current database connection Esse botão deixa você adicionar outro banco de dados para a conexão atual com o banco de dados - + &Set Encryption... Definir en&criptação... - + This button saves the content of the current SQL editor tab to a file Esse botão salva o conteúdo do editor SQL para um arquivo - + SQLCipher &FAQ &FAQ do SQLCipher - + Table(&s) to JSON... Tabela(&s) para JSON... - + Open Data&base Read Only... Abrir &banco de dados somente leitura... - + Ctrl+Shift+O - + Save results Salvar resultados - + Save the results view Salvar a vista de resultados - + This button lets you save the results of the last executed query Esse botão deixa você salvar os resultados da última consulta executada - - + + Find text in SQL editor Encontrar texto no editor SQL - + Find Encontrar - + This button opens the search bar of the editor Esse botão abre a barra de busca do editor - + Ctrl+F - - + + Find or replace text in SQL editor Encontrar ou substituir texto no editor SQL - + Find or replace Encontrar ou substituir - + This button opens the find/replace dialog for the current editor tab Esse botão abre o diálogo de encontrar/substituir para a aba atual do editor - + Ctrl+H - + Export to &CSV Exportar para &CSV - + Export to &JSON - + Save as &view Salvar como &vista - + Save as view Salvar como vista - + Shows or hides the Project toolbar. Mostra ou oculta a barra de ferramentos do Projeto. - + Extra DB Toolbar Barra de ferramentas do banco de dados extra - - + + Ctrl+Shift+W - + Table from CSV data in Clipboard... - + This treats the current clipboard contents as a CSV file and opens the same import wizard that is used for importing CSV data from a file. - + Show &Row Counts - + This shows the number of rows for each table and view in the database. - + Save Database &As... - + Save the current database as a different file - + Refresh Atualizar - + Reload the database structure - + This button lets you save all the settings associated to the open DB to a DB Browser for SQLite project file Este botão lhe permite salvar todas as configurações associadas ao banco de dados aberto a um arquivo de projeto do DB Browser para SQLite @@ -3887,505 +4046,505 @@ Você pode arrastar comandos SQL da coluna Esquema e largá-los no editor SQL ou - - + + E&xecute SQL This has to be equal to the tab title in all the main tabs - + &Recent Files - + This button lets you open a DB Browser for SQLite project file Este botão lhe permite abrir um arquivo de projeto do DB Browser para SQLite - + &Open Database - + New In-&Memory Database Nova tabela em &memória - + Drag && Drop SELECT Query - - + + When dragging fields from the same table or a single table, drop a SELECT query into the editor - + Drag && Drop Qualified Names Arrastar e soltar nomes qualificados - - + + Use qualified names (e.g. "Table"."Field") when dragging the objects and dropping them into the editor Use nomes qualificados (p.e. "Tabela"."Campo") quando arrastando objetos e soltando eles no editor - + Drag && Drop Enquoted Names Arrastar e soltar nomes entre áspas - - + + Use escaped identifiers (e.g. "Table1") when dragging the objects and dropping them into the editor Use identificadores escapados (p.e. "Tabela1") quando arrastando e soltando objetos no editor - + &Integrity Check Teste de &integridade - + Runs the integrity_check pragma over the opened database and returns the results in the Execute SQL tab. This pragma does an integrity check of the entire database. Roda o teste de integridade sobre o banco de dados aberto e retorna os resultados na aba Executar SQL. - + &Foreign-Key Check Teste de chave &estrangeira - + Runs the foreign_key_check pragma over the opened database and returns the results in the Execute SQL tab Roda o teste de chave estrangeira sobre o banco de dados aberto e retorna os resultados na aba Executar SQL - + &Quick Integrity Check Teste de integridade &rápido - + Run a quick integrity check over the open DB Roda um teste de integridade rápido sobre o banco de dados aberto - + Runs the quick_check pragma over the opened database and returns the results in the Execute SQL tab. This command does most of the checking of PRAGMA integrity_check but runs much faster. Roda um outro pragma para a verificação de integridade do banco de dados. Faz quase tantos testes quando o outro PRAGMA mas executa muito mais rápido. - + &Optimize &Otimizar - + Attempt to optimize the database Tenta otimizar o banco de dados - + Runs the optimize pragma over the opened database. This pragma might perform optimizations that will improve the performance of future queries. Roda o pragma de otimização sobre o banco de dados aberto. Esse pragma pode realizar otimizações que vão melhorar a performance de consultas futuras. - - + + Print Imprimir - + Print text from current SQL editor tab Imprimir texto do editor SQL - + Open a dialog for printing the text in the current SQL editor tab Abre um diálogo para imprimir o texto na aba atual do editor SQL - + Print the structure of the opened database Imprime a estrutura do banco de dados aberto - + Open a dialog for printing the structure of the opened database Abre um diálogo para imprimir a estrutura do banco de dados aberto - + Un/comment block of SQL code Comentar bloco de SQL - + Un/comment block Comentar bloco - + Comment or uncomment current line or selected block of code Comentar ou remover comentário da linha ou bloco atualmente selecionado - + Comment or uncomment the selected lines or the current line, when there is no selection. All the block is toggled according to the first line. Comentar ou remover comentários das linhas selecionadas ou da linha atual, se não há seleção. Todo o bloco é alterado de acordo com a primeira linha. - + Ctrl+/ - + Stop SQL execution Parar execução do SQL - + Stop execution Parar execução - + Stop the currently running SQL script Parar o script de SQL atualmente executando - + &Save Project As... &Salvar projeto como... - - - + + + Save the project in a file selected in a dialog Salvar o projeto em um arquivo selecionado em um diálogo - + Save A&ll Salvar &todos - - - + + + Save DB file, project file and opened SQL files Salvar arquivo do BD, arquivo do projeto e arquivos SQL abertos - + Ctrl+Shift+S - + Browse Table Navegar tabelas - + Close Pro&ject - - + + Close project and database files and return to the initial state - + Ctrl+Shift+F4 - - + + Detach Database - - + + Detach database file attached to the current database connection - + In-Memory database Banco de dados em memória - + Are you sure you want to delete the table '%1'? All data associated with the table will be lost. Você tem certeza de que deseja deletar a tabela '%1'? Todos os dados associados com a tabela serão perdidos. - + Are you sure you want to delete the view '%1'? Você tem certeza que deseja deletar a vista '%1'? - + Are you sure you want to delete the trigger '%1'? Você tem certeza que deseja deletar o gatilho '%1'? - + Are you sure you want to delete the index '%1'? Você tem certeza que deseja deletar o índice '%1'? - + Error: could not delete the table. Erro: não pôde deletar a tabela. - + Error: could not delete the view. Erro: não pôde deletar a vista. - + Error: could not delete the trigger. Erro: não pôde deletar o gatilho. - + Error: could not delete the index. Erro: não pôde deletar o índice. - + Message from database engine: %1 Mensagem do banco de dados: %1 - + Editing the table requires to save all pending changes now. Are you sure you want to save the database? Editar a tabela requer salvar todas as mudanças pendentes agora. Você tem certeza que quer salvar o banco de dados? - + Edit View %1 - + Edit Trigger %1 - + You are already executing SQL statements. Do you want to stop them in order to execute the current statements instead? Note that this might leave the database in an inconsistent state. Você já está executando comandos SQL. Você quer pará-los para executar os comandos atuais? Fechar o banco de dados agora pode deixá-lo em um estado inconsistente. - + -- EXECUTING SELECTION IN '%1' -- -- EXECUTANDO SELEÇÃO EM '%1' -- - + -- EXECUTING LINE IN '%1' -- -- EXECUTANDO LINHA EM '%1' -- - + -- EXECUTING ALL IN '%1' -- -- EXECUTANDO TUDO EM '%1' -- - + Opened '%1' in read-only mode from recent file list - + Opened '%1' from recent file list - + The statements in the tab '%1' are still executing. Closing the tab will stop the execution. This might leave the database in an inconsistent state. Are you sure you want to close the tab? - + DB file '%1' could not be opened - + This project file is using an old file format because it was created using DB Browser for SQLite version 3.10 or lower. Loading this file format is no longer fully supported. If you want to load it completely, please use DB Browser for SQLite version 3.12 to convert it to the new file format. - + Table '%1' not found; settings ignored - + -- Reference to file "%1" (not supported by this version) -- - + Project saved to file '%1' Projeto salvo no arquivo '%1' - + Yes. Don't ask again - + This action will open a new SQL tab with the following statements for you to edit and run: - + Rename Tab Renomear aba - + Duplicate Tab Duplicar aba - + Close Tab Fechar aba - + Opening '%1'... Abrindo '%1'... - + There was an error opening '%1'... Houve um erro abrindo '%1'... - + Value is not a valid URL or filename: %1 Valor não é uma URL ou nome de arquivo válido: %1 - + %1 rows returned in %2ms %1 linhas retornadas em %2 ms - + Automatically load the last opened DB file at startup - - + + At line %1: Na linha %1: - + Result: %2 Resultado: %2 - + Import completed. Some foreign key constraints are violated. Please fix them before saving. Importação completa. Algumas chaves estrangeiras são violadas. Por favor corrija-as antes de salvar. - + &%1 %2%3 &%1 %2%3 - + (read only) (somente leitura) - + Open Database or Project Abrir banco de dados ou projeto - + Attach Database... Anexar banco de dados... - + Import CSV file(s)... Importar arquivo(s) CSV... - + Do you want to save the changes made to SQL tabs in a new project file? Você quer salvar as mudanças feitas nas abas de SQL no arquivo de projeto? - + Do you want to save the changes made to the SQL file %1? Você quer salvar as alterações feitas ao arquivo SQL %1? - + Could not find resource file: %1 Não pôde encontrar o arquivo de recursos: %1 - + Choose a project file to open Escolha um arquivo de projeto para abrir - + Could not open project file for writing. Reason: %1 Não pôde abrir arquivo de projeto para a escrita. Motivo: %1 - + Collation needed! Proceed? Função de comparação necessária! Proceder? - + A table in this database requires a special collation function '%1' that this application can't provide without further knowledge. If you choose to proceed, be aware bad things can happen to your database. Create a backup! @@ -4394,57 +4553,57 @@ So você optar por proceder, esteja avisado de que coisas ruins podem acontecer Faça um backup! - + creating collation criando função de comparação - + Set a new name for the SQL tab. Use the '&&' character to allow using the following character as a keyboard shortcut. Defina um novo nome para a aba de SQL. Use o caractere '&&' para poder usar o seguinte caractere como um atalho de teclado. - + Please specify the view name Por favor, especifique o nome da vista - + There is already an object with that name. Please choose a different name. Já existe um objeto com esse nome. Por favor, escolha um nome diferente. - + View successfully created. Vista criada com sucesso. - + Error creating view: %1 Erro criando vista: %1 - + This action will open a new SQL tab for running: Essa ação irá abrir uma nova aba SQL para rodar: - + Press Help for opening the corresponding SQLite reference page. Pressione Help para abrir a página de referência SQL correspondente. - + Busy (%1) Ocupado (%1) - + Error checking foreign keys after table modification. The changes will be reverted. Erro verificando as chaves estrangeiras após modificação. Mudanças serão revertidas. - + This table did not pass a foreign-key check.<br/>You should run 'Tools | Foreign-Key Check' and fix the reported issues. Essa tabela não passou um teste de chave estrangeira.<br/>Você deveria rodar 'Ferramentas | Teste de Chave Estrangeira| e corrigir os problemas reportados. @@ -4601,19 +4760,19 @@ Faça um backup! Salvar plotagem atual... - - - + + + Row # Coluna # - + Choose a filename to save under Escolha um nome de arquivo para salvar - + PNG(*.png);;JPG(*.jpg);;PDF(*.pdf);;BMP(*.bmp);;All Files(*) PNG(*.png);;JPG(*.jpg);;PDF(*.pdf);;BMP(*.bmp);;Todos os arquivos(*) @@ -4656,85 +4815,90 @@ Selecione os eixos ou rótulos dos eixos para arrastar e dar zoom somente naquel - + Load all data and redraw plot Carregar todos os dados e plotar de novo - + Copy Copiar - + + Help + + + + Show legend Mostrar legenda - + Stacked bars Barras empilhadas - + Fixed number format - + Date/Time Data/Hora - + Date Data - + Time Hora - - + + Numeric Numérico - + Label Rótulo - + Invalid Inválido - + Load all data and redraw plot. Warning: not all data has been fetched from the table yet due to the partial fetch mechanism. Carregar todos os dados e plotar de novo. Aviso: nem todos os dados foram obtidos da tabela ainda devido ao mecanismo de obtenção parcial. - + Choose an axis color Escolher a cor do eixo - + There are curves in this plot and the selected line style can only be applied to graphs sorted by X. Either sort the table or query by X to remove curves or select one of the styles supported by curves: None or Line. Existem curvas nesse gráfico e o estilo de linha selecionado só pode ser aplicado para gráficos ordenados por X. Ou ordene a tabela ou consulte por X para remover curvas ou selecione um dos estilos suportados por curvas: Nenhum ou Linha. - + Loading all remaining data for this table took %1ms. Carregar os dados restantes para essa tabela levou %1ms. - + Print... Imprimir... @@ -5516,1917 +5680,331 @@ Pode ser 0 para desabilitar preenchimento. - Close button on tabs - - - - - If enabled, SQL editor tabs will have a close button. In any case, you can use the contextual menu or the keyboard shortcut to close them. - - - - - Select built-in extensions to load for every database: - - - - - Proxy - Proxy - - - - Configure - Configurar - - - - Export Settings - - - - - Import Settings - - - - - Are you sure you want to clear all the saved settings? -All your preferences will be lost and default values will be used. - Você tem certeza que deseja limpar as configurações salvas? -Todas as suas preferências serão perdidas e os valores padrão serão utilizados. - - - - When enabled, the line breaks in the Schema column of the DB Structure tab, dock and printed output are removed. - Quando ativado, as quebras de linha na coluna Esquema da aba Estrutura do banco de dados e nas saídas impressas são removidas. - - - - <html><head/><body><p>SQLite provides an SQL function for loading extensions from a shared library file. Activate this if you want to use the <span style=" font-style:italic;">load_extension()</span> function from SQL code.</p><p>For security reasons, extension loading is turned off by default and must be enabled through this setting. You can always load extensions through the GUI, even though this option is disabled.</p></body></html> - <html><head/><body><p>SQLite provê uma função SQL para carregar extensões de um arquivo de biblioteca. Ative isso se você quer usar a função <span style=" font-style:italic;">load_extension()</span> a partir de código SQL.</p><p>Por motivos de segurança, carregamento de extensões é desabilitado por padrão e precisa ser habilitado através dessa configuração. Você sempre pode carregar extensões através da interface gráfica, mesmo com essa opção desabilitada.</p></body></html> - - - - Allow loading extensions from SQL code - Permitir o carregamento de extensões a partir de código SQL - - - - ProxyDialog - - - Proxy Configuration - Configuração do proxy - - - - Pro&xy Type - Tipo do pro&xy - - - - Host Na&me - No&me do host - - - - Port - Porta - - - - Authentication Re&quired - Au&tenticação necessária - - - - &User Name - Nome do &usuário - - - - Password - Senha - - - - None - Nenhum - - - - System settings - Configurações do sistema - - - - HTTP - HTTP - - - - Socks v5 - Socks v5 - - - - QObject - - - Error importing data - Erro importando dados - - - - from record number %1 - a partir de registro número %1 - - - - . -%1 - . -%1 - - - - Cancel - Cancelar - - - - All files (*) - Todos arquivos (*) - - - - Importing CSV file... - Importando arquivo CSV... - - - - SQLite database files (*.db *.sqlite *.sqlite3 *.db3) - Bancos de dados SQLite (*.db *.sqlite *.sqlite3 *.db3) - - - - Left - Esquerda - - - - Right - Direita - - - - Center - Centro - - - - Justify - Justificar - - - - SQLite Database Files (*.db *.sqlite *.sqlite3 *.db3) - Arquivos de banco de dados SQL (*.db *.sqlite *.sqlite3 *.db3) - - - - DB Browser for SQLite Project Files (*.sqbpro) - Arquivo de projeto DB Browser para SQLite (*.sqbpro) - - - - SQL Files (*.sql) - Arquivos SQL (*.sql) - - - - All Files (*) - Todos arquivos (*) - - - - Text Files (*.txt) - Arquivos de texto (*.txt) - - - - Comma-Separated Values Files (*.csv) - Arquivos de valores separados por vírgulas (*.csv) - - - - Tab-Separated Values Files (*.tsv) - Arquivos de valores separados por tabs (*.tsv) - - - - Delimiter-Separated Values Files (*.dsv) - Arquivos de valores separados por delimitadores (*.dsv) - - - - Concordance DAT files (*.dat) - Arquivos DAT Concordance (*.dat) - - - - JSON Files (*.json *.js) - Arquivos JSON (*.json) - - - - XML Files (*.xml) - Arquivos XML (*.xml) - - - - Binary Files (*.bin *.dat) - Arquivos binários (*.bin) - - - - SVG Files (*.svg) - Arquivos SVG (*.svg) - - - - Hex Dump Files (*.dat *.bin) - Arquivos de dump hexadecimal (*.dat *.bin) - - - - Extensions (*.so *.dylib *.dll) - Extensões (*.so *.dylib *.dll) - - - - Initialization File (*.ini) - - - - - QsciCommand - - - Move down one line - - - - - Extend selection down one line - - - - - Extend rectangular selection down one line - - - - - Scroll view down one line - - - - - Move up one line - - - - - Extend selection up one line - - - - - Extend rectangular selection up one line - - - - - Scroll view up one line - - - - - Scroll to start of document - - - - - Scroll to end of document - - - - - Scroll vertically to centre current line - - - - - Move down one paragraph - - - - - Extend selection down one paragraph - - - - - Move up one paragraph - - - - - Extend selection up one paragraph - - - - - Move left one character - - - - - Extend selection left one character - - - - - Extend rectangular selection left one character - - - - - Move right one character - - - - - Extend selection right one character - - - - - Extend rectangular selection right one character - - - - - Move left one word - - - - - Extend selection left one word - - - - - Move right one word - - - - - Extend selection right one word - - - - - Move to end of previous word - - - - - Extend selection to end of previous word - - - - - Move to end of next word - - - - - Extend selection to end of next word - - - - - Move left one word part - - - - - Extend selection left one word part - - - - - Move right one word part - - - - - Extend selection right one word part - - - - - Move to start of document line - - - - - Extend selection to start of document line - - - - - Extend rectangular selection to start of document line - - - - - Move to start of display line - - - - - Extend selection to start of display line - - - - - Move to start of display or document line - - - - - Extend selection to start of display or document line - - - - - Move to first visible character in document line - - - - - Extend selection to first visible character in document line - - - - - Extend rectangular selection to first visible character in document line - - - - - Move to first visible character of display in document line - - - - - Extend selection to first visible character in display or document line - - - - - Move to end of document line - - - - - Extend selection to end of document line - - - - - Extend rectangular selection to end of document line - - - - - Move to end of display line - - - - - Extend selection to end of display line - - - - - Move to end of display or document line - - - - - Extend selection to end of display or document line - - - - - Move to start of document - - - - - Extend selection to start of document - - - - - Move to end of document - - - - - Extend selection to end of document - - - - - Move up one page - - - - - Extend selection up one page - - - - - Extend rectangular selection up one page - - - - - Move down one page - - - - - Extend selection down one page - - - - - Extend rectangular selection down one page - - - - - Stuttered move up one page - - - - - Stuttered extend selection up one page - - - - - Stuttered move down one page - - - - - Stuttered extend selection down one page - - - - - Delete current character - - - - - Delete previous character - - - - - Delete previous character if not at start of line - - - - - Delete word to left - - - - - Delete word to right - - - - - Delete right to end of next word - - - - - Delete line to left - - - - - Delete line to right - - - - - Delete current line - - - - - Cut current line - - - - - Copy current line - - - - - Transpose current and previous lines - - - - - Duplicate the current line - - - - - Select all - - - - - Move selected lines up one line - - - - - Move selected lines down one line - - - - - Duplicate selection - - - - - Convert selection to lower case - - - - - Convert selection to upper case - - - - - Cut selection - - - - - Copy selection - - - - - Paste - Colar - - - - Toggle insert/overtype - - - - - Insert newline - - - - - Formfeed - - - - - Indent one level - - - - - De-indent one level - - - - - Cancel - Cancelar - - - - Undo last command - - - - - Redo last command - - - - - Zoom in - - - - - Zoom out - - - - - QsciLexerCPP - - - Default - - - - - Inactive default - - - - - C comment - - - - - Inactive C comment - - - - - C++ comment - - - - - Inactive C++ comment - - - - - JavaDoc style C comment - - - - - Inactive JavaDoc style C comment - - - - - Number - - - - - Inactive number - - - - - Keyword - Palavra-chave - - - - Inactive keyword - - - - - Double-quoted string - - - - - Inactive double-quoted string - - - - - Single-quoted string - - - - - Inactive single-quoted string - - - - - IDL UUID - - - - - Inactive IDL UUID - - - - - Pre-processor block - - - - - Inactive pre-processor block - - - - - Operator - - - - - Inactive operator - - - - - Identifier - Identificador - - - - Inactive identifier - - - - - Unclosed string - - - - - Inactive unclosed string - - - - - C# verbatim string - - - - - Inactive C# verbatim string - - - - - JavaScript regular expression - - - - - Inactive JavaScript regular expression - - - - - JavaDoc style C++ comment - - - - - Inactive JavaDoc style C++ comment - - - - - Secondary keywords and identifiers - - - - - Inactive secondary keywords and identifiers - - - - - JavaDoc keyword - - - - - Inactive JavaDoc keyword - - - - - JavaDoc keyword error - - - - - Inactive JavaDoc keyword error - - - - - Global classes and typedefs - - - - - Inactive global classes and typedefs - - - - - C++ raw string - - - - - Inactive C++ raw string - - - - - Vala triple-quoted verbatim string - - - - - Inactive Vala triple-quoted verbatim string - - - - - Pike hash-quoted string - - - - - Inactive Pike hash-quoted string - - - - - Pre-processor C comment - - - - - Inactive pre-processor C comment - - - - - JavaDoc style pre-processor comment - - - - - Inactive JavaDoc style pre-processor comment - - - - - User-defined literal - - - - - Inactive user-defined literal - - - - - Task marker - - - - - Inactive task marker - - - - - Escape sequence - - - - - Inactive escape sequence - - - - - QsciLexerHTML - - - HTML default - - - - - Tag - - - - - Unknown tag - - - - - Attribute - - - - - Unknown attribute - - - - - HTML number - - - - - HTML double-quoted string - - - - - HTML single-quoted string - - - - - Other text in a tag - - - - - HTML comment - - - - - Entity - - - - - End of a tag - - - - - Start of an XML fragment - - - - - End of an XML fragment - - - - - Script tag - - - - - Start of an ASP fragment with @ - - - - - Start of an ASP fragment - - - - - CDATA - - - - - Start of a PHP fragment - - - - - Unquoted HTML value - - - - - ASP X-Code comment - - - - - SGML default - - - - - SGML command - - - - - First parameter of an SGML command - - - - - SGML double-quoted string - - - - - SGML single-quoted string - - - - - SGML error - - - - - SGML special entity - - - - - SGML comment - - - - - First parameter comment of an SGML command - - - - - SGML block default - - - - - Start of a JavaScript fragment - - - - - JavaScript default - - - - - JavaScript comment - - - - - JavaScript line comment - - - - - JavaDoc style JavaScript comment - - - - - JavaScript number - - - - - JavaScript word - - - - - JavaScript keyword - - - - - JavaScript double-quoted string - - - - - JavaScript single-quoted string - - - - - JavaScript symbol - - - - - JavaScript unclosed string - - - - - JavaScript regular expression - - - - - Start of an ASP JavaScript fragment - - - - - ASP JavaScript default - - - - - ASP JavaScript comment - - - - - ASP JavaScript line comment - - - - - JavaDoc style ASP JavaScript comment - - - - - ASP JavaScript number - - - - - ASP JavaScript word - - - - - ASP JavaScript keyword - - - - - ASP JavaScript double-quoted string - - - - - ASP JavaScript single-quoted string - - - - - ASP JavaScript symbol - - - - - ASP JavaScript unclosed string - - - - - ASP JavaScript regular expression - - - - - Start of a VBScript fragment - - - - - VBScript default - - - - - VBScript comment - - - - - VBScript number - - - - - VBScript keyword - - - - - VBScript string - - - - - VBScript identifier - - - - - VBScript unclosed string - - - - - Start of an ASP VBScript fragment - - - - - ASP VBScript default - - - - - ASP VBScript comment - - - - - ASP VBScript number - - - - - ASP VBScript keyword - - - - - ASP VBScript string - - - - - ASP VBScript identifier - - - - - ASP VBScript unclosed string - - - - - Start of a Python fragment - - - - - Python default - - - - - Python comment - - - - - Python number - - - - - Python double-quoted string - - - - - Python single-quoted string - - - - - Python keyword - - - - - Python triple double-quoted string - - - - - Python triple single-quoted string - - - - - Python class name - - - - - Python function or method name - - - - - Python operator - - - - - Python identifier - - - - - Start of an ASP Python fragment - - - - - ASP Python default - - - - - ASP Python comment - - - - - ASP Python number - - - - - ASP Python double-quoted string - - - - - ASP Python single-quoted string - - - - - ASP Python keyword - - - - - ASP Python triple double-quoted string - - - - - ASP Python triple single-quoted string - - - - - ASP Python class name - - - - - ASP Python function or method name - - - - - ASP Python operator - - - - - ASP Python identifier - - - - - PHP default - - - - - PHP double-quoted string - - - - - PHP single-quoted string - - - - - PHP keyword - - - - - PHP number - - - - - PHP variable - - - - - PHP comment - - - - - PHP line comment - - - - - PHP double-quoted variable - - - - - PHP operator - - - - - QsciLexerJSON - - - Default - - - - - Number - - - - - String - String - - - - Unclosed string + Close button on tabs - - Property + + If enabled, SQL editor tabs will have a close button. In any case, you can use the contextual menu or the keyboard shortcut to close them. - - Escape sequence + + Select built-in extensions to load for every database: - - Line comment - + + Proxy + Proxy - - Block comment - + + Configure + Configurar - - Operator + + Export Settings - - IRI + + Import Settings - - JSON-LD compact IRI - + + Are you sure you want to clear all the saved settings? +All your preferences will be lost and default values will be used. + Você tem certeza que deseja limpar as configurações salvas? +Todas as suas preferências serão perdidas e os valores padrão serão utilizados. - - JSON keyword - + + When enabled, the line breaks in the Schema column of the DB Structure tab, dock and printed output are removed. + Quando ativado, as quebras de linha na coluna Esquema da aba Estrutura do banco de dados e nas saídas impressas são removidas. - - JSON-LD keyword - + + <html><head/><body><p>SQLite provides an SQL function for loading extensions from a shared library file. Activate this if you want to use the <span style=" font-style:italic;">load_extension()</span> function from SQL code.</p><p>For security reasons, extension loading is turned off by default and must be enabled through this setting. You can always load extensions through the GUI, even though this option is disabled.</p></body></html> + <html><head/><body><p>SQLite provê uma função SQL para carregar extensões de um arquivo de biblioteca. Ative isso se você quer usar a função <span style=" font-style:italic;">load_extension()</span> a partir de código SQL.</p><p>Por motivos de segurança, carregamento de extensões é desabilitado por padrão e precisa ser habilitado através dessa configuração. Você sempre pode carregar extensões através da interface gráfica, mesmo com essa opção desabilitada.</p></body></html> - - Parsing error - + + Allow loading extensions from SQL code + Permitir o carregamento de extensões a partir de código SQL - QsciLexerJavaScript + ProxyDialog - - Regular expression - Expressão regular + + Proxy Configuration + Configuração do proxy - - - QsciLexerPython - - Default - + + Pro&xy Type + Tipo do pro&xy - - Comment - Comentário + + Host Na&me + No&me do host - - Number - + + Port + Porta - - Double-quoted string - + + Authentication Re&quired + Au&tenticação necessária - - Single-quoted string - + + &User Name + Nome do &usuário - - Keyword - Palavra-chave + + Password + Senha - - Triple single-quoted string - + + None + Nenhum - - Triple double-quoted string - + + System settings + Configurações do sistema - - Class name - + + HTTP + HTTP - - Function or method name - + + SOCKS5 + SOCKS5 + + + QObject - - Operator - + + Error importing data + Erro importando dados - - Identifier - Identificador + + from record number %1 + a partir de registro número %1 - - Comment block - + + . +%1 + . +%1 - - Unclosed string - + + Cancel + Cancelar - - Highlighted identifier - + + All files (*) + Todos arquivos (*) - - Decorator - + + Importing CSV file... + Importando arquivo CSV... - - Double-quoted f-string - + + SQLite database files (*.db *.sqlite *.sqlite3 *.db3) + Bancos de dados SQLite (*.db *.sqlite *.sqlite3 *.db3) - - Single-quoted f-string - + + Left + Esquerda - - Triple single-quoted f-string - + + Right + Direita - - Triple double-quoted f-string - + + Center + Centro - - - QsciLexerSQL - - Default - + + Justify + Justificar - - Comment - Comentário + + SQLite Database Files (*.db *.sqlite *.sqlite3 *.db3) + Arquivos de banco de dados SQL (*.db *.sqlite *.sqlite3 *.db3) - - Comment line - + + DB Browser for SQLite Project Files (*.sqbpro) + Arquivo de projeto DB Browser para SQLite (*.sqbpro) - - JavaDoc style comment - + + SQL Files (*.sql) + Arquivos SQL (*.sql) - - Number - + + All Files (*) + Todos arquivos (*) - - Keyword - Palavra-chave + + Text Files (*.txt) + Arquivos de texto (*.txt) - - Double-quoted string - + + Comma-Separated Values Files (*.csv) + Arquivos de valores separados por vírgulas (*.csv) - - Single-quoted string - + + Tab-Separated Values Files (*.tsv) + Arquivos de valores separados por tabs (*.tsv) - - SQL*Plus keyword - + + Delimiter-Separated Values Files (*.dsv) + Arquivos de valores separados por delimitadores (*.dsv) - - SQL*Plus prompt - + + Concordance DAT files (*.dat) + Arquivos DAT Concordance (*.dat) - - Operator - + + JSON Files (*.json *.js) + Arquivos JSON (*.json) - - Identifier - Identificador + + XML Files (*.xml) + Arquivos XML (*.xml) - - SQL*Plus comment - + + Binary Files (*.bin *.dat) + Arquivos binários (*.bin) - - # comment line - + + SVG Files (*.svg) + Arquivos SVG (*.svg) - - JavaDoc keyword - + + Hex Dump Files (*.dat *.bin) + Arquivos de dump hexadecimal (*.dat *.bin) - - JavaDoc keyword error - + + Extensions (*.so *.dylib *.dll) + Extensões (*.so *.dylib *.dll) - - User defined 1 + + Initialization File (*.ini) + + + QsciCommand - - User defined 2 - + Paste + Colar - - User defined 3 - + Cancel + Cancelar + + + QsciLexerCPP - - User defined 4 - + Keyword + Palavra-chave - - Quoted identifier - + Identifier + Identificador + + + QsciLexerJSON - - Quoted operator - + String + String - QsciScintilla + QsciLexerJavaScript - - &Undo - + Regular expression + Expressão regular + + + + QsciLexerPython + + Comment + Comentário - - &Redo - + Keyword + Palavra-chave - - Cu&t - + Identifier + Identificador + + + QsciLexerSQL - - &Copy - + Comment + Comentário - - &Paste - + Keyword + Palavra-chave - - Delete - + Identifier + Identificador + + + QsciScintilla - Select All - Selecionar tudo + Selecionar tudo @@ -7817,26 +6395,26 @@ Are you sure you want to proceed? Por favor entre a frase chave para esse certificado de cliente para se autenticar. - + Cancel Cancelar - + Uploading remote database to %1 Enviando banco de dados remoto para %1 - + Downloading remote database from %1 Baixando banco de dados remoto de %1 - + Error: Cannot open the file for sending. Erro: Não pôde abrir o arquivo para envio. @@ -8561,7 +7139,7 @@ Uso dessa função precisa ser autorizado em Preferências. SqliteTableModel - + Error changing data: %1 Erro modificando dados: @@ -8578,25 +7156,25 @@ Uso dessa função precisa ser autorizado em Preferências. carregando... - + References %1(%2) Hold %3Shift and click to jump there Referencia %1(%2) Segure %3Shift e clique para ir para lá - + retrieving list of columns obtendo lista de colunas - + Fetching data... Obtendo dados... - - + + Cancel Cancelar @@ -8933,12 +7511,12 @@ Segure %3Shift e clique para ir para lá - <html><head/><body><p>This button creates a new record in the database. Hold the mouse button to open a pop-up menu of different options:</p><ul><li><span style=" font-weight:600;">New Record</span>: insert a new record with default values in the database.</li><li><span style=" font-weight:600;">Insert Values...</span>: open a dialog for entering values before they are inserted in the database. This allows to enter values acomplishing the different constraints. This dialog is also open if the <span style=" font-weight:600;">New Record</span> option fails due to these constraints.</li></ul></body></html> + <html><head/><body><p>This button creates a new record in the database. Hold the mouse button to open a pop-up menu of different options:</p><ul><li><span style=" font-weight:600;">New Record</span>: insert a new record with default values in the database.</li><li><span style=" font-weight:600;">Insert Values...</span>: open a dialog for entering values before they are inserted in the database. This allows to enter values accomplishing the different constraints. This dialog is also open if the <span style=" font-weight:600;">New Record</span> option fails due to these constraints.</li></ul></body></html> <html><head/><body><p>Esse botão cria um novo registro no banco de dados. Segure o botão do mouse para abrir um menu de opções diferentes:</p><ul><li><span style=" font-weight:600;">Novo Registro</span>: insere um novo registro com valores padrão no banco de dados.</li><li><span style=" font-weight:600;">Inserir Valores...</span>: abre um diálogo para novos valores antes de serem inseridos no banco de dados. Isso permite a entrada de valores de acordo com as restrições. Esse diálogo também é abaerto se a opção<span style=" font-weight:600;">Novo Registro</span> falha devido a essas restrições.</li></ul></body></html> - + Delete Record Deletar registro @@ -9015,7 +7593,7 @@ Segure %3Shift e clique para ir para lá - <html><head/><body><p>This popup menu provides the following options applying to the currently browsed and filtered table:</p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Export to CSV: this option exports the data of the browsed table as currently displayed (after filters, display formats and order column) to a CSV file.</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Save as view: this option saves the current setting of the browsed table (filters, display formats and order column) as an SQL view that you can later browse or use in SQL statements.</li></ul></body></html> + <html><head/><body><p>This pop-up menu provides the following options applying to the currently browsed and filtered table:</p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Export to CSV: this option exports the data of the browsed table as currently displayed (after filters, display formats and order column) to a CSV file.</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Save as view: this option saves the current setting of the browsed table (filters, display formats and order column) as an SQL view that you can later browse or use in SQL statements.</li></ul></body></html> <html><head/><body><p>Esse Menu provê as seguintes opções para a tabela atual:</p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Exportar para CSV: essa opção exporta os dados como estão exibidos para um arquivo CSV.</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Salvar como vista: essa opção salva a configuração atual da tabela como uma vista SQL que você depois pode consultar em comandos SQL.</li></ul></body></html> @@ -9040,7 +7618,7 @@ Segure %3Shift e clique para ir para lá - + Set encoding Definir codificação @@ -9305,96 +7883,96 @@ Segure %3Shift e clique para ir para lá . Soma: %1; Média: %2; Mínimo: %3; Máximo: %4 - + Conditional formats for "%1" Formatos condicionais para "%1" - + determining row count... determinando número de linhas... - + %L1 - %L2 of >= %L3 - + %L1 - %L2 of %L3 - + (clipped at %L1 rows) - + Please enter a pseudo-primary key in order to enable editing on this view. This should be the name of a unique column in the view. Por favor, entre uma pseudo-chave primária para habilitar edição nessa vista. Isso deveria ser o nome de uma coluna única na vista. - + Delete Records Deletar registros - + Duplicate records Duplicar registros - + Duplicate record Duplicar registro - + Ctrl+" - + Adjust rows to contents Ajustar linhas aos conteúdos - + Error deleting record: %1 Erro deletando registro: %1 - + Please select a record first Por favor, selecione um registro primeiro - + Please choose a new encoding for all tables. Por favor, escolha uma nova codificação para todas tabelas. - + Please choose a new encoding for this table. Por favor, escolha uma nova codificação para essa tabela. - + %1 Leave the field empty for using the database encoding. %1 Deixe o campo em branco para usar a codificação do banco de dados. - + This encoding is either not valid or not supported. Essa codificação é inválida ou não suportada. - + %1 replacement(s) made. %1 substituição(ões) feita(s). @@ -9422,24 +8000,6 @@ Deixe o campo em branco para usar a codificação do banco de dados. - - UndoStack - - - Inserting %1 bytes - - - - - Delete %1 chars - - - - - Overwrite %1 chars - - - VacuumDialog diff --git a/src/translations/sqlb_ro.ts b/src/translations/sqlb_ro.ts index f099e1104..34d667dcb 100644 --- a/src/translations/sqlb_ro.ts +++ b/src/translations/sqlb_ro.ts @@ -15,7 +15,7 @@ - <html><head/><body><p>DB Browser for SQLite is an open source, freeware visual tool used to create, design and edit SQLite database files.</p><p>It is bi-licensed under the Mozilla Public License Version 2, as well as the GNU General Public License Version 3 or later. You can modify or redistribute it under the conditions of these licenses.</p><p>See <a href="https://www.gnu.org/licenses/gpl.html"><span style=" text-decoration: underline; color:#0000ff;">http://www.gnu.org/licenses/gpl.html</span></a> and <a href="https://www.mozilla.org/MPL/2.0/index.txt"><span style=" text-decoration: underline; color:#0000ff;">https://www.mozilla.org/MPL/2.0/index.txt</span></a> for details.</p><p>For more information on this program please visit our website at: <a href="https://sqlitebrowser.org"><span style=" text-decoration: underline; color:#0000ff;">http://sqlitebrowser.org</span></a></p><p><span style=" font-size:small;">This software uses the GPL/LGPL Qt Toolkit from </span><a href="http://qt-project.org/"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://qt-project.org/</span></a><span style=" font-size:small;"><br/>See </span><a href="https://doc.qt.io/qt-5/licensing.html"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://qt-project.org/doc/qt-5/licensing.html</span></a><span style=" font-size:small;"> for licensing terms and information.</span></p><p><span style=" font-size:8pt;">We use the nalgeon/sqlean library for SQLite extensions support.<br/>This library is licensed under the MIT license, see the following for more information:<br/></span><a href="https://github.com/nalgeon/sqlean"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">https://github.com/nalgeon/sqlean</span></a></p><p><span style=" font-size:small;">It also uses the Pastel SVG icon set by Michael Buckley under a Creative Commons Attribution Share Alike 4.0 license.<br/>See </span><a href="https://codefisher.org/pastel-svg/"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://codefisher.org/pastel-svg/</span></a><span style=" font-size:small;"> for details.</span></p></body></html> + <html><head/><body><p>DB Browser for SQLite is an open source, freeware visual tool used to create, design and edit SQLite database files.</p><p>It is bi-licensed under the Mozilla Public License Version 2, as well as the GNU General Public License Version 3 or later. You can modify or redistribute it under the conditions of these licenses.</p><p>See <a href="https://www.gnu.org/licenses/gpl.html"><span style=" text-decoration: underline; color:#0000ff;">https://www.gnu.org/licenses/gpl.html</span></a> and <a href="https://www.mozilla.org/MPL/2.0/index.txt"><span style=" text-decoration: underline; color:#0000ff;">https://www.mozilla.org/MPL/2.0/index.txt</span></a> for details.</p><p>For more information on this program please visit our website at: <a href="https://sqlitebrowser.org"><span style=" text-decoration: underline; color:#0000ff;">https://sqlitebrowser.org</span></a></p><p><span style=" font-size:small;">This software uses the GPL/LGPL Qt Toolkit from </span><a href="https://qt-project.org/"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://qt-project.org/</span></a><span style=" font-size:small;"><br/>See </span><a href="https://doc.qt.io/qt-5/licensing.html"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://doc.qt.io/qt-5/licensing.html</span></a><span style=" font-size:small;"> for licensing terms and information.</span></p><p><span style=" font-size:8pt;">We use the nalgeon/sqlean library for SQLite extensions support.<br/>This library is licensed under the MIT license, see the following for more information:<br/></span><a href="https://github.com/nalgeon/sqlean"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">https://github.com/nalgeon/sqlean</span></a></p><p><span style=" font-size:small;">It also uses the Pastel SVG icon set by Michael Buckley under a Creative Commons Attribution Share Alike 4.0 license.<br/>See </span><a href="https://codefisher.org/pastel-svg/"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://codefisher.org/pastel-svg/</span></a><span style=" font-size:small;"> for details.</span></p></body></html> @@ -287,36 +287,36 @@ - Invalid option/non-existant file: %1 + Invalid option/non-existent file: %1 Opțiune invalidă/fișier inexistent: %1 - + SQLite Version Versiune SQLite - + SQLCipher Version %1 (based on SQLite %2) Versiune SQLCipher %1 (bazat pe SQLite %2) - + DB Browser for SQLite Version %1. DB Browser for SQLite Versiunea %1. - + Last commit hash when built: %1 Ultimul hash de comitere când a fost construit: %1 - + Built for %1, running on %2 Construit pentru %1, rulează pe %2 - + Qt Version %1 Versiune Qt %1 @@ -398,7 +398,7 @@ Mărime Antet Text Simplu - + Please set a key to encrypt the database. Note that if you change any of the other, optional, settings you'll need to re-enter them as well every time you open the database file. Leave the password fields empty to disable the encryption. @@ -409,7 +409,7 @@ Lăsați câmpurile de parolă goale pentru a dezactiva criptarea. Procesul de criptare poate dura ceva timp și ar trebui să aveți o copie de rezervă a bazei de date! Modificările nesalvate sunt aplicate înainte de a modifica criptarea. - + Please enter the key used to encrypt the database. If any of the other settings were altered for this database file you need to provide this information as well. Vă rugăm să introduceți cheia utilizată pentru criptarea bazei de date. @@ -434,130 +434,130 @@ Dacă oricare dintre celelalte setări au fost modificate pentru acest fișier d Alegeți un format de afișare pentru coloana '%1', care este aplicată fiecărei valori înainte de a o afișa. - + Default Implicit - + Decimal number Număr zecimal - + Exponent notation Notație exponentă - + Hex blob Blob Hex - + Hex number Număr Hex - + Octal number Numărul octal - + Round number Număr rotund - + Apple NSDate to date Apple NSDate în dată - + Java epoch (milliseconds) to date translation? 'Java epoch' Epoca Java (milisecunde) în dată - + .NET DateTime.Ticks to date .NET DateTime.Ticks în dată - + Julian day to date translation? 'Julian day' Zi Iuliană în dată - + Unix epoch to date translation? 'Unix epoch' Epoca Unix în dată - + Unix epoch to local time translation? 'Unix epoch Epoca unix în timp local - + WebKit / Chromium epoch to date translation? 'WebKit / Chromium epoch' Epoca WebKit / Chromium în dată - + WebKit / Chromium epoch to local time translation? 'WebKit / Chromium epoch' Epoca WebKit / Chromium în oră locală - + Windows DATE to date translation? 'Windows DATE' Windows DATE în dată - + Date as dd/mm/yyyy Dată ca dd/mm/yyyy - + Lower case Minusculă - + Upper case Majusculă - + Binary GUID to text GUID Binar în text - + SpatiaLite Geometry to SVG Geometrie SpatiaLite în SVG - + Custom Personalizat - + Custom display format must contain a function call applied to %1 unclear translation - 'call' Formatul de afișare personalizat trebuie să conțină un apel de funcție aplicat la %1 - + Error in custom display format. Message from database engine: %1 @@ -566,7 +566,7 @@ Dacă oricare dintre celelalte setări au fost modificate pentru acest fișier d %1 - + Custom display format must return only one column but it returned %1. Formatul de afișare personalizat trebuie să returneze doar o singură coloană, dar a returnat %1. @@ -693,167 +693,167 @@ Dacă oricare dintre celelalte setări au fost modificate pentru acest fișier d DBBrowserDB - + Please specify the database name under which you want to access the attached database Vă rugăm să specificați numele bazei de date sub care doriți să accesați baza de date atașată - + Invalid file format Format fișier invalid - + Do you really want to close this temporary database? All data will be lost. Chiar doriți să închideți această bază de date temporară? Toate datele vor fi pierdute. - + Do you want to save the changes made to the database file %1? Doriți să salvați modificările aduse fișierului bazei de date %1? - + Database didn't close correctly, probably still busy Baza de date nu s-a închis corect, probabil încă este ocupată - + Cannot open destination file: '%1' Nu se poate deschide fișierul de destinație: '%1' - - + + Cannot backup to file: '%1'. Message: %2 Nu se poate face copie de rezervă în fișierul: '%1'. Mesaj: %2 - + The database is currently busy: Baza de date este ocupată în prezent: - + Do you want to abort that other operation? Vrei să întrerupi cealaltă operație? - + Exporting database to SQL file... Exportând baza de date într-un fișier SQL... - - + + Cancel Anulează - - + + No database file opened Nu este deschis niciun fișier bază de date - + Executing SQL... Executând SQL... - + Action cancelled. Acțiune anulată. - - + + Error in statement #%1: %2. Aborting execution%3. Eroare în instrucțiunea #%1: %2. Se anulează execuția%3. - - + + and rolling back unclear translation și derulând înapoi - + didn't receive any output from %1 nu s-a primit niciun rezultat de la %1 - + could not execute command: %1 nu se poate executa comanda: %1 - + Cannot delete this object Nu se poate șterge acest obiect - + Cannot set data on this object Nu se pot seta date pe acest obiect - - + + A table with the name '%1' already exists in schema '%2'. Un tabel cu numele '%1' există deja în schema '%2'. - + No table with name '%1' exists in schema '%2'. Nu există tabel cu numele '%1' în schema '%2'. - - + + Cannot find column %1. Nu se poate găsi coloana %1. - + Creating savepoint failed. DB says: %1 Crearea punctului de salvare a eșuat. BD spune: %1 - + Renaming the column failed. DB says: %1 Redenumirea coloanei a eșuat. BD spune: %1 - - + + Releasing savepoint failed. DB says: %1 Eliberarea punctului de salvare a eșuat. BD spune: %1 - + Creating new table failed. DB says: %1 Crearea unui nou tabel a eșuat. BD spune: %1 - + Copying data to new table failed. DB says: %1 Copierea datelor într-un nou tabel a eșuat. BD spune: %1 - + Deleting old table failed. DB says: %1 Ștergerea tabelului vechi a eșuat. BD spune: %1 - + Restoring some of the objects associated with this table failed. This is most likely because some column names changed. Here's the SQL statement which you might want to fix and execute manually: @@ -862,7 +862,7 @@ Se anulează execuția%3. - + Error renaming table '%1' to '%2'. Message from database engine: %3 @@ -871,37 +871,37 @@ Mesaj de la motorul bazei de date: %3 - + could not get list of db objects: %1 nu s-a putut obține lista obiectelor bd: %1 - + could not get list of databases: %1 nu s-a putut obține lista bazelor de date: %1 - + Error setting pragma %1 to %2: %3 Eroare la setarea pragma %1 la %2: %3 - + File not found. Fișierul nu a fost găsit. - + Error loading extension: %1 Eroare la încărcarea extensiei: %1 - + Error loading built-in extension: %1 - + could not get column information nu s-a putut obține informația coloanei @@ -1974,7 +1974,7 @@ Toate datele stocate în prezent în acest câmp vor fi pierde. ExtendedScintilla - + Ctrl+H Ctrl+H @@ -1985,22 +1985,22 @@ Toate datele stocate în prezent în acest câmp vor fi pierde. - + Ctrl+P Ctrl+P - + Find... Găsește... - + Find and Replace... Găsește și Înlocuiește... - + Print... Imprimare... @@ -2008,129 +2008,129 @@ Toate datele stocate în prezent în acest câmp vor fi pierde. ExtendedTableWidget - + Use as Exact Filter Folosește ca Filtru Exact - + Containing Conținând - + Not containing Nu conține - + Not equal to Nu este egal cu - + Greater than Mai mare ca - + Less than Mai mic ca - + Greater or equal Mai mare sau egal - + Less or equal Mai mic sau egal - + Between this and... Între asta și... - + Regular expression Expresie regulată - + Edit Conditional Formats... Editează Formatele Condiționale... - + Set to NULL Setează la NULL - + Cut Taie - + Copy Copiază - + Copy with Headers Copiază cu anteturi - + Copy as SQL Copiază ca SQL - + Paste Lipește - + Print... Imprimare... - + Use in Filter Expression Utilizează în Filtru Expresie - + Alt+Del Alt+Del - + Ctrl+Shift+C Ctrl+Shift+C - + Ctrl+Alt+C Ctrl+Alt+C - + The content of the clipboard is bigger than the range selected. Do you want to insert it anyway? Conținutul clipboard-ului este mai mare decât intervalul selectat. Doriți să îl inserați oricum? - + <p>Not all data has been loaded. <b>Do you want to load all data before selecting all the rows?</b><p><p>Answering <b>No</b> means that no more data will be loaded and the selection will not be performed.<br/>Answering <b>Yes</b> might take some time while the data is loaded but the selection will be complete.</p>Warning: Loading all the data might require a great amount of memory for big tables. <p>Nu toate datele au fost încărcate. <b>Doriți să încărcați toate datele înainte de a selecta toate rândurile?</b><p><p>Răspunzând<b>Nu</b> înseamnă că nu vor mai fi încărcate date și selecția nu va fi efectuată.<br/>Răspunzând <b>Da</b> ar putea dura ceva timp până când datele sunt încărcate, dar selecția va fi completă.</p>Avertisment: Încărcarea tuturor datelor poate necesita o cantitate mare de memorie pentru tabelele mari. - + Cannot set selection to NULL. Column %1 has a NOT NULL constraint. Nu se poate seta selecția la NULL. Coloana %1 are o constrângere NOT NULL. @@ -2183,12 +2183,12 @@ Doriți să îl inserați oricum? FilterLineEdit - + Filter Filtru - + These input fields allow you to perform quick filters in the currently selected table. By default, the rows containing the input text are filtered out. The following operators are also supported: @@ -2216,92 +2216,92 @@ x~y Interval: valori între x și y / regexp/ Valori care se potrivesc cu expresia regulată - + Set Filter Expression Setează Expresie Filtru - + What's This? Ce este asta? - + Is NULL Este NULL - + Is not NULL Nu este NULL - + Is empty Este gol - + Is not empty Nu este gol - + Not containing... Nu conține... - + Equal to... Egal cu... - + Not equal to... Nu este egal cu... - + Greater than... Mai mare ca... - + Less than... Mai mic ca... - + Greater or equal... Mai mare sau egal... - + Less or equal... Mai mic sau egal... - + In range... În gamă... - + Regular expression... Expresie regulată... - + Clear All Conditional Formats Șterge Toate Formatele Condiționate - + Use for Conditional Format Utilizare pentru Format Condiționat - + Edit Conditional Formats... Editează Formatele Condiționate... @@ -2527,7 +2527,7 @@ x~y Interval: valori între x și y - + Tab Tab @@ -2670,7 +2670,7 @@ x~y Interval: valori între x și y - + Deselect All Deselectează Toate @@ -2680,52 +2680,52 @@ x~y Interval: valori între x și y Potrivire Similară - + Select All Selectează Toate - + There is already a table named '%1' and an import into an existing table is only possible if the number of columns match. Există deja un tabel numit '%1 ' și un import într-un tabel existent este posibil numai dacă numărul de coloane se potrivește. - + There is already a table named '%1'. Do you want to import the data into it? Există deja un tabel numit '%1'. Doriți să importați datele în el? - + Creating restore point failed: %1 Crearea punctului de restaurare a eșuat: %1 - + Creating the table failed: %1 Crearea tabelului a eșuat: %1 - + importing CSV importând CSV - + Could not prepare INSERT statement: %1 Nu s-a putut pregăti instrucțiunea INSERT: %1 - + Inserting row failed: %1 Inserarea rândului a eșuat: %1 - + Unexpected end of file. Please make sure that you have configured the correct quote characters and the file is not malformed. Sfârșit neașteptat de fișier. Vă rugăm să vă asigurați că ați configurat caracterele de citare corecte și că fișierul nu este malformat. - + Importing the file '%1' took %2ms. Of this %3ms were spent in the row function. Importarea fișierului '%1' a durat %2ms. Din aceasta, %3ms au fost petrecute în funcția de rând. @@ -2747,107 +2747,107 @@ Puteți glisa instrucțiuni SQL dintr-un rând de obiect și să le plasați în - + Warning: this pragma is not readable and this value has been inferred. Writing the pragma might overwrite a redefined LIKE provided by an SQLite extension. Avertisment: acest pragma nu poate fi citit și această valoare a fost dedusă. Scrierea pragma ar putea suprascrie un LIKE redefinit furnizat de o extensie SQLite. - + toolBar1 barăDeInstrumente1 - + &File &Fișier - + &Import &Importă - + &Export &Exportă - + &Edit &Editează - + &View &Vizualizare - + &Help &Ajutor - + DB Toolbar Bară de instrumente BD - + Edit Database &Cell Editează &Celula Bazei De Date - + SQL &Log &Jurnal SQL - + Show S&QL submitted by Arată S&QL trimis de - + User Utilizator - + Application Aplicație - + Error Log Jurnal De Erori - + This button clears the contents of the SQL logs Acest buton șterge conținutul jurnalelor SQL - + &Clear &Golire - + This panel lets you examine a log of all SQL commands issued by the application or by yourself Acest panou vă permite să examinați un jurnal al tuturor comenzilor SQL emise de către aplicație sau de către dumneavoastră - + &Plot G&rafic - + DB Sche&ma Sche&mă BD - + This is the structure of the opened database. You can drag multiple object names from the Name column and drop them into the SQL editor and you can adjust the properties of the dropped names using the context menu. This would help you in composing SQL statements. You can drag SQL statements from the Schema column and drop them into the SQL editor or into other applications. @@ -2858,419 +2858,419 @@ Puteți să glisați instrucțiunile SQL din coloana Schemă și să le plasați - + &Remote La &Distanță - - + + Project Toolbar Bară De Instrumente Proiect - + Extra DB toolbar Bară de instrumente suplimentară BD - - - + + + Close the current database file Închide fișierul bazei de date curente - + &New Database... &Bază De Date Nouă... - - + + Create a new database file Creează un nou fișier de bază de date - + This option is used to create a new database file. Această opțiune este utilizată pentru a crea un nou fișier de bază de date. - + Ctrl+N Ctrl+N - - + + &Open Database... &Deschide Bază De Date... - - - - - + + + + + Open an existing database file Deschide un fișier de bază de date existent - - - + + + This option is used to open an existing database file. Această opțiune este utilizată pentru a deschide un fișier de bază de date existent. - + Ctrl+O Ctrl+O - + &Close Database Înc&hide Bază De Date - + This button closes the connection to the currently open database file Acest buton închide conexiunea la fișierul bazei de date deschis în prezent - - + + Ctrl+F4 Ctrl+F4 - + &Revert Changes &Revocare Modificări - - + + Revert database to last saved state Revocare bază de date la ultima stare salvată - + This option is used to revert the current database file to its last saved state. All changes made since the last save operation are lost. Această opțiune este utilizată pentru a revoca fișierul de bază de date curent la ultima sa stare salvată. Toate modificările efectuate de la ultima operațiune de salvare sunt pierdute. - + &Write Changes Scrie &Modificările - - + + Write changes to the database file Scrie modificările în fișierul bazei de date - + This option is used to save changes to the database file. Această opțiune este utilizată pentru a salva modificările la fișierul bazei de date. - + Ctrl+S Ctrl+S - + Compact &Database... &Compactare Bază De Date... - + Compact the database file, removing space wasted by deleted records Compactează fișierul bazei de date, eliminând spațiu irosit de înregistrări șterse - - + + Compact the database file, removing space wasted by deleted records. Compactează fișierul bazei de date, eliminând spațiu irosit de înregistrări șterse. - + E&xit Ieși&re - + Ctrl+Q Ctrl+Q - + &Database from SQL file... Bază de date din fișier &SQL... - + Import data from an .sql dump text file into a new or existing database. Importă date dintr-un fișier text .sql dump într-o bază de date nouă sau existentă. - + This option lets you import data from an .sql dump text file into a new or existing database. SQL dump files can be created on most database engines, including MySQL and PostgreSQL. Această opțiune vă permite să importați date dintr-un fișier text .sql dump într-o bază de date nouă sau existentă. Fișierele SQL dump pot fi create pe majoritatea motoarelor de baze de date, inclusiv MySQL și PostgreSQL. - + &Table from CSV file... Tabel din fișier &CSV... - + Open a wizard that lets you import data from a comma separated text file into a database table. Deschide un asistent care vă permite să importați date dintr-un fișier text separat prin virgulă într-un tabel de bază de date. - + Open a wizard that lets you import data from a comma separated text file into a database table. CSV files can be created on most database and spreadsheet applications. Deschide un asistent care vă permite să importați date dintr-un fișier text separat prin virgulă într-un tabel de bază de date. Fișierele CSV pot fi create în majoritatea aplicațiilor de baze de date și foi de calcul. - + &Database to SQL file... Bază de date în fișier &SQL... - + Export a database to a .sql dump text file. Exportă o bază de date într-un fișier text .sql dump. - + This option lets you export a database to a .sql dump text file. SQL dump files contain all data necessary to recreate the database on most database engines, including MySQL and PostgreSQL. Această opțiune vă permite să exportați o bază de date într-un fișier text .sql dump. Fișierele SQL dump conțin toate datele necesare pentru a recrea baza de date pe majoritatea motoarelor de baze de date, inclusiv MySQL și PostgreSQL. - + &Table(s) as CSV file... Tabel(e) ca fișier &CSV... - + Export a database table as a comma separated text file. Exportă un tabel de bază de date sub forma unui fișier text separat prin virgulă. - + Export a database table as a comma separated text file, ready to be imported into other database or spreadsheet applications. Exportă un tabel de bază de date sub forma unui fișier text separat prin virgulă, gata să fie importat în alte aplicații de baze de date sau foi de calcul. - + &Create Table... Creează &Tabel... - + Open the Create Table wizard, where it is possible to define the name and fields for a new table in the database Deschide asistentul Creează Tabel, unde este posibilă definirea numelui și a câmpurilor pentru un tabel nou în baza de date - + &Delete Table... Șter&ge Tabel... - - + + Delete Table Șterge Tabel - + Open the Delete Table wizard, where you can select a database table to be dropped. Deschide asistentul Șterge Tabel, unde puteți selecta un tabel de bază de date pentru a fi șters. - + &Modify Table... &Modifică Tabel... - + Create &Index... Creează In&dice... - + Open the Create Index wizard, where it is possible to define a new index on an existing database table. Deschide asistentul Creează Indice, unde este posibil să definiți un nou indice pe un tabel existent de bază de date. - + &Preferences... &Preferinţe... - - + + Open the preferences window. Deschide fereastra de preferințe. - + &DB Toolbar Bară De Instrumente &BD - + Shows or hides the Database toolbar. Afișează sau ascunde bara de instrumente a Bazei De Date. - + W&hat's This? Ce Este &Asta? - + Shift+F1 Shift+F1 - + &About &Despre - + &Recently opened &Deschis recent - + This button opens a new tab for the SQL editor Acest buton deschide o filă nouă pentru editorul SQL - + Ctrl+T Ctrl+T - + &Execute SQL &Execută SQL - + Execute all/selected SQL Execută toate/selectat SQL - + This button executes the currently selected SQL statements. If no text is selected, all SQL statements are executed. Acest buton execută instrucțiunile SQL selectate în prezent. Dacă nu este selectat niciun text, sunt executate toate instrucțiunile SQL. - + Ctrl+Return Ctrl+Return - - - + + + Save SQL file Salvează fișier SQL - + &Load Extension... Încarcă &Extensie... - - + + Execute current line Execută linia curentă - + Execute line Execută linia - + This button executes the SQL statement present in the current editor line Acest buton execută instrucțiunea SQL prezentă în linia curentă a editorului - + Shift+F5 Shift+F5 - + Export as CSV file Exportă ca fișier CSV - + Export table as comma separated values file Exportă tabelul ca fișier cu valori separate prin virgulă - + &Wiki &Wiki - + F1 F1 - + Bug &Report... &Raport De Eroare... - + Feature Re&quest... Cerere &Caracteristică... - + Web&site &Site web - + &Donate on Patreon... Donează pe &Patreon... - + Sa&ve Project Sal&vează Proiect - - + + Save the current session to a file Salvează sesiunea curentă într-un fișier - + Open &Project... Deschide &Proiect... - - + + Load a working session from a file Încarcă o sesiune de lucru dintr-un fișier @@ -3296,852 +3296,1010 @@ Puteți să glisați instrucțiunile SQL din coloana Schemă și să le plasați Editează &Pragmele - - + + Temp Store + + + + + Secure Delete + + + + + Case Sensitive Like + + + + + Journal Mode + + + + + Journal Size Limit + + + + + Recursive Triggers + + + + + Page Size + + + + + Foreign Keys + Chei Străine + + + + Auto Vacuum + + + + + Max Page Count + + + + + Checkpoint Full FSYNC + + + + + + Off + + + + + + Normal + + + + + + Full + + + + + Default + Implicit + + + + File + Fişier + + + + + Memory + + + + + Delete + + + + + Truncate + + + + + Persist + + + + + WAL + + + + + Exclusive + + + + + Automatic Index + + + + + Ignore Check Constraints + + + + + Full FSYNC + + + + + WAL Auto Checkpoint + + + + + User Version + + + + + Synchronous + + + + + None + Niciunul + + + + Incremental + + + + + Locking Mode + + + + + E&xecute SQL This has to be equal to the tab title in all the main tabs &Execută SQL - + &Recent Files &Fișiere Recente - + Too&ls &Instrumente - + &New Database &Bază De Date Nouă - + &Undo &Anulează - - + + Undo last change to the database Anulează ultima modificare a bazei de date - + This action undoes the last change performed to the database in the Database Browser or in Execute SQL. Redoing is not possible. Această acțiune anulează ultima modificare efectuată în baza de date în Navigator Bază De Date sau în Execută SQL. Refacerea nu este posibilă. - + Open the Modify Table wizard, where it is possible to rename an existing table. It is also possible to add or delete fields from a table, as well as modify field names and types. Deschide asistentul Modifică Tabel, unde este posibilă redenumirea unui tabel existent. De asemenea, este posibil să se adauge sau să se șteargă câmpuri dintr-un tabel, precum și să se modifice numele și tipurile de câmpuri. - + New &tab &Fila nouă - + Open SQL file(s) Deschide fișier(e) SQL - + This button opens files containing SQL statements and loads them in new editor tabs Acest buton deschide fișiere care conțin instrucțiuni SQL și le încarcă în file noi ale editorului - + Ctrl+Shift+T Ctrl+Shift+T - + &Save Project &Salvează Proiect - + This button lets you save all the settings associated to the open DB to a DB Browser for SQLite project file Acest buton vă permite să salvați toate setările asociate BD deschise într-un fișier de proiect DB Browser for SQLite - + Open &Project &Deschide Proiect - + This button lets you open a DB Browser for SQLite project file Acest buton vă permite să deschideți un fișier de proiect DB Browser for SQLite - + &Attach Database... &Atașează Baza De Date... - - + + Add another database file to the current database connection Adaugă un alt fișier de bază de date la conexiunea curentă a bazei de date - + This button lets you add another database file to the current database connection Acest buton vă permite să adăugați un alt fișier de bază de date la conexiunea curentă a bazei de date - + &Set Encryption... &Setează Criptarea... - - + + Save SQL file as Salvează fișierul SQL ca - + This button saves the content of the current SQL editor tab to a file Acest buton salvează conținutul filei curente a editorului SQL într-un fișier - + &Browse Table &Răsfoire Tabel - + Copy Create statement Copiază Instrucțiunea De Creare - + Copy the CREATE statement of the item to the clipboard Copiază instrucțiunea CREATE a elementului în clipboard - + SQLCipher &FAQ SQLCipher &FAQ - + Opens the SQLCipher FAQ in a browser window Deschide SQLCipher FAQ într-o fereastră de browser - + Table(&s) to JSON... Tabel(e) în &JSON... - + Export one or more table(s) to a JSON file Exportă unul sau mai multe tabele într-un fișier JSON - + Open Data&base Read Only... abbreviated 'database' Deschide BD În Modul Doar-&Citire... - + Open an existing database file in read only mode Deschide un fișier de bază de date existent în modul doar-citire - + Ctrl+Shift+O Ctrl+Shift+O - + Save results Salvează rezultatele - + Save the results view Salvează vederea rezultatelor - + This button lets you save the results of the last executed query Acest buton vă permite să salvați rezultatele ultimei interogări executate - - + + Find text in SQL editor Găsește text în editorul SQL - + Find Găsește - + This button opens the search bar of the editor Acest buton deschide bara de căutare a editorului - + Ctrl+F Ctrl+F - - + + Find or replace text in SQL editor Găsește sau înlocuiește text în editorul SQL - + Find or replace Găsește sau înlocuiește - + This button opens the find/replace dialog for the current editor tab Acest buton deschide dialogul de găsire/înlocuire pentru fila curentă a editorului - + Ctrl+H Ctrl+H - + Export to &CSV Exportă în &CSV - + Export to &JSON Exportă în &JSON - + Save as &view Salvează ca &vedere - + Save as view Salvează ca vedere - + Shows or hides the Project toolbar. Afișează sau ascunde bara de instrumente Proiect. - + Extra DB Toolbar Bară De Instrumente Suplimentară BD - + &Open Database &Deschide Bază De Date - + New In-&Memory Database translation? 'In-Memory' Nouă Bază De Date În Mem&orie - + Drag && Drop SELECT Query Glisează && Plasează Interogarea SELECT - - + + When dragging fields from the same table or a single table, drop a SELECT query into the editor Când glisați câmpuri din același tabel sau dintr-un singur tabel, plasați o interogare SELECT în editor - + Drag && Drop Qualified Names Glisează && Plasează Nume Calificate - - + + Use qualified names (e.g. "Table"."Field") when dragging the objects and dropping them into the editor Utilizează nume calificate (ex., "Tabel"." Câmp") atunci când glisați obiectele și le plasați în editor - + Drag && Drop Enquoted Names Glisează && Plasează Nume Între Ghilimele - - + + Use escaped identifiers (e.g. "Table1") when dragging the objects and dropping them into the editor Utilizează identificatori scăpați (ex., "Tabel1") atunci când glisați obiectele și le plasați în editor - + &Integrity Check Verificare &Integritate - + Runs the integrity_check pragma over the opened database and returns the results in the Execute SQL tab. This pragma does an integrity check of the entire database. Rulează pragma integrity_check peste baza de date deschisă și returnează rezultatele în fila Execută SQL. Această pragma efectuează o verificare a integrității întregii baze de date. - + &Foreign-Key Check Verificare C&heie-Străină - + Runs the foreign_key_check pragma over the opened database and returns the results in the Execute SQL tab Rulează pragma foreign_key_check peste baza de date deschisă și returnează rezultatele în fila Execută SQL - + &Quick Integrity Check Verificare &Rapidă De Integritate - + Run a quick integrity check over the open DB Rulează o verificare rapidă a integrității peste BD deschisă - + Runs the quick_check pragma over the opened database and returns the results in the Execute SQL tab. This command does most of the checking of PRAGMA integrity_check but runs much faster. Rulează pragma quick_check peste baza de date deschisă și returnează rezultatele în fila Execută SQL. Această comandă face cea mai mare parte a verificării PRAGMA integrity_check, dar rulează mult mai repede. - + &Optimize &Optimizează - + Attempt to optimize the database Încercare de optimizare a bazei de date - + Runs the optimize pragma over the opened database. This pragma might perform optimizations that will improve the performance of future queries. Rulează pragma de optimizare peste baza de date deschisă. Acest pragma ar putea efectua optimizări care vor îmbunătăți performanța interogărilor viitoare. - - + + Print Imprimare - + Print text from current SQL editor tab Imprimare text din fila curentă a editorului SQL - + Open a dialog for printing the text in the current SQL editor tab Deschide un dialog pentru imprimarea textului din fila curentă a editorului SQL - - + + Ctrl+P Ctrl+P - + Print the structure of the opened database Imprimează structura bazei de date deschise - + Open a dialog for printing the structure of the opened database Deschide un dialog pentru imprimarea structurii bazei de date deschise - + Un/comment block of SQL code De/comentează blocul de cod SQL - + Un/comment block De/comentează blocul - + Comment or uncomment current line or selected block of code Comentează sau decomentează linia curentă sau blocul de cod selectat - + Comment or uncomment the selected lines or the current line, when there is no selection. All the block is toggled according to the first line. Comentează sau decomentează liniile selectate sau linia curentă, atunci când nu există selecție. Tot blocul este comutat conform primei linii. - + Ctrl+/ Ctrl+/ - + Stop SQL execution Oprire execuție SQL - + Stop execution Oprire execuție - + Stop the currently running SQL script Oprire script SQL care rulează în prezent - + &Save Project As... Salvea&ză Proiectul Ca... - - - + + + Save the project in a file selected in a dialog Salvează proiectul într-un fișier selectat într-un dialog - + Save A&ll Salvează &Toate - - - + + + Save DB file, project file and opened SQL files Salvează fișierul BD, fișierul de proiect și fișierele SQL deschise - + Ctrl+Shift+S Ctrl+Shift+S - + Browse Table Răsfoire Tabel - + Close Pro&ject Î&nchide Proiect - - + + Close project and database files and return to the initial state Închide fișierele proiectului și ale bazei de date și revenire la starea inițială - - + + Ctrl+Shift+W Ctrl+Shift+W - - + + Detach Database Detașează Baza De Date - - + + Detach database file attached to the current database connection Detașează fișierul de bază de date atașat la conexiunea curentă a bazei de date - + Table from CSV data in Clipboard... Tabel din date CSV din Clipboard... - + This treats the current clipboard contents as a CSV file and opens the same import wizard that is used for importing CSV data from a file. Asta tratează conținutul curent al clipboard-ului ca un fișier CSV și deschide același asistent de import care este utilizat pentru importarea datelor CSV dintr-un fișier. - + Show &Row Counts Afișează &Numărul De Rânduri - + This shows the number of rows for each table and view in the database. Asta arată numărul de rânduri pentru fiecare tabel și vedere în baza de date. - + Save Database &As... &Salvare Bază De Date Ca... - + Save the current database as a different file Salvează baza de date curentă ca un fișier diferit - + Refresh Reîmprospătează - + Reload the database structure Reîncarcă structura bazei de date - - + + Ctrl+W Ctrl+W - + Ctrl+Tab Ctrl+Tab - + Ctrl+Shift+Tab Ctrl+Shift+Tab - + Automatically load the last opened DB file at startup - + Clear List Șterge Listă - + Ctrl+L Ctrl+L - + Ctrl+D Ctrl+D - + Ctrl+I Ctrl+I - + Ctrl+E Ctrl+E - + Window Layout Aspect Fereastră - + Reset Window Layout Resetare Aspect Fereastră - + Ctrl+Alt+0 Ctrl+Alt+0 - + Simplify Window Layout Simplifică Aspect Fereastră - - Shift+Alt+0 - Shift+Alt+0 + + Alt+Shift+0 + Alt+Shift+0 - + Dock Windows at Bottom Ancorează Ferestrele în Partea De Jos - + Dock Windows at Left Side Ancorează Ferestrele în Partea Stângă - + Dock Windows at Top Ancorează Ferestrele în Partea De Sus - - The database is currenctly busy. - misspelling 'currenctly' -> 'currently' + + The database is currently busy. Baza de date este momentan ocupată. - + Click here to interrupt the currently running query. Faceți clic aici pentru a întrerupe interogarea care rulează în prezent. - + Encrypted Criptat - + Database is encrypted using SQLCipher Baza de date este criptată folosind SQLCipher - + Read only Doar citire - + Database file is read only. Editing the database is disabled. Fișierul bazei de date este în modul doar-citire Editarea bazei de date este dezactivată. - + Database encoding Codificarea bazei de date - + Ctrl+Alt+W Ctrl+Alt+W - + Ctrl+Shift+F4 Ctrl+Shift+F4 - - + + Choose a database file Alege un fișier de bază de date - + Could not open database file. Reason: %1 Nu s-a putut deschide fișierul bazei de date. Motiv: %1 - - - + + + Choose a filename to save under Alegeți un nume de fișier sub care să salvați - + In-Memory database translation? 'In-Memory' Bază de date În-Memorie - + Choose a database file to save under Alege un fișier de bază de date pentru a salva sub - + Error while saving the database to the new file. Eroare la salvarea bazei de date în fișierul nou. - + You are still executing SQL statements. Closing the database now will stop their execution, possibly leaving the database in an inconsistent state. Are you sure you want to close the database? Încă executați instrucțiuni SQL. Închiderea bazei de date acum va opri executarea lor, lăsând eventual baza de date într-o stare inconsecventă. Sunteți sigur că doriți să închideți baza de date? - + Do you want to save the changes made to the project file '%1'? Doriți să salvați modificările făcute la fișierul de proiect '%1'? - + Are you sure you want to delete the table '%1'? All data associated with the table will be lost. Sunteți sigur că doriți să ștergeți tabelul '%1'? Toate datele asociate cu tabelul vor fi pierdute. - + Are you sure you want to delete the view '%1'? Sunteți sigur că doriți să ștergeți vederea '%1'? - + Are you sure you want to delete the trigger '%1'? Sunteți sigur că doriți să ștergeți declanșatorul '%1'? - + Are you sure you want to delete the index '%1'? Sunteți sigur că doriți să ștergeți indicele '%1'? - + Error: could not delete the table. Eroare: nu s-a putut șterge tabelul. - + Error: could not delete the view. Eroare: nu s-a putut șterge vederea. - + Error: could not delete the trigger. Eroare: nu s-a putut șterge declanșatorul. - + Error: could not delete the index. Eroare: nu s-a putut șterge indicele. - + Message from database engine: %1 Mesaj de la motorul bazei de date: %1 - + Editing the table requires to save all pending changes now. Are you sure you want to save the database? Editarea tabelului necesită salvarea tuturor modificărilor în așteptare acum. Sunteți sigur că doriți să salvați baza de date? - + Error checking foreign keys after table modification. The changes will be reverted. Eroare la verificarea cheilor străine după modificarea tabelului. Modificările vor fi anulate. - + This table did not pass a foreign-key check.<br/>You should run 'Tools | Foreign-Key Check' and fix the reported issues. Acest tabel nu a trecut o verificare a cheii străine.<br/>Ar trebui să rulați 'Instrumente | Verificare Cheie Străină' și să remediați problemele raportate. - + Edit View %1 Editează Vederea %1 - + Edit Trigger %1 Editează Declanșatorul %1 - + You are already executing SQL statements. Do you want to stop them in order to execute the current statements instead? Note that this might leave the database in an inconsistent state. Executați deja instrucțiuni SQL. Doriți să le opriți pentru a executa în schimb instrucțiunile curente? Rețineți că acest lucru ar putea lăsa baza de date într-o stare inconsecventă. - + -- EXECUTING SELECTION IN '%1' -- -- EXECUTÂND SELECȚIA ÎN '%1' -- - + -- EXECUTING LINE IN '%1' -- -- EXECUTÂND LINIA ÎN '%1' -- - + -- EXECUTING ALL IN '%1' -- -- EXECUTÂND TOTUL ÎN '%1' -- - - + + At line %1: La linia %1: - + Result: %1 Rezultat: %1 - + Result: %2 Rezultat: %2 - + %1 rows returned in %2ms %1 rânduri returnate în %2ms - + Setting PRAGMA values or vacuuming will commit your current transaction. Are you sure? Setarea valorilor PRAGMA sau aspirarea va comite tranzacția curentă. Ești sigur? - + Execution finished with errors. Execuție terminată cu erori. - + Execution finished without errors. Execuție terminată fără erori. - + Choose text files Alege fișiere text - + Error while saving the database file. This means that not all changes to the database were saved. You need to resolve the following error first. %1 @@ -4150,114 +4308,114 @@ Ești sigur? %1 - + Are you sure you want to undo all changes made to the database file '%1' since the last save? Sunteți sigur că doriți să anulați toate modificările aduse fișierului bazei de date '%1 ' de la ultima salvare? - + Choose a file to import Alege un fișier pentru a importa - + Do you want to create a new database file to hold the imported data? If you answer no we will attempt to import the data in the SQL file to the current database. Doriți să creați un nou fișier de bază de date pentru a stoca datele importate? Dacă răspundeți nu, vom încerca să importăm datele din fișierul SQL în baza de date curentă. - + File %1 already exists. Please choose a different name. Fișierul %1 există deja. Vă rugăm să alegeți un nume diferit. - + Error importing data: %1 Eroare la importarea datelor: %1 - + Import completed. Some foreign key constraints are violated. Please fix them before saving. Import finalizat. Unele constrângeri de cheie străină sunt încălcate. Vă rugăm să le remediați înainte de salvare. - + Import completed. Import finalizat. - + Delete View Șterge Vedere - + Modify View Modifică Vedere - + Delete Trigger Șterge Declanșator - + Modify Trigger Modifică Declanșator - + Delete Index Șterge Indice - + Modify Index Modifică Indice - + Modify Table Modifică Tabel - + Opened '%1' in read-only mode from recent file list Deschis '%1' în modul doar-citire din lista de fișiere recente - + Opened '%1' from recent file list Deschis '%1' din lista de fișiere recente - + &%1 %2%3 &%1 %2%3 - + (read only) (doar-citire) - + Open Database or Project Deschide Bază De Date sau Proiect - + Attach Database... Atașare Bază De Date... - + Import CSV file(s)... Importă fișier(e) CSV... - + Select the action to apply to the dropped file(s). <br/>Note: only 'Import' will process more than one file. Note for translation: Although there is no %n in the original, you can use the numerus-form to adjust 'files(s)' and remove the note when n = 1. Including %n in the translation will also work. @@ -4267,137 +4425,137 @@ Dacă răspundeți nu, vom încerca să importăm datele din fișierul SQL în b - + The statements in the tab '%1' are still executing. Closing the tab will stop the execution. This might leave the database in an inconsistent state. Are you sure you want to close the tab? Instrucțiunile din fila '%1' sunt încă în curs de executare. Închiderea filei va opri executarea. Acest lucru ar putea lăsa baza de date într-o stare inconsistentă. Sunteți sigur că doriți să închideți fila? - + DB file '%1' could not be opened Fișierul BD '%1' nu a putut fi deschis - + This project file is using an old file format because it was created using DB Browser for SQLite version 3.10 or lower. Loading this file format is no longer fully supported. If you want to load it completely, please use DB Browser for SQLite version 3.12 to convert it to the new file format. Acest fișier de proiect utilizează un format de fișier vechi, deoarece a fost creat utilizând DB Browser for SQLite versiunea 3.10 sau mai mică. Încărcarea acestui format de fișier nu mai este pe deplin suportată. Dacă doriți să îl încărcați complet, vă rugăm să utilizați DB Browser for SQLite versiunea 3.12 pentru a-l converti în noul format de fișier. - + Table '%1' not found; settings ignored Tabelul '%1' nu a fost găsit; setări ignorate - + Setting PRAGMA values will commit your current transaction. Are you sure? Setarea valorilor PRAGMA va comite tranzacția curentă. Ești sigur? - + Do you want to save the changes made to SQL tabs in a new project file? Doriți să salvați modificările aduse filelor SQL într-un nou fișier de proiect? - + Do you want to save the changes made to SQL tabs in the project file '%1'? Doriți să salvați modificările aduse filelor SQL în fișierul de proiect '%1'? - + Do you want to save the changes made to the SQL file %1? Doriți să salvați modificările aduse în fișierul SQL %1? - + Select SQL file to open Selectează fișierul SQL pentru deschidere - + Text files(*.sql *.txt);;All files(*) Fișiere text (*.sql *.txt);;Toate fișierele (*) - + Select file name Selectează numele fișierului - + Select extension file Selectează fișierul de extensie - + Extension successfully loaded. Extensie încărcată cu succes. - + Error loading extension: %1 Eroare la încărcarea extensiei: %1 - + Could not find resource file: %1 Nu s-a putut găsi fișierul resursă: %1 - - + + Don't show again Nu mai arăta - + New version available. Versiune nouă disponibilă. - + A new DB Browser for SQLite version is available (%1.%2.%3).<br/><br/>Please download at <a href='%4'>%4</a>. O nouă versiune DB Browser for SQLite este disponibilă (%1.%2.%3).<br/><br/>Vă rugăm să descărcați la <a href='%4'>%4</a>. - + Choose a project file to open Alege un fișier de proiect pentru a deschide - + DB Browser for SQLite project file (*.sqbpro) Fișier de proiect DB Browser for SQLite (*.sqbpro) - + Could not open project file for writing. Reason: %1 Nu s-a putut deschide fișierul de proiect pentru scriere. Motiv: %1 - + -- Reference to file "%1" (not supported by this version) -- -- Referință la fișierul "%1"(nu este suportat de această versiune) -- - + Project saved to file '%1' Proiect salvat în fișierul '%1' - + Yes. Don't ask again Da. Nu întreba din nou - + Collation needed! Proceed? Colaționare necesară! Continuați? - + A table in this database requires a special collation function '%1' that this application can't provide without further knowledge. If you choose to proceed, be aware bad things can happen to your database. Create a backup! @@ -4406,82 +4564,82 @@ Dacă alegeți să continuați, fiți conștienți de faptul că se pot întâmp Creează o copie de rezervă! - + creating collation creând coloționare - + Set a new name for the SQL tab. Use the '&&' character to allow using the following character as a keyboard shortcut. Setaează un nume nou pentru fila SQL. Utilizează caracterul '&&' pentru a permite utilizarea următorului caracter ca comandă rapidă de la tastatură. - + Please specify the view name Vă rugăm să specificați numele vederii - + There is already an object with that name. Please choose a different name. Există deja un obiect cu acest nume. Vă rugăm să alegeți un nume diferit. - + View successfully created. Vedere creată cu succes. - + Error creating view: %1 Eroare la crearea vederii: %1 - + This action will open a new SQL tab for running: Această acțiune va deschide o nouă filă SQL pentru rulare: - + This action will open a new SQL tab with the following statements for you to edit and run: Această acțiune va deschide o nouă filă SQL cu următoarele instrucțiuni pe care le puteți edita și executa: - + Press Help for opening the corresponding SQLite reference page. Apasă Ajutor pentru a deschide pagina de referință SQLite corespunzătoare. - + Busy (%1) Ocupat (%1) - + Rename Tab Redenumire Filă - + Duplicate Tab Duplicare Filă - + Close Tab Închidere Filă - + Opening '%1'... Deschizând '%1'... - + There was an error opening '%1'... A apărut o eroare la deschiderea '%1'... - + Value is not a valid URL or filename: %1 Valoarea nu este o adresă URL sau un nume de fișier valid: %1 @@ -4676,75 +4834,80 @@ Selectează axele sau etichetele axelor pentru a glisa și a mări doar în acea - + Load all data and redraw plot Încarcă toate datele și redesenează graficul - + Copy Copiază - + Print... Imprimare... - + + Help + + + + Show legend Arată legendă - + Stacked bars Bare suprapuse - + Fixed number format Format număr fix - + Date/Time Dată/Oră - + Date Dată - + Time Timp - - + + Numeric Numeric - + Label Etichetă - + Invalid Invalid - - - + + + Row # Rând # - + Load all data and redraw plot. Warning: not all data has been fetched from the table yet due to the partial fetch mechanism. unclear translation - 'fetch' @@ -4752,27 +4915,27 @@ Warning: not all data has been fetched from the table yet due to the partial fet Avertisment: nu toate datele au fost preluate din tabel încă din cauza mecanismului de preluare parțială. - + Choose an axis color Alege o culoare a axei - + Choose a filename to save under Alege un nume de fișier sub care să salvezi - + PNG(*.png);;JPG(*.jpg);;PDF(*.pdf);;BMP(*.bmp);;All Files(*) PNG(*.png);; JPG (*.jpg);; PDF(*.pdf);; BMP (*.bmp);; Toate Fișierele (*) - + There are curves in this plot and the selected line style can only be applied to graphs sorted by X. Either sort the table or query by X to remove curves or select one of the styles supported by curves: None or Line. Există curbe în acest grafic și stilul de linie selectat poate fi aplicat numai la graficele sortate de X. Fie sortați tabelul sau interogarea de X pentru a elimina curbele sau selectați unul dintre stilurile suportate de curbe: Niciunul sau Linie. - + Loading all remaining data for this table took %1ms. Încărcarea tuturor datelor rămase pentru acest tabel a durat %1ms. @@ -5595,1882 +5758,312 @@ Toate preferințele dumneavoastră vor fi pierdute și vor fi utilizate valorile The settings file has been saved in location : - Fișierul de setări a fost salvat în locația : - - - - - Open Settings File - Deschide Fișierul De Setări - - - - The settings file was loaded properly. - Fișierul de setări a fost încărcat corect. - - - - The selected settings file is not a normal settings file. -Please check again. - Fișierul de setări selectat nu este un fișier de setări normal. -Vă rugăm să verificați din nou. - - - - ProxyDialog - - - Proxy Configuration - Configurare Proxy - - - - Pro&xy Type - Tip Pro&xy - - - - Host Na&me - Nume &Gazdă - - - - Port - Port - - - - Authentication Re&quired - &Autentificare Necesară - - - - &User Name - Nume &Utilizator - - - - Password - Parolă - - - - None - Niciunul - - - - System settings - Setări sistem - - - - HTTP - HTTP - - - - Socks v5 - Socks v5 - - - - QObject - - - Left - Stânga - - - - Right - Dreapta - - - - Center - Centru - - - - Justify - Justifică - - - - All files (*) - Toate fișierele (*) - - - - SQLite Database Files (*.db *.sqlite *.sqlite3 *.db3) - Fișiere De Bază De Date SQLite (*.db *.sqlite *.sqlite3 *.db3) - - - - DB Browser for SQLite Project Files (*.sqbpro) - Fișiere Proiect DB Browser for SQLite (*.sqbpro) - - - - SQL Files (*.sql) - Fișiere SQL (*.sql) - - - - All Files (*) - Toate Fișierele (*) - - - - Text Files (*.txt) - Fișiere Text (*.txt) - - - - Comma-Separated Values Files (*.csv) - Fișiere Cu Valori Separat Prin Virgulă (*.csv) - - - - Tab-Separated Values Files (*.tsv) - Fișiere Cu Valori Separat Prin File (*.tsv) - - - - Delimiter-Separated Values Files (*.dsv) - Fișiere Cu Valori Separate Prin Delimitator (*.dsv) - - - - Concordance DAT files (*.dat) - Fișiere concordanță DAT (*.dat) - - - - JSON Files (*.json *.js) - Fișiere JSON (*.json *.js) - - - - XML Files (*.xml) - Fișiere XML (*.xml) - - - - Binary Files (*.bin *.dat) - Fișiere Binare (*.bin *.dat) - - - - SVG Files (*.svg) - Fișiere SVG (*.svg) - - - - Hex Dump Files (*.dat *.bin) - Fișiere Hex Dump (*.dat *.bin) - - - - Extensions (*.so *.dylib *.dll) - Extensii (*.so *.dylib *.dll) - - - - Initialization File (*.ini) - Fișier De Inițializare (*.ini) - - - - Error importing data - Eroare la importul datelor - - - - from record number %1 - de la numărul de înregistrare %1 - - - - . -%1 - . -%1 - - - - Importing CSV file... - Importând fișier CSV... - - - - Cancel - Anulare - - - - SQLite database files (*.db *.sqlite *.sqlite3 *.db3) - Fișiere de bază de date SQLite (*.db *.sqlite *.sqlite3 *.db3) - - - - QsciCommand - - - Move down one line - - - - - Extend selection down one line - - - - - Extend rectangular selection down one line - - - - - Scroll view down one line - - - - - Move up one line - - - - - Extend selection up one line - - - - - Extend rectangular selection up one line - - - - - Scroll view up one line - - - - - Scroll to start of document - - - - - Scroll to end of document - - - - - Scroll vertically to centre current line - - - - - Move down one paragraph - - - - - Extend selection down one paragraph - - - - - Move up one paragraph - - - - - Extend selection up one paragraph - - - - - Move left one character - - - - - Extend selection left one character - - - - - Extend rectangular selection left one character - - - - - Move right one character - - - - - Extend selection right one character - - - - - Extend rectangular selection right one character - - - - - Move left one word - - - - - Extend selection left one word - - - - - Move right one word - - - - - Extend selection right one word - - - - - Move to end of previous word - - - - - Extend selection to end of previous word - - - - - Move to end of next word - - - - - Extend selection to end of next word - - - - - Move left one word part - - - - - Extend selection left one word part - - - - - Move right one word part - - - - - Extend selection right one word part - - - - - Move to start of document line - - - - - Extend selection to start of document line - - - - - Extend rectangular selection to start of document line - - - - - Move to start of display line - - - - - Extend selection to start of display line - - - - - Move to start of display or document line - - - - - Extend selection to start of display or document line - - - - - Move to first visible character in document line - - - - - Extend selection to first visible character in document line - - - - - Extend rectangular selection to first visible character in document line - - - - - Move to first visible character of display in document line - - - - - Extend selection to first visible character in display or document line - - - - - Move to end of document line - - - - - Extend selection to end of document line - - - - - Extend rectangular selection to end of document line - - - - - Move to end of display line - - - - - Extend selection to end of display line - - - - - Move to end of display or document line - - - - - Extend selection to end of display or document line - - - - - Move to start of document - - - - - Extend selection to start of document - - - - - Move to end of document - - - - - Extend selection to end of document - - - - - Move up one page - - - - - Extend selection up one page - - - - - Extend rectangular selection up one page - - - - - Move down one page - - - - - Extend selection down one page - - - - - Extend rectangular selection down one page - - - - - Stuttered move up one page - - - - - Stuttered extend selection up one page - - - - - Stuttered move down one page - - - - - Stuttered extend selection down one page - - - - - Delete current character - - - - - Delete previous character - - - - - Delete previous character if not at start of line - - - - - Delete word to left - - - - - Delete word to right - - - - - Delete right to end of next word - - - - - Delete line to left - - - - - Delete line to right - - - - - Delete current line - - - - - Cut current line - - - - - Copy current line - - - - - Transpose current and previous lines - - - - - Duplicate the current line - - - - - Select all - - - - - Move selected lines up one line - - - - - Move selected lines down one line - - - - - Duplicate selection - - - - - Convert selection to lower case - - - - - Convert selection to upper case - - - - - Cut selection - - - - - Copy selection - - - - - Paste - Lipește - - - - Toggle insert/overtype - - - - - Insert newline - - - - - Formfeed - - - - - Indent one level - - - - - De-indent one level - - - - - Cancel - - - - - Undo last command - - - - - Redo last command - - - - - Zoom in - - - - - Zoom out - - - - - QsciLexerCPP - - - Default - Implicit - - - - Inactive default - - - - - C comment - - - - - Inactive C comment - - - - - C++ comment - - - - - Inactive C++ comment - - - - - JavaDoc style C comment - - - - - Inactive JavaDoc style C comment - - - - - Number - - - - - Inactive number - - - - - Keyword - Cuvânt Cheie - - - - Inactive keyword - - - - - Double-quoted string - - - - - Inactive double-quoted string - - - - - Single-quoted string - - - - - Inactive single-quoted string - - - - - IDL UUID - - - - - Inactive IDL UUID - - - - - Pre-processor block - - - - - Inactive pre-processor block - - - - - Operator - - - - - Inactive operator - - - - - Identifier - Identificator - - - - Inactive identifier - - - - - Unclosed string - - - - - Inactive unclosed string - - - - - C# verbatim string - - - - - Inactive C# verbatim string - - - - - JavaScript regular expression - - - - - Inactive JavaScript regular expression - - - - - JavaDoc style C++ comment - - - - - Inactive JavaDoc style C++ comment - - - - - Secondary keywords and identifiers - - - - - Inactive secondary keywords and identifiers - - - - - JavaDoc keyword - - - - - Inactive JavaDoc keyword - - - - - JavaDoc keyword error - - - - - Inactive JavaDoc keyword error - - - - - Global classes and typedefs - - - - - Inactive global classes and typedefs - - - - - C++ raw string - - - - - Inactive C++ raw string - - - - - Vala triple-quoted verbatim string - - - - - Inactive Vala triple-quoted verbatim string - - - - - Pike hash-quoted string - - - - - Inactive Pike hash-quoted string - - - - - Pre-processor C comment - - - - - Inactive pre-processor C comment - - - - - JavaDoc style pre-processor comment - - - - - Inactive JavaDoc style pre-processor comment - - - - - User-defined literal - - - - - Inactive user-defined literal - - - - - Task marker - - - - - Inactive task marker - - - - - Escape sequence - - - - - Inactive escape sequence - - - - - QsciLexerHTML - - - HTML default - - - - - Tag - - - - - Unknown tag - - - - - Attribute - - - - - Unknown attribute - - - - - HTML number - - - - - HTML double-quoted string - - - - - HTML single-quoted string - - - - - Other text in a tag - - - - - HTML comment - - - - - Entity - - - - - End of a tag - - - - - Start of an XML fragment - - - - - End of an XML fragment - - - - - Script tag - - - - - Start of an ASP fragment with @ - - - - - Start of an ASP fragment - - - - - CDATA - - - - - Start of a PHP fragment - - - - - Unquoted HTML value - - - - - ASP X-Code comment - - - - - SGML default - - - - - SGML command - - - - - First parameter of an SGML command - - - - - SGML double-quoted string - - - - - SGML single-quoted string - - - - - SGML error - - - - - SGML special entity - - - - - SGML comment - - - - - First parameter comment of an SGML command - - - - - SGML block default - - - - - Start of a JavaScript fragment - - - - - JavaScript default - - - - - JavaScript comment - - - - - JavaScript line comment - - - - - JavaDoc style JavaScript comment - - - - - JavaScript number - - - - - JavaScript word - - - - - JavaScript keyword - - - - - JavaScript double-quoted string - - - - - JavaScript single-quoted string - - - - - JavaScript symbol - - - - - JavaScript unclosed string - - - - - JavaScript regular expression - - - - - Start of an ASP JavaScript fragment - - - - - ASP JavaScript default - - - - - ASP JavaScript comment - - - - - ASP JavaScript line comment - - - - - JavaDoc style ASP JavaScript comment - - - - - ASP JavaScript number - - - - - ASP JavaScript word - - - - - ASP JavaScript keyword - - - - - ASP JavaScript double-quoted string - - - - - ASP JavaScript single-quoted string - - - - - ASP JavaScript symbol - - - - - ASP JavaScript unclosed string - - - - - ASP JavaScript regular expression - - - - - Start of a VBScript fragment - - - - - VBScript default - - - - - VBScript comment - - - - - VBScript number - - - - - VBScript keyword - - - - - VBScript string - - - - - VBScript identifier - - - - - VBScript unclosed string - - - - - Start of an ASP VBScript fragment - - - - - ASP VBScript default - - - - - ASP VBScript comment - - - - - ASP VBScript number - - - - - ASP VBScript keyword - - - - - ASP VBScript string - - - - - ASP VBScript identifier - - - - - ASP VBScript unclosed string - - - - - Start of a Python fragment - - - - - Python default - - - - - Python comment - - - - - Python number - - - - - Python double-quoted string - - - - - Python single-quoted string - - - - - Python keyword - - - - - Python triple double-quoted string - - - - - Python triple single-quoted string - - - - - Python class name - - - - - Python function or method name - - - - - Python operator - - - - - Python identifier - - - - - Start of an ASP Python fragment - - - - - ASP Python default - - - - - ASP Python comment - - - - - ASP Python number - - - - - ASP Python double-quoted string - - - - - ASP Python single-quoted string - - - - - ASP Python keyword - - - - - ASP Python triple double-quoted string - - - - - ASP Python triple single-quoted string - - - - - ASP Python class name - - - - - ASP Python function or method name - - - - - ASP Python operator - - - - - ASP Python identifier - - - - - PHP default - - - - - PHP double-quoted string - - - - - PHP single-quoted string - - - - - PHP keyword - - - - - PHP number - - - - - PHP variable - - - - - PHP comment - - - - - PHP line comment - - - - - PHP double-quoted variable - - - - - PHP operator - - - - - QsciLexerJSON - - - Default - Implicit + Fișierul de setări a fost salvat în locația : + - - Number - + + Open Settings File + Deschide Fișierul De Setări - - String - Șir + + The settings file was loaded properly. + Fișierul de setări a fost încărcat corect. - - Unclosed string - + + The selected settings file is not a normal settings file. +Please check again. + Fișierul de setări selectat nu este un fișier de setări normal. +Vă rugăm să verificați din nou. + + + ProxyDialog - - Property - + + Proxy Configuration + Configurare Proxy - - Escape sequence - + + Pro&xy Type + Tip Pro&xy - - Line comment - + + Host Na&me + Nume &Gazdă - - Block comment - + + Port + Port - - Operator - + + Authentication Re&quired + &Autentificare Necesară - - IRI - + + &User Name + Nume &Utilizator - - JSON-LD compact IRI - + + Password + Parolă - - JSON keyword - + + None + Niciunul - - JSON-LD keyword - + + System settings + Setări sistem - - Parsing error - + + HTTP + HTTP - - - QsciLexerJavaScript - - Regular expression - Expresie regulată + + SOCKS5 + SOCKS5 - QsciLexerPython + QObject - - Default - Implicit + + Left + Stânga - - Comment - Comentariu + + Right + Dreapta - - Number - + + Center + Centru - - Double-quoted string - + + Justify + Justifică - - Single-quoted string - + + All files (*) + Toate fișierele (*) - - Keyword - Cuvânt Cheie + + SQLite Database Files (*.db *.sqlite *.sqlite3 *.db3) + Fișiere De Bază De Date SQLite (*.db *.sqlite *.sqlite3 *.db3) - - Triple single-quoted string - + + DB Browser for SQLite Project Files (*.sqbpro) + Fișiere Proiect DB Browser for SQLite (*.sqbpro) - - Triple double-quoted string - + + SQL Files (*.sql) + Fișiere SQL (*.sql) - - Class name - + + All Files (*) + Toate Fișierele (*) - - Function or method name - + + Text Files (*.txt) + Fișiere Text (*.txt) - - Operator - + + Comma-Separated Values Files (*.csv) + Fișiere Cu Valori Separat Prin Virgulă (*.csv) - - Identifier - Identificator + + Tab-Separated Values Files (*.tsv) + Fișiere Cu Valori Separat Prin File (*.tsv) - - Comment block - + + Delimiter-Separated Values Files (*.dsv) + Fișiere Cu Valori Separate Prin Delimitator (*.dsv) - - Unclosed string - + + Concordance DAT files (*.dat) + Fișiere concordanță DAT (*.dat) - - Highlighted identifier - + + JSON Files (*.json *.js) + Fișiere JSON (*.json *.js) - - Decorator - + + XML Files (*.xml) + Fișiere XML (*.xml) - - Double-quoted f-string - + + Binary Files (*.bin *.dat) + Fișiere Binare (*.bin *.dat) - - Single-quoted f-string - + + SVG Files (*.svg) + Fișiere SVG (*.svg) - - Triple single-quoted f-string - + + Hex Dump Files (*.dat *.bin) + Fișiere Hex Dump (*.dat *.bin) - - Triple double-quoted f-string - + + Extensions (*.so *.dylib *.dll) + Extensii (*.so *.dylib *.dll) - - - QsciLexerSQL - - Default - Implicit + + Initialization File (*.ini) + Fișier De Inițializare (*.ini) - - Comment - Comentariu + + Error importing data + Eroare la importul datelor - - Comment line - + + from record number %1 + de la numărul de înregistrare %1 - - JavaDoc style comment - + + . +%1 + . +%1 - - Number - + + Importing CSV file... + Importând fișier CSV... - - Keyword - Cuvânt Cheie + + Cancel + Anulare - - Double-quoted string - + + SQLite database files (*.db *.sqlite *.sqlite3 *.db3) + Fișiere de bază de date SQLite (*.db *.sqlite *.sqlite3 *.db3) + + + QsciCommand - - Single-quoted string - + Paste + Lipește + + + QsciLexerCPP - - SQL*Plus keyword - + Default + Implicit - - SQL*Plus prompt - + Keyword + Cuvânt Cheie - - Operator - + Identifier + Identificator + + + QsciLexerJSON - - Identifier - Identificator + Default + Implicit - - SQL*Plus comment - + String + Șir + + + QsciLexerJavaScript - - # comment line - + Regular expression + Expresie regulată + + + QsciLexerPython - - JavaDoc keyword - + Default + Implicit - - JavaDoc keyword error - + Comment + Comentariu - - User defined 1 - + Keyword + Cuvânt Cheie - - User defined 2 - + Identifier + Identificator + + + QsciLexerSQL - - User defined 3 - + Default + Implicit - - User defined 4 - + Comment + Comentariu - - Quoted identifier - + Keyword + Cuvânt Cheie - - Quoted operator - + Identifier + Identificator QsciScintilla - &Undo - &Anulează - - - - &Redo - - - - - Cu&t - - - - - &Copy - - - - - &Paste - - - - - Delete - + &Anulează - Select All - Selectează Toate + Selectează Toate @@ -7868,26 +6461,26 @@ Sunteți sigur că doriți să continuați? Vă rugăm să introduceți fraza de acces pentru acest certificat de client pentru a vă autentifica. - + Cancel Anulează - + Uploading remote database to %1 Încărcare bază de date la distanță către %1 - + Downloading remote database from %1 Descărcare bază de date la distanță de la %1 - + Error: Cannot open the file for sending. Eroare: Nu se poate deschide fișierul pentru trimitere. @@ -8631,33 +7224,33 @@ Utilizarea acestei funcții trebuie autorizată din Preferințe. încărcare... - + References %1(%2) Hold %3Shift and click to jump there Referințele %1(%2) Țineți apăsat %3Shift și faceți clic pentru a sări acolo - + Error changing data: %1 Eroare la modificarea datelor: %1 - + retrieving list of columns recuperare listă de coloane - + Fetching data... unclear translation - 'fetch' Preluarea datelor... - - + + Cancel Anulare @@ -8952,13 +7545,12 @@ Hold %3Shift and click to jump there - <html><head/><body><p>This button creates a new record in the database. Hold the mouse button to open a pop-up menu of different options:</p><ul><li><span style=" font-weight:600;">New Record</span>: insert a new record with default values in the database.</li><li><span style=" font-weight:600;">Insert Values...</span>: open a dialog for entering values before they are inserted in the database. This allows to enter values acomplishing the different constraints. This dialog is also open if the <span style=" font-weight:600;">New Record</span> option fails due to these constraints.</li></ul></body></html> - misspelling 'acomplishing' -> 'accomplishing' + <html><head/><body><p>This button creates a new record in the database. Hold the mouse button to open a pop-up menu of different options:</p><ul><li><span style=" font-weight:600;">New Record</span>: insert a new record with default values in the database.</li><li><span style=" font-weight:600;">Insert Values...</span>: open a dialog for entering values before they are inserted in the database. This allows to enter values accomplishing the different constraints. This dialog is also open if the <span style=" font-weight:600;">New Record</span> option fails due to these constraints.</li></ul></body></html> <html><head/><body><p>Acest buton creează o înregistrare nouă în baza de date. Țineți apăsat butonul mouse-ului pentru a deschide un meniu pop-up cu diferite opțiuni:</p><ul><li><span style=" font-weight:600;">Înregistrare Nouă</span>: inserează o înregistrare nouă cu valori implicite în baza de date.</li><li><span style=" font-weight:600;">Inserare Valori...</span>: deschide un dialog pentru introducerea valorilor înainte ca acestea să fie inserate în baza de date. Asta permite introducerea valorilor care îndeplinesc diferitele constrângeri. Acest dialog este, de asemenea, deschis dacă opțiunea <span style=" font-weight:600;">Înregistrare Nouă</span> nu reușește din cauza acestor constrângeri.</li></ul></body></html> - + Delete Record Șterge Înregistrare @@ -9051,7 +7643,7 @@ Hold %3Shift and click to jump there - <html><head/><body><p>This popup menu provides the following options applying to the currently browsed and filtered table:</p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Export to CSV: this option exports the data of the browsed table as currently displayed (after filters, display formats and order column) to a CSV file.</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Save as view: this option saves the current setting of the browsed table (filters, display formats and order column) as an SQL view that you can later browse or use in SQL statements.</li></ul></body></html> + <html><head/><body><p>This pop-up menu provides the following options applying to the currently browsed and filtered table:</p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Export to CSV: this option exports the data of the browsed table as currently displayed (after filters, display formats and order column) to a CSV file.</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Save as view: this option saves the current setting of the browsed table (filters, display formats and order column) as an SQL view that you can later browse or use in SQL statements.</li></ul></body></html> <html><head/><body><p>Acest meniu pop-up oferă următoarele opțiuni care se aplică tabelului navigat și filtrat în prezent:</p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Exportă în CSV: această opțiune exportă datele din tabelul navigat, așa cum este afișate în prezent (după filtre, formate de afișare și coloană de ordine) într-un fișier CSV.</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Salvează ca vedere: această opțiune salvează setarea curentă a tabelului navigat (filtre, formate de afișare și coloană de ordine) ca vedere SQL pe care o puteți răsfoi ulterior sau utiliza în instrucțiuni SQL.</li></ul></body></html> @@ -9076,7 +7668,7 @@ Hold %3Shift and click to jump there - + Set encoding Setează codificarea @@ -9364,12 +7956,12 @@ Hold %3Shift and click to jump there . Sumă: %1; Medie: %2; Minim: %3; Maxim: %4 - + Conditional formats for "%1" Formate condiționate pentru "%1" - + determining row count... determinând numărul de rânduri... @@ -9379,86 +7971,86 @@ Hold %3Shift and click to jump there Filtrează în orice coloană - + %L1 - %L2 of >= %L3 %L1 - %L2 din >= %L3 - + %L1 - %L2 of %L3 %L1 - %L2 din %L3 - + (clipped at %L1 rows) (tăiat la %L1 rânduri) - + Please enter a pseudo-primary key in order to enable editing on this view. This should be the name of a unique column in the view. Vă rugăm introduceți o pseudo-cheie primară pentru a activa editarea în această vedere. Acesta ar trebui să fie numele unei coloane unice în vedere. - + Delete Records Șterge Înregistrările - + Duplicate records Înregistrări duplicate - + Duplicate record Înregistrare duplicată - + Ctrl+" Ctrl+" - + Adjust rows to contents Ajustează rândurile la conținut - + Error deleting record: %1 Eroare la ștergerea înregistrării: %1 - + Please select a record first Vă rugăm să selectați mai întâi o înregistrare - + Please choose a new encoding for all tables. Vă rugăm să alegeți o nouă codificare pentru toate tabelele. - + Please choose a new encoding for this table. Vă rugăm să alegeți o nouă codificare pentru acest tabel. - + %1 Leave the field empty for using the database encoding. %1 Lăsați câmpul gol pentru utilizarea codificării bazei de date. - + This encoding is either not valid or not supported. Această codificare nu este validă sau nu este suportată. - + %1 replacement(s) made. %1 înlocuire(i) efectuată. @@ -9486,24 +8078,6 @@ Lăsați câmpul gol pentru utilizarea codificării bazei de date. Setează un nume nou pentru navigatorul de date. Utilizează caracterul '&&' pentru a permite utilizarea următorului caracter ca o comandă rapidă de la tastatură. - - UndoStack - - - Inserting %1 bytes - - - - - Delete %1 chars - - - - - Overwrite %1 chars - - - VacuumDialog diff --git a/src/translations/sqlb_ru.ts b/src/translations/sqlb_ru.ts index 3a56b082f..474ebd511 100644 --- a/src/translations/sqlb_ru.ts +++ b/src/translations/sqlb_ru.ts @@ -15,7 +15,7 @@ - <html><head/><body><p>DB Browser for SQLite is an open source, freeware visual tool used to create, design and edit SQLite database files.</p><p>It is bi-licensed under the Mozilla Public License Version 2, as well as the GNU General Public License Version 3 or later. You can modify or redistribute it under the conditions of these licenses.</p><p>See <a href="https://www.gnu.org/licenses/gpl.html"><span style=" text-decoration: underline; color:#0000ff;">http://www.gnu.org/licenses/gpl.html</span></a> and <a href="https://www.mozilla.org/MPL/2.0/index.txt"><span style=" text-decoration: underline; color:#0000ff;">https://www.mozilla.org/MPL/2.0/index.txt</span></a> for details.</p><p>For more information on this program please visit our website at: <a href="https://sqlitebrowser.org"><span style=" text-decoration: underline; color:#0000ff;">http://sqlitebrowser.org</span></a></p><p><span style=" font-size:small;">This software uses the GPL/LGPL Qt Toolkit from </span><a href="http://qt-project.org/"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://qt-project.org/</span></a><span style=" font-size:small;"><br/>See </span><a href="https://doc.qt.io/qt-5/licensing.html"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://qt-project.org/doc/qt-5/licensing.html</span></a><span style=" font-size:small;"> for licensing terms and information.</span></p><p><span style=" font-size:8pt;">We use the nalgeon/sqlean library for SQLite extensions support.<br/>This library is licensed under the MIT license, see the following for more information:<br/></span><a href="https://github.com/nalgeon/sqlean"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">https://github.com/nalgeon/sqlean</span></a></p><p><span style=" font-size:small;">It also uses the Pastel SVG icon set by Michael Buckley under a Creative Commons Attribution Share Alike 4.0 license.<br/>See </span><a href="https://codefisher.org/pastel-svg/"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://codefisher.org/pastel-svg/</span></a><span style=" font-size:small;"> for details.</span></p></body></html> + <html><head/><body><p>DB Browser for SQLite is an open source, freeware visual tool used to create, design and edit SQLite database files.</p><p>It is bi-licensed under the Mozilla Public License Version 2, as well as the GNU General Public License Version 3 or later. You can modify or redistribute it under the conditions of these licenses.</p><p>See <a href="https://www.gnu.org/licenses/gpl.html"><span style=" text-decoration: underline; color:#0000ff;">https://www.gnu.org/licenses/gpl.html</span></a> and <a href="https://www.mozilla.org/MPL/2.0/index.txt"><span style=" text-decoration: underline; color:#0000ff;">https://www.mozilla.org/MPL/2.0/index.txt</span></a> for details.</p><p>For more information on this program please visit our website at: <a href="https://sqlitebrowser.org"><span style=" text-decoration: underline; color:#0000ff;">https://sqlitebrowser.org</span></a></p><p><span style=" font-size:small;">This software uses the GPL/LGPL Qt Toolkit from </span><a href="https://qt-project.org/"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://qt-project.org/</span></a><span style=" font-size:small;"><br/>See </span><a href="https://doc.qt.io/qt-5/licensing.html"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://doc.qt.io/qt-5/licensing.html</span></a><span style=" font-size:small;"> for licensing terms and information.</span></p><p><span style=" font-size:8pt;">We use the nalgeon/sqlean library for SQLite extensions support.<br/>This library is licensed under the MIT license, see the following for more information:<br/></span><a href="https://github.com/nalgeon/sqlean"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">https://github.com/nalgeon/sqlean</span></a></p><p><span style=" font-size:small;">It also uses the Pastel SVG icon set by Michael Buckley under a Creative Commons Attribution Share Alike 4.0 license.<br/>See </span><a href="https://codefisher.org/pastel-svg/"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://codefisher.org/pastel-svg/</span></a><span style=" font-size:small;"> for details.</span></p></body></html> @@ -285,36 +285,36 @@ - Invalid option/non-existant file: %1 + Invalid option/non-existent file: %1 - + SQLite Version Версия SQLite - + SQLCipher Version %1 (based on SQLite %2) - + DB Browser for SQLite Version %1. - + Last commit hash when built: %1 - + Built for %1, running on %2 - + Qt Version %1 @@ -392,7 +392,7 @@ Ключ - + Please set a key to encrypt the database. Note that if you change any of the other, optional, settings you'll need to re-enter them as well every time you open the database file. Leave the password fields empty to disable the encryption. @@ -403,7 +403,7 @@ The encryption process might take some time and you should have a backup copy of Процесс может занять некоторое время и настоятельно рекомендуем создать резервную копию перед продолжением! Не сохраненные изменения автоматически будут сохранены. - + Please enter the key used to encrypt the database. If any of the other settings were altered for this database file you need to provide this information as well. Пожалуйста введите ключ для шифрования базы данных. @@ -428,129 +428,129 @@ If any of the other settings were altered for this database file you need to pro Выберите формат отображения для колонки '%1', который будет применен к каждому ее значению. - + Default По умолчанию - + Decimal number Десятичное число - + Exponent notation Экспоненциальная запись - + Hex blob Бинарные данные - + Hex number Шестнадцатеричное число - + Apple NSDate to date Apple NSDate дата - + Java epoch (milliseconds) to date Java epoch дата - + .NET DateTime.Ticks to date - + Julian day to date Юлианская дата - + Unix epoch to local time Unix-время - + WebKit / Chromium epoch to date - + WebKit / Chromium epoch to local time - + Date as dd/mm/yyyy Дата в формате дд/мм/гггг - + Lower case Нижний регистр - + Binary GUID to text - + SpatiaLite Geometry to SVG - + Custom display format must contain a function call applied to %1 - + Error in custom display format. Message from database engine: %1 - + Custom display format must return only one column but it returned %1. - + Octal number Восьмеричное число - + Round number Округленное число - + Unix epoch to date Unix-дата - + Upper case Верхний регистр - + Windows DATE to date Windows дата - + Custom Мой формат @@ -677,176 +677,176 @@ If any of the other settings were altered for this database file you need to pro DBBrowserDB - + Please specify the database name under which you want to access the attached database - + Invalid file format Ошибочный формат файла - + Do you want to save the changes made to the database file %1? Сохранить сделанные изменения в файле базы данных %1? - + Exporting database to SQL file... Экспорт базы данных в файл SQL... - - + + Cancel Отменить - + Executing SQL... Выполнить код SQL... - + Action cancelled. Действие отменено. - + Do you really want to close this temporary database? All data will be lost. Вы действительно хотите закрыть эту временную БД? Все данные будут потеряны. - + Database didn't close correctly, probably still busy - + Cannot open destination file: '%1' - - + + Cannot backup to file: '%1'. Message: %2 - + The database is currently busy: БД занята: - + Do you want to abort that other operation? Вы хотите отменить эту операцию? - - + + No database file opened Файл БД не открыт - - + + Error in statement #%1: %2. Aborting execution%3. Ошибка в выражении #%1: %2. Прерываем выполнение%3. - - + + and rolling back и отменяем - + didn't receive any output from %1 - + could not execute command: %1 - + Cannot delete this object Не удается удалить этот объект - + Cannot set data on this object Невозможно назначить данные для этого объекта - - + + A table with the name '%1' already exists in schema '%2'. Таблица с именем '%1' уже существует в схеме '%2'. - + No table with name '%1' exists in schema '%2'. - - + + Cannot find column %1. - + Creating savepoint failed. DB says: %1 - + Renaming the column failed. DB says: %1 - - + + Releasing savepoint failed. DB says: %1 - + Creating new table failed. DB says: %1 - + Copying data to new table failed. DB says: %1 - + Deleting old table failed. DB says: %1 - + Error renaming table '%1' to '%2'. Message from database engine: %3 - + could not get list of db objects: %1 - + Restoring some of the objects associated with this table failed. This is most likely because some column names changed. Here's the SQL statement which you might want to fix and execute manually: @@ -855,32 +855,32 @@ Message from database engine: - + could not get list of databases: %1 не могу получить список БД: %1 - + Error loading extension: %1 Ошибка загрузки расширения: %1 - + Error loading built-in extension: %1 - + could not get column information не могу получить информацию о колонке - + Error setting pragma %1 to %2: %3 Ошибка установки прагмы %1 в %2: %3 - + File not found. Файл не найден. @@ -1942,7 +1942,7 @@ All data currently stored in this field will be lost. ExtendedScintilla - + Ctrl+H @@ -1953,22 +1953,22 @@ All data currently stored in this field will be lost. - + Ctrl+P - + Find... - + Find and Replace... Найти и Заменить... - + Print... Печать... @@ -1976,129 +1976,129 @@ All data currently stored in this field will be lost. ExtendedTableWidget - + Use as Exact Filter Использовать как Точный Фильтр - + Containing Содержит - + Not containing - + Not equal to Не равно - + Greater than Больше чем - + Less than Меньше чем - + Greater or equal Больше или равно - + Less or equal Меньше или равно - + Between this and... Между этим и... - + Regular expression - + Edit Conditional Formats... - + Set to NULL Сбросить в NULL - + Cut - + Copy Копировать - + Copy with Headers Копировать с заголовками - + Copy as SQL Копировать как SQL - + Paste Вставить - + Print... Печать... - + Use in Filter Expression Использовать в Выражении Фильтра - + Alt+Del - + Ctrl+Shift+C - + Ctrl+Alt+C - + The content of the clipboard is bigger than the range selected. Do you want to insert it anyway? Содержимое буфера обмена больше чем выделенный диапазон. Все равно вставить? - + <p>Not all data has been loaded. <b>Do you want to load all data before selecting all the rows?</b><p><p>Answering <b>No</b> means that no more data will be loaded and the selection will not be performed.<br/>Answering <b>Yes</b> might take some time while the data is loaded but the selection will be complete.</p>Warning: Loading all the data might require a great amount of memory for big tables. - + Cannot set selection to NULL. Column %1 has a NOT NULL constraint. @@ -2150,12 +2150,12 @@ Do you want to insert it anyway? FilterLineEdit - + Filter Фильтр - + These input fields allow you to perform quick filters in the currently selected table. By default, the rows containing the input text are filtered out. The following operators are also supported: @@ -2171,92 +2171,92 @@ x~y Range: values between x and y - + Clear All Conditional Formats - + Use for Conditional Format - + Edit Conditional Formats... - + Set Filter Expression Установить Выражение Фильтра - + What's This? Что Это? - + Is NULL NULL - + Is not NULL не NULL - + Is empty пусто - + Is not empty не пусто - + Not containing... - + Equal to... Равно... - + Not equal to... Не равно... - + Greater than... Больше чем... - + Less than... Меньше чем... - + Greater or equal... Больше или равно... - + Less or equal... Меньше или равно... - + In range... В диапазоне... - + Regular expression... @@ -2479,7 +2479,7 @@ x~y Range: values between x and y - + Tab Табуляция @@ -2622,7 +2622,7 @@ x~y Range: values between x and y - + Deselect All Отменить Выбор @@ -2632,52 +2632,52 @@ x~y Range: values between x and y Найти Совпадения - + Select All Выбрать Все - + There is already a table named '%1' and an import into an existing table is only possible if the number of columns match. Уже существует таблица с именем '%1' и импорт в существующую таблицу возможен, только если число столбцов совпадает. - + There is already a table named '%1'. Do you want to import the data into it? Уже существует таблица с именем '%1'. Вы хотите импортировать данные в нее? - + Creating restore point failed: %1 Ошибка сознания точки восстановления: %1 - + Creating the table failed: %1 Ошибка создания таблицы: %1 - + importing CSV импортирование CSV - + Could not prepare INSERT statement: %1 - + Unexpected end of file. Please make sure that you have configured the correct quote characters and the file is not malformed. - + Importing the file '%1' took %2ms. Of this %3ms were spent in the row function. Импорт файла '%1' занял %2мс. Из них %3мс было потрачено в функции строки. - + Inserting row failed: %1 Ошибка вставки строки: %1 @@ -2690,37 +2690,196 @@ x~y Range: values between x and y Обозреватель для SQLite - + toolBar1 панельИнструментов1 - + Warning: this pragma is not readable and this value has been inferred. Writing the pragma might overwrite a redefined LIKE provided by an SQLite extension. Предупреждение: эта прагма не читается, и это значение было выведено. Применение прагмы может перезаписать переопределенный LIKE, предоставляемый расширением SQLite. - + + Temp Store + + + + + Secure Delete + + + + + Case Sensitive Like + + + + + Journal Mode + + + + + Journal Size Limit + + + + + Recursive Triggers + + + + + Page Size + + + + + Foreign Keys + + + + + Auto Vacuum + + + + + Max Page Count + + + + + Checkpoint Full FSYNC + + + + + + Off + + + + + + Normal + + + + + + Full + + + + + Default + По умолчанию + + + + File + Файл + + + + + Memory + + + + + Delete + + + + + Truncate + + + + + Persist + + + + + WAL + + + + + Exclusive + + + + + Automatic Index + + + + + Ignore Check Constraints + + + + + Full FSYNC + + + + + WAL Auto Checkpoint + + + + + User Version + + + + + Synchronous + + + + + None + Нет + + + + Incremental + + + + + Locking Mode + + + + Too&ls &Инструменты - + Error Log - + This button clears the contents of the SQL logs Эта кнопка очищает содержимое журналов SQL - + This panel lets you examine a log of all SQL commands issued by the application or by yourself Эта панель позволяет вам просматривать журнал всех SQL-команд, выданных приложением или вами - + This is the structure of the opened database. You can drag multiple object names from the Name column and drop them into the SQL editor and you can adjust the properties of the dropped names using the context menu. This would help you in composing SQL statements. You can drag SQL statements from the Schema column and drop them into the SQL editor or into other applications. @@ -2731,326 +2890,326 @@ You can drag SQL statements from the Schema column and drop them into the SQL ed - - + + Project Toolbar Панель Инструментов Проекта - + Extra DB toolbar Дополнительная Панель Инструментов БД - - - + + + Close the current database file Закрыть файл текущей БД - + &New Database - - + + Ctrl+F4 - + &Undo - - + + Undo last change to the database - + This action undoes the last change performed to the database in the Database Browser or in Execute SQL. Redoing is not possible. - + Open the Modify Table wizard, where it is possible to rename an existing table. It is also possible to add or delete fields from a table, as well as modify field names and types. - + &About О &программе - + New &tab - + This button opens a new tab for the SQL editor Эта кнопка открывает новую вкладку для редактора SQL - + Execute all/selected SQL Выполнить все/выбранный SQL - + This button executes the currently selected SQL statements. If no text is selected, all SQL statements are executed. Эта кнопка выполняет текущие выбранные операторы SQL. Если в текстовом редакторе ничего не выбрано , все инструкции SQL выполняются. - + Ctrl+Shift+T - + &Load Extension... &Загрузить расширение... - + Execute line - + This button executes the SQL statement present in the current editor line Эта кнопка выполняет оператор SQL, присутствующий в текущей строке редактора - + &Wiki &Вики - + F1 - + Bug &Report... Баг &репорт... - + Feature Re&quest... Запросить &функцию... - + Web&site &Веб-сайт - + &Donate on Patreon... Сделать &пожертвование в Patreon... - + &Save Project - + Open &Project... Открыть &проект... - + Open &Project - + &Attach Database... &Прикрепить БД... - - + + Add another database file to the current database connection Добавить другой файл БД в текущее соединение - + This button lets you add another database file to the current database connection Эта кнопка позволяет добавить другой файл БД в текущее соединение с БД - + &Set Encryption... Назначить &шифрование... - + This button saves the content of the current SQL editor tab to a file Эта кнопка сохраняет содержимое текущей вкладки редактора SQL в файл - + SQLCipher &FAQ - + Table(&s) to JSON... Таблицы в файл &JSON... - + Open Data&base Read Only... Открыть БД &только для чтения... - + Ctrl+Shift+O - + Save results Сохранить результаты - + Save the results view Сохранить результаты - + This button lets you save the results of the last executed query Эта кнопка позволяет сохранить результаты последнего выполненного запроса - - + + Find text in SQL editor Найти текст в редакторе SQL - + Find - + This button opens the search bar of the editor Эта кнопка открывает панель поиска редактора - + Ctrl+F - - + + Find or replace text in SQL editor Найти или заменить текст в редакторе SQL - + Find or replace - + This button opens the find/replace dialog for the current editor tab Эта кнопка открывает диалог поиска/замены для текущей вкладки редактора - + Ctrl+H - + Export to &CSV Экспортировать в &CSV - + Export to &JSON - + Save as &view Сохранить как &представление - + Save as view Сохранить как представление - + Shows or hides the Project toolbar. Показывает или скрывает панель инструментов Проекта. - + Extra DB Toolbar Дополнительная Панель Инструментов БД - - + + Ctrl+Shift+W - + Table from CSV data in Clipboard... - + This treats the current clipboard contents as a CSV file and opens the same import wizard that is used for importing CSV data from a file. - + Show &Row Counts - + This shows the number of rows for each table and view in the database. - + Save Database &As... - + Save the current database as a different file - + Refresh Обновить - + Reload the database structure - + Open SQL file(s) @@ -3076,560 +3235,560 @@ You can drag SQL statements from the Schema column and drop them into the SQL ed - - + + E&xecute SQL This has to be equal to the tab title in all the main tabs - + &Recent Files - + This button opens files containing SQL statements and loads them in new editor tabs - + This button lets you open a DB Browser for SQLite project file - + &Open Database - + New In-&Memory Database Новая БД в &Памяти - + Drag && Drop SELECT Query - - + + When dragging fields from the same table or a single table, drop a SELECT query into the editor - + Drag && Drop Qualified Names Квалифицированные имена при перетаскивании - - + + Use qualified names (e.g. "Table"."Field") when dragging the objects and dropping them into the editor Квалифицированные имена (например, "Table"."Field") при перетаскивании объектов в редактор - + Drag && Drop Enquoted Names Экранированные имена при перетаскивании - - + + Use escaped identifiers (e.g. "Table1") when dragging the objects and dropping them into the editor Экранировать имена идентификаторов (например, "Table1"), когда перетаскиваются объекты в редактор - + &Integrity Check Проверка &Целостности - + Runs the integrity_check pragma over the opened database and returns the results in the Execute SQL tab. This pragma does an integrity check of the entire database. Выполняет прагму integrity_check для открытой БД и возвращает результаты во вкладке "SQL". Эта прагма выполняет проверку целостности всей базы данных. - + &Foreign-Key Check Проверка &Внешних ключей - + Runs the foreign_key_check pragma over the opened database and returns the results in the Execute SQL tab Запускает прагму foreign_key_check для открытой БД и возвращает результаты во вкладке "SQL" - + &Quick Integrity Check &Быстрая Проверка Целостности - + Run a quick integrity check over the open DB Запуск быстрой проверки целостности для открытый БД - + Runs the quick_check pragma over the opened database and returns the results in the Execute SQL tab. This command does most of the checking of PRAGMA integrity_check but runs much faster. Запускает прагму quick_check для открытой БД и возвращает результаты во вкладке "SQL". Эта команда выполняет большую часть проверки PRAGMA integrity_check, но работает намного быстрее. - + &Optimize &Оптимизация - + Attempt to optimize the database Попытка оптимизации БД - + Runs the optimize pragma over the opened database. This pragma might perform optimizations that will improve the performance of future queries. Выполняет прагму optimize для открытой БД. Эта прагма может выполнять оптимизацию, которая улучшит производительность будущих запросов. - - + + Print Печать - + Print text from current SQL editor tab Печать текста из текущей вкладки редактора SQL - + Open a dialog for printing the text in the current SQL editor tab Открывает диалоговое окно для печати текста из текущей вкладки редактора SQL - + Print the structure of the opened database Печать структуры открытой БД - + Open a dialog for printing the structure of the opened database Открывает диалоговое окно для печати структуры текущей БД - + Un/comment block of SQL code - + Un/comment block - + Comment or uncomment current line or selected block of code - + Comment or uncomment the selected lines or the current line, when there is no selection. All the block is toggled according to the first line. - + Ctrl+/ - + Stop SQL execution - + Stop execution - + Stop the currently running SQL script - + Browse Table - + Close Pro&ject - - + + Close project and database files and return to the initial state - + Ctrl+Shift+F4 - - + + Detach Database - - + + Detach database file attached to the current database connection - + &Save Project As... - - - + + + Save the project in a file selected in a dialog - + Save A&ll - - - + + + Save DB file, project file and opened SQL files - + Ctrl+Shift+S - + &File &Файл - + &Import &Импорт - + &Export &Экспорт - + &Edit &Редактирование - + &View &Вид - + &Help &Справка - + DB Toolbar Панель инструментов БД - + Edit Database &Cell Редактирование &ячейки БД - + DB Sche&ma Схе&ма БД - + &Remote &Удаленный сервер - - + + Execute current line Выполнить текущую строку - + Shift+F5 - + Sa&ve Project &Сохранить проект - + Open an existing database file in read only mode Открыть существующий файл базы данных в режиме только для чтения - + Opens the SQLCipher FAQ in a browser window Открыть SQLCiphier FAQ в браузере - + Export one or more table(s) to a JSON file Экспортировать таблицы в JSON файл - - + + Save SQL file as Сохранить файл SQL как - + &Browse Table Пр&осмотр данных - + User Пользователем - + Application Приложением - + &Clear О&чистить - + &New Database... &Новая база данных... - - + + Create a new database file Создать новый файл базы данных - + This option is used to create a new database file. Эта опция используется, чтобы создать новый файл базы данных. - + Ctrl+N - - + + &Open Database... &Открыть базу данных... - - - - - + + + + + Open an existing database file Открыть существующий файл базы данных - - - + + + This option is used to open an existing database file. Эта опция используется, чтобы открыть существующий файл базы данных. - + Ctrl+O - + &Close Database &Закрыть базу данных - + This button closes the connection to the currently open database file Эта кнопка закрывает соединение с текущим файлом БД - - + + Ctrl+W - - + + Revert database to last saved state Вернуть базу данных в последнее сохранённое состояние - + This option is used to revert the current database file to its last saved state. All changes made since the last save operation are lost. Эта опция используется, чтобы вернуть текущий файл базы данных в его последнее сохранённое состояние. Все изменения, сделанные с последней операции сохранения, теряются. - - + + Write changes to the database file Записать изменения в файл базы данных - + This option is used to save changes to the database file. Эта опция используется, чтобы сохранить изменения в файле базы данных. - + Ctrl+S - + Compact &Database... &Уплотнить базу данных... - + Compact the database file, removing space wasted by deleted records Уплотнить базу данных, удаляя пространство, занимаемое удалёнными записями - - + + Compact the database file, removing space wasted by deleted records. Уплотнить базу данных, удаляя пространство, занимаемое удалёнными записями. - + E&xit &Выход - + Ctrl+Q - + Import data from an .sql dump text file into a new or existing database. Импортировать данные из текстового файла sql в новую или существующую базу данных. - + This option lets you import data from an .sql dump text file into a new or existing database. SQL dump files can be created on most database engines, including MySQL and PostgreSQL. Эта опция позволяет импортировать данные из текстового файла sql в новую или существующую базу данных. Файл SQL может быть создан на большинстве движков баз данных, включая MySQL и PostgreSQL. - + Open a wizard that lets you import data from a comma separated text file into a database table. Открыть мастер, который позволяет импортировать данные из файла CSV в таблицу базы данных. - + Open a wizard that lets you import data from a comma separated text file into a database table. CSV files can be created on most database and spreadsheet applications. Открыть мастер, который позволяет импортировать данные из файла CSV в таблицу базы данных. Файлы CSV могут быть созданы в большинстве приложений баз данных и электронных таблиц. - + Export a database to a .sql dump text file. Экспортировать базу данных в текстовый файл .sql. - + This option lets you export a database to a .sql dump text file. SQL dump files contain all data necessary to recreate the database on most database engines, including MySQL and PostgreSQL. Эта опция позволяет экспортировать базу данных в текстовый файл .sql. Файлы SQL содержат все данные, необходимые для создания базы данных в большинстве движков баз данных, включая MySQL и PostgreSQL. - + Export a database table as a comma separated text file. Экспортировать таблицу базы данных как CSV текстовый файл. - + Export a database table as a comma separated text file, ready to be imported into other database or spreadsheet applications. Экспортировать таблицу базы данных как CSV текстовый файл, готовый для импортирования в другие базы данных или приложения электронных таблиц. - + Open the Create Table wizard, where it is possible to define the name and fields for a new table in the database Открыть мастер создания таблиц, где возможно определить имя и поля для новой таблицы в базе данных - + Open the Delete Table wizard, where you can select a database table to be dropped. Открыть мастер удаления таблицы, где можно выбрать таблицу базы данных для удаления. - + Open the Create Index wizard, where it is possible to define a new index on an existing database table. Открыть мастер создания индекса, в котором можно определить новый индекс для существующей таблиц базы данных. - + &Preferences... &Настройки... - - + + Open the preferences window. Открыть окно настроек. - + &DB Toolbar &Панель инструментов БД - + Shows or hides the Database toolbar. Показать или скрыть панель инструментов База данных. - + Shift+F1 - + &Recently opened &Недавно открываемые - + Ctrl+T @@ -3643,227 +3802,227 @@ You can drag SQL statements from an object row and drop them into other applicat - + SQL &Log &Журнал SQL - + Show S&QL submitted by По&казывать SQL, выполненный - + &Plot &График - + &Revert Changes &Отменить изменения - + &Write Changes &Записать изменения - + &Database from SQL file... &База данных из файла SQL... - + &Table from CSV file... &Таблицы из файла CSV... - + &Database to SQL file... Базу &данных в файл SQL... - + &Table(s) as CSV file... &Таблицы в файл CSV... - + &Create Table... &Создать таблицу... - + &Delete Table... &Удалить таблицу... - + &Modify Table... &Изменить таблицу... - + Create &Index... Создать и&ндекс... - + W&hat's This? Что &это такое? - + &Execute SQL В&ыполнить код SQL - - - + + + Save SQL file Сохранить файл SQL - + Ctrl+E - + Export as CSV file Экспортировать в файл CSV - + Export table as comma separated values file Экспортировать таблицу как CSV файл - - + + Save the current session to a file Сохранить текущее состояние в файл - + This button lets you save all the settings associated to the open DB to a DB Browser for SQLite project file - - + + Load a working session from a file Загрузить рабочее состояние из файла - + Copy Create statement Копировать CREATE выражение - + Copy the CREATE statement of the item to the clipboard Копировать CREATE выражение элемента в буфер обмена - + Ctrl+Return - + Ctrl+L - - + + Ctrl+P - + Ctrl+D - + Ctrl+I - + Reset Window Layout - - The database is currenctly busy. + + The database is currently busy. - + Click here to interrupt the currently running query. - + Encrypted Зашифровано - + Read only Только для чтения - + Database file is read only. Editing the database is disabled. База данных только для чтения. Редактирование запрещено. - + Database encoding Кодировка базы данных - + Database is encrypted using SQLCipher База данных зашифрована с использованием SQLCipher - - + + Choose a database file Выбрать файл базы данных - + Could not open database file. Reason: %1 Не удалось открыть файл базы данных. Причина:%1 - - - + + + Choose a filename to save under Выбрать имя, под которым сохранить данные - + A new DB Browser for SQLite version is available (%1.%2.%3).<br/><br/>Please download at <a href='%4'>%4</a>. Вышла новая версия Обозревателя для SQLite (%1.%2.%3).<br/><br/>Она доступна для скачивания по адресу <a href='%4'>%4</a>. - + DB Browser for SQLite project file (*.sqbpro) Файл проекта Обозревателя для SQLite (*.sqbpro) - + Error while saving the database file. This means that not all changes to the database were saved. You need to resolve the following error first. %1 @@ -3872,382 +4031,382 @@ Reason: %1 %1 - + Are you sure you want to undo all changes made to the database file '%1' since the last save? Отменить все изменения, сделанные в файле базы данных '%1' после последнего сохранения? - + Choose a file to import Выберите файл для импорта - + Text files(*.sql *.txt);;All files(*) Текстовые файлы(*.sql *.txt);;Все файлы(*) - + Do you want to create a new database file to hold the imported data? If you answer no we will attempt to import the data in the SQL file to the current database. Создать новый файл базы данных, чтобы сохранить импортированные данные? Если ответить Нет, будет выполнена попытка импортировать данные файла SQL в текущую базу данных. - + Ctrl+Tab - + Ctrl+Shift+Tab - + Clear List - + Window Layout - + Ctrl+Alt+0 - + Simplify Window Layout - - Shift+Alt+0 + + Alt+Shift+0 - + Dock Windows at Bottom - + Dock Windows at Left Side - + Dock Windows at Top - + Ctrl+Alt+W - + Choose a database file to save under - + Error while saving the database to the new file. - + You are still executing SQL statements. Closing the database now will stop their execution, possibly leaving the database in an inconsistent state. Are you sure you want to close the database? - + Do you want to save the changes made to the project file '%1'? - + Edit View %1 - + Edit Trigger %1 - + File %1 already exists. Please choose a different name. Файл %1 уже существует. Выберите другое имя. - + Error importing data: %1 Ошибка импортирования данных: %1 - + Import completed. Импорт завершён. - + Delete View Удалить представление - + Modify View Модифицировать представление - + Delete Trigger Удалить триггер - + Modify Trigger Модифицировать триггер - + Delete Index Удалить индекс - + Opened '%1' in read-only mode from recent file list - + Opened '%1' from recent file list - + &%1 %2%3 &%1 %2%3 - + (read only) - + Open Database or Project - + Attach Database... - + Import CSV file(s)... - + Do you want to save the changes made to SQL tabs in a new project file? - + Do you want to save the changes made to the SQL file %1? - + Could not find resource file: %1 - + Choose a project file to open Выберите файл проекта для открытия - + DB file '%1' could not be opened - + Table '%1' not found; settings ignored - + Could not open project file for writing. Reason: %1 - + -- Reference to file "%1" (not supported by this version) -- - + Busy (%1) - + Error checking foreign keys after table modification. The changes will be reverted. Ошибка проверки внешних ключей после изменения таблицы. Изменения будут отменены. - + This table did not pass a foreign-key check.<br/>You should run 'Tools | Foreign-Key Check' and fix the reported issues. Эта таблица не прошла проверку внешнего ключа. <br/> Вы должны запустить "Инструменты | Проверка внешнего ключа"и исправить сообщенные проблемы. - + Execution finished with errors. - + Execution finished without errors. - - + + Delete Table Удалить таблицу - + Setting PRAGMA values will commit your current transaction. Are you sure? Установка значений PRAGMA завершит текущую транзакцию. Установить значения? - + In-Memory database БД в памяти - + Automatically load the last opened DB file at startup - + Are you sure you want to delete the table '%1'? All data associated with the table will be lost. Вы действительно хотите удалить таблицу '%1'? Все данные, связанные с таблицей, будут потеряны. - + Are you sure you want to delete the view '%1'? Вы действительно хотите удалить представление '%1'? - + Are you sure you want to delete the trigger '%1'? Вы действительно хотите удалить триггер '%1'? - + Are you sure you want to delete the index '%1'? Вы действительно хотите удалить индекс '%1'? - + Error: could not delete the table. Ошибка: не удалось удалить таблицу. - + Error: could not delete the view. Ошибка: не удалось удалить представление. - + Error: could not delete the trigger. Ошибка: не удалось удалить триггер. - + Error: could not delete the index. Ошибка: не удалось удалить индекс. - + Message from database engine: %1 Сообщение от СУБД: %1 - + Editing the table requires to save all pending changes now. Are you sure you want to save the database? Для редактирования таблицы необходимо сохранить все ожидающие изменения сейчас. Вы действительно хотите сохранить БД? - + You are already executing SQL statements. Do you want to stop them in order to execute the current statements instead? Note that this might leave the database in an inconsistent state. - + -- EXECUTING SELECTION IN '%1' -- -- ВЫПОЛНЕНИЕ ВЫБОРКИ В '%1' -- - + -- EXECUTING LINE IN '%1' -- -- ВЫПОЛНЕНИЕ СТРОКИ В '%1' -- - + -- EXECUTING ALL IN '%1' -- -- ВЫПОЛНЕНИЕ ВСЕ В '%1' -- - - + + At line %1: - + Result: %1 - + Result: %2 - + Setting PRAGMA values or vacuuming will commit your current transaction. Are you sure? Установка значений PRAGMA или вакуумирования приведет к фиксации текущей транзакции. Уверены ли вы? - + Select the action to apply to the dropped file(s). <br/>Note: only 'Import' will process more than one file. Note for translation: Although there is no %n in the original, you can use the numerus-form to adjust 'files(s)' and remove the note when n = 1. Including %n in the translation will also work. @@ -4257,133 +4416,133 @@ Are you sure? - + The statements in the tab '%1' are still executing. Closing the tab will stop the execution. This might leave the database in an inconsistent state. Are you sure you want to close the tab? - + This project file is using an old file format because it was created using DB Browser for SQLite version 3.10 or lower. Loading this file format is no longer fully supported. If you want to load it completely, please use DB Browser for SQLite version 3.12 to convert it to the new file format. - + Yes. Don't ask again - + This action will open a new SQL tab with the following statements for you to edit and run: - + Rename Tab - + Duplicate Tab - + Close Tab - + Opening '%1'... - + There was an error opening '%1'... - + Value is not a valid URL or filename: %1 - + %1 rows returned in %2ms %1 строк возвращено за %2мс - + Choose text files Выберите текстовые файлы - + Import completed. Some foreign key constraints are violated. Please fix them before saving. Импорт завершен. Нарушены некоторые ограничения внешних ключей. Пожалуйста, исправьте их перед сохранением. - + Modify Index Модифицировать Индекс - + Modify Table Модифицировать Таблицу - + Do you want to save the changes made to SQL tabs in the project file '%1'? - + Select SQL file to open Выбрать файл SQL для открытия - + Select file name Выбрать имя файла - + Select extension file Выбрать расширение файла - + Extension successfully loaded. Расширение успешно загружено. - + Error loading extension: %1 Ошибка загрузки расширения: %1 - - + + Don't show again Не показывать снова - + New version available. Доступна новая версия. - + Project saved to file '%1' - + Collation needed! Proceed? Нужно выполнить сопоставление! Продолжить? - + A table in this database requires a special collation function '%1' that this application can't provide without further knowledge. If you choose to proceed, be aware bad things can happen to your database. Create a backup! @@ -4392,42 +4551,42 @@ Create a backup! Создайте резервную копию! - + creating collation - + Set a new name for the SQL tab. Use the '&&' character to allow using the following character as a keyboard shortcut. Задайте новое имя для вкладки SQL. Используйте символ '&&', чтобы разрешить использование следующего символа в качестве сочетания клавиш. - + Please specify the view name Укажите имя представления - + There is already an object with that name. Please choose a different name. Объект с указанным именем уже существует. Выберите другое имя. - + View successfully created. Представление успешно создано. - + Error creating view: %1 Ошибка создания представления: %1 - + This action will open a new SQL tab for running: Это действие откроет новую вкладку SQL для запуска: - + Press Help for opening the corresponding SQLite reference page. Нажмите "Справка" для открытия соответствующей справочной страницы SQLite. @@ -4622,102 +4781,107 @@ Select the axes or axes labels to drag and zoom only in that orientation. - + Load all data and redraw plot Загрузить все данные и перерисовать - - - + + + Row # Строка # - + Copy Копировать - + Print... Печать... - + + Help + + + + Show legend Легенда - + Stacked bars - + Fixed number format - + Date/Time Дата/Время - + Date Дата - + Time Время - - + + Numeric Число - + Label Текст - + Invalid Ошибка - + Load all data and redraw plot. Warning: not all data has been fetched from the table yet due to the partial fetch mechanism. Загружает все данные и перерисовывает график. Предупреждение: не все данные были получены из таблицы из-за механизма частичной выборки. - + Choose an axis color Выберите цвет оси - + Choose a filename to save under Выбрать имя файла, под которым сохранить данные - + PNG(*.png);;JPG(*.jpg);;PDF(*.pdf);;BMP(*.bmp);;All Files(*) PNG(*.png);;JPG(*.jpg);;PDF(*.pdf);;BMP(*.bmp);;Все файлы(*) - + There are curves in this plot and the selected line style can only be applied to graphs sorted by X. Either sort the table or query by X to remove curves or select one of the styles supported by curves: None or Line. На этом графике есть кривые, и выбранный стиль линии может применяться только к графикам, отсортированным по X. Либо сортируйте таблицу или запрос по X, чтобы удалить кривые, либо выберите один из стилей, поддерживаемых кривыми: None или Line. - + Loading all remaining data for this table took %1ms. @@ -5435,1978 +5599,394 @@ Can be set to 0 for disabling completion. - - Valid to - - - - - - Serial number - - - - - Your certificates - Ваши сертификаты - - - - File - Файл - - - - Subject Common Name - - - - - Issuer CN - - - - - Issuer Common Name - - - - - Clone databases into - Путь для клонируемых БД - - - - - Choose a directory - Выберите каталог - - - - - The language will change after you restart the application. - Язык будет применен после перезапуска приложения. - - - - Select extension file - Выберите файл расширения - - - - Extensions(*.so *.dylib *.dll);;All files(*) - - - - - Import certificate file - Импорт файла сертификата - - - - No certificates found in this file. - В данном файле не найден сертификат. - - - - Are you sure you want do remove this certificate? All certificate data will be deleted from the application settings! - Вы действительно хотите удалить этот сертификат? Все данные сертификата будут удалены из настроек приложения! - - - - Are you sure you want to clear all the saved settings? -All your preferences will be lost and default values will be used. - Вы действительно хотите удалить все сохраненные настройки? -Все ваши предпочтения будут потеряны, и будут использоваться значения по умолчанию. - - - - Save Settings File - - - - - - Initialization File (*.ini) - - - - - The settings file has been saved in location : - - - - - - Open Settings File - - - - - The settings file was loaded properly. - - - - - The selected settings file is not a normal settings file. -Please check again. - - - - - ProxyDialog - - - Proxy Configuration - - - - - Pro&xy Type - - - - - Host Na&me - - - - - Port - - - - - Authentication Re&quired - - - - - &User Name - - - - - Password - - - - - None - Нет - - - - System settings - - - - - HTTP - - - - - Socks v5 - - - - - QObject - - - Error importing data - Ошибка импортирования данных - - - - from record number %1 - с записи номер %1 - - - - . -%1 - - - - - Importing CSV file... - Импортирование CSV файла... - - - - Cancel - Отменить - - - - All files (*) - Все файлы (*) - - - - SQLite database files (*.db *.sqlite *.sqlite3 *.db3) - Файлы SQLite баз данных (*.db *.sqlite *.sqlite3 *.db3) - - - - Left - - - - - Right - - - - - Center - - - - - Justify - - - - - SQLite Database Files (*.db *.sqlite *.sqlite3 *.db3) - - - - - DB Browser for SQLite Project Files (*.sqbpro) - - - - - SQL Files (*.sql) - - - - - All Files (*) - - - - - Text Files (*.txt) - - - - - Comma-Separated Values Files (*.csv) - - - - - Tab-Separated Values Files (*.tsv) - - - - - Delimiter-Separated Values Files (*.dsv) - - - - - Concordance DAT files (*.dat) - - - - - JSON Files (*.json *.js) - - - - - XML Files (*.xml) - - - - - Binary Files (*.bin *.dat) - - - - - SVG Files (*.svg) - - - - - Hex Dump Files (*.dat *.bin) - - - - - Extensions (*.so *.dylib *.dll) - - - - - Initialization File (*.ini) - - - - - QsciCommand - - - Move down one line - - - - - Extend selection down one line - - - - - Extend rectangular selection down one line - - - - - Scroll view down one line - - - - - Move up one line - - - - - Extend selection up one line - - - - - Extend rectangular selection up one line - - - - - Scroll view up one line - - - - - Scroll to start of document - - - - - Scroll to end of document - - - - - Scroll vertically to centre current line - - - - - Move down one paragraph - - - - - Extend selection down one paragraph - - - - - Move up one paragraph - - - - - Extend selection up one paragraph - - - - - Move left one character - - - - - Extend selection left one character - - - - - Extend rectangular selection left one character - - - - - Move right one character - - - - - Extend selection right one character - - - - - Extend rectangular selection right one character - - - - - Move left one word - - - - - Extend selection left one word - - - - - Move right one word - - - - - Extend selection right one word - - - - - Move to end of previous word - - - - - Extend selection to end of previous word - - - - - Move to end of next word - - - - - Extend selection to end of next word - - - - - Move left one word part - - - - - Extend selection left one word part - - - - - Move right one word part - - - - - Extend selection right one word part - - - - - Move to start of document line - - - - - Extend selection to start of document line - - - - - Extend rectangular selection to start of document line - - - - - Move to start of display line - - - - - Extend selection to start of display line - - - - - Move to start of display or document line - - - - - Extend selection to start of display or document line - - - - - Move to first visible character in document line - - - - - Extend selection to first visible character in document line - - - - - Extend rectangular selection to first visible character in document line - - - - - Move to first visible character of display in document line - - - - - Extend selection to first visible character in display or document line - - - - - Move to end of document line - - - - - Extend selection to end of document line - - - - - Extend rectangular selection to end of document line - - - - - Move to end of display line - - - - - Extend selection to end of display line - - - - - Move to end of display or document line - - - - - Extend selection to end of display or document line - - - - - Move to start of document - - - - - Extend selection to start of document - - - - - Move to end of document - - - - - Extend selection to end of document - - - - - Move up one page - - - - - Extend selection up one page - - - - - Extend rectangular selection up one page - - - - - Move down one page - - - - - Extend selection down one page - - - - - Extend rectangular selection down one page - - - - - Stuttered move up one page - - - - - Stuttered extend selection up one page - - - - - Stuttered move down one page - - - - - Stuttered extend selection down one page - - - - - Delete current character - - - - - Delete previous character - - - - - Delete previous character if not at start of line - - - - - Delete word to left - - - - - Delete word to right - - - - - Delete right to end of next word - - - - - Delete line to left - - - - - Delete line to right - - - - - Delete current line - - - - - Cut current line - - - - - Copy current line - - - - - Transpose current and previous lines - - - - - Duplicate the current line - - - - - Select all - - - - - Move selected lines up one line - - - - - Move selected lines down one line - - - - - Duplicate selection - - - - - Convert selection to lower case - - - - - Convert selection to upper case - - - - - Cut selection - - - - - Copy selection - - - - - Paste - Вставить - - - - Toggle insert/overtype - - - - - Insert newline - - - - - Formfeed - - - - - Indent one level - - - - - De-indent one level - - - - - Cancel - Отменить - - - - Undo last command - - - - - Redo last command - - - - - Zoom in - - - - - Zoom out - - - - - QsciLexerCPP - - - Default - По умолчанию - - - - Inactive default - - - - - C comment - - - - - Inactive C comment - - - - - C++ comment - - - - - Inactive C++ comment - - - - - JavaDoc style C comment - - - - - Inactive JavaDoc style C comment - - - - - Number - - - - - Inactive number - - - - - Keyword - Ключевое слово - - - - Inactive keyword - - - - - Double-quoted string - - - - - Inactive double-quoted string - - - - - Single-quoted string - - - - - Inactive single-quoted string - - - - - IDL UUID - - - - - Inactive IDL UUID - - - - - Pre-processor block - - - - - Inactive pre-processor block - - - - - Operator - - - - - Inactive operator - - - - - Identifier - Идентификатор - - - - Inactive identifier - - - - - Unclosed string - - - - - Inactive unclosed string - - - - - C# verbatim string - - - - - Inactive C# verbatim string - - - - - JavaScript regular expression - - - - - Inactive JavaScript regular expression - - - - - JavaDoc style C++ comment - - - - - Inactive JavaDoc style C++ comment - - - - - Secondary keywords and identifiers - - - - - Inactive secondary keywords and identifiers - - - - - JavaDoc keyword - - - - - Inactive JavaDoc keyword - - - - - JavaDoc keyword error - - - - - Inactive JavaDoc keyword error - - - - - Global classes and typedefs - - - - - Inactive global classes and typedefs - - - - - C++ raw string - - - - - Inactive C++ raw string - - - - - Vala triple-quoted verbatim string - - - - - Inactive Vala triple-quoted verbatim string - - - - - Pike hash-quoted string - - - - - Inactive Pike hash-quoted string - - - - - Pre-processor C comment - - - - - Inactive pre-processor C comment - - - - - JavaDoc style pre-processor comment - - - - - Inactive JavaDoc style pre-processor comment - - - - - User-defined literal - - - - - Inactive user-defined literal - - - - - Task marker - - - - - Inactive task marker - - - - - Escape sequence - - - - - Inactive escape sequence - - - - - QsciLexerHTML - - - HTML default - - - - - Tag - - - - - Unknown tag - - - - - Attribute - - - - - Unknown attribute - - - - - HTML number - - - - - HTML double-quoted string - - - - - HTML single-quoted string - - - - - Other text in a tag - - - - - HTML comment - - - - - Entity - - - - - End of a tag - - - - - Start of an XML fragment - - - - - End of an XML fragment - - - - - Script tag - - - - - Start of an ASP fragment with @ - - - - - Start of an ASP fragment - - - - - CDATA - - - - - Start of a PHP fragment - - - - - Unquoted HTML value - - - - - ASP X-Code comment - - - - - SGML default - - - - - SGML command - - - - - First parameter of an SGML command - - - - - SGML double-quoted string - - - - - SGML single-quoted string - - - - - SGML error - - - - - SGML special entity - - - - - SGML comment - - - - - First parameter comment of an SGML command - - - - - SGML block default - - - - - Start of a JavaScript fragment - - - - - JavaScript default - - - - - JavaScript comment - - - - - JavaScript line comment - - - - - JavaDoc style JavaScript comment - - - - - JavaScript number - - - - - JavaScript word - - - - - JavaScript keyword - - - - - JavaScript double-quoted string - - - - - JavaScript single-quoted string - - - - - JavaScript symbol - - - - - JavaScript unclosed string - - - - - JavaScript regular expression - - - - - Start of an ASP JavaScript fragment - - - - - ASP JavaScript default - - - - - ASP JavaScript comment - - - - - ASP JavaScript line comment - - - - - JavaDoc style ASP JavaScript comment - - - - - ASP JavaScript number - - - - - ASP JavaScript word - - - - - ASP JavaScript keyword - - - - - ASP JavaScript double-quoted string - - - - - ASP JavaScript single-quoted string - - - - - ASP JavaScript symbol - - - - - ASP JavaScript unclosed string - - - - - ASP JavaScript regular expression - - - - - Start of a VBScript fragment - - - - - VBScript default - - - - - VBScript comment - - - - - VBScript number - - - - - VBScript keyword - - - - - VBScript string - - - - - VBScript identifier - - - - - VBScript unclosed string - - - - - Start of an ASP VBScript fragment - - - - - ASP VBScript default - - - - - ASP VBScript comment - - - - - ASP VBScript number - - - - - ASP VBScript keyword - - - - - ASP VBScript string - - - - - ASP VBScript identifier - - - - - ASP VBScript unclosed string - - - - - Start of a Python fragment - - - - - Python default - - - - - Python comment - - - - - Python number - - - - - Python double-quoted string - - - - - Python single-quoted string - - - - - Python keyword - - - - - Python triple double-quoted string - - - - - Python triple single-quoted string - - - - - Python class name - - - - - Python function or method name - - - - - Python operator - - - - - Python identifier - - - - - Start of an ASP Python fragment - - - - - ASP Python default - - - - - ASP Python comment - - - - - ASP Python number - - - - - ASP Python double-quoted string - - - - - ASP Python single-quoted string - - - - - ASP Python keyword - - - - - ASP Python triple double-quoted string - - - - - ASP Python triple single-quoted string - - - - - ASP Python class name - - - - - ASP Python function or method name + + Valid to - - ASP Python operator + + + Serial number - - ASP Python identifier - + + Your certificates + Ваши сертификаты - - PHP default - + + File + Файл - - PHP double-quoted string + + Subject Common Name - - PHP single-quoted string + + Issuer CN - - PHP keyword + + Issuer Common Name - - PHP number - + + Clone databases into + Путь для клонируемых БД - - PHP variable - + + + Choose a directory + Выберите каталог - - PHP comment - + + + The language will change after you restart the application. + Язык будет применен после перезапуска приложения. - - PHP line comment - + + Select extension file + Выберите файл расширения - - PHP double-quoted variable + + Extensions(*.so *.dylib *.dll);;All files(*) - - PHP operator - + + Import certificate file + Импорт файла сертификата - - - QsciLexerJSON - - Default - По умолчанию + + No certificates found in this file. + В данном файле не найден сертификат. - - Number - + + Are you sure you want do remove this certificate? All certificate data will be deleted from the application settings! + Вы действительно хотите удалить этот сертификат? Все данные сертификата будут удалены из настроек приложения! - - String - Строка + + Are you sure you want to clear all the saved settings? +All your preferences will be lost and default values will be used. + Вы действительно хотите удалить все сохраненные настройки? +Все ваши предпочтения будут потеряны, и будут использоваться значения по умолчанию. - - Unclosed string + + Save Settings File - - Property + + + Initialization File (*.ini) - - Escape sequence + + The settings file has been saved in location : + - - Line comment + + Open Settings File - - Block comment + + The settings file was loaded properly. - - Operator + + The selected settings file is not a normal settings file. +Please check again. + + + ProxyDialog - - IRI + + Proxy Configuration - - JSON-LD compact IRI + + Pro&xy Type - - JSON keyword + + Host Na&me - - JSON-LD keyword + + Port - - Parsing error + + Authentication Re&quired - - - QsciLexerJavaScript - - Regular expression + + &User Name - - - QsciLexerPython - - Default - По умолчанию + + Password + - - Comment - Комментарий + + None + Нет - - Number + + System settings - - Double-quoted string + + HTTP - - Single-quoted string + + SOCKS5 + + + QObject - - Keyword - Ключевое слово + + Error importing data + Ошибка импортирования данных - - Triple single-quoted string - + + from record number %1 + с записи номер %1 - - Triple double-quoted string - + + . +%1 + - - Class name - + + Importing CSV file... + Импортирование CSV файла... - - Function or method name - + + Cancel + Отменить - - Operator - + + All files (*) + Все файлы (*) - - Identifier - Идентификатор + + SQLite database files (*.db *.sqlite *.sqlite3 *.db3) + Файлы SQLite баз данных (*.db *.sqlite *.sqlite3 *.db3) - - Comment block + + Left - - Unclosed string + + Right - - Highlighted identifier + + Center - - Decorator + + Justify - - Double-quoted f-string + + SQLite Database Files (*.db *.sqlite *.sqlite3 *.db3) - - Single-quoted f-string + + DB Browser for SQLite Project Files (*.sqbpro) - - Triple single-quoted f-string + + SQL Files (*.sql) - - Triple double-quoted f-string + + All Files (*) - - - QsciLexerSQL - - - Default - По умолчанию - - - - Comment - Комментарий - - - Comment line + + Text Files (*.txt) - - JavaDoc style comment + + Comma-Separated Values Files (*.csv) - - Number + + Tab-Separated Values Files (*.tsv) - - Keyword - Ключевое слово - - - - Double-quoted string + + Delimiter-Separated Values Files (*.dsv) - - Single-quoted string + + Concordance DAT files (*.dat) - - SQL*Plus keyword + + JSON Files (*.json *.js) - - SQL*Plus prompt + + XML Files (*.xml) - - Operator + + Binary Files (*.bin *.dat) - - Identifier - Идентификатор + + SVG Files (*.svg) + - - SQL*Plus comment + + Hex Dump Files (*.dat *.bin) - - # comment line + + Extensions (*.so *.dylib *.dll) - - JavaDoc keyword + + Initialization File (*.ini) + + + QsciCommand - - JavaDoc keyword error - + Paste + Вставить - - User defined 1 - + Cancel + Отменить + + + QsciLexerCPP - - User defined 2 - + Default + По умолчанию - - User defined 3 - + Keyword + Ключевое слово - - User defined 4 - + Identifier + Идентификатор + + + QsciLexerJSON - - Quoted identifier - + Default + По умолчанию - - Quoted operator - + String + Строка - QsciScintilla + QsciLexerPython - - &Undo - + Default + По умолчанию - - &Redo - + Comment + Комментарий - - Cu&t - + Keyword + Ключевое слово - - &Copy - + Identifier + Идентификатор + + + QsciLexerSQL - - &Paste - + Default + По умолчанию - - Delete - + Comment + Комментарий - - Select All - + Keyword + Ключевое слово + + + Identifier + Идентификатор @@ -7797,26 +6377,26 @@ Are you sure you want to proceed? Пожалуйста введите ключевую фразу для этого сертификата клиента. - + Cancel Отменить - + Uploading remote database to %1 Загружается удаленная БД в %1 - + Downloading remote database from %1 Скачивается удаленная БД из %1 - + Error: Cannot open the file for sending. Ошибка: не удается открыть файл для отправки. @@ -8550,32 +7130,32 @@ Use of this function must be authorized from Preferences. загрузка... - + References %1(%2) Hold %3Shift and click to jump there Ссылается на %1(%2) Нажмите %3Shift и клик чтобы переместиться туда - + Error changing data: %1 Ошибка изменения данных: %1 - + retrieving list of columns получаем список колонок - + Fetching data... Подгружаем данные... - - + + Cancel Отменить @@ -8912,12 +7492,12 @@ Hold %3Shift and click to jump there - <html><head/><body><p>This button creates a new record in the database. Hold the mouse button to open a pop-up menu of different options:</p><ul><li><span style=" font-weight:600;">New Record</span>: insert a new record with default values in the database.</li><li><span style=" font-weight:600;">Insert Values...</span>: open a dialog for entering values before they are inserted in the database. This allows to enter values acomplishing the different constraints. This dialog is also open if the <span style=" font-weight:600;">New Record</span> option fails due to these constraints.</li></ul></body></html> + <html><head/><body><p>This button creates a new record in the database. Hold the mouse button to open a pop-up menu of different options:</p><ul><li><span style=" font-weight:600;">New Record</span>: insert a new record with default values in the database.</li><li><span style=" font-weight:600;">Insert Values...</span>: open a dialog for entering values before they are inserted in the database. This allows to enter values accomplishing the different constraints. This dialog is also open if the <span style=" font-weight:600;">New Record</span> option fails due to these constraints.</li></ul></body></html> <html><head/><body><p>Эта кнопка создает новую запись в базе данных. Удерживайте кнопку мыши, чтобы открыть всплывающее меню различных параметров:</p><ul><li><span style=" font-weight:600;">Новая Запись</span>: вставляет новую запись со значениями по умолчанию.</li><li><span style=" font-weight:600;">Вставить Значения...</span>: открывает диалог для ввода значений перед тем, как они будут вставлены в БД. Это позволяет вводить значения, назначая различные ограничения. Этот диалог также открывается, если <span style=" font-weight:600;">Новая Запись</span> опция не срабатывает из-за этих ограничений.</li></ul></body></html> - + Delete Record Удалить запись @@ -8994,7 +7574,7 @@ Hold %3Shift and click to jump there - <html><head/><body><p>This popup menu provides the following options applying to the currently browsed and filtered table:</p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Export to CSV: this option exports the data of the browsed table as currently displayed (after filters, display formats and order column) to a CSV file.</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Save as view: this option saves the current setting of the browsed table (filters, display formats and order column) as an SQL view that you can later browse or use in SQL statements.</li></ul></body></html> + <html><head/><body><p>This pop-up menu provides the following options applying to the currently browsed and filtered table:</p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Export to CSV: this option exports the data of the browsed table as currently displayed (after filters, display formats and order column) to a CSV file.</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Save as view: this option saves the current setting of the browsed table (filters, display formats and order column) as an SQL view that you can later browse or use in SQL statements.</li></ul></body></html> <html><head/><body><p>Это всплывающее меню предоставляет следующие параметры, применяемые к текущей просматриваемой и отфильтрованной таблице:</p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Экспортировать в виде CSV: данные просматриваемой таблицы сохраняется так как отображается (после применения фильтров, форматов отображения и порядка колонок) в CSV файл.</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Сохранить как вид: эта опция сохраняет настройки текущей отображаемой таблицы (фильтры, форматы отображения и порядок колонок) как SQL вид, который вы позже можете просматривать или использовать в SQL выражениях.</li></ul></body></html> @@ -9019,7 +7599,7 @@ Hold %3Shift and click to jump there - + Set encoding Кодировка @@ -9286,95 +7866,95 @@ Hold %3Shift and click to jump there - + Conditional formats for "%1" - + determining row count... определяем количество строк... - + %L1 - %L2 of >= %L3 - + %L1 - %L2 of %L3 - + (clipped at %L1 rows) - + Please enter a pseudo-primary key in order to enable editing on this view. This should be the name of a unique column in the view. Пожалуйста, введите псевдо-первичный ключ, чтобы разрешить редактирование в этом представлении. Это должно быть имя уникального столбца в представлении. - + Delete Records Удалить Записи - + Duplicate records Дублированные записи - + Duplicate record Дубликат записи - + Ctrl+" - + Adjust rows to contents - + Error deleting record: %1 Ошибка удаления записи: %1 - + Please select a record first Сначала выберите запись - + Please choose a new encoding for all tables. Пожалуйста выберите новую кодировку для всех таблиц. - + Please choose a new encoding for this table. Пожалуйста выберите новую кодировку для данной таблицы. - + %1 Leave the field empty for using the database encoding. %1 Оставьте это поле пустым если хотите чтобы использовалась кодировка по умолчанию. - + This encoding is either not valid or not supported. Неверная кодировка либо она не поддерживается. - + %1 replacement(s) made. @@ -9402,24 +7982,6 @@ Leave the field empty for using the database encoding. - - UndoStack - - - Inserting %1 bytes - - - - - Delete %1 chars - - - - - Overwrite %1 chars - - - VacuumDialog diff --git a/src/translations/sqlb_sv.ts b/src/translations/sqlb_sv.ts index 34c5b7604..732c089e6 100644 --- a/src/translations/sqlb_sv.ts +++ b/src/translations/sqlb_sv.ts @@ -12,7 +12,7 @@ Version - <html><head/><body><p>DB Browser for SQLite is an open source, freeware visual tool used to create, design and edit SQLite database files.</p><p>It is bi-licensed under the Mozilla Public License Version 2, as well as the GNU General Public License Version 3 or later. You can modify or redistribute it under the conditions of these licenses.</p><p>See <a href="https://www.gnu.org/licenses/gpl.html"><span style=" text-decoration: underline; color:#0000ff;">http://www.gnu.org/licenses/gpl.html</span></a> and <a href="https://www.mozilla.org/MPL/2.0/index.txt"><span style=" text-decoration: underline; color:#0000ff;">https://www.mozilla.org/MPL/2.0/index.txt</span></a> for details.</p><p>For more information on this program please visit our website at: <a href="https://sqlitebrowser.org"><span style=" text-decoration: underline; color:#0000ff;">http://sqlitebrowser.org</span></a></p><p><span style=" font-size:small;">This software uses the GPL/LGPL Qt Toolkit from </span><a href="http://qt-project.org/"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://qt-project.org/</span></a><span style=" font-size:small;"><br/>See </span><a href="https://doc.qt.io/qt-5/licensing.html"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://qt-project.org/doc/qt-5/licensing.html</span></a><span style=" font-size:small;"> for licensing terms and information.</span></p><p><span style=" font-size:8pt;">We use the nalgeon/sqlean library for SQLite extensions support.<br/>This library is licensed under the MIT license, see the following for more information:<br/></span><a href="https://github.com/nalgeon/sqlean"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">https://github.com/nalgeon/sqlean</span></a></p><p><span style=" font-size:small;">It also uses the Pastel SVG icon set by Michael Buckley under a Creative Commons Attribution Share Alike 4.0 license.<br/>See </span><a href="https://codefisher.org/pastel-svg/"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://codefisher.org/pastel-svg/</span></a><span style=" font-size:small;"> for details.</span></p></body></html> + <html><head/><body><p>DB Browser for SQLite is an open source, freeware visual tool used to create, design and edit SQLite database files.</p><p>It is bi-licensed under the Mozilla Public License Version 2, as well as the GNU General Public License Version 3 or later. You can modify or redistribute it under the conditions of these licenses.</p><p>See <a href="https://www.gnu.org/licenses/gpl.html"><span style=" text-decoration: underline; color:#0000ff;">https://www.gnu.org/licenses/gpl.html</span></a> and <a href="https://www.mozilla.org/MPL/2.0/index.txt"><span style=" text-decoration: underline; color:#0000ff;">https://www.mozilla.org/MPL/2.0/index.txt</span></a> for details.</p><p>For more information on this program please visit our website at: <a href="https://sqlitebrowser.org"><span style=" text-decoration: underline; color:#0000ff;">https://sqlitebrowser.org</span></a></p><p><span style=" font-size:small;">This software uses the GPL/LGPL Qt Toolkit from </span><a href="https://qt-project.org/"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://qt-project.org/</span></a><span style=" font-size:small;"><br/>See </span><a href="https://doc.qt.io/qt-5/licensing.html"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://doc.qt.io/qt-5/licensing.html</span></a><span style=" font-size:small;"> for licensing terms and information.</span></p><p><span style=" font-size:8pt;">We use the nalgeon/sqlean library for SQLite extensions support.<br/>This library is licensed under the MIT license, see the following for more information:<br/></span><a href="https://github.com/nalgeon/sqlean"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">https://github.com/nalgeon/sqlean</span></a></p><p><span style=" font-size:small;">It also uses the Pastel SVG icon set by Michael Buckley under a Creative Commons Attribution Share Alike 4.0 license.<br/>See </span><a href="https://codefisher.org/pastel-svg/"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://codefisher.org/pastel-svg/</span></a><span style=" font-size:small;"> for details.</span></p></body></html> @@ -93,7 +93,7 @@ Application - Invalid option/non-existant file: %1 + Invalid option/non-existent file: %1 Felaktig parameter/icke existerande fil: %1 @@ -3016,7 +3016,7 @@ You can drag SQL statements from the Schema column and drop them into the SQL ed - Shift+Alt+0 + Alt+Shift+0 @@ -3032,7 +3032,7 @@ You can drag SQL statements from the Schema column and drop them into the SQL ed - The database is currenctly busy. + The database is currently busy. @@ -3466,6 +3466,135 @@ Skapa en backup! Automatically load the last opened DB file at startup + + Temp Store + + + + Secure Delete + + + + Case Sensitive Like + + + + Journal Mode + + + + Journal Size Limit + + + + Recursive Triggers + + + + Page Size + + + + Foreign Keys + + + + Auto Vacuum + + + + Max Page Count + + + + Checkpoint Full FSYNC + + + + Automatic Index + + + + Ignore Check Constraints + + + + Full FSYNC + + + + WAL Auto Checkpoint + + + + User Version + + + + Synchronous + + + + Locking Mode + + + + Delete + pragma + Ta bort + + + Off + + + + Normal + + + + Full + + + + Default + Förvald + + + File + Fil + + + Memory + + + + None + Ingen + + + Incremental + + + + Delete + Ta bort + + + Truncate + + + + Persist + + + + WAL + + + + Exclusive + + NullLineEdit @@ -3691,6 +3820,10 @@ Warning: not all data has been fetched from the table yet due to the partial fet Loading all remaining data for this table took %1ms. + + Help + + PreferencesDialog @@ -3944,1870 +4077,616 @@ in new project file - Remove line breaks in schema &view - - - - Prefetch block si&ze - - - - Default field type - - - - When enabled, the line breaks in the Schema column of the DB Structure tab, dock and printed output are removed. - - - - Database structure font size - - - - SQ&L to execute after opening database - - - - Font - - - - &Font - - - - Font si&ze - - - - Content - - - - Symbol limit in cell - - - - This is the maximum number of items allowed for some computationally expensive functionalities to be enabled: -Maximum number of rows in a table for enabling the value completion based on current values in the column. -Maximum number of indexes in a selection for calculating sum and average. -Can be set to 0 for disabling the functionalities. - - - - This is the maximum number of rows in a table for enabling the value completion based on current values in the column. -Can be set to 0 for disabling completion. - - - - Threshold for completion and calculation on selection - - - - Show images in cell - - - - Enable this option to show a preview of BLOBs containing image data in the cells. This can affect the performance of the data browser, however. - - - - Field display - - - - Displayed &text - - - - Binary - Binär - - - NULL - - - - Regular - - - - Click to set this color - - - - Text color - - - - Background color - - - - Preview only (N/A) - - - - Filters - - - - Escape character - - - - Delay time (&ms) - - - - Set the waiting time before a new filter value is applied. Can be set to 0 for disabling waiting. - - - - Background - - - - Foreground - - - - Selection background - - - - Selection foreground - - - - Highlight - - - - SQL &results font size - - - - Tab size - - - - &Wrap lines - - - - Never - - - - At word boundaries - - - - At character boundaries - - - - At whitespace boundaries - - - - &Quotes for identifiers - - - - Choose the quoting mechanism used by the application for identifiers in SQL code. - - - - "Double quotes" - Standard SQL (recommended) - - - - `Grave accents` - Traditional MySQL quotes - - - - [Square brackets] - Traditional MS SQL Server quotes - - - - Code co&mpletion - - - - Keywords in &UPPER CASE - - - - When set, the SQL keywords are completed in UPPER CASE letters. - - - - Error indicators - - - - When set, the SQL code lines that caused errors during the last execution are highlighted and the results frame indicates the error in the background - - - - Hori&zontal tiling - - - - If enabled the SQL code editor and the result table view are shown side by side instead of one over the other. - - - - Close button on tabs - - - - If enabled, SQL editor tabs will have a close button. In any case, you can use the contextual menu or the keyboard shortcut to close them. - - - - <html><head/><body><p>SQLite provides an SQL function for loading extensions from a shared library file. Activate this if you want to use the <span style=" font-style:italic;">load_extension()</span> function from SQL code.</p><p>For security reasons, extension loading is turned off by default and must be enabled through this setting. You can always load extensions through the GUI, even though this option is disabled.</p></body></html> - - - - Allow loading extensions from SQL code - - - - Remote - - - - Your certificates - - - - File - Fil - - - Subject CN - - - - Subject Common Name - - - - Issuer CN - - - - Issuer Common Name - - - - Valid from - - - - Valid to - - - - Serial number - - - - CA certificates - - - - Common Name - - - - Subject O - - - - Organization - - - - Clone databases into - - - - Proxy - - - - Configure - - - - Export Settings - - - - Import Settings - - - - Extensions(*.so *.dylib *.dll);;All files(*) - - - - Import certificate file - - - - No certificates found in this file. - - - - Are you sure you want do remove this certificate? All certificate data will be deleted from the application settings! - - - - Are you sure you want to clear all the saved settings? -All your preferences will be lost and default values will be used. - - - - Save Settings File - - - - Initialization File (*.ini) - - - - The settings file has been saved in location : - - - - - Open Settings File - - - - The settings file was loaded properly. - - - - The selected settings file is not a normal settings file. -Please check again. - - - - Light style - - - - Formatted - - - - Use tabs for indentation - - - - When set, the Tab key will insert tab and space characters for indentation. Otherwise, just spaces will be used. - - - - Select built-in extensions to load for every database: - - - - - ProxyDialog - - Proxy Configuration - - - - Pro&xy Type - - - - Host Na&me - - - - Port - - - - Authentication Re&quired - - - - &User Name - - - - Password - - - - None - Ingen - - - System settings - - - - HTTP - - - - Socks v5 - - - - - QObject - - . -%1 - .%1 - - - from record number %1 - från post nummer %1 - - - Cancel - Avbryt - - - Error importing data - Fel vid import av data - - - Left - - - - Right - - - - Center - - - - Justify - - - - All files (*) - - - - SQLite Database Files (*.db *.sqlite *.sqlite3 *.db3) - - - - DB Browser for SQLite Project Files (*.sqbpro) - - - - SQL Files (*.sql) - - - - All Files (*) - - - - Text Files (*.txt) - - - - Comma-Separated Values Files (*.csv) - - - - Tab-Separated Values Files (*.tsv) - - - - Delimiter-Separated Values Files (*.dsv) - - - - Concordance DAT files (*.dat) - - - - JSON Files (*.json *.js) - - - - XML Files (*.xml) - - - - Binary Files (*.bin *.dat) - - - - SVG Files (*.svg) - - - - Hex Dump Files (*.dat *.bin) - - - - Extensions (*.so *.dylib *.dll) - - - - Initialization File (*.ini) - - - - Importing CSV file... - - - - SQLite database files (*.db *.sqlite *.sqlite3 *.db3) - - - - - QsciCommand - - Move down one line - - - - Extend selection down one line - - - - Extend rectangular selection down one line - - - - Scroll view down one line - - - - Move up one line - - - - Extend selection up one line - - - - Extend rectangular selection up one line - - - - Scroll view up one line - - - - Scroll to start of document - - - - Scroll to end of document - - - - Scroll vertically to centre current line - - - - Move down one paragraph - - - - Extend selection down one paragraph - - - - Move up one paragraph - - - - Extend selection up one paragraph - - - - Move left one character - - - - Extend selection left one character - - - - Extend rectangular selection left one character - - - - Move right one character - - - - Extend selection right one character - - - - Extend rectangular selection right one character - - - - Move left one word - - - - Extend selection left one word - - - - Move right one word - - - - Extend selection right one word - - - - Move to end of previous word - - - - Extend selection to end of previous word - - - - Move to end of next word - - - - Extend selection to end of next word - - - - Move left one word part - - - - Extend selection left one word part - - - - Move right one word part - - - - Extend selection right one word part - - - - Move to start of document line - - - - Extend selection to start of document line - - - - Extend rectangular selection to start of document line - - - - Move to start of display line - - - - Extend selection to start of display line - - - - Move to start of display or document line - - - - Extend selection to start of display or document line - - - - Move to first visible character in document line - - - - Extend selection to first visible character in document line - - - - Extend rectangular selection to first visible character in document line - - - - Move to first visible character of display in document line - - - - Extend selection to first visible character in display or document line - - - - Move to end of document line - - - - Extend selection to end of document line - - - - Extend rectangular selection to end of document line - - - - Move to end of display line - - - - Extend selection to end of display line - - - - Move to end of display or document line - - - - Extend selection to end of display or document line - - - - Move to start of document - - - - Extend selection to start of document - - - - Move to end of document - - - - Extend selection to end of document - - - - Move up one page - - - - Extend selection up one page - - - - Extend rectangular selection up one page - - - - Move down one page - - - - Extend selection down one page - - - - Extend rectangular selection down one page - - - - Stuttered move up one page - - - - Stuttered extend selection up one page - - - - Stuttered move down one page - - - - Stuttered extend selection down one page - - - - Delete current character - - - - Delete previous character - - - - Delete previous character if not at start of line - - - - Delete word to left - - - - Delete word to right - - - - Delete right to end of next word - - - - Delete line to left - - - - Delete line to right - - - - Delete current line - - - - Cut current line - - - - Copy current line - - - - Transpose current and previous lines - - - - Duplicate the current line - - - - Select all - - - - Move selected lines up one line - - - - Move selected lines down one line - - - - Duplicate selection - - - - Convert selection to lower case - - - - Convert selection to upper case - - - - Cut selection - - - - Copy selection - - - - Paste - - - - Toggle insert/overtype - - - - Insert newline - - - - Formfeed - - - - Indent one level - - - - De-indent one level - - - - Cancel - Avbryt - - - Undo last command - - - - Redo last command - - - - Zoom in - - - - Zoom out - - - - - QsciLexerCPP - - Default - Förvald - - - Inactive default - - - - C comment - - - - Inactive C comment - - - - C++ comment - - - - Inactive C++ comment - - - - JavaDoc style C comment - - - - Inactive JavaDoc style C comment - - - - Number - - - - Inactive number - - - - Keyword - Nyckelord - - - Inactive keyword - - - - Double-quoted string - - - - Inactive double-quoted string - - - - Single-quoted string - - - - Inactive single-quoted string - - - - IDL UUID - - - - Inactive IDL UUID - - - - Pre-processor block - - - - Inactive pre-processor block - - - - Operator - - - - Inactive operator - - - - Identifier - Identifierare - - - Inactive identifier - - - - Unclosed string - - - - Inactive unclosed string - - - - C# verbatim string - - - - Inactive C# verbatim string - - - - JavaScript regular expression - - - - Inactive JavaScript regular expression - - - - JavaDoc style C++ comment - - - - Inactive JavaDoc style C++ comment - - - - Secondary keywords and identifiers - - - - Inactive secondary keywords and identifiers - - - - JavaDoc keyword - - - - Inactive JavaDoc keyword - - - - JavaDoc keyword error - - - - Inactive JavaDoc keyword error - - - - Global classes and typedefs - - - - Inactive global classes and typedefs - - - - C++ raw string - - - - Inactive C++ raw string - - - - Vala triple-quoted verbatim string - - - - Inactive Vala triple-quoted verbatim string - - - - Pike hash-quoted string - - - - Inactive Pike hash-quoted string - - - - Pre-processor C comment - - - - Inactive pre-processor C comment - - - - JavaDoc style pre-processor comment - - - - Inactive JavaDoc style pre-processor comment - - - - User-defined literal - - - - Inactive user-defined literal - - - - Task marker - - - - Inactive task marker - - - - Escape sequence - - - - Inactive escape sequence - - - - - QsciLexerHTML - - HTML default - - - - Tag - - - - Unknown tag - - - - Attribute - - - - Unknown attribute - - - - HTML number - - - - HTML double-quoted string - - - - HTML single-quoted string - - - - Other text in a tag - - - - HTML comment - - - - Entity - - - - End of a tag - - - - Start of an XML fragment - - - - End of an XML fragment - - - - Script tag - - - - Start of an ASP fragment with @ - - - - Start of an ASP fragment - - - - CDATA + Remove line breaks in schema &view - Start of a PHP fragment + Prefetch block si&ze - Unquoted HTML value + Default field type - ASP X-Code comment + When enabled, the line breaks in the Schema column of the DB Structure tab, dock and printed output are removed. - SGML default + Database structure font size - SGML command + SQ&L to execute after opening database - First parameter of an SGML command + Font - SGML double-quoted string + &Font - SGML single-quoted string + Font si&ze - SGML error + Content - SGML special entity + Symbol limit in cell - SGML comment + This is the maximum number of items allowed for some computationally expensive functionalities to be enabled: +Maximum number of rows in a table for enabling the value completion based on current values in the column. +Maximum number of indexes in a selection for calculating sum and average. +Can be set to 0 for disabling the functionalities. - First parameter comment of an SGML command + This is the maximum number of rows in a table for enabling the value completion based on current values in the column. +Can be set to 0 for disabling completion. - SGML block default + Threshold for completion and calculation on selection - Start of a JavaScript fragment + Show images in cell - JavaScript default + Enable this option to show a preview of BLOBs containing image data in the cells. This can affect the performance of the data browser, however. - JavaScript comment + Field display - JavaScript line comment + Displayed &text - JavaDoc style JavaScript comment - + Binary + Binär - JavaScript number + NULL - JavaScript word + Regular - JavaScript keyword + Click to set this color - JavaScript double-quoted string + Text color - JavaScript single-quoted string + Background color - JavaScript symbol + Preview only (N/A) - JavaScript unclosed string + Filters - JavaScript regular expression + Escape character - Start of an ASP JavaScript fragment + Delay time (&ms) - ASP JavaScript default + Set the waiting time before a new filter value is applied. Can be set to 0 for disabling waiting. - ASP JavaScript comment + Background - ASP JavaScript line comment + Foreground - JavaDoc style ASP JavaScript comment + Selection background - ASP JavaScript number + Selection foreground - ASP JavaScript word + Highlight - ASP JavaScript keyword + SQL &results font size - ASP JavaScript double-quoted string + Tab size - ASP JavaScript single-quoted string + &Wrap lines - ASP JavaScript symbol + Never - ASP JavaScript unclosed string + At word boundaries - ASP JavaScript regular expression + At character boundaries - Start of a VBScript fragment + At whitespace boundaries - VBScript default + &Quotes for identifiers - VBScript comment + Choose the quoting mechanism used by the application for identifiers in SQL code. - VBScript number + "Double quotes" - Standard SQL (recommended) - VBScript keyword + `Grave accents` - Traditional MySQL quotes - VBScript string + [Square brackets] - Traditional MS SQL Server quotes - VBScript identifier + Code co&mpletion - VBScript unclosed string + Keywords in &UPPER CASE - Start of an ASP VBScript fragment + When set, the SQL keywords are completed in UPPER CASE letters. - ASP VBScript default + Error indicators - ASP VBScript comment + When set, the SQL code lines that caused errors during the last execution are highlighted and the results frame indicates the error in the background - ASP VBScript number + Hori&zontal tiling - ASP VBScript keyword + If enabled the SQL code editor and the result table view are shown side by side instead of one over the other. - ASP VBScript string + Close button on tabs - ASP VBScript identifier + If enabled, SQL editor tabs will have a close button. In any case, you can use the contextual menu or the keyboard shortcut to close them. - ASP VBScript unclosed string + <html><head/><body><p>SQLite provides an SQL function for loading extensions from a shared library file. Activate this if you want to use the <span style=" font-style:italic;">load_extension()</span> function from SQL code.</p><p>For security reasons, extension loading is turned off by default and must be enabled through this setting. You can always load extensions through the GUI, even though this option is disabled.</p></body></html> - Start of a Python fragment + Allow loading extensions from SQL code - Python default + Remote - Python comment + Your certificates - Python number - + File + Fil - Python double-quoted string + Subject CN - Python single-quoted string + Subject Common Name - Python keyword + Issuer CN - Python triple double-quoted string + Issuer Common Name - Python triple single-quoted string + Valid from - Python class name + Valid to - Python function or method name + Serial number - Python operator + CA certificates - Python identifier + Common Name - Start of an ASP Python fragment + Subject O - ASP Python default + Organization - ASP Python comment + Clone databases into - ASP Python number + Proxy - ASP Python double-quoted string + Configure - ASP Python single-quoted string + Export Settings - ASP Python keyword + Import Settings - ASP Python triple double-quoted string + Extensions(*.so *.dylib *.dll);;All files(*) - ASP Python triple single-quoted string + Import certificate file - ASP Python class name + No certificates found in this file. - ASP Python function or method name + Are you sure you want do remove this certificate? All certificate data will be deleted from the application settings! - ASP Python operator + Are you sure you want to clear all the saved settings? +All your preferences will be lost and default values will be used. - ASP Python identifier + Save Settings File - PHP default + Initialization File (*.ini) - PHP double-quoted string + The settings file has been saved in location : + - PHP single-quoted string + Open Settings File - PHP keyword + The settings file was loaded properly. - PHP number + The selected settings file is not a normal settings file. +Please check again. - PHP variable + Light style - PHP comment + Formatted - PHP line comment + Use tabs for indentation - PHP double-quoted variable + When set, the Tab key will insert tab and space characters for indentation. Otherwise, just spaces will be used. - PHP operator + Select built-in extensions to load for every database: - QsciLexerJSON - - Default - Förvald - - - Number - - - - String - Sträng - + ProxyDialog - Unclosed string + Proxy Configuration - Property + Pro&xy Type - Escape sequence + Host Na&me - Line comment + Port - Block comment + Authentication Re&quired - Operator + &User Name - IRI + Password - JSON-LD compact IRI - + None + Ingen - JSON keyword + System settings - JSON-LD keyword + HTTP - Parsing error + SOCKS5 - QsciLexerJavaScript + QObject - Regular expression - + . +%1 + .%1 - - - QsciLexerPython - Default - Förvald + from record number %1 + från post nummer %1 - Comment - Kommentar + Cancel + Avbryt - Number - + Error importing data + Fel vid import av data - Double-quoted string + Left - Single-quoted string + Right - Keyword - Nyckelord - - - Triple single-quoted string + Center - Triple double-quoted string + Justify - Class name + All files (*) - Function or method name + SQLite Database Files (*.db *.sqlite *.sqlite3 *.db3) - Operator + DB Browser for SQLite Project Files (*.sqbpro) - Identifier - Identifierare - - - Comment block + SQL Files (*.sql) - Unclosed string + All Files (*) - Highlighted identifier + Text Files (*.txt) - Decorator + Comma-Separated Values Files (*.csv) - Double-quoted f-string + Tab-Separated Values Files (*.tsv) - Single-quoted f-string + Delimiter-Separated Values Files (*.dsv) - Triple single-quoted f-string + Concordance DAT files (*.dat) - Triple double-quoted f-string + JSON Files (*.json *.js) - - - QsciLexerSQL - - Default - Förvald - - - Comment - Kommentar - - Comment line + XML Files (*.xml) - JavaDoc style comment + Binary Files (*.bin *.dat) - Number + SVG Files (*.svg) - Keyword - Nyckelord - - - Double-quoted string + Hex Dump Files (*.dat *.bin) - Single-quoted string + Extensions (*.so *.dylib *.dll) - SQL*Plus keyword + Initialization File (*.ini) - SQL*Plus prompt + Importing CSV file... - Operator + SQLite database files (*.db *.sqlite *.sqlite3 *.db3) + + + QsciCommand - Identifier - Identifierare - - - SQL*Plus comment - + Cancel + Avbryt + + + QsciLexerCPP - # comment line - + Default + Förvald - JavaDoc keyword - + Keyword + Nyckelord - JavaDoc keyword error - + Identifier + Identifierare + + + QsciLexerJSON - User defined 1 - + Default + Förvald - User defined 2 - + String + Sträng + + + QsciLexerPython - User defined 3 - + Default + Förvald - User defined 4 - + Comment + Kommentar - Quoted identifier - + Keyword + Nyckelord - Quoted operator - + Identifier + Identifierare - QsciScintilla - - &Undo - - + QsciLexerSQL - &Redo - + Default + Förvald - Cu&t - + Comment + Kommentar - &Copy - + Keyword + Nyckelord - &Paste - + Identifier + Identifierare + + + QsciScintilla Delete - Ta bort - - - Select All - + Ta bort @@ -6968,7 +5847,7 @@ Hold %3Shift and click to jump there Infoga en ny post i nuvarande tabell - <html><head/><body><p>This button creates a new record in the database. Hold the mouse button to open a pop-up menu of different options:</p><ul><li><span style=" font-weight:600;">New Record</span>: insert a new record with default values in the database.</li><li><span style=" font-weight:600;">Insert Values...</span>: open a dialog for entering values before they are inserted in the database. This allows to enter values acomplishing the different constraints. This dialog is also open if the <span style=" font-weight:600;">New Record</span> option fails due to these constraints.</li></ul></body></html> + <html><head/><body><p>This button creates a new record in the database. Hold the mouse button to open a pop-up menu of different options:</p><ul><li><span style=" font-weight:600;">New Record</span>: insert a new record with default values in the database.</li><li><span style=" font-weight:600;">Insert Values...</span>: open a dialog for entering values before they are inserted in the database. This allows to enter values accomplishing the different constraints. This dialog is also open if the <span style=" font-weight:600;">New Record</span> option fails due to these constraints.</li></ul></body></html> @@ -7040,7 +5919,7 @@ Hold %3Shift and click to jump there - <html><head/><body><p>This popup menu provides the following options applying to the currently browsed and filtered table:</p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Export to CSV: this option exports the data of the browsed table as currently displayed (after filters, display formats and order column) to a CSV file.</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Save as view: this option saves the current setting of the browsed table (filters, display formats and order column) as an SQL view that you can later browse or use in SQL statements.</li></ul></body></html> + <html><head/><body><p>This pop-up menu provides the following options applying to the currently browsed and filtered table:</p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Export to CSV: this option exports the data of the browsed table as currently displayed (after filters, display formats and order column) to a CSV file.</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Save as view: this option saves the current setting of the browsed table (filters, display formats and order column) as an SQL view that you can later browse or use in SQL statements.</li></ul></body></html> @@ -7376,21 +6255,6 @@ Leave the field empty for using the database encoding. - - UndoStack - - Inserting %1 bytes - - - - Delete %1 chars - - - - Overwrite %1 chars - - - VacuumDialog diff --git a/src/translations/sqlb_tr.ts b/src/translations/sqlb_tr.ts index 116db3c9d..9e0e99d57 100644 --- a/src/translations/sqlb_tr.ts +++ b/src/translations/sqlb_tr.ts @@ -15,7 +15,7 @@ - <html><head/><body><p>DB Browser for SQLite is an open source, freeware visual tool used to create, design and edit SQLite database files.</p><p>It is bi-licensed under the Mozilla Public License Version 2, as well as the GNU General Public License Version 3 or later. You can modify or redistribute it under the conditions of these licenses.</p><p>See <a href="https://www.gnu.org/licenses/gpl.html"><span style=" text-decoration: underline; color:#0000ff;">http://www.gnu.org/licenses/gpl.html</span></a> and <a href="https://www.mozilla.org/MPL/2.0/index.txt"><span style=" text-decoration: underline; color:#0000ff;">https://www.mozilla.org/MPL/2.0/index.txt</span></a> for details.</p><p>For more information on this program please visit our website at: <a href="https://sqlitebrowser.org"><span style=" text-decoration: underline; color:#0000ff;">http://sqlitebrowser.org</span></a></p><p><span style=" font-size:small;">This software uses the GPL/LGPL Qt Toolkit from </span><a href="http://qt-project.org/"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://qt-project.org/</span></a><span style=" font-size:small;"><br/>See </span><a href="https://doc.qt.io/qt-5/licensing.html"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://qt-project.org/doc/qt-5/licensing.html</span></a><span style=" font-size:small;"> for licensing terms and information.</span></p><p><span style=" font-size:8pt;">We use the nalgeon/sqlean library for SQLite extensions support.<br/>This library is licensed under the MIT license, see the following for more information:<br/></span><a href="https://github.com/nalgeon/sqlean"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">https://github.com/nalgeon/sqlean</span></a></p><p><span style=" font-size:small;">It also uses the Pastel SVG icon set by Michael Buckley under a Creative Commons Attribution Share Alike 4.0 license.<br/>See </span><a href="https://codefisher.org/pastel-svg/"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://codefisher.org/pastel-svg/</span></a><span style=" font-size:small;"> for details.</span></p></body></html> + <html><head/><body><p>DB Browser for SQLite is an open source, freeware visual tool used to create, design and edit SQLite database files.</p><p>It is bi-licensed under the Mozilla Public License Version 2, as well as the GNU General Public License Version 3 or later. You can modify or redistribute it under the conditions of these licenses.</p><p>See <a href="https://www.gnu.org/licenses/gpl.html"><span style=" text-decoration: underline; color:#0000ff;">https://www.gnu.org/licenses/gpl.html</span></a> and <a href="https://www.mozilla.org/MPL/2.0/index.txt"><span style=" text-decoration: underline; color:#0000ff;">https://www.mozilla.org/MPL/2.0/index.txt</span></a> for details.</p><p>For more information on this program please visit our website at: <a href="https://sqlitebrowser.org"><span style=" text-decoration: underline; color:#0000ff;">https://sqlitebrowser.org</span></a></p><p><span style=" font-size:small;">This software uses the GPL/LGPL Qt Toolkit from </span><a href="https://qt-project.org/"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://qt-project.org/</span></a><span style=" font-size:small;"><br/>See </span><a href="https://doc.qt.io/qt-5/licensing.html"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://doc.qt.io/qt-5/licensing.html</span></a><span style=" font-size:small;"> for licensing terms and information.</span></p><p><span style=" font-size:8pt;">We use the nalgeon/sqlean library for SQLite extensions support.<br/>This library is licensed under the MIT license, see the following for more information:<br/></span><a href="https://github.com/nalgeon/sqlean"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">https://github.com/nalgeon/sqlean</span></a></p><p><span style=" font-size:small;">It also uses the Pastel SVG icon set by Michael Buckley under a Creative Commons Attribution Share Alike 4.0 license.<br/>See </span><a href="https://codefisher.org/pastel-svg/"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://codefisher.org/pastel-svg/</span></a><span style=" font-size:small;"> for details.</span></p></body></html> @@ -285,36 +285,36 @@ - Invalid option/non-existant file: %1 + Invalid option/non-existent file: %1 Geçersiz seçenek veya mevcut olmayan dosya: %1 - + SQLite Version SQLite Versiyonu - + SQLCipher Version %1 (based on SQLite %2) - + DB Browser for SQLite Version %1. - + Last commit hash when built: %1 - + Built for %1, running on %2 %1 için derlendi, %2 üzerinde çalışıyor - + Qt Version %1 @@ -392,7 +392,7 @@ Ham anahtar - + Please set a key to encrypt the database. Note that if you change any of the other, optional, settings you'll need to re-enter them as well every time you open the database file. Leave the password fields empty to disable the encryption. @@ -403,7 +403,7 @@ Unutmayın, bunun dışında isteğe bağlı yapacağınız herhangi değişikli Şifreleme işlemi biraz zaman alabilir ve bu işlemi yapmadan önce veritabanınızın yedeğini almalısınız! Kaydedilmemiş değişiklikler şifreniz değiştirilmeden önce kaydedilir. - + Please enter the key used to encrypt the database. If any of the other settings were altered for this database file you need to provide this information as well. Lütfen veritabanınızı şifrelemek için kullandığınız anahtarı giriniz. @@ -428,92 +428,92 @@ Bu veritabanı için herhangi bir başka ayar daha yapılmışsa, bu bilgileri d '%1' sütunu için görüntülemeden önce uygulanacak bir görüntüleme formatı seçin. - + Default Varsayılan - + Decimal number Ondalık sayı - + Exponent notation Üslü gösterim - + Hex blob Onaltılık ikili veri - + Hex number Onaltılık sayı - + Apple NSDate to date Apple NSDate tipinden tarih tipine - + Java epoch (milliseconds) to date Java epoch (milisaniye) tipinden tarih tipine - + .NET DateTime.Ticks to date - + Julian day to date Julian day tipinden tarih tipine - + Unix epoch to local time Unix epoch tipinden yerel zaman tipine - + WebKit / Chromium epoch to date - + WebKit / Chromium epoch to local time - + Date as dd/mm/yyyy dd/mm/yyyy tarih formatı - + Lower case Küçük harf - + Binary GUID to text - + SpatiaLite Geometry to SVG - + Custom display format must contain a function call applied to %1 Özel görüntüleme formatı, %1 için uygulanan fonksiyon çağrısı içermelidir - + Error in custom display format. Message from database engine: %1 @@ -522,37 +522,37 @@ Bu veritabanı için herhangi bir başka ayar daha yapılmışsa, bu bilgileri d %1 - + Custom display format must return only one column but it returned %1. Özel görüntüleme formatı sadece bir sütun döndürmeli: %1. - + Octal number Sekizlik sayı - + Round number Küsüratsız sayı - + Unix epoch to date Unix epoch tipinden tarih tipine - + Upper case Büyük harf - + Windows DATE to date Windows DATE tipinden tarih tipine - + Custom Özel @@ -679,166 +679,166 @@ Bu veritabanı için herhangi bir başka ayar daha yapılmışsa, bu bilgileri d DBBrowserDB - + Please specify the database name under which you want to access the attached database Lütfen veritabanının ismini erişmek istediğiniz bağlı veritabanının altında belirtin - + Invalid file format Geçersiz dosya formatı - + Do you want to save the changes made to the database file %1? %1 veritabanı dosyasında yaptığınız değişiklikleri kaydetmek istiyor musunuz? - + Exporting database to SQL file... veritabanı, SQL dosyası olarak dışa aktarılıyor... - - + + Cancel İptal - + Executing SQL... SQL yürütülüyor... - + Action cancelled. İşlem iptal edildi. - + Do you really want to close this temporary database? All data will be lost. Gerçekten geçici veritabanını kapatmak istiyor musunuz? Bütün veriler kaybedilecek. - + Database didn't close correctly, probably still busy Veritabanı doğru bir şekilde kapatılamadı, muhtemelen hâlâ kullanımda - + Cannot open destination file: '%1' - - + + Cannot backup to file: '%1'. Message: %2 - + The database is currently busy: Veritabanı şu anda meşgul: - + Do you want to abort that other operation? Diğer işlemi iptal etmek istiyor musunuz? - - + + No database file opened Hiçbir veritabanı dosyası açılmamış - - + + Error in statement #%1: %2. Aborting execution%3. Belirtilen ifadede hata oluştu: #%1: %2 Yürütme durduruluyor %3. - - + + and rolling back ve işlem geri alınıyor - + didn't receive any output from %1 %1 sorgusundan herhangi bir çıktı alınamadı - + could not execute command: %1 komut işletilemedi: %1 - + Cannot delete this object Bu obje silinemiyor - + Cannot set data on this object Bu objeye veri atanamıyor - - + + A table with the name '%1' already exists in schema '%2'. '%2' şemasında '%1' isimli tablo zaten mevcut. - + No table with name '%1' exists in schema '%2'. '%2' şeması içerisinde '%1' isminde bir tablo yok. - - + + Cannot find column %1. %1 sütunu bulunamadı. - + Creating savepoint failed. DB says: %1 Kayıt noktası oluşturulamadı. Veritabanı mesajı: %1 - + Renaming the column failed. DB says: %1 Sütun yeniden adlandırılamadı. Veritabanı motoru mesajı: %1 - - + + Releasing savepoint failed. DB says: %1 Kayıt noktası serbest bırakılamadı. Veritabanı motoru mesajı: %1 - + Creating new table failed. DB says: %1 Veri tabanı oluşturulamadı. Veritabanı mesajı: %1 - + Copying data to new table failed. DB says: %1 Yeni tabloya veri kopyalanamadı. Veritabanı mesajı: %1 - + Deleting old table failed. DB says: %1 Eski tablolar silinemedi: Veritabanı mesajı: %1 - + Error renaming table '%1' to '%2'. Message from database engine: %3 @@ -847,12 +847,12 @@ Veritabanı motoru mesajı: %3 - + could not get list of db objects: %1 veritabanı objelerinin listesi alınamadı: %1 - + Restoring some of the objects associated with this table failed. This is most likely because some column names changed. Here's the SQL statement which you might want to fix and execute manually: @@ -861,32 +861,32 @@ Veritabanı motoru mesajı: - + could not get list of databases: %1 veri tabanı listesi alınamadı: %1 - + Error loading extension: %1 Eklenti yüklenirken hata oluştu: %1 - + Error loading built-in extension: %1 - + could not get column information sütun bilgisi alınamadı - + Error setting pragma %1 to %2: %3 Belirtilen pragma ayarlanırken hata oluştu: %1 > %2: %3 - + File not found. Dosya bulunamadı. @@ -1941,7 +1941,7 @@ All data currently stored in this field will be lost. ExtendedScintilla - + Ctrl+H @@ -1952,22 +1952,22 @@ All data currently stored in this field will be lost. - + Ctrl+P - + Find... Bul... - + Find and Replace... Bul ve Değiştir... - + Print... Yazdır... @@ -1975,129 +1975,129 @@ All data currently stored in this field will be lost. ExtendedTableWidget - + Use as Exact Filter Tam Filtre Olarak Kullan - + Containing İçersin - + Not containing İçermesin - + Not equal to Eşit değil - + Greater than Büyüktür - + Less than Küçüktür - + Greater or equal Büyük eşit - + Less or equal Küçük eşit - + Between this and... Şunların arasında... - + Regular expression Düzenli ifadeler (RegEx) - + Edit Conditional Formats... Koşullu Biçimleri Düzenle... - + Set to NULL NULL olarak ayarla - + Cut - + Copy Kopyala - + Copy with Headers Üst Başlıklarla Kopyala - + Copy as SQL SQL olarak Kopyala - + Paste Yapıştır - + Print... Yazdır... - + Use in Filter Expression Filtre İfadesinde Kullan - + Alt+Del - + Ctrl+Shift+C - + Ctrl+Alt+C - + The content of the clipboard is bigger than the range selected. Do you want to insert it anyway? Pano içeriği seçilen aralıktan daha büyük. Yine de eklemek istiyor musunuz? - + <p>Not all data has been loaded. <b>Do you want to load all data before selecting all the rows?</b><p><p>Answering <b>No</b> means that no more data will be loaded and the selection will not be performed.<br/>Answering <b>Yes</b> might take some time while the data is loaded but the selection will be complete.</p>Warning: Loading all the data might require a great amount of memory for big tables. <p> Tüm veriler yüklenmedi. <b>Tüm satırları seçmeden önce tüm verileri yüklemek istiyor musunuz?</b> </p> <p></p> <p> <b>Hayır</b> olarak cevaplamak, tüm verileri yüklemeyecek ve seçim işlemini uygulanmayacak. <br /> <b>Evet</b> seçeneği biraz zaman alabilir ama seçim işlemini gerçekleştirecektir. </p> Uyarı: Tüm verilerin yüklenmesi büyük tablolar için büyük miktarda bellek gerektirebilir. - + Cannot set selection to NULL. Column %1 has a NOT NULL constraint. Seçim NULL olarak ayarlanamıyor. %1 sütununda NOT NULL kısıtlaması var. @@ -2149,12 +2149,12 @@ Do you want to insert it anyway? FilterLineEdit - + Filter Filtre - + These input fields allow you to perform quick filters in the currently selected table. By default, the rows containing the input text are filtered out. The following operators are also supported: @@ -2181,92 +2181,92 @@ x~y Aralık: değerler x ve y arasında /regexp/ Kurallı ifadelerle(RegExp) eşleşen değerler - + Clear All Conditional Formats Tüm Koşullu Biçimleri Temizle - + Use for Conditional Format Koşullu Biçim için Kullan - + Edit Conditional Formats... Koşullu Biçimleri Düzenle... - + Set Filter Expression Filtre İfadesi Ayarla - + What's This? Bu nedir? - + Is NULL NULL mu - + Is not NULL NULL değil mi - + Is empty Boş mu - + Is not empty Boş değil mi - + Not containing... İçermiyor... - + Equal to... Şuna eşit... - + Not equal to... Şuna eşit değil... - + Greater than... Büyüktür... - + Less than... Küçüktür... - + Greater or equal... Büyük eşit... - + Less or equal... Küçük eşit... - + In range... Aralıkta mı... - + Regular expression... Düzenli ifade (RegEx)... @@ -2489,7 +2489,7 @@ x~y Aralık: değerler x ve y arasında - + Tab Tab karakteri @@ -2632,7 +2632,7 @@ x~y Aralık: değerler x ve y arasında - + Deselect All Tüm seçimi iptal et @@ -2642,52 +2642,52 @@ x~y Aralık: değerler x ve y arasında Benzerleri Eşleştir - + Select All Tümünü Seç - + There is already a table named '%1' and an import into an existing table is only possible if the number of columns match. '%1' isminde bir tablo zaten var, var olan bir tablo için içe aktarma, yalnızca sütun sayıları eşitse mümkün olabilir. - + There is already a table named '%1'. Do you want to import the data into it? '%1' adında bir tablo zaten var. Verileri içe aktarmak istiyor musunuz? - + Creating restore point failed: %1 Geri yükleme noktası oluşturma başarısız: %1 - + Creating the table failed: %1 Tablo oluşturma başarısız: %1 - + importing CSV CSV İçe Aktarma - + Could not prepare INSERT statement: %1 - + Unexpected end of file. Please make sure that you have configured the correct quote characters and the file is not malformed. - + Importing the file '%1' took %2ms. Of this %3ms were spent in the row function. '%1' dosyasını içe aktarmak %2ms sürdü. %3ms satır fonksiyonunda harcandı. - + Inserting row failed: %1 Satır ekleme başarısız: %1 @@ -2700,312 +2700,312 @@ x~y Aralık: değerler x ve y arasında SQLite DB Browser - + toolBar1 toolBar1 - + Opens the SQLCipher FAQ in a browser window SQLCipher Hakkında SSS bölümünü tarayıcı penceresinde açar - + Export one or more table(s) to a JSON file Bir veya daha fazla tabloyu JSON dosyası olarak dışa aktarın - + Open an existing database file in read only mode Mevcut bir veritabanı dosyasını salt okunur modda açar - + &File &Dosya - + &Import &İçe Aktar - + &Export &Dışa Aktar - + &Edit Düz&enle - + &View &Görünüm - + &Help &Yardım - + DB Toolbar Veritabanı Araç Çubuğu - + Edit Database &Cell Veritabanı Hü&cresini Düzenle - + DB Sche&ma Veritabanı Şe&ması - + &Remote &Uzak Bilgisayar - - + + Execute current line Geçerli satırı yürüt - + This button executes the SQL statement present in the current editor line Bu buton, geçerli editör satırında bulunan SQL ifadesini yürütür - + Shift+F5 - + Sa&ve Project Projeyi &Kaydet - + User Kullanıcı - + Application Uygulama - + &Clear &Temizle - + &New Database... Ye&ni Veritabanı... - - + + Create a new database file Yeni bir veritabanı dosyası oluştur - + This option is used to create a new database file. Bu seçenek yeni bir veritabanı dosyası oluşturmak için kullanılır. - + Ctrl+N - - + + &Open Database... &Veritabanı Aç... - - - - - + + + + + Open an existing database file Mevcut veritabanı dosyasını aç - - - + + + This option is used to open an existing database file. Bu seçenek mevcut veritabanı dosyasını açmak için kullanılır. - + Ctrl+O - + &Close Database Veritabanı &Kapat - - + + Ctrl+W - - + + Revert database to last saved state Veritabanını en son kaydedilen duruma döndür - + This option is used to revert the current database file to its last saved state. All changes made since the last save operation are lost. Bu seçenek veritabanını en son kaydedilen durumuna döndürür. Geçerli kayıttan sonra yaptığınız tüm değişiklikler kaybolacaktır. - - + + Write changes to the database file Değişiklikleri veritabanı dosyasına kaydet - + This option is used to save changes to the database file. Bu seçenek değişiklikleri veritabanı dosyasına kaydetmenizi sağlar. - + Ctrl+S - + Compact the database file, removing space wasted by deleted records Veritabanı dosyasını genişletmek, silinen kayıtlardan dolayı meydana gelen boşlukları temizler - - + + Compact the database file, removing space wasted by deleted records. Veritabanı dosyasını genişletmek, silinen kayıtlardan dolayı meydana gelen boşlukları temizler. - + E&xit &Çıkış - + Ctrl+Q - + Import data from an .sql dump text file into a new or existing database. Verileri .sql uzantılı döküm dosyasından varolan veya yeni veritabanına aktarın. - + This option lets you import data from an .sql dump text file into a new or existing database. SQL dump files can be created on most database engines, including MySQL and PostgreSQL. Bu seçenek verileri .sql döküm dosyasından varolan veya yeni veritabanına aktarmanıza olanak sağlar. SQL dosyaları MySQL ve PostgreSQL dahil olmak üzere birçok veritabanı motorları tarafından oluştururlar. - + Open a wizard that lets you import data from a comma separated text file into a database table. Virgülle ayrılmış metin dosyalarını veritabanınızın içine aktarmanızı sağlayan sihirbazı açar. - + Open a wizard that lets you import data from a comma separated text file into a database table. CSV files can be created on most database and spreadsheet applications. Virgülle ayrılmış metin dosyalarını veritabanınızın içine aktarmanızı sağlayan sihirbazı açar. CSV dosyaları çoğu veritabanı motorları ve elektronik tablo uygulamaları tarafından oluştururlar. - + Export a database to a .sql dump text file. Veritabanını .sql döküm dosyası olarak dışa aktar. - + This option lets you export a database to a .sql dump text file. SQL dump files contain all data necessary to recreate the database on most database engines, including MySQL and PostgreSQL. Bu seçenek veritabanını .sql döküm dosyası olarak dışa aktarmanızı sağlar. SQL döküm dosyaları veritabanını, MySQL ve PostgreSQL dahil birçok veritabanı motorunda yeniden oluşturmak için gereken verilerin tümünü içerir. - + Export a database table as a comma separated text file. Veritabanı tablosunu virgülle ayrılmış metin dosyası olarak dışa aktar. - + Export a database table as a comma separated text file, ready to be imported into other database or spreadsheet applications. Veritabanını virgülle ayrılmış metin dosyası olarak diğer veritabanı veya elektronik tablo uygulamalarına aktarmaya hazır olacak şekilde dışa aktarın. - + Open the Create Table wizard, where it is possible to define the name and fields for a new table in the database Tablo Oluşturma sihirbazı, veritabanı için alanlarını ve ismini ayarlayabileceğiniz, yeni bir tablo oluşturmanızı sağlar - - + + Delete Table Tabloyu Sil - + Open the Delete Table wizard, where you can select a database table to be dropped. Tablo Silme sihirbazı, seçtiğiniz tabloları silmenizi sağlar. - + Open the Create Index wizard, where it is possible to define a new index on an existing database table. İndeks Oluşturma sihirbazı, varolan veritabanı tablosuna yeni indeks tanımlamanıza olanak sağlar. - + &Preferences... &Tercihler... - - + + Open the preferences window. Tercihler penceresini açar. - + &DB Toolbar &Veritabanı Araç Çubuğu - + Shows or hides the Database toolbar. Veritabanı araç çubuğunu gösterir veya gizler. - + Shift+F1 - + &Recently opened En son açılanla&r - + Ctrl+T @@ -3019,87 +3019,87 @@ SQL ifadelerini bir nesne satırından sürükleyip başka uygulamalara veya &ap - + Un/comment block of SQL code Kod bloğunu yorum satırına dönüştür/yorum satırını iptal et - + Un/comment block Yorum satırına dönüştür/yorum satırını iptal et - + Comment or uncomment current line or selected block of code Geçerli satırı veya kod bloğunu, yorum satırına dönüştür veya yorum satırını iptal et - + Comment or uncomment the selected lines or the current line, when there is no selection. All the block is toggled according to the first line. Geçerli satırı veya kod bloğunu, yorum satırına dönüştür veya yorum satırını iptal et. Hiç seçim yoksa tüm bloklar ilk satır baz alınarak değiştirilir. - + Ctrl+/ - + Stop SQL execution SQL yürütmesini durdur - + Stop execution Yürütmeyi durdur - + Stop the currently running SQL script Şu anda çalışan SQL betiğini durdur - + Warning: this pragma is not readable and this value has been inferred. Writing the pragma might overwrite a redefined LIKE provided by an SQLite extension. Uyarı: Bu pragma okunamaz ve bu değer çıkartıldı. Bu pragmayı yazmak, bir SQLite eklentisi tarafından sağlanan yeniden tanımlanmış bir LIKE'nin üzerine yazabilir. - + Too&ls Ara&çlar - + SQL &Log SQL &Günlüğü - + Show S&QL submitted by Şuna ait S&QL'i göster - + Error Log Hata Günlüğü - + This button clears the contents of the SQL logs Bu buton SQL günlüğünün içeriğini temizler - + This panel lets you examine a log of all SQL commands issued by the application or by yourself Bu panel, uygulama veya kendiniz tarafından verilen tüm SQL komutlarının bir günlüğünü incelemenizi sağlar - + &Plot &Çizim - + This is the structure of the opened database. You can drag multiple object names from the Name column and drop them into the SQL editor and you can adjust the properties of the dropped names using the context menu. This would help you in composing SQL statements. You can drag SQL statements from the Schema column and drop them into the SQL editor or into other applications. @@ -3110,267 +3110,267 @@ SQL deyimlerini Şema sütunundan sürükleyip SQL editörüne veya diğer uygul - - + + Project Toolbar Proje Araç Çubuğu - + Extra DB toolbar Ekstra Veritabanı araç çubuğu - - - + + + Close the current database file Geçerli veritabano dosyasını kapat - + This button closes the connection to the currently open database file Bu buton, şu anda açık olan veritabanı dosyasına ait bağlantıyı kapatır - - + + Ctrl+F4 - + &Revert Changes Değişiklikleri &Geri Al - + &Write Changes Değişiklikleri &Kaydet - + Compact &Database... Veriabanını &Sıkıştır... - + New &tab - + Execute all/selected SQL Tüm/seçin SQL sorgusunu yürüt - + This button executes the currently selected SQL statements. If no text is selected, all SQL statements are executed. Bu buton seçili olan SQL ifadesini yürütür. Hiçbir metin seçilmezse, tüm SQL ifadeleri yürütülür. - + Open SQL file(s) - + This button opens files containing SQL statements and loads them in new editor tabs - + &Load Extension... Ek&lenti Yükle... - + Execute line Tek satır yürüt - + &Wiki &Wiki - + F1 - + Bug &Report... Hata &Raporu... - + Feature Re&quest... &Özellik Talebi... - + Web&site Web &Sitesi - + &Donate on Patreon... &Patreon üzerinden Bağış Yapın... - + Close Pro&ject - - + + Close project and database files and return to the initial state - + Ctrl+Shift+F4 - - + + Detach Database - - + + Detach database file attached to the current database connection - + Open &Project... &Proje Aç... - + &Attach Database... &Veritabanı Ekle... - - + + Add another database file to the current database connection Şu anki veritabanı bağğlantısına başka bir veritabanı dosyası ekle - + This button lets you add another database file to the current database connection Bu buton, geçerli veritabanı bağlantısına başka bir veritabanı dosyası eklemenizi sağlar - + &Set Encryption... &Şifreleme Belirtle... - + SQLCipher &FAQ SQLCipher &SSS - + Table(&s) to JSON... Tablodan &JSON dosyasına... - + Open Data&base Read Only... Salt &Okunur Veritabanı Aç... - + Ctrl+Shift+O - + Save results Sonuçları kaydet - + Save the results view Sonuç görünümünü kaydet - + This button lets you save the results of the last executed query Bu buton son yürütülen sorgunun sonuçlarını kaydetmenizi sağlar - - + + Find text in SQL editor SQL editörünte metin ara - + Find Bul - + This button opens the search bar of the editor Bu buton editörün arama çubuğunu açar - + Ctrl+F - - + + Find or replace text in SQL editor SQL editöründe metin bul veya değiştir - + Find or replace Bul veya değiştir - + This button opens the find/replace dialog for the current editor tab Bu buton, geçerli editör sekmesi için bul / değiştir iletişim kutusunu açar - + Ctrl+H - + Export to &CSV &CSV dosyası olarak dışa aktar - + Save as &view &Görünüm olarak kaydet - + Save as view Görünüm olarak kaydet - + Browse Table Tabloyu Görüntüle - + Shows or hides the Project toolbar. Proje araç çubuğunu gösterir veya gizler. @@ -3396,458 +3396,617 @@ SQL deyimlerini Şema sütunundan sürükleyip SQL editörüne veya diğer uygul - - + + Temp Store + + + + + Secure Delete + + + + + Case Sensitive Like + + + + + Journal Mode + + + + + Journal Size Limit + + + + + Recursive Triggers + + + + + Page Size + + + + + Foreign Keys + + + + + Auto Vacuum + + + + + Max Page Count + + + + + Checkpoint Full FSYNC + + + + + + Off + + + + + + Normal + + + + + + Full + + + + + Default + Varsayılan + + + + File + Dosya + + + + + Memory + + + + + Delete + + + + + Truncate + + + + + Persist + + + + + WAL + + + + + Exclusive + + + + + Automatic Index + + + + + Ignore Check Constraints + + + + + Full FSYNC + + + + + WAL Auto Checkpoint + + + + + User Version + + + + + Synchronous + + + + + None + Hiçbiri + + + + Incremental + + + + + Locking Mode + + + + + E&xecute SQL This has to be equal to the tab title in all the main tabs - + &Recent Files - + &New Database - + &Undo - - + + Undo last change to the database - + This action undoes the last change performed to the database in the Database Browser or in Execute SQL. Redoing is not possible. - + Open the Modify Table wizard, where it is possible to rename an existing table. It is also possible to add or delete fields from a table, as well as modify field names and types. - + Ctrl+Shift+T - + &Save Project - + This button lets you save all the settings associated to the open DB to a DB Browser for SQLite project file - + Open &Project - + This button lets you open a DB Browser for SQLite project file - + Export to &JSON - + Extra DB Toolbar Ekstra Veritabanı Araç Çubuğu - + &Open Database - + New In-&Memory Database &Yeni Bellek İçi Veritabanı - + Drag && Drop SELECT Query - - + + When dragging fields from the same table or a single table, drop a SELECT query into the editor - + Drag && Drop Qualified Names Nitelikli İsimleri Sürükle && Bırak - - + + Use qualified names (e.g. "Table"."Field") when dragging the objects and dropping them into the editor Nesneleri sürükleyip düzenleyiciye bırakırken özel isimleri kullanın (örn. "Tablo". "Alan") - + Drag && Drop Enquoted Names İsimleri Sürükle && Bırak - - + + Use escaped identifiers (e.g. "Table1") when dragging the objects and dropping them into the editor Nesneleri sürükleyip editöre bırakırken çıkış karakter belirleyicilerini kullanın(ör. "Tablo1") kullanın - + &Integrity Check &Bütünlük Denetimi - + Runs the integrity_check pragma over the opened database and returns the results in the Execute SQL tab. This pragma does an integrity check of the entire database. integrity_check pragmasını açılan veritabanı üzerinde çalıştırır ve 'SQL Kodunu Yürüt' sekmesinde sonuçları döndürür. Bu pragma veritabanının tamamının bütünlüğünü kontrol eder. - + &Foreign-Key Check &Yabancı anahtar kontrolü - + Runs the foreign_key_check pragma over the opened database and returns the results in the Execute SQL tab Foreign_key_check pragmasını açık veritabanı üzerinde çalıştırır ve 'SQL Kodunu Yürüt' sekmesinde sonuçları döndürür - + &Quick Integrity Check &Hızlı Bütünlük Testi - + Run a quick integrity check over the open DB Açık veritabanı üzerinde hızlı bir bütünlük denetimi yapın - + Runs the quick_check pragma over the opened database and returns the results in the Execute SQL tab. This command does most of the checking of PRAGMA integrity_check but runs much faster. quick_check pragmasını açık veritabanı üzerinde çalıştırır ve 'SQL Kodunu Yürüt' sekmesinde sonuçları döndürür. Bu komut PRAGMA integrity_check denetiminin çoğunu yapar, ancak çok daha hızlı çalışır. - + &Optimize &Optimize - + Attempt to optimize the database Veritabanını optimize etmeyi dene - + Runs the optimize pragma over the opened database. This pragma might perform optimizations that will improve the performance of future queries. Açılan veritabanı üzerinden optimizasyon pragmasını çalıştırır. Bu uygulama gelecekteki sorguların performansını artırmaya yardımcı olabilir. - - + + Print Yazdır - + Print text from current SQL editor tab Geçerli SQL düzenleyici sekmesinden metni yazdırın - + Open a dialog for printing the text in the current SQL editor tab Geçerli SQL düzenleyici sekmesindeki metni yazdırmak için bir iletişim kutusu açın - + Print the structure of the opened database Şu anda açık olan veritabanı yapısını yazdırın - + Open a dialog for printing the structure of the opened database Açılan veritabanının yapısını yazdırmak için bir bir iletişim kutusu açın - + &Save Project As... Projeyi &Farklı Kaydet... - - - + + + Save the project in a file selected in a dialog Projeyi iletişim kutusunda seçilen bir dosyaya kaydedin - + Save A&ll Tümünü &Kaydet - - - + + + Save DB file, project file and opened SQL files Veritabanı dosyasını, proje dosyasını ve açılan SQL dosyalarını kaydedin - + Ctrl+Shift+S - - + + Ctrl+Shift+W - + Table from CSV data in Clipboard... - + This treats the current clipboard contents as a CSV file and opens the same import wizard that is used for importing CSV data from a file. - + Show &Row Counts - + This shows the number of rows for each table and view in the database. - + Save Database &As... - + Save the current database as a different file - + Refresh Yenile - + Reload the database structure - + &Database from SQL file... SQL &dosyasından veritabanı... - + &Table from CSV file... CSV dosyasından &tablo... - + &Database to SQL file... Veritabanından SQL &dosyası... - + &Table(s) as CSV file... &Tablodan CSV dosyası olarak... - + &Create Table... &Tablo Oluştur... - + &Delete Table... &Tabloyu Sil... - + &Modify Table... Tabloyu &Düzenle... - + Create &Index... &Index Oluştur... - + W&hat's This? Bu &nedir? - + &About &İptal - + This button opens a new tab for the SQL editor Bu buton SQL editörü için yeni bir sekme açar - + &Execute SQL &SQL kodunu yürüt - - - + + + Save SQL file SQL dosyasını kaydet - + Ctrl+E - + Export as CSV file CSV dosyası olarak dışa aktar - + Export table as comma separated values file Tabloyu virgülle ayrılmış girdiler dosyası olarak dışa aktar - - + + Save the current session to a file Geçerli oturumu dosyaya kaydet - - + + Load a working session from a file Dosyadan çalışma oturumunu yükle - - + + Save SQL file as SQL dosyasını bu şekilde kaydet - + This button saves the content of the current SQL editor tab to a file Bu buton geçerli SQL editörü sekmesinin içeriğini bir dosyaya kaydeder - + &Browse Table &Tabloyu Görüntüle - + Copy Create statement 'Create' ifadesini kopyala - + Copy the CREATE statement of the item to the clipboard Objenin 'Create' ifadesini panoya kopyala - + Ctrl+Return - + Ctrl+L - - + + Ctrl+P - + Ctrl+D - + Ctrl+I - + Encrypted Şifrelenmiş - + Read only Salt okunur - + Database file is read only. Editing the database is disabled. Veritabanı salt okunur. Veritabanı düzenleme devre dışı. - + Database encoding Veritabanı kodlaması - + Database is encrypted using SQLCipher Veritabanı SQLCipher kullanılırak şifrelendi - - + + Choose a database file Veritabanı dosyasını seçiniz - - - + + + Choose a filename to save under Kaydetmek için dosya ismi seçiniz - + Error while saving the database file. This means that not all changes to the database were saved. You need to resolve the following error first. %1 @@ -3856,370 +4015,370 @@ SQL deyimlerini Şema sütunundan sürükleyip SQL editörüne veya diğer uygul %1 - + Are you sure you want to undo all changes made to the database file '%1' since the last save? Son kayıttan itibaren '%1' dosyasına yaptığınız değişiklikleri geri almak istediğinize emin misiniz? - + Choose a file to import İçe aktarmak için dosya seçiniz - + &%1 %2%3 &%1 %2%3 - + (read only) (salt okunur) - + Open Database or Project Veritabanı veya Proje Açın - + Attach Database... Veritabanı Ekle... - + Import CSV file(s)... CSV dosyalarını içe aktarın... - + Do you want to save the changes made to SQL tabs in the project file '%1'? SQL sekmelerinde yapılan değişiklikleri '%1' proje dosyasına kaydetmek istiyor musunuz? - + Text files(*.sql *.txt);;All files(*) Metin dosyaları(*.sql *.txt);;Tüm dosyalar(*) - + Do you want to create a new database file to hold the imported data? If you answer no we will attempt to import the data in the SQL file to the current database. İçeri aktarılan verileri tutmak için yeni bir veritabanı dosyası oluşturmak istiyor musunuz? Eğer cevabınız hayır ise biz SQL dosyasındaki verileri geçerli veritabanına aktarmaya başlayacağız. - + You are still executing SQL statements. Closing the database now will stop their execution, possibly leaving the database in an inconsistent state. Are you sure you want to close the database? Şu anda SQL sorgularını yürütüyorsunuz. Veritabanının şimdi kapatılması, muhtemelen veritabanını tutarsız bir durumda bırakarak yürütmeyi durduracaktır. Veritabanını kapatmak istediğinizden emin misiniz? - + Do you want to save the changes made to the project file '%1'? '%1' proje dosyasında yapılan değişiklikleri kaydetmek istiyor musunuz? - + File %1 already exists. Please choose a different name. %1 dosyası zaten mevcut. Lütfen farklı bir isim seçiniz. - + Error importing data: %1 Dosya içeri aktarılırken hata oluştu: %1 - + Import completed. İçeri aktarma tamamlandı. - + Delete View Görünümü Sil - + Modify View Görünümü Düzenle - + Delete Trigger Tetikleyiciyi Sil - + Modify Trigger Tetikleyiciyi Düzenle - + Delete Index İndeksi Sil - + Modify Index Index'i Düzenle - + Modify Table Tabloyu Düzenle - + Do you want to save the changes made to SQL tabs in a new project file? SQL sekmelerinde yapılan değişiklikleri yeni bir proje dosyasına kaydetmek istiyor musunuz? - + Do you want to save the changes made to the SQL file %1? %1 SQL dosyasında yapılan değişiklikleri kaydetmek istiyor musunuz? - + Could not find resource file: %1 Kaynak dosya bulunamadı: %1 - + Choose a project file to open Açmak için bir proje dosyası seçin - + Could not open project file for writing. Reason: %1 Proje dosyası yazmaya açılamadı. Nedeni: %1 - + Busy (%1) Meşgul (%1) - + Setting PRAGMA values will commit your current transaction. Are you sure? PRAGMA değerlerini ayarlamak geçerli işleminizi yürütmeye alacaktır. Bunu yapmak istediğinize emin misiniz? - + Ctrl+Tab - + Ctrl+Shift+Tab - + Clear List - + Window Layout - + Reset Window Layout Pencere Düzenini Sıfırla - + Simplify Window Layout - - Shift+Alt+0 + + Alt+Shift+0 - + Dock Windows at Bottom - + Dock Windows at Left Side - + Dock Windows at Top - - The database is currenctly busy. + + The database is currently busy. Verştabanı şu anda meşgul. - + Click here to interrupt the currently running query. Çalışmakta olan sorguyu kesmek için burayı tıklayın. - + Ctrl+Alt+W - + Could not open database file. Reason: %1 Veritabanı dosyası açılamadı. Nedeni: %1 - + In-Memory database Bellek İçi Veritabanı - + Choose a database file to save under - + Error while saving the database to the new file. - + Are you sure you want to delete the table '%1'? All data associated with the table will be lost. '%1' tablosunu silmek istediğinizden emin misiniz? Tabloyla ilişkili tüm veriler kaybedilecektir. - + Are you sure you want to delete the view '%1'? '%1' görünümünü silmek istediğinizden emin misiniz? - + Are you sure you want to delete the trigger '%1'? '%1' tetikleyicisini silmek istediğinizden emin misiniz? - + Are you sure you want to delete the index '%1'? '%1' indexsini silmek istediğinizden emin misiniz? - + Error: could not delete the table. Hata: tablo silinemedi. - + Error: could not delete the view. Hata: görünüm silinemedi. - + Error: could not delete the trigger. Hata: tetikleyici silinemedi. - + Error: could not delete the index. Hata: index silinemedi. - + Message from database engine: %1 Veritabanı motorundan mesaj: %1 - + Editing the table requires to save all pending changes now. Are you sure you want to save the database? Tabloyu düzenlemek için bekleyen tüm değişikliklerin şimdi kaydedilmesi gerekir. Veritabanını kaydetmek istediğinizden emin misiniz? - + Edit View %1 - + Edit Trigger %1 - + You are already executing SQL statements. Do you want to stop them in order to execute the current statements instead? Note that this might leave the database in an inconsistent state. Şu anda zaten yürütülen SQL sorguları var. Bunun yerine, şimdiki sorguları çalıştırmak için şu anda yürütülen sorguyu durdurmak istiyor musunuz? Bunun veritabanını tutarsız bir durumda bırakabileceğini unutmayın. - + -- EXECUTING SELECTION IN '%1' -- -- SEÇİM '%1' İÇERİSİNDE YÜRÜTÜLÜYOR -- - + -- EXECUTING LINE IN '%1' -- -- SATIR '%1' İÇERİSİNDE YÜRÜTÜLÜYOR -- - + -- EXECUTING ALL IN '%1' -- -- TÜMÜ '%1' İÇERİSİNDE YÜRÜTÜLÜYOR -- - - + + At line %1: %1. satırda: - + Result: %1 Sonuç: %1 - + Result: %2 Sonuç: %2 - + Setting PRAGMA values or vacuuming will commit your current transaction. Are you sure? PRAGMA değerlerini ayarlamak veya vakumlamak mevcut işleminizi kaydeder. Emin misiniz? - + Opened '%1' in read-only mode from recent file list - + Opened '%1' from recent file list - + Select the action to apply to the dropped file(s). <br/>Note: only 'Import' will process more than one file. Note for translation: Although there is no %n in the original, you can use the numerus-form to adjust 'files(s)' and remove the note when n = 1. Including %n in the translation will also work. @@ -4227,148 +4386,148 @@ Emin misiniz? - + The statements in the tab '%1' are still executing. Closing the tab will stop the execution. This might leave the database in an inconsistent state. Are you sure you want to close the tab? - + DB file '%1' could not be opened - + This project file is using an old file format because it was created using DB Browser for SQLite version 3.10 or lower. Loading this file format is no longer fully supported. If you want to load it completely, please use DB Browser for SQLite version 3.12 to convert it to the new file format. - + Table '%1' not found; settings ignored - + -- Reference to file "%1" (not supported by this version) -- - + Yes. Don't ask again - + This action will open a new SQL tab with the following statements for you to edit and run: - + Rename Tab Sekmeyi Yeniden Adlandır - + Duplicate Tab Sekmeyi Klonla - + Close Tab Sekmeyi Kapat - + Opening '%1'... '%1' açılıyor... - + There was an error opening '%1'... '%1' açılırken hata oluştu... - + Value is not a valid URL or filename: %1 Geçersiz bir URL veya dosya adı: %1 - + %1 rows returned in %2ms %2ms içerisinde %1 tane satır döndürüldü - + Automatically load the last opened DB file at startup - + Ctrl+Alt+0 - + Choose text files Metin dosyaları seçin - + Import completed. Some foreign key constraints are violated. Please fix them before saving. İçe aktarma tamamlandı. Bazı yabancı anahtar kısıtları ihlal edildi. Lütfen kaydetmeden önce bunları çözün. - + Select SQL file to open Açmak için SQL dosyasını seçiniz - + Select file name Dosya ismi seçiniz - + Select extension file Eklenti dosyasını seçiniz - + Extension successfully loaded. Eklenti başarıyla yüklendi. - + Error loading extension: %1 Eklenti yüklenirken hata oluştu: %1 - - + + Don't show again Bir daha gös'terme - + New version available. Yeni sürüm mevcut. - + A new DB Browser for SQLite version is available (%1.%2.%3).<br/><br/>Please download at <a href='%4'>%4</a>. Yeni bir SQLite DB Browser sürümü mevcut (%1.%2.%3).<br/><br/>Lütfen buradan indiriniz: <a href='%4'>%4</a>. - + Project saved to file '%1' Proje '%1' dosyasına kaydedildi - + Collation needed! Proceed? Harmanlama gerekli! Devam edilsin mi? - + A table in this database requires a special collation function '%1' that this application can't provide without further knowledge. If you choose to proceed, be aware bad things can happen to your database. Create a backup! @@ -4377,67 +4536,67 @@ Daha fazla bilgi olmadan program bunu sağlayamaz. Eğer bu şekilde devam edece Bir yedek oluşturun! - + creating collation harmanlama oluşturuluyor - + Set a new name for the SQL tab. Use the '&&' character to allow using the following character as a keyboard shortcut. SQL sekmesi için yeni bir ad belirleyin. Aşağıdaki karakteri klavye kısayolu olarak kullanmak için '&&' karakterini kullanın. - + Please specify the view name Lütfen görünüm ismini belirtin - + There is already an object with that name. Please choose a different name. Bu isme sahip obje zaten mevcut. Lütfen farklı bir isim seçiniz. - + View successfully created. Görünüm başarıyla oluşturuldu. - + Error creating view: %1 Görünüm oluşturma hatası: %1 - + This action will open a new SQL tab for running: Bu işlem çalıştırmak için yeni bir SQL sekmesi açar: - + Press Help for opening the corresponding SQLite reference page. İlgili SQLite referans sayfasını açmak için Yardım'a basın. - + DB Browser for SQLite project file (*.sqbpro) SQLite DB Browser proje dosyası (*.sqbpro) - + Error checking foreign keys after table modification. The changes will be reverted. Tablo değişikliğinden sonra yabancı anahtarlar kontrol edilirken hata oluştu. Değişiklikler geri alınacak. - + This table did not pass a foreign-key check.<br/>You should run 'Tools | Foreign-Key Check' and fix the reported issues. Bu tablo birincil anahtar kontrolünden geçmedi.<br/>'Araçlar | Birinci Anahat Kontrolü' komutunu çalıştırın ve raporlanan sorunları düzeltin. - + Execution finished with errors. Yürütme hatalarla tamamlandı. - + Execution finished without errors. Yürütme hatasız tamamlandı. @@ -4632,102 +4791,107 @@ Yalnızca geçerli yönde sürüklemek ve yakınlaştırmak için eksen veya eks - + Load all data and redraw plot Tüm verileri yükle ve grafiği yeniden çiz - - - + + + Row # Satır # - + Copy Kopyala - + Print... Yazdır... - + + Help + + + + Show legend Göstergeyi göster - + Stacked bars Yığılmış çubuklar - + Fixed number format - + Date/Time Tarih/Saat - + Date Tarih - + Time Saat - - + + Numeric Nümerik - + Label Etiket - + Invalid Geçersiz - + Load all data and redraw plot. Warning: not all data has been fetched from the table yet due to the partial fetch mechanism. Tüm verileri yükle ve grafiği yeniden çiz. Uyarı: Kısmi yükleme mekanizması nedeniyle tüm veriler tablodan henüz alınmadı. - + Choose an axis color Bir eksen rengi seçin - + Choose a filename to save under Altına kaydetmek için dosya ismi seçiniz - + PNG(*.png);;JPG(*.jpg);;PDF(*.pdf);;BMP(*.bmp);;All Files(*) PNG(*.png);;JPG(*.jpg);;PDF(*.pdf);;BMP(*.bmp);;Tüm dosyalar(*) - + There are curves in this plot and the selected line style can only be applied to graphs sorted by X. Either sort the table or query by X to remove curves or select one of the styles supported by curves: None or Line. Bu grafikte eğriler var ve seçilen çizgi stili yalnızca X'e göre sıralanmış grafiklere uygulanabilir. Eğrileri kaldırmak için tabloyu veya sorguyu X'e göre sıralayın veya eğriler tarafından desteklenen stillerden birini seçin: 'Hiçbiri' veya 'Çizgi'. - + Loading all remaining data for this table took %1ms. Bu tablo için kalan tüm verilerin yüklenmesi %1ms sürdü. @@ -5619,8 +5783,8 @@ Please check again. - Socks v5 - Socks v5 + SOCKS5 + SOCKS5 @@ -5765,1970 +5929,400 @@ Please check again. QsciCommand - - Move down one line - + Paste + Yapıştır - - Extend selection down one line - + Cancel + İptal + + + QsciLexerCPP - - Extend rectangular selection down one line - + Default + Varsayılan - - Scroll view down one line - + Keyword + Anahtar Kelime - - Move up one line - + Identifier + Kimlik + + + QsciLexerJSON - - Extend selection up one line - + Default + Varsayılan - - Extend rectangular selection up one line - + String + String + + + QsciLexerJavaScript - - Scroll view up one line - + Regular expression + Düzenli ifadeler (RegEx) + + + QsciLexerPython - - Scroll to start of document - + Default + Varsayılan - - Scroll to end of document - + Comment + Yorum - - Scroll vertically to centre current line - + Keyword + Anahtar Kelime - - Move down one paragraph - + Identifier + Kimlik + + + QsciLexerSQL - - Extend selection down one paragraph - + Default + Varsayılan - - Move up one paragraph - + Comment + Yorum - - Extend selection up one paragraph - + Keyword + Anahtar Kelime - - Move left one character - + Identifier + Kimlik + + + QsciScintilla - - Extend selection left one character - + Select All + Tümünü Seç + + + RemoteCommitsModel - - Extend rectangular selection left one character + + Commit ID - - Move right one character + + Message - - Extend selection right one character - + + Date + Tarih - - Extend rectangular selection right one character + + Author - - Move left one word - + + Size + Boyut - - Extend selection left one word + + Authored and committed by %1 - - Move right one word + + Authored by %1, committed by %2 + + + RemoteDatabase - - Extend selection right one word - + + Error opening local databases list. +%1 + Yerel veritabanı listesi açılamadı. +%1 - - Move to end of previous word - + + Error creating local databases list. +%1 + Yerel veritabanı listesi oluşturulamadı. +%1 + + + RemoteDock - - Extend selection to end of previous word - + + Remote + Uzak Bilgisayar - - Move to end of next word - + + Identity + Kmlik - - Extend selection to end of next word - + + Push currently opened database to server + Şu anda açık olan veritabanını sunucuya aktar - - Move left one word part + + Upload - - Extend selection left one word part + + DBHub.io - - Move right one word part + + <html><head/><body><p>In this pane, remote databases from dbhub.io website can be added to DB Browser for SQLite. First you need an identity:</p><ol style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Login to the dbhub.io website (use your GitHub credentials or whatever you want)</li><li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click the button to &quot;Generate client certificate&quot; (that's your identity). That'll give you a certificate file (save it to your local disk).</li><li style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Go to the Remote tab in DB Browser for SQLite Preferences. Click the button to add a new certificate to DB Browser for SQLite and choose the just downloaded certificate file.</li></ol><p>Now the Remote panel shows your identity and you can add remote databases.</p></body></html> - - Extend selection right one word part + + Local - - Move to start of document line + + Current Database - - Extend selection to start of document line + + Clone - - Extend rectangular selection to start of document line - + + Branch + Branch - - Move to start of display line + + Commits - - Extend selection to start of display line + + Commits for - - Move to start of display or document line + + Delete Database - - Extend selection to start of display or document line + + Delete the local clone of this database - - Move to first visible character in document line + + Open in Web Browser - - Extend selection to first visible character in document line + + Open the web page for the current database in your browser - - Extend rectangular selection to first visible character in document line + + Clone from Link - - Move to first visible character of display in document line + + Use this to download a remote database for local editing using a URL as provided on the web page of the database. - - Extend selection to first visible character in display or document line - + + Refresh + Yenile - - Move to end of document line + + Reload all data and update the views - - Extend selection to end of document line + + Clone Database - - Extend rectangular selection to end of document line + + Open Database - - Move to end of display line + + Open the local copy of this database - - Extend selection to end of display line + + Check out Commit - - Move to end of display or document line + + Download and open this specific commit - - Extend selection to end of display or document line + + Check out Latest Commit - - Move to start of document + + Check out the latest commit of the current branch - - Extend selection to start of document + + Save Revision to File - - Move to end of document + + Saves the selected revision of the database to another file - - Extend selection to end of document + + Upload Database - - Move up one page + + Upload this database as a new commit - - Extend selection up one page - + + <html><head/><body><p>You are currently using a built-in, read-only identity. For uploading your database, you need to configure and use your DBHub.io account.</p><p>No DBHub.io account yet? <a href="https://dbhub.io/"><span style=" text-decoration: underline; color:#007af4;">Create one now</span></a> and import your certificate <a href="#preferences"><span style=" text-decoration: underline; color:#007af4;">here</span></a> to share your databases.</p><p>For online help visit <a href="https://dbhub.io/about"><span style=" text-decoration: underline; color:#007af4;">here</span></a>.</p></body></html> + <html> <head /> <body> <p> Şu anda dahili, salt okunur kimlik kullanıyorsunuz. Kendi veritabanınızı yüklemek için DBHub.io hesabı kullanıp konfigure etmeniz gerekiyor. </p> <p> Henüz DBHub.io hesabınız yok mu? <a href="https://dbhub.io/" ><span style=" text-decoration: underline; color:#007af4;" >Şimdi bir tane oluşturun</span ></a > ve veritabanınızı paylaşmak için <a href="#preferences" ><span style=" text-decoration: underline; color:#007af4;" >buradan</span ></a > sertifikanızı içe aktarın. </p> <p> Çevrimiçi yardım için <a href="https://dbhub.io/about" ><span style=" text-decoration: underline; color:#007af4;" >burayı</span ></a > ziyaret edin. </p> </body> </html> - - Extend rectangular selection up one page + + &User - - Move down one page - + + &Database + &Veritabanı - - Extend selection down one page - + + Back + Geri - - Extend rectangular selection down one page + + Select an identity to connect - - Stuttered move up one page - + + Public + - - Stuttered extend selection up one page + + This downloads a database from a remote server for local editing. +Please enter the URL to clone from. You can generate this URL by +clicking the 'Clone Database in DB4S' button on the web page +of the database. - - Stuttered move down one page + + Invalid URL: The host name does not match the host name of the current identity. - - Stuttered extend selection down one page + + Invalid URL: No branch name specified. - - Delete current character + + Invalid URL: No commit ID specified. - - Delete previous character + + You have modified the local clone of the database. Fetching this commit overrides these local changes. +Are you sure you want to proceed? - - Delete previous character if not at start of line + + The database has unsaved changes. Are you sure you want to push it before saving? - - Delete word to left + + The database you are trying to delete is currently opened. Please close it before deleting. - - Delete word to right + + This deletes the local version of this database with all the changes you have not committed yet. Are you sure you want to delete this database? + + + RemoteLocalFilesModel - - Delete right to end of next word - + + Name + İsim - - Delete line to left - + + Branch + Branch - - Delete line to right - + + Last modified + Son değiştirilme - - Delete current line - - - - - Cut current line - - - - - Copy current line - - - - - Transpose current and previous lines - - - - - Duplicate the current line - - - - - Select all - - - - - Move selected lines up one line - - - - - Move selected lines down one line - - - - - Duplicate selection - - - - - Convert selection to lower case - - - - - Convert selection to upper case - - - - - Cut selection - - - - - Copy selection - - - - - Paste - Yapıştır - - - - Toggle insert/overtype - - - - - Insert newline - - - - - Formfeed - - - - - Indent one level - - - - - De-indent one level - - - - - Cancel - İptal - - - - Undo last command - - - - - Redo last command - - - - - Zoom in - - - - - Zoom out - - - - - QsciLexerCPP - - - Default - Varsayılan - - - - Inactive default - - - - - C comment - - - - - Inactive C comment - - - - - C++ comment - - - - - Inactive C++ comment - - - - - JavaDoc style C comment - - - - - Inactive JavaDoc style C comment - - - - - Number - - - - - Inactive number - - - - - Keyword - Anahtar Kelime - - - - Inactive keyword - - - - - Double-quoted string - - - - - Inactive double-quoted string - - - - - Single-quoted string - - - - - Inactive single-quoted string - - - - - IDL UUID - - - - - Inactive IDL UUID - - - - - Pre-processor block - - - - - Inactive pre-processor block - - - - - Operator - - - - - Inactive operator - - - - - Identifier - Kimlik - - - - Inactive identifier - - - - - Unclosed string - - - - - Inactive unclosed string - - - - - C# verbatim string - - - - - Inactive C# verbatim string - - - - - JavaScript regular expression - - - - - Inactive JavaScript regular expression - - - - - JavaDoc style C++ comment - - - - - Inactive JavaDoc style C++ comment - - - - - Secondary keywords and identifiers - - - - - Inactive secondary keywords and identifiers - - - - - JavaDoc keyword - - - - - Inactive JavaDoc keyword - - - - - JavaDoc keyword error - - - - - Inactive JavaDoc keyword error - - - - - Global classes and typedefs - - - - - Inactive global classes and typedefs - - - - - C++ raw string - - - - - Inactive C++ raw string - - - - - Vala triple-quoted verbatim string - - - - - Inactive Vala triple-quoted verbatim string - - - - - Pike hash-quoted string - - - - - Inactive Pike hash-quoted string - - - - - Pre-processor C comment - - - - - Inactive pre-processor C comment - - - - - JavaDoc style pre-processor comment - - - - - Inactive JavaDoc style pre-processor comment - - - - - User-defined literal - - - - - Inactive user-defined literal - - - - - Task marker - - - - - Inactive task marker - - - - - Escape sequence - - - - - Inactive escape sequence - - - - - QsciLexerHTML - - - HTML default - - - - - Tag - - - - - Unknown tag - - - - - Attribute - - - - - Unknown attribute - - - - - HTML number - - - - - HTML double-quoted string - - - - - HTML single-quoted string - - - - - Other text in a tag - - - - - HTML comment - - - - - Entity - - - - - End of a tag - - - - - Start of an XML fragment - - - - - End of an XML fragment - - - - - Script tag - - - - - Start of an ASP fragment with @ - - - - - Start of an ASP fragment - - - - - CDATA - - - - - Start of a PHP fragment - - - - - Unquoted HTML value - - - - - ASP X-Code comment - - - - - SGML default - - - - - SGML command - - - - - First parameter of an SGML command - - - - - SGML double-quoted string - - - - - SGML single-quoted string - - - - - SGML error - - - - - SGML special entity - - - - - SGML comment - - - - - First parameter comment of an SGML command - - - - - SGML block default - - - - - Start of a JavaScript fragment - - - - - JavaScript default - - - - - JavaScript comment - - - - - JavaScript line comment - - - - - JavaDoc style JavaScript comment - - - - - JavaScript number - - - - - JavaScript word - - - - - JavaScript keyword - - - - - JavaScript double-quoted string - - - - - JavaScript single-quoted string - - - - - JavaScript symbol - - - - - JavaScript unclosed string - - - - - JavaScript regular expression - - - - - Start of an ASP JavaScript fragment - - - - - ASP JavaScript default - - - - - ASP JavaScript comment - - - - - ASP JavaScript line comment - - - - - JavaDoc style ASP JavaScript comment - - - - - ASP JavaScript number - - - - - ASP JavaScript word - - - - - ASP JavaScript keyword - - - - - ASP JavaScript double-quoted string - - - - - ASP JavaScript single-quoted string - - - - - ASP JavaScript symbol - - - - - ASP JavaScript unclosed string - - - - - ASP JavaScript regular expression - - - - - Start of a VBScript fragment - - - - - VBScript default - - - - - VBScript comment - - - - - VBScript number - - - - - VBScript keyword - - - - - VBScript string - - - - - VBScript identifier - - - - - VBScript unclosed string - - - - - Start of an ASP VBScript fragment - - - - - ASP VBScript default - - - - - ASP VBScript comment - - - - - ASP VBScript number - - - - - ASP VBScript keyword - - - - - ASP VBScript string - - - - - ASP VBScript identifier - - - - - ASP VBScript unclosed string - - - - - Start of a Python fragment - - - - - Python default - - - - - Python comment - - - - - Python number - - - - - Python double-quoted string - - - - - Python single-quoted string - - - - - Python keyword - - - - - Python triple double-quoted string - - - - - Python triple single-quoted string - - - - - Python class name - - - - - Python function or method name - - - - - Python operator - - - - - Python identifier - - - - - Start of an ASP Python fragment - - - - - ASP Python default - - - - - ASP Python comment - - - - - ASP Python number - - - - - ASP Python double-quoted string - - - - - ASP Python single-quoted string - - - - - ASP Python keyword - - - - - ASP Python triple double-quoted string - - - - - ASP Python triple single-quoted string - - - - - ASP Python class name - - - - - ASP Python function or method name - - - - - ASP Python operator - - - - - ASP Python identifier - - - - - PHP default - - - - - PHP double-quoted string - - - - - PHP single-quoted string - - - - - PHP keyword - - - - - PHP number - - - - - PHP variable - - - - - PHP comment - - - - - PHP line comment - - - - - PHP double-quoted variable - - - - - PHP operator - - - - - QsciLexerJSON - - - Default - Varsayılan - - - - Number - - - - - String - String - - - - Unclosed string - - - - - Property - - - - - Escape sequence - - - - - Line comment - - - - - Block comment - - - - - Operator - - - - - IRI - - - - - JSON-LD compact IRI - - - - - JSON keyword - - - - - JSON-LD keyword - - - - - Parsing error - - - - - QsciLexerJavaScript - - - Regular expression - Düzenli ifadeler (RegEx) - - - - QsciLexerPython - - - Default - Varsayılan - - - - Comment - Yorum - - - - Number - - - - - Double-quoted string - - - - - Single-quoted string - - - - - Keyword - Anahtar Kelime - - - - Triple single-quoted string - - - - - Triple double-quoted string - - - - - Class name - - - - - Function or method name - - - - - Operator - - - - - Identifier - Kimlik - - - - Comment block - - - - - Unclosed string - - - - - Highlighted identifier - - - - - Decorator - - - - - Double-quoted f-string - - - - - Single-quoted f-string - - - - - Triple single-quoted f-string - - - - - Triple double-quoted f-string - - - - - QsciLexerSQL - - - Default - Varsayılan - - - - Comment - Yorum - - - - Comment line - - - - - JavaDoc style comment - - - - - Number - - - - - Keyword - Anahtar Kelime - - - - Double-quoted string - - - - - Single-quoted string - - - - - SQL*Plus keyword - - - - - SQL*Plus prompt - - - - - Operator - - - - - Identifier - Kimlik - - - - SQL*Plus comment - - - - - # comment line - - - - - JavaDoc keyword - - - - - JavaDoc keyword error - - - - - User defined 1 - - - - - User defined 2 - - - - - User defined 3 - - - - - User defined 4 - - - - - Quoted identifier - - - - - Quoted operator - - - - - QsciScintilla - - - &Undo - - - - - &Redo - - - - - Cu&t - - - - - &Copy - - - - - &Paste - - - - - Delete - - - - - Select All - Tümünü Seç - - - - RemoteCommitsModel - - - Commit ID - - - - - Message - - - - - Date - Tarih - - - - Author - - - - - Size - Boyut - - - - Authored and committed by %1 - - - - - Authored by %1, committed by %2 - - - - - RemoteDatabase - - - Error opening local databases list. -%1 - Yerel veritabanı listesi açılamadı. -%1 - - - - Error creating local databases list. -%1 - Yerel veritabanı listesi oluşturulamadı. -%1 - - - - RemoteDock - - - Remote - Uzak Bilgisayar - - - - Identity - Kmlik - - - - Push currently opened database to server - Şu anda açık olan veritabanını sunucuya aktar - - - - Upload - - - - - DBHub.io - - - - - <html><head/><body><p>In this pane, remote databases from dbhub.io website can be added to DB Browser for SQLite. First you need an identity:</p><ol style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Login to the dbhub.io website (use your GitHub credentials or whatever you want)</li><li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click the button to &quot;Generate client certificate&quot; (that's your identity). That'll give you a certificate file (save it to your local disk).</li><li style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Go to the Remote tab in DB Browser for SQLite Preferences. Click the button to add a new certificate to DB Browser for SQLite and choose the just downloaded certificate file.</li></ol><p>Now the Remote panel shows your identity and you can add remote databases.</p></body></html> - - - - - Local - - - - - Current Database - - - - - Clone - - - - - Branch - Branch - - - - Commits - - - - - Commits for - - - - - Delete Database - - - - - Delete the local clone of this database - - - - - Open in Web Browser - - - - - Open the web page for the current database in your browser - - - - - Clone from Link - - - - - Use this to download a remote database for local editing using a URL as provided on the web page of the database. - - - - - Refresh - Yenile - - - - Reload all data and update the views - - - - - Clone Database - - - - - Open Database - - - - - Open the local copy of this database - - - - - Check out Commit - - - - - Download and open this specific commit - - - - - Check out Latest Commit - - - - - Check out the latest commit of the current branch - - - - - Save Revision to File - - - - - Saves the selected revision of the database to another file - - - - - Upload Database - - - - - Upload this database as a new commit - - - - - <html><head/><body><p>You are currently using a built-in, read-only identity. For uploading your database, you need to configure and use your DBHub.io account.</p><p>No DBHub.io account yet? <a href="https://dbhub.io/"><span style=" text-decoration: underline; color:#007af4;">Create one now</span></a> and import your certificate <a href="#preferences"><span style=" text-decoration: underline; color:#007af4;">here</span></a> to share your databases.</p><p>For online help visit <a href="https://dbhub.io/about"><span style=" text-decoration: underline; color:#007af4;">here</span></a>.</p></body></html> - <html> <head /> <body> <p> Şu anda dahili, salt okunur kimlik kullanıyorsunuz. Kendi veritabanınızı yüklemek için DBHub.io hesabı kullanıp konfigure etmeniz gerekiyor. </p> <p> Henüz DBHub.io hesabınız yok mu? <a href="https://dbhub.io/" ><span style=" text-decoration: underline; color:#007af4;" >Şimdi bir tane oluşturun</span ></a > ve veritabanınızı paylaşmak için <a href="#preferences" ><span style=" text-decoration: underline; color:#007af4;" >buradan</span ></a > sertifikanızı içe aktarın. </p> <p> Çevrimiçi yardım için <a href="https://dbhub.io/about" ><span style=" text-decoration: underline; color:#007af4;" >burayı</span ></a > ziyaret edin. </p> </body> </html> - - - - &User - - - - - &Database - &Veritabanı - - - - Back - Geri - - - - Select an identity to connect - - - - - Public - - - - - This downloads a database from a remote server for local editing. -Please enter the URL to clone from. You can generate this URL by -clicking the 'Clone Database in DB4S' button on the web page -of the database. - - - - - Invalid URL: The host name does not match the host name of the current identity. - - - - - Invalid URL: No branch name specified. - - - - - Invalid URL: No commit ID specified. - - - - - You have modified the local clone of the database. Fetching this commit overrides these local changes. -Are you sure you want to proceed? - - - - - The database has unsaved changes. Are you sure you want to push it before saving? - - - - - The database you are trying to delete is currently opened. Please close it before deleting. - - - - - This deletes the local version of this database with all the changes you have not committed yet. Are you sure you want to delete this database? - - - - - RemoteLocalFilesModel - - - Name - İsim - - - - Branch - Branch - - - - Last modified - Son değiştirilme - - - - Size - Boyut + + Size + Boyut @@ -7808,26 +6402,26 @@ Are you sure you want to proceed? Kimlik doğrulaması için lütfen istemci sertifikasının parolasını girin. - + Cancel İptal - + Uploading remote database to %1 Uzak veritabanı karşıya yükleniyor %1 - + Downloading remote database from %1 Uzaktaki sunucu indiriliyor: %1 - + Error: Cannot open the file for sending. Hata: Dosya gönderim için açılamadı. @@ -8561,31 +7155,31 @@ Bu işlevin kullanımına Tercihler'den izin verilmelidir. yükleniyor... - + References %1(%2) Hold %3Shift and click to jump there Referanslar %1(%2) Buraya atlamak için %3Shift'e basılı tutun ve tıklayın - + Error changing data: %1 Veri değiştirme hatası: %1 - + retrieving list of columns sütunların listesi alınıyor - + Fetching data... Veri alınıyor... - - + + Cancel İptal @@ -8922,12 +7516,12 @@ Buraya atlamak için %3Shift'e basılı tutun ve tıklayın - <html><head/><body><p>This button creates a new record in the database. Hold the mouse button to open a pop-up menu of different options:</p><ul><li><span style=" font-weight:600;">New Record</span>: insert a new record with default values in the database.</li><li><span style=" font-weight:600;">Insert Values...</span>: open a dialog for entering values before they are inserted in the database. This allows to enter values acomplishing the different constraints. This dialog is also open if the <span style=" font-weight:600;">New Record</span> option fails due to these constraints.</li></ul></body></html> + <html><head/><body><p>This button creates a new record in the database. Hold the mouse button to open a pop-up menu of different options:</p><ul><li><span style=" font-weight:600;">New Record</span>: insert a new record with default values in the database.</li><li><span style=" font-weight:600;">Insert Values...</span>: open a dialog for entering values before they are inserted in the database. This allows to enter values accomplishing the different constraints. This dialog is also open if the <span style=" font-weight:600;">New Record</span> option fails due to these constraints.</li></ul></body></html> <html> <head /> <body> <p> Bu düğme veritabanında yeni bir kayıt oluşturur. Farklı seçeneklerin olduğu açılır menüsüyü görüntülemek için fare düğmesini basılı tutun: </p> <ul> <li> <span style=" font-weight:600;">Yeni Kayıt</span>: veritabanına varsayılan değerleri olan yeni bir kayıt ekler. </li> <li> <span style=" font-weight:600;">Değerler Ekleyin...</span>: veritabanına eklenmeden önce değerleri girmek için bir iletişim kutusu açın. Bu, farklı kısıtlamaları karşılayan değerlerin girilmesine izin verir. Bu iletişim kutusu, bu kısıtlamalar nedeniyle <span style=" font-weight:600;">Yeni Kayıt</span> seçeneği başarısız olursa da açılır. </li> </ul> </body> </html> - + Delete Record Kaydı Sil @@ -9004,7 +7598,7 @@ Buraya atlamak için %3Shift'e basılı tutun ve tıklayın - <html><head/><body><p>This popup menu provides the following options applying to the currently browsed and filtered table:</p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Export to CSV: this option exports the data of the browsed table as currently displayed (after filters, display formats and order column) to a CSV file.</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Save as view: this option saves the current setting of the browsed table (filters, display formats and order column) as an SQL view that you can later browse or use in SQL statements.</li></ul></body></html> + <html><head/><body><p>This pop-up menu provides the following options applying to the currently browsed and filtered table:</p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Export to CSV: this option exports the data of the browsed table as currently displayed (after filters, display formats and order column) to a CSV file.</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Save as view: this option saves the current setting of the browsed table (filters, display formats and order column) as an SQL view that you can later browse or use in SQL statements.</li></ul></body></html> <html> <head /> <body> <p> Bu açılır menü, o anda görüntülenen ve filtrelenen tablo için geçerli olan aşağıdaki seçenekleri sunar: </p> <ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;" > <li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;" > CSV olarak Dışa Aktar: Bu seçenek, görüntülenen tablonun verilerini şu anda görüntülendiği şekliyle (filtrelerden, görüntüleme biçimlerinden ve sipariş sütunun sıralamasına kadar) bir CSV dosyasına aktarır. </li> <li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;" > Görünüm olarak kaydet: Bu seçenek, göz atılan tablonun geçerli ayarlarını (filtreler, görüntü formatları ve sipariş sütun sıralamasına kadar) daha sonra göz atabileceğiniz veya SQL ifadelerinde kullanabileceğiniz bir SQL görünümü olarak kaydeder. </li> </ul> </body> </html> @@ -9029,7 +7623,7 @@ Buraya atlamak için %3Shift'e basılı tutun ve tıklayın - + Set encoding Kodlama seç @@ -9292,96 +7886,96 @@ Buraya atlamak için %3Shift'e basılı tutun ve tıklayın . Toplam: %1; Ortalama: %2; Min: %3; Maks: %4 - + Conditional formats for "%1" "%1" için koşullu biçimlendirme - + determining row count... satır sayısı belirleniyor... - + %L1 - %L2 of >= %L3 - + %L1 - %L2 of %L3 - + (clipped at %L1 rows) - + Please enter a pseudo-primary key in order to enable editing on this view. This should be the name of a unique column in the view. Bu görünümde düzenlemeyi etkinleştirmek için lütfen sözde birincil anahtar girin. Bu, görünümdeki benzersiz bir sütunun adı olmalıdır. - + Delete Records Kayıtları Sil - + Duplicate records Yinelenen kayıtlar - + Duplicate record Yinelenen kayıt - + Ctrl+" - + Adjust rows to contents Satırları içeriklere göre ayarlama - + Error deleting record: %1 Kayıt silme hatası: %1 - + Please select a record first Lütfen öncelikle kaydı seçiniz - + Please choose a new encoding for all tables. Lütfen tüm tablolar için yeni bir kodlama seçin. - + Please choose a new encoding for this table. Lütfen bu tablo için yeni bir kodlama seçin. - + %1 Leave the field empty for using the database encoding. %1 Veritabanı kodlamasını kullanmak için alanı boş bırakın. - + This encoding is either not valid or not supported. Bu kodlama geçerli değil veya desteklenmiyor. - + %1 replacement(s) made. %1 değişimi yapıldı. @@ -9409,24 +8003,6 @@ Veritabanı kodlamasını kullanmak için alanı boş bırakın. - - UndoStack - - - Inserting %1 bytes - - - - - Delete %1 chars - - - - - Overwrite %1 chars - - - VacuumDialog diff --git a/src/translations/sqlb_uk_UA.ts b/src/translations/sqlb_uk_UA.ts index 20eaab30b..482a07e36 100644 --- a/src/translations/sqlb_uk_UA.ts +++ b/src/translations/sqlb_uk_UA.ts @@ -15,7 +15,7 @@ - <html><head/><body><p>DB Browser for SQLite is an open source, freeware visual tool used to create, design and edit SQLite database files.</p><p>It is bi-licensed under the Mozilla Public License Version 2, as well as the GNU General Public License Version 3 or later. You can modify or redistribute it under the conditions of these licenses.</p><p>See <a href="https://www.gnu.org/licenses/gpl.html"><span style=" text-decoration: underline; color:#0000ff;">http://www.gnu.org/licenses/gpl.html</span></a> and <a href="https://www.mozilla.org/MPL/2.0/index.txt"><span style=" text-decoration: underline; color:#0000ff;">https://www.mozilla.org/MPL/2.0/index.txt</span></a> for details.</p><p>For more information on this program please visit our website at: <a href="https://sqlitebrowser.org"><span style=" text-decoration: underline; color:#0000ff;">http://sqlitebrowser.org</span></a></p><p><span style=" font-size:small;">This software uses the GPL/LGPL Qt Toolkit from </span><a href="http://qt-project.org/"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://qt-project.org/</span></a><span style=" font-size:small;"><br/>See </span><a href="https://doc.qt.io/qt-5/licensing.html"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://qt-project.org/doc/qt-5/licensing.html</span></a><span style=" font-size:small;"> for licensing terms and information.</span></p><p><span style=" font-size:8pt;">We use the nalgeon/sqlean library for SQLite extensions support.<br/>This library is licensed under the MIT license, see the following for more information:<br/></span><a href="https://github.com/nalgeon/sqlean"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">https://github.com/nalgeon/sqlean</span></a></p><p><span style=" font-size:small;">It also uses the Pastel SVG icon set by Michael Buckley under a Creative Commons Attribution Share Alike 4.0 license.<br/>See </span><a href="https://codefisher.org/pastel-svg/"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://codefisher.org/pastel-svg/</span></a><span style=" font-size:small;"> for details.</span></p></body></html> + <html><head/><body><p>DB Browser for SQLite is an open source, freeware visual tool used to create, design and edit SQLite database files.</p><p>It is bi-licensed under the Mozilla Public License Version 2, as well as the GNU General Public License Version 3 or later. You can modify or redistribute it under the conditions of these licenses.</p><p>See <a href="https://www.gnu.org/licenses/gpl.html"><span style=" text-decoration: underline; color:#0000ff;">https://www.gnu.org/licenses/gpl.html</span></a> and <a href="https://www.mozilla.org/MPL/2.0/index.txt"><span style=" text-decoration: underline; color:#0000ff;">https://www.mozilla.org/MPL/2.0/index.txt</span></a> for details.</p><p>For more information on this program please visit our website at: <a href="https://sqlitebrowser.org"><span style=" text-decoration: underline; color:#0000ff;">https://sqlitebrowser.org</span></a></p><p><span style=" font-size:small;">This software uses the GPL/LGPL Qt Toolkit from </span><a href="https://qt-project.org/"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://qt-project.org/</span></a><span style=" font-size:small;"><br/>See </span><a href="https://doc.qt.io/qt-5/licensing.html"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://doc.qt.io/qt-5/licensing.html</span></a><span style=" font-size:small;"> for licensing terms and information.</span></p><p><span style=" font-size:8pt;">We use the nalgeon/sqlean library for SQLite extensions support.<br/>This library is licensed under the MIT license, see the following for more information:<br/></span><a href="https://github.com/nalgeon/sqlean"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">https://github.com/nalgeon/sqlean</span></a></p><p><span style=" font-size:small;">It also uses the Pastel SVG icon set by Michael Buckley under a Creative Commons Attribution Share Alike 4.0 license.<br/>See </span><a href="https://codefisher.org/pastel-svg/"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://codefisher.org/pastel-svg/</span></a><span style=" font-size:small;"> for details.</span></p></body></html> @@ -272,36 +272,36 @@ - Invalid option/non-existant file: %1 + Invalid option/non-existent file: %1 Невірна опція/файл не існує: %1 - + SQLite Version Версія SQLite - + SQLCipher Version %1 (based on SQLite %2) - + DB Browser for SQLite Version %1. - + Last commit hash when built: %1 - + Built for %1, running on %2 - + Qt Version %1 @@ -385,7 +385,7 @@ Необроблений ключ - + Please set a key to encrypt the database. Note that if you change any of the other, optional, settings you'll need to re-enter them as well every time you open the database file. Leave the password fields empty to disable the encryption. @@ -396,7 +396,7 @@ The encryption process might take some time and you should have a backup copy of Процес може тривати деякий час. Рекомендується створити резервну копію перед продовженням! Всі незбережені зміни збережуться автоматично. - + Please enter the key used to encrypt the database. If any of the other settings were altered for this database file you need to provide this information as well. Будь ласка, введіть ключ для шифрування бази даних. @@ -421,129 +421,129 @@ If any of the other settings were altered for this database file you need to pro Оберіть формат показу для колонки '%1'. Формат застосується до кожного її значенням. - + Default За замовчуванням - + Decimal number Десяткове число - + Exponent notation Експоненціальний запис - + Hex blob Бінарні дані - + Hex number Шістнадцяткове число - + Apple NSDate to date Дата Apple NSDate - + Java epoch (milliseconds) to date - + .NET DateTime.Ticks to date - + Julian day to date Дата за Юліанським календарем - + Unix epoch to local time - + WebKit / Chromium epoch to date - + WebKit / Chromium epoch to local time - + Date as dd/mm/yyyy - + Lower case Нижній регістр - + Binary GUID to text - + SpatiaLite Geometry to SVG - + Custom display format must contain a function call applied to %1 - + Error in custom display format. Message from database engine: %1 - + Custom display format must return only one column but it returned %1. - + Octal number Вісімкове число - + Round number Округлене число - + Unix epoch to date Unix-час - + Upper case Верхній регістр - + Windows DATE to date Windows дата - + Custom Мій формат @@ -670,208 +670,208 @@ If any of the other settings were altered for this database file you need to pro DBBrowserDB - + Please specify the database name under which you want to access the attached database Будь ласка, вкажіть ім'я бази даних, під яким Ви хочете отримати доступ до під'єднаних баз даних - + Invalid file format Неправильний формат файлу - + Do you really want to close this temporary database? All data will be lost. - + Do you want to save the changes made to the database file %1? Зберегти зроблені зміни у файлі бази даних %1? - + Database didn't close correctly, probably still busy - + Cannot open destination file: '%1' - - + + Cannot backup to file: '%1'. Message: %2 - + The database is currently busy: - + Do you want to abort that other operation? - + Exporting database to SQL file... Експорт бази даних у файл SQL... - - + + Cancel Скасувати - - + + No database file opened - + Executing SQL... Виконати код SQL... - + Action cancelled. Дію скасовано. - - + + Error in statement #%1: %2. Aborting execution%3. Помилка в операторі #%1: %2. Виконання скасовано%3. - - + + and rolling back і відкочено - + didn't receive any output from %1 - + could not execute command: %1 - + Cannot delete this object - + Cannot set data on this object Не вдається встановити дані в цей об'єкт - - + + A table with the name '%1' already exists in schema '%2'. - + No table with name '%1' exists in schema '%2'. - - + + Cannot find column %1. - + Creating savepoint failed. DB says: %1 - + Renaming the column failed. DB says: %1 - - + + Releasing savepoint failed. DB says: %1 - + Creating new table failed. DB says: %1 - + Copying data to new table failed. DB says: %1 - + Deleting old table failed. DB says: %1 - + Error renaming table '%1' to '%2'. Message from database engine: %3 - + could not get list of db objects: %1 - + Restoring some of the objects associated with this table failed. This is most likely because some column names changed. Here's the SQL statement which you might want to fix and execute manually: Не вдалося скасувати видалення деяких об'єктів, асоційованих із цією таблицею. Найімовірніша причина цього - зміна імен деяких стовпців таблиці. Ось SQL оператор, який потрібно виправити і виконати вручну: - + could not get list of databases: %1 - + Error loading extension: %1 Помилка завантаження розширення: %1 - + Error loading built-in extension: %1 - + could not get column information неможливо отримати інформацію про стовпець - + Error setting pragma %1 to %2: %3 Помилка встановлення Прагми %1 в %2: %3 - + File not found. Файл не знайдено. @@ -1933,7 +1933,7 @@ All data currently stored in this field will be lost. ExtendedScintilla - + Ctrl+H @@ -1944,22 +1944,22 @@ All data currently stored in this field will be lost. - + Ctrl+P - + Find... - + Find and Replace... - + Print... @@ -1967,129 +1967,129 @@ All data currently stored in this field will be lost. ExtendedTableWidget - + Use as Exact Filter - + Containing - + Not containing - + Not equal to - + Greater than - + Less than - + Greater or equal - + Less or equal - + Between this and... - + Regular expression - + Edit Conditional Formats... - + Set to NULL Встановити в NULL - + Cut - + Copy Копіювати - + Copy with Headers - + Copy as SQL - + Paste Вставити - + Print... - + Use in Filter Expression - + Alt+Del - + Ctrl+Shift+C - + Ctrl+Alt+C - + The content of the clipboard is bigger than the range selected. Do you want to insert it anyway? Вміст буфера обміну більше ніж обраний діапазон. Все одно вставити? - + <p>Not all data has been loaded. <b>Do you want to load all data before selecting all the rows?</b><p><p>Answering <b>No</b> means that no more data will be loaded and the selection will not be performed.<br/>Answering <b>Yes</b> might take some time while the data is loaded but the selection will be complete.</p>Warning: Loading all the data might require a great amount of memory for big tables. - + Cannot set selection to NULL. Column %1 has a NOT NULL constraint. @@ -2141,12 +2141,12 @@ Do you want to insert it anyway? FilterLineEdit - + Filter Фільтр - + These input fields allow you to perform quick filters in the currently selected table. By default, the rows containing the input text are filtered out. The following operators are also supported: @@ -2162,92 +2162,92 @@ x~y Range: values between x and y - + Clear All Conditional Formats - + Use for Conditional Format - + Edit Conditional Formats... - + Set Filter Expression - + What's This? - + Is NULL - + Is not NULL - + Is empty - + Is not empty - + Not containing... - + Equal to... - + Not equal to... - + Greater than... - + Less than... - + Greater or equal... - + Less or equal... - + In range... - + Regular expression... @@ -2470,7 +2470,7 @@ x~y Range: values between x and y - + Tab Табуляція @@ -2613,7 +2613,7 @@ x~y Range: values between x and y - + Deselect All Скасувати вибір @@ -2623,52 +2623,52 @@ x~y Range: values between x and y Співпадіння - + Select All Обрати все - + There is already a table named '%1' and an import into an existing table is only possible if the number of columns match. - + There is already a table named '%1'. Do you want to import the data into it? - + Creating restore point failed: %1 Помилка створення точки відновлення: %1 - + Creating the table failed: %1 Помилка створення таблиці: %1 - + importing CSV - + Could not prepare INSERT statement: %1 - + Unexpected end of file. Please make sure that you have configured the correct quote characters and the file is not malformed. - + Importing the file '%1' took %2ms. Of this %3ms were spent in the row function. - + Inserting row failed: %1 Помилка вставки рядка: %1 @@ -2681,17 +2681,17 @@ x~y Range: values between x and y Оглядач для SQLite - + toolBar1 панельІнструментів1 - + &Remote &Віддалений - + &File &Файл @@ -2717,782 +2717,782 @@ x~y Range: values between x and y - + &Import &Імпорт - + &Export &Експорт - + &Edit &Редагування - + &View &Вид - + &Help &Довідка - + Too&ls - + DB Toolbar Панель інструментів БД - + Edit Database &Cell Редагування &комірки БД - + Error Log - + This button clears the contents of the SQL logs - + This panel lets you examine a log of all SQL commands issued by the application or by yourself - + DB Sche&ma Схе&ма БД - - + + Execute current line Виконати поточний рядок - + This button executes the SQL statement present in the current editor line - + Shift+F5 - + Sa&ve Project &Зберегти проект - + Opens the SQLCipher FAQ in a browser window Відкрити SQLCiphier ЧаПи в браузері - + Export one or more table(s) to a JSON file Експортувати таблиці в JSON файл - - + + Save SQL file as Зберегти файл SQL як - + This button saves the content of the current SQL editor tab to a file - + &Browse Table Пе&регляд таблиці - + User Користувачем - + Application Додатком - + &Clear О&чистити - + &New Database... &Нова база даних... - - + + Create a new database file Створити новий файл бази даних - + This option is used to create a new database file. Ця опція використовується щоб створити новий файл бази даних. - + Ctrl+N - - + + &Open Database... &Відкрити базу даних... - - - - - + + + + + Open an existing database file Відкрити існуючий файл бази даних - - - + + + This option is used to open an existing database file. Ця опція використовується, щоб відкрити існуючий файл бази даних. - + Ctrl+O - + &Close Database &Закрити базу даних - + This button closes the connection to the currently open database file - - + + Ctrl+W - - + + Revert database to last saved state Повернути базу даних до останнього збереженого стану - + This option is used to revert the current database file to its last saved state. All changes made since the last save operation are lost. Ця опція використовується, щоб повернути поточний файл бази даних до його останнього збереженого стану. Всі зміни, зроблені з останньої операції збереження, буде втрачено. - - + + Write changes to the database file Записати зміни у файл бази даних - + This option is used to save changes to the database file. Ця опція використовується, щоб зберегти зміни у файлі бази даних. - + Ctrl+S - + Compact &Database... - + Compact the database file, removing space wasted by deleted records Ущільнити базу даних, видаливши простір, зайнятий видаленими записами - - + + Compact the database file, removing space wasted by deleted records. Ущільнити базу даних, видаливши простір, зайнятий видаленими записами. - + E&xit &Вихід - + Ctrl+Q - + Import data from an .sql dump text file into a new or existing database. Імпортувати дані з текстового файлу .sql в нову або існуючу базу даних. - + This option lets you import data from an .sql dump text file into a new or existing database. SQL dump files can be created on most database engines, including MySQL and PostgreSQL. Ця опція дає змогу імпортувати дані з текстового файлу .sql у нову або існуючу базу даних. Файл SQL можна створити на більшості двигунів баз даних, включно з MySQL і PostgreSQL. - + Open a wizard that lets you import data from a comma separated text file into a database table. Відкрити майстер, який дає змогу імпортувати дані з файлу CSV у таблицю бази даних. - + Open a wizard that lets you import data from a comma separated text file into a database table. CSV files can be created on most database and spreadsheet applications. Відкрити майстер, який дає змогу імпортувати дані з файлу CSV у таблицю бази даних. Файли CSV можна створити в більшості програм баз даних і електронних таблиць. - + Export a database to a .sql dump text file. Експортувати базу даних у текстовий файл .sql. - + This option lets you export a database to a .sql dump text file. SQL dump files contain all data necessary to recreate the database on most database engines, including MySQL and PostgreSQL. Ця опція дає змогу експортувати базу даних у текстовий файл .sql. Файли SQL містять всі дані, необхідні для створення бази даних у більшості движків баз даних, включно з MySQL і PostgreSQL. - + &Table(s) as CSV file... Таблиці у файл CSV... - + Export a database table as a comma separated text file. Експортувати таблицю бази даних як CSV текстовий файл. - + Export a database table as a comma separated text file, ready to be imported into other database or spreadsheet applications. Експортувати таблицю бази даних як CSV текстовий файл, готовий для імпортування в інші бази даних або програми електронних таблиць. - + Open the Create Table wizard, where it is possible to define the name and fields for a new table in the database Відкрити майстер створення таблиць, де можливо визначити ім'я і поля для нової таблиці в базі даних - + Open the Delete Table wizard, where you can select a database table to be dropped. Відкрити майстер видалення таблиці, де можна вибрати таблицю бази даних для видалення. - + Open the Create Index wizard, where it is possible to define a new index on an existing database table. Відкрити майстер створення Індексу, в якому можна визначити новий індекс для існуючої таблиці бази даних. - + &Preferences... &Налаштування... - - + + Open the preferences window. Відкрити вікно налаштувань. - + &DB Toolbar &Панель інструментів БД - + Shows or hides the Database toolbar. Показати або приховати панель інструментів БД. - + Shift+F1 - + New &tab - + Execute all/selected SQL - + This button executes the currently selected SQL statements. If no text is selected, all SQL statements are executed. - + Open SQL file(s) - + This button opens files containing SQL statements and loads them in new editor tabs - + Ctrl+Shift+T - + Execute line - + &Wiki - + F1 - + Bug &Report... - + Feature Re&quest... - + Web&site - + &Donate on Patreon... - + &Save Project - + Open &Project - + &Attach Database... - - + + Add another database file to the current database connection - + This button lets you add another database file to the current database connection - + &Set Encryption... - + SQLCipher &FAQ - + Table(&s) to JSON... - + Open Data&base Read Only... - + Ctrl+Shift+O - + Save results - + Save the results view - + This button lets you save the results of the last executed query - - + + Find text in SQL editor - + Find - + This button opens the search bar of the editor - + Ctrl+F - - + + Find or replace text in SQL editor - + Find or replace - + This button opens the find/replace dialog for the current editor tab - + Ctrl+H - + Export to &CSV Експортувати в &CSV - + Export to &JSON - + Save as &view Зберегти як &вигляд - + Save as view Зберегти як вигляд - + &Open Database - + Drag && Drop SELECT Query - - + + When dragging fields from the same table or a single table, drop a SELECT query into the editor - + Browse Table - + Close Pro&ject - - + + Close project and database files and return to the initial state - - + + Ctrl+Shift+W - + Table from CSV data in Clipboard... - + This treats the current clipboard contents as a CSV file and opens the same import wizard that is used for importing CSV data from a file. - + Show &Row Counts - + This shows the number of rows for each table and view in the database. - + Save Database &As... - + Save the current database as a different file - + Refresh Оновити - + Reload the database structure - + Ctrl+Shift+F4 - - + + Detach Database - - + + Detach database file attached to the current database connection - + Shows or hides the Project toolbar. - + This button lets you save all the settings associated to the open DB to a DB Browser for SQLite project file - + This button lets you open a DB Browser for SQLite project file - + Extra DB Toolbar - + New In-&Memory Database - + Drag && Drop Qualified Names - - + + Use qualified names (e.g. "Table"."Field") when dragging the objects and dropping them into the editor - + Drag && Drop Enquoted Names - - + + Use escaped identifiers (e.g. "Table1") when dragging the objects and dropping them into the editor - + &Integrity Check - + Runs the integrity_check pragma over the opened database and returns the results in the Execute SQL tab. This pragma does an integrity check of the entire database. - + &Foreign-Key Check - + Runs the foreign_key_check pragma over the opened database and returns the results in the Execute SQL tab - + &Quick Integrity Check - + Run a quick integrity check over the open DB - + Runs the quick_check pragma over the opened database and returns the results in the Execute SQL tab. This command does most of the checking of PRAGMA integrity_check but runs much faster. - + &Optimize - + Attempt to optimize the database - + Runs the optimize pragma over the opened database. This pragma might perform optimizations that will improve the performance of future queries. - - + + Print - + Print text from current SQL editor tab - + Open a dialog for printing the text in the current SQL editor tab - + Print the structure of the opened database - + Open a dialog for printing the structure of the opened database - + &Save Project As... - - - + + + Save the project in a file selected in a dialog - + Save A&ll - - - + + + Save DB file, project file and opened SQL files - + Ctrl+Shift+S - + &Recently opened &Недавно відкриті - + Open an existing database file in read only mode Відкрити існуючий файл БД у режимі тільки для читання - + Ctrl+T @@ -3504,731 +3504,890 @@ You can drag SQL statements from an object row and drop them into other applicat - + Un/comment block of SQL code - + Un/comment block - + Comment or uncomment current line or selected block of code - + Comment or uncomment the selected lines or the current line, when there is no selection. All the block is toggled according to the first line. - + Ctrl+/ - + Stop SQL execution - + Stop execution - + Stop the currently running SQL script - + Warning: this pragma is not readable and this value has been inferred. Writing the pragma might overwrite a redefined LIKE provided by an SQLite extension. - - - E&xecute SQL - This has to be equal to the tab title in all the main tabs + + Temp Store - - &Recent Files + + Secure Delete - - SQL &Log - &Журнал SQL - - - - Show S&QL submitted by - По&казати SQL, який виконано - - - - &Plot - &Графік + + Case Sensitive Like + - - This is the structure of the opened database. -You can drag multiple object names from the Name column and drop them into the SQL editor and you can adjust the properties of the dropped names using the context menu. This would help you in composing SQL statements. -You can drag SQL statements from the Schema column and drop them into the SQL editor or into other applications. - + + Journal Mode - - - Project Toolbar + + Journal Size Limit - - Extra DB toolbar + + Recursive Triggers - - - - Close the current database file + + Page Size - - &New Database + + Foreign Keys - - - Ctrl+F4 - + + Auto Vacuum + - - &Revert Changes - &Скасувати зміни + + Max Page Count + - - &Undo + + Checkpoint Full FSYNC - - - Undo last change to the database + + + Off - - This action undoes the last change performed to the database in the Database Browser or in Execute SQL. Redoing is not possible. + + + Normal - - &Write Changes - &Записати зміни + + + Full + - - &Database from SQL file... - &База даних з файлу SQL... + + Default + За замовчуванням - - &Table from CSV file... - &Таблиці з файлу CSV... + + File + Файл - - &Database to SQL file... - Базу &даних в файл SQL... + + + Memory + - - &Create Table... - &Створити таблицю... + + Delete + - - &Delete Table... - &Видалити таблицю... + + Truncate + - - &Modify Table... - &Змінити таблицю... + + Persist + - - Open the Modify Table wizard, where it is possible to rename an existing table. It is also possible to add or delete fields from a table, as well as modify field names and types. + + WAL - - Create &Index... - Створити і&ндекс... + + Exclusive + - - W&hat's This? - Що &це таке? + + Automatic Index + - - &About + + Ignore Check Constraints - - This button opens a new tab for the SQL editor + + Full FSYNC - - &Execute SQL - Ви&конати код SQL + + WAL Auto Checkpoint + - - - - Save SQL file - Зберегти файл SQL + + User Version + - - &Load Extension... + + Synchronous - - Ctrl+E - + + None + Ні - - Export as CSV file - Експортувати у файл CSV + + Incremental + - - Export table as comma separated values file - Експортувати таблицю як CSV файл + + Locking Mode + - - - Save the current session to a file - Зберегти поточний стан у файл + + + E&xecute SQL + This has to be equal to the tab title in all the main tabs + - - Open &Project... + + &Recent Files - - - Load a working session from a file - Завантажити робочий стан із файлу + + SQL &Log + &Журнал SQL - - Copy Create statement + + Show S&QL submitted by + По&казати SQL, який виконано + + + + &Plot + &Графік + + + + This is the structure of the opened database. +You can drag multiple object names from the Name column and drop them into the SQL editor and you can adjust the properties of the dropped names using the context menu. This would help you in composing SQL statements. +You can drag SQL statements from the Schema column and drop them into the SQL editor or into other applications. + + + + + + + Project Toolbar + + + + + Extra DB toolbar + + + + + + + Close the current database file + + + + + &New Database + + + + + + Ctrl+F4 + + + + + &Revert Changes + &Скасувати зміни + + + + &Undo + + + + + + Undo last change to the database + + + + + This action undoes the last change performed to the database in the Database Browser or in Execute SQL. Redoing is not possible. + + + + + &Write Changes + &Записати зміни + + + + &Database from SQL file... + &База даних з файлу SQL... + + + + &Table from CSV file... + &Таблиці з файлу CSV... + + + + &Database to SQL file... + Базу &даних в файл SQL... + + + + &Create Table... + &Створити таблицю... + + + + &Delete Table... + &Видалити таблицю... + + + + &Modify Table... + &Змінити таблицю... + + + + Open the Modify Table wizard, where it is possible to rename an existing table. It is also possible to add or delete fields from a table, as well as modify field names and types. + + + + + Create &Index... + Створити і&ндекс... + + + + W&hat's This? + Що &це таке? + + + + &About + + + + + This button opens a new tab for the SQL editor + + + + + &Execute SQL + Ви&конати код SQL + + + + + + Save SQL file + Зберегти файл SQL + + + + &Load Extension... + + + + + Ctrl+E + + + + + Export as CSV file + Експортувати у файл CSV + + + + Export table as comma separated values file + Експортувати таблицю як CSV файл + + + + + Save the current session to a file + Зберегти поточний стан у файл + + + + Open &Project... + + + + + + Load a working session from a file + Завантажити робочий стан із файлу + + + + Copy Create statement Копіювати CREATE вираз - + Copy the CREATE statement of the item to the clipboard Копіювати CREATE вираз елемента в буффер обміну - + Ctrl+Return - + Ctrl+L - - + + Ctrl+P - + Ctrl+D - + Ctrl+I - + Encrypted Зашифрований - + Read only Тільки для читання - + Database file is read only. Editing the database is disabled. База даних тільки для читання. Редагування заборонене. - + Database encoding Кодування бази даних - + Database is encrypted using SQLCipher База даних зашифрована з використанням SQLCipher - - + + Choose a database file Вибрати файл бази даних - + Could not open database file. Reason: %1 Неможливо відкрити файл бази даних. Причина: %1 - - - + + + Choose a filename to save under Вибрати ім'я, під яким зберегти дані - + A new DB Browser for SQLite version is available (%1.%2.%3).<br/><br/>Please download at <a href='%4'>%4</a>. Вийшла нова версія оглядача для SQLite (%1.%2.%3).<br/><br/>Вона доступна для скачування за посиланням <a href='%4'>%4</a>. - + DB Browser for SQLite project file (*.sqbpro) Файл проекту оглядача для SQLite (*.sqbpro) - + Are you sure you want to undo all changes made to the database file '%1' since the last save? Скасувати всі зміни, зроблені у файлі бази даних '%1' після останнього збереження? - + Choose a file to import Оберіть файл для імпорту - + Do you want to create a new database file to hold the imported data? If you answer no we will attempt to import the data in the SQL file to the current database. Створити новий файл бази даних для збереження імпортованих даних? Якщо відповідь Ні, то здійсниться спроба імпортувати дані файлу SQL в поточну базу даних. - + File %1 already exists. Please choose a different name. Файл %1 вже існує. Оберіть інше ім'я. - + Error importing data: %1 Помилка імпортування даних: %1 - + Import completed. Імпорт завершено. - + Delete View Видалити перегляд - + Delete Trigger Видалити тригер - + Delete Index Видалити індекс - + Reset Window Layout - + Automatically load the last opened DB file at startup - - The database is currenctly busy. + + The database is currently busy. - + Click here to interrupt the currently running query. - + Ctrl+Alt+W - + In-Memory database - + Choose a database file to save under - + Error while saving the database to the new file. - + Do you want to save the changes made to the project file '%1'? - + Are you sure you want to delete the table '%1'? All data associated with the table will be lost. - + Are you sure you want to delete the view '%1'? - + Are you sure you want to delete the trigger '%1'? - + Are you sure you want to delete the index '%1'? - + Error: could not delete the table. - + Error: could not delete the view. - + Error: could not delete the trigger. - + Error: could not delete the index. - + Message from database engine: %1 - + Editing the table requires to save all pending changes now. Are you sure you want to save the database? - + Error checking foreign keys after table modification. The changes will be reverted. - + This table did not pass a foreign-key check.<br/>You should run 'Tools | Foreign-Key Check' and fix the reported issues. - + Edit View %1 - + Edit Trigger %1 - + You are already executing SQL statements. Do you want to stop them in order to execute the current statements instead? Note that this might leave the database in an inconsistent state. - + -- EXECUTING SELECTION IN '%1' -- - + -- EXECUTING LINE IN '%1' -- - + -- EXECUTING ALL IN '%1' -- - - + + At line %1: - + Result: %1 - + Result: %2 - + Execution finished with errors. - + Execution finished without errors. - + Opened '%1' in read-only mode from recent file list - + Opened '%1' from recent file list - + &%1 %2%3 &%1 %2%3 - + (read only) - + Open Database or Project - + Attach Database... - + Import CSV file(s)... - + Do you want to save the changes made to SQL tabs in the project file '%1'? - + The statements in the tab '%1' are still executing. Closing the tab will stop the execution. This might leave the database in an inconsistent state. Are you sure you want to close the tab? - + DB file '%1' could not be opened - + This project file is using an old file format because it was created using DB Browser for SQLite version 3.10 or lower. Loading this file format is no longer fully supported. If you want to load it completely, please use DB Browser for SQLite version 3.12 to convert it to the new file format. - + Table '%1' not found; settings ignored - + -- Reference to file "%1" (not supported by this version) -- - + Project saved to file '%1' - + Yes. Don't ask again - + This action will open a new SQL tab with the following statements for you to edit and run: - + Busy (%1) - + Rename Tab - + Duplicate Tab - + Close Tab - + Opening '%1'... - + There was an error opening '%1'... - + Value is not a valid URL or filename: %1 - + %1 rows returned in %2ms - + Ctrl+Tab - + Ctrl+Shift+Tab - + Clear List - + Window Layout - + Ctrl+Alt+0 - + Simplify Window Layout - - Shift+Alt+0 + + Alt+Shift+0 - + Dock Windows at Bottom - + Dock Windows at Left Side - + Dock Windows at Top - + You are still executing SQL statements. Closing the database now will stop their execution, possibly leaving the database in an inconsistent state. Are you sure you want to close the database? - + Import completed. Some foreign key constraints are violated. Please fix them before saving. - + Select the action to apply to the dropped file(s). <br/>Note: only 'Import' will process more than one file. Note for translation: Although there is no %n in the original, you can use the numerus-form to adjust 'files(s)' and remove the note when n = 1. Including %n in the translation will also work. @@ -4238,38 +4397,38 @@ Are you sure you want to save the database? - + Do you want to save the changes made to SQL tabs in a new project file? - + Do you want to save the changes made to the SQL file %1? - + Could not find resource file: %1 - + Choose a project file to open - + Could not open project file for writing. Reason: %1 - + Collation needed! Proceed? Потрібно виконати зіставлення! Продовжити? - + A table in this database requires a special collation function '%1' that this application can't provide without further knowledge. If you choose to proceed, be aware bad things can happen to your database. Create a backup! @@ -4278,70 +4437,70 @@ Create a backup! Створіть резервну копію! - + creating collation - + Set a new name for the SQL tab. Use the '&&' character to allow using the following character as a keyboard shortcut. - + Please specify the view name Вкажіть ім'я вигляду - + There is already an object with that name. Please choose a different name. Об'єкт із зазначеним ім'ям уже існує. Виберіть інше ім'я. - + View successfully created. Вигляд успішно створений. - + Error creating view: %1 Помилка створення вигляду: %1 - + This action will open a new SQL tab for running: - + Press Help for opening the corresponding SQLite reference page. - - + + Delete Table Видалити таблицю - + Setting PRAGMA values will commit your current transaction. Are you sure? Встановлення значень PRAGMA завершить поточну транзакцію. Встановити значення? - + Setting PRAGMA values or vacuuming will commit your current transaction. Are you sure? - + Choose text files Оберіть текстові файли - + Error while saving the database file. This means that not all changes to the database were saved. You need to resolve the following error first. %1 @@ -4350,63 +4509,63 @@ Are you sure? %1 - + Text files(*.sql *.txt);;All files(*) Текстові файли(*.sql *.txt);;Всі файли(*) - + Modify View Змінити вид - + Modify Trigger Змінити тригер - + Modify Index Змінити індекс - + Modify Table Змінити таблицю - + Select SQL file to open Обрати файл SQL для відкривання - + Select file name Обрати ім'я файлу - + Select extension file Обрати розширення файлу - + Extension successfully loaded. Розширення успішно завантажено. - + Error loading extension: %1 Помилка завантаження розширення: %1 - - + + Don't show again Не показувати наступного разу - + New version available. Доступна нова версія. @@ -4595,101 +4754,106 @@ Select the axes or axes labels to drag and zoom only in that orientation. - + Load all data and redraw plot - - - + + + Row # Рядок # - + Copy Копіювати - + Print... - + + Help + + + + Show legend - + Stacked bars - + Fixed number format - + Date/Time - + Date - + Time - - + + Numeric - + Label - + Invalid - + Load all data and redraw plot. Warning: not all data has been fetched from the table yet due to the partial fetch mechanism. - + Choose an axis color - + Choose a filename to save under Вибрати ім'я, під яким зберегти дані - + PNG(*.png);;JPG(*.jpg);;PDF(*.pdf);;BMP(*.bmp);;All Files(*) PNG(*.png);;JPG(*.jpg);;PDF(*.pdf);;BMP(*.bmp);;Всі файли(*) - + There are curves in this plot and the selected line style can only be applied to graphs sorted by X. Either sort the table or query by X to remove curves or select one of the styles supported by curves: None or Line. - + Loading all remaining data for this table took %1ms. @@ -5421,1962 +5585,385 @@ Can be set to 0 for disabling completion. Серійний номер - - Your certificates - Ваш сертифікат - - - - File - Файл - - - - Subject Common Name - Звичайне ім'я об'єкта - - - - Issuer CN - Розповсюдник CN - - - - Issuer Common Name - Звичайне ім'я розповсюдника - - - - - Choose a directory - Оберіть каталог - - - - - The language will change after you restart the application. - Мова зміниться після перезапуску програми. - - - - Select extension file - Обираємо файл розширення - - - - Extensions(*.so *.dylib *.dll);;All files(*) - - - - - Import certificate file - Імпортувати файл сертифіката - - - - No certificates found in this file. - Для цього файлу не знайдено сертифікатів. - - - - Are you sure you want do remove this certificate? All certificate data will be deleted from the application settings! - Ви впевнені, що хочете видалити цей сертифікат? Всі дані сертифіката видаляться з налаштувань програми! - - - - Are you sure you want to clear all the saved settings? -All your preferences will be lost and default values will be used. - - - - - Save Settings File - - - - - - Initialization File (*.ini) - - - - - The settings file has been saved in location : - - - - - - Open Settings File - - - - - The settings file was loaded properly. - - - - - The selected settings file is not a normal settings file. -Please check again. - - - - - ProxyDialog - - - Proxy Configuration - - - - - Pro&xy Type - - - - - Host Na&me - - - - - Port - - - - - Authentication Re&quired - - - - - &User Name - - - - - Password - - - - - None - Ні - - - - System settings - - - - - HTTP - - - - - Socks v5 - - - - - QObject - - - Error importing data - Помилка імпортування даних - - - - from record number %1 - з запису номер %1 - - - - . -%1 - . -%1 - - - - Importing CSV file... - - - - - Cancel - Скасувати - - - - All files (*) - - - - - SQLite database files (*.db *.sqlite *.sqlite3 *.db3) - - - - - Left - - - - - Right - - - - - Center - - - - - Justify - - - - - SQLite Database Files (*.db *.sqlite *.sqlite3 *.db3) - - - - - DB Browser for SQLite Project Files (*.sqbpro) - - - - - SQL Files (*.sql) - - - - - All Files (*) - - - - - Text Files (*.txt) - - - - - Comma-Separated Values Files (*.csv) - - - - - Tab-Separated Values Files (*.tsv) - - - - - Delimiter-Separated Values Files (*.dsv) - - - - - Concordance DAT files (*.dat) - - - - - JSON Files (*.json *.js) - - - - - XML Files (*.xml) - - - - - Binary Files (*.bin *.dat) - - - - - SVG Files (*.svg) - - - - - Hex Dump Files (*.dat *.bin) - - - - - Extensions (*.so *.dylib *.dll) - - - - - Initialization File (*.ini) - - - - - QsciCommand - - - Move down one line - - - - - Extend selection down one line - - - - - Extend rectangular selection down one line - - - - - Scroll view down one line - - - - - Move up one line - - - - - Extend selection up one line - - - - - Extend rectangular selection up one line - - - - - Scroll view up one line - - - - - Scroll to start of document - - - - - Scroll to end of document - - - - - Scroll vertically to centre current line - - - - - Move down one paragraph - - - - - Extend selection down one paragraph - - - - - Move up one paragraph - - - - - Extend selection up one paragraph - - - - - Move left one character - - - - - Extend selection left one character - - - - - Extend rectangular selection left one character - - - - - Move right one character - - - - - Extend selection right one character - - - - - Extend rectangular selection right one character - - - - - Move left one word - - - - - Extend selection left one word - - - - - Move right one word - - - - - Extend selection right one word - - - - - Move to end of previous word - - - - - Extend selection to end of previous word - - - - - Move to end of next word - - - - - Extend selection to end of next word - - - - - Move left one word part - - - - - Extend selection left one word part - - - - - Move right one word part - - - - - Extend selection right one word part - - - - - Move to start of document line - - - - - Extend selection to start of document line - - - - - Extend rectangular selection to start of document line - - - - - Move to start of display line - - - - - Extend selection to start of display line - - - - - Move to start of display or document line - - - - - Extend selection to start of display or document line - - - - - Move to first visible character in document line - - - - - Extend selection to first visible character in document line - - - - - Extend rectangular selection to first visible character in document line - - - - - Move to first visible character of display in document line - - - - - Extend selection to first visible character in display or document line - - - - - Move to end of document line - - - - - Extend selection to end of document line - - - - - Extend rectangular selection to end of document line - - - - - Move to end of display line - - - - - Extend selection to end of display line - - - - - Move to end of display or document line - - - - - Extend selection to end of display or document line - - - - - Move to start of document - - - - - Extend selection to start of document - - - - - Move to end of document - - - - - Extend selection to end of document - - - - - Move up one page - - - - - Extend selection up one page - - - - - Extend rectangular selection up one page - - - - - Move down one page - - - - - Extend selection down one page - - - - - Extend rectangular selection down one page - - - - - Stuttered move up one page - - - - - Stuttered extend selection up one page - - - - - Stuttered move down one page - - - - - Stuttered extend selection down one page - - - - - Delete current character - - - - - Delete previous character - - - - - Delete previous character if not at start of line - - - - - Delete word to left - - - - - Delete word to right - - - - - Delete right to end of next word - - - - - Delete line to left - - - - - Delete line to right - - - - - Delete current line - - - - - Cut current line - - - - - Copy current line - - - - - Transpose current and previous lines - - - - - Duplicate the current line - - - - - Select all - - - - - Move selected lines up one line - - - - - Move selected lines down one line - - - - - Duplicate selection - - - - - Convert selection to lower case - - - - - Convert selection to upper case - - - - - Cut selection - - - - - Copy selection - - - - - Paste - Вставити - - - - Toggle insert/overtype - - - - - Insert newline - - - - - Formfeed - - - - - Indent one level - - - - - De-indent one level - - - - - Cancel - Скасувати - - - - Undo last command - - - - - Redo last command - - - - - Zoom in - - - - - Zoom out - - - - - QsciLexerCPP - - - Default - За замовчуванням - - - - Inactive default - - - - - C comment - - - - - Inactive C comment - - - - - C++ comment - - - - - Inactive C++ comment - - - - - JavaDoc style C comment - - - - - Inactive JavaDoc style C comment - - - - - Number - - - - - Inactive number - - - - - Keyword - Ключове слово - - - - Inactive keyword - - - - - Double-quoted string - - - - - Inactive double-quoted string - - - - - Single-quoted string - - - - - Inactive single-quoted string - - - - - IDL UUID - - - - - Inactive IDL UUID - - - - - Pre-processor block - - - - - Inactive pre-processor block - - - - - Operator - - - - - Inactive operator - - - - - Identifier - Ідентифікатор - - - - Inactive identifier - - - - - Unclosed string - - - - - Inactive unclosed string - - - - - C# verbatim string - - - - - Inactive C# verbatim string - - - - - JavaScript regular expression - - - - - Inactive JavaScript regular expression - - - - - JavaDoc style C++ comment - - - - - Inactive JavaDoc style C++ comment - - - - - Secondary keywords and identifiers - - - - - Inactive secondary keywords and identifiers - - - - - JavaDoc keyword - - - - - Inactive JavaDoc keyword - - - - - JavaDoc keyword error - - - - - Inactive JavaDoc keyword error - - - - - Global classes and typedefs - - - - - Inactive global classes and typedefs - - - - - C++ raw string - - - - - Inactive C++ raw string - - - - - Vala triple-quoted verbatim string - - - - - Inactive Vala triple-quoted verbatim string - - - - - Pike hash-quoted string - - - - - Inactive Pike hash-quoted string - - - - - Pre-processor C comment - - - - - Inactive pre-processor C comment - - - - - JavaDoc style pre-processor comment - - - - - Inactive JavaDoc style pre-processor comment - - - - - User-defined literal - - - - - Inactive user-defined literal - - - - - Task marker - - - - - Inactive task marker - - - - - Escape sequence - - - - - Inactive escape sequence - - - - - QsciLexerHTML - - - HTML default - - - - - Tag - - - - - Unknown tag - - - - - Attribute - - - - - Unknown attribute - - - - - HTML number - - - - - HTML double-quoted string - - - - - HTML single-quoted string - - - - - Other text in a tag - - - - - HTML comment - - - - - Entity - - - - - End of a tag - - - - - Start of an XML fragment - - - - - End of an XML fragment - - - - - Script tag - - - - - Start of an ASP fragment with @ - - - - - Start of an ASP fragment - - - - - CDATA - - - - - Start of a PHP fragment - - - - - Unquoted HTML value - - - - - ASP X-Code comment - - - - - SGML default - - - - - SGML command - - - - - First parameter of an SGML command - - - - - SGML double-quoted string - - - - - SGML single-quoted string - - - - - SGML error - - - - - SGML special entity - - - - - SGML comment - - - - - First parameter comment of an SGML command - - - - - SGML block default - - - - - Start of a JavaScript fragment - - - - - JavaScript default - - - - - JavaScript comment - - - - - JavaScript line comment - - - - - JavaDoc style JavaScript comment - - - - - JavaScript number - - - - - JavaScript word - - - - - JavaScript keyword - - - - - JavaScript double-quoted string - - - - - JavaScript single-quoted string - - - - - JavaScript symbol - - - - - JavaScript unclosed string - - - - - JavaScript regular expression - - - - - Start of an ASP JavaScript fragment - - - - - ASP JavaScript default - - - - - ASP JavaScript comment - - - - - ASP JavaScript line comment - - - - - JavaDoc style ASP JavaScript comment - - - - - ASP JavaScript number - - - - - ASP JavaScript word - - - - - ASP JavaScript keyword - - - - - ASP JavaScript double-quoted string - - - - - ASP JavaScript single-quoted string - - - - - ASP JavaScript symbol - - - - - ASP JavaScript unclosed string - - - - - ASP JavaScript regular expression - - - - - Start of a VBScript fragment - - - - - VBScript default - - - - - VBScript comment - - - - - VBScript number - - - - - VBScript keyword - - - - - VBScript string - - - - - VBScript identifier - - - - - VBScript unclosed string - - - - - Start of an ASP VBScript fragment - - - - - ASP VBScript default - - - - - ASP VBScript comment - - - - - ASP VBScript number - - - - - ASP VBScript keyword - - - - - ASP VBScript string - - - - - ASP VBScript identifier - - - - - ASP VBScript unclosed string - - - - - Start of a Python fragment - - - - - Python default - - - - - Python comment - - - - - Python number - - - - - Python double-quoted string - - - - - Python single-quoted string - - - - - Python keyword - - - - - Python triple double-quoted string - - - - - Python triple single-quoted string - - - - - Python class name - - - - - Python function or method name - - - - - Python operator - - - - - Python identifier - - - - - Start of an ASP Python fragment - - - - - ASP Python default - - - - - ASP Python comment - - - - - ASP Python number - - - - - ASP Python double-quoted string - + + Your certificates + Ваш сертифікат - - ASP Python single-quoted string - + + File + Файл - - ASP Python keyword - + + Subject Common Name + Звичайне ім'я об'єкта - - ASP Python triple double-quoted string - + + Issuer CN + Розповсюдник CN - - ASP Python triple single-quoted string - + + Issuer Common Name + Звичайне ім'я розповсюдника - - ASP Python class name - + + + Choose a directory + Оберіть каталог - - ASP Python function or method name - + + + The language will change after you restart the application. + Мова зміниться після перезапуску програми. - - ASP Python operator - + + Select extension file + Обираємо файл розширення - - ASP Python identifier + + Extensions(*.so *.dylib *.dll);;All files(*) - - PHP default - + + Import certificate file + Імпортувати файл сертифіката - - PHP double-quoted string - + + No certificates found in this file. + Для цього файлу не знайдено сертифікатів. - - PHP single-quoted string - + + Are you sure you want do remove this certificate? All certificate data will be deleted from the application settings! + Ви впевнені, що хочете видалити цей сертифікат? Всі дані сертифіката видаляться з налаштувань програми! - - PHP keyword + + Are you sure you want to clear all the saved settings? +All your preferences will be lost and default values will be used. - - PHP number + + Save Settings File - - PHP variable + + + Initialization File (*.ini) - - PHP comment + + The settings file has been saved in location : + - - PHP line comment + + Open Settings File - - PHP double-quoted variable + + The settings file was loaded properly. - - PHP operator + + The selected settings file is not a normal settings file. +Please check again. - QsciLexerJSON - - - Default - За замовчуванням - - - - Number - - - - - String - Рядок - + ProxyDialog - - Unclosed string + + Proxy Configuration - - Property + + Pro&xy Type - - Escape sequence + + Host Na&me - - Line comment + + Port - - Block comment + + Authentication Re&quired - - Operator + + &User Name - - IRI + + Password - - JSON-LD compact IRI - + + None + Ні - - JSON keyword + + System settings - - JSON-LD keyword + + HTTP - - Parsing error + + SOCKS5 - QsciLexerJavaScript + QObject - - Regular expression - + + Error importing data + Помилка імпортування даних - - - QsciLexerPython - - Default - За замовчуванням + + from record number %1 + з запису номер %1 - - Comment - Коментар + + . +%1 + . +%1 - - Number + + Importing CSV file... - - Double-quoted string - + + Cancel + Скасувати - - Single-quoted string + + All files (*) - - Keyword - Ключове слово - - - - Triple single-quoted string + + SQLite database files (*.db *.sqlite *.sqlite3 *.db3) - - Triple double-quoted string + + Left - - Class name + + Right - - Function or method name + + Center - - Operator + + Justify - - Identifier - Ідентифікатор - - - - Comment block + + SQLite Database Files (*.db *.sqlite *.sqlite3 *.db3) - - Unclosed string + + DB Browser for SQLite Project Files (*.sqbpro) - - Highlighted identifier + + SQL Files (*.sql) - - Decorator + + All Files (*) - - Double-quoted f-string + + Text Files (*.txt) - - Single-quoted f-string + + Comma-Separated Values Files (*.csv) - - Triple single-quoted f-string + + Tab-Separated Values Files (*.tsv) - - Triple double-quoted f-string + + Delimiter-Separated Values Files (*.dsv) - - - QsciLexerSQL - - - Default - За замовчуванням - - - - Comment - Коментар - - - Comment line + + Concordance DAT files (*.dat) - - JavaDoc style comment + + JSON Files (*.json *.js) - - Number + + XML Files (*.xml) - - Keyword - Ключове слово - - - - Double-quoted string + + Binary Files (*.bin *.dat) - - Single-quoted string + + SVG Files (*.svg) - - SQL*Plus keyword + + Hex Dump Files (*.dat *.bin) - - SQL*Plus prompt + + Extensions (*.so *.dylib *.dll) - - Operator + + Initialization File (*.ini) + + + QsciCommand - - Identifier - Ідентифікатор + Paste + Вставити - - SQL*Plus comment - + Cancel + Скасувати + + + QsciLexerCPP - - # comment line - + Default + За замовчуванням - - JavaDoc keyword - + Keyword + Ключове слово - - JavaDoc keyword error - + Identifier + Ідентифікатор + + + QsciLexerJSON - - User defined 1 - + Default + За замовчуванням - - User defined 2 - + String + Рядок + + + QsciLexerPython - - User defined 3 - + Default + За замовчуванням - - User defined 4 - + Comment + Коментар - - Quoted identifier - + Keyword + Ключове слово - - Quoted operator - + Identifier + Ідентифікатор - QsciScintilla - - - &Undo - - - - - &Redo - - + QsciLexerSQL - - Cu&t - + Default + За замовчуванням - - &Copy - + Comment + Коментар - - &Paste - + Keyword + Ключове слово - - Delete - + Identifier + Ідентифікатор + + + QsciScintilla - Select All - Обрати все + Обрати все @@ -7767,26 +6354,26 @@ Are you sure you want to proceed? Будь ласка, введіть парольну фразу для цього сертифіката клієнта, для автентифікації - + Cancel Скасувати - + Uploading remote database to %1 Вивантаження віддаленої бази даних до %1. {1?} - + Downloading remote database from %1 Завантаження віддаленої бази даних із %1. {1?} - + Error: Cannot open the file for sending. Помилка: Неможливо відкрити файл для відправлення. @@ -8519,31 +7106,31 @@ Use of this function must be authorized from Preferences. - + References %1(%2) Hold %3Shift and click to jump there - + Error changing data: %1 Помилка зміни даних: %1 - + retrieving list of columns - + Fetching data... - - + + Cancel Скасувати @@ -8874,12 +7461,12 @@ Hold %3Shift and click to jump there - <html><head/><body><p>This button creates a new record in the database. Hold the mouse button to open a pop-up menu of different options:</p><ul><li><span style=" font-weight:600;">New Record</span>: insert a new record with default values in the database.</li><li><span style=" font-weight:600;">Insert Values...</span>: open a dialog for entering values before they are inserted in the database. This allows to enter values acomplishing the different constraints. This dialog is also open if the <span style=" font-weight:600;">New Record</span> option fails due to these constraints.</li></ul></body></html> + <html><head/><body><p>This button creates a new record in the database. Hold the mouse button to open a pop-up menu of different options:</p><ul><li><span style=" font-weight:600;">New Record</span>: insert a new record with default values in the database.</li><li><span style=" font-weight:600;">Insert Values...</span>: open a dialog for entering values before they are inserted in the database. This allows to enter values accomplishing the different constraints. This dialog is also open if the <span style=" font-weight:600;">New Record</span> option fails due to these constraints.</li></ul></body></html> - + Delete Record Видалити запис @@ -8956,7 +7543,7 @@ Hold %3Shift and click to jump there - <html><head/><body><p>This popup menu provides the following options applying to the currently browsed and filtered table:</p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Export to CSV: this option exports the data of the browsed table as currently displayed (after filters, display formats and order column) to a CSV file.</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Save as view: this option saves the current setting of the browsed table (filters, display formats and order column) as an SQL view that you can later browse or use in SQL statements.</li></ul></body></html> + <html><head/><body><p>This pop-up menu provides the following options applying to the currently browsed and filtered table:</p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Export to CSV: this option exports the data of the browsed table as currently displayed (after filters, display formats and order column) to a CSV file.</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Save as view: this option saves the current setting of the browsed table (filters, display formats and order column) as an SQL view that you can later browse or use in SQL statements.</li></ul></body></html> @@ -8981,7 +7568,7 @@ Hold %3Shift and click to jump there - + Set encoding Кодування @@ -9248,96 +7835,96 @@ Hold %3Shift and click to jump there - + Conditional formats for "%1" - + determining row count... - + %L1 - %L2 of >= %L3 - + %L1 - %L2 of %L3 - + (clipped at %L1 rows) - + Please enter a pseudo-primary key in order to enable editing on this view. This should be the name of a unique column in the view. Будь ласка, введіть псевдо-первинний ключ для можливості редагування у цьому виді. Це має бути і'мя унікального стовпця у виді - + Delete Records - + Duplicate records - + Duplicate record Дублікат запису - + Ctrl+" - + Adjust rows to contents - + Error deleting record: %1 Помилка видалення запису: %1 - + Please select a record first Будь ласка, спочатку оберіть запис - + Please choose a new encoding for all tables. Оберіть нову систему кодування для всіх таблиць. - + Please choose a new encoding for this table. Оберіть нову систему кодування для цієї таблиці. - + %1 Leave the field empty for using the database encoding. %1 Залиште це поле порожнім якщо хочете, щоб використовувалося кодування за замовчуванням. - + This encoding is either not valid or not supported. Кодування невірне або не підтримується. - + %1 replacement(s) made. @@ -9365,24 +7952,6 @@ Leave the field empty for using the database encoding. - - UndoStack - - - Inserting %1 bytes - - - - - Delete %1 chars - - - - - Overwrite %1 chars - - - VacuumDialog diff --git a/src/translations/sqlb_zh.ts b/src/translations/sqlb_zh.ts index ec7f92e82..6f717636d 100644 --- a/src/translations/sqlb_zh.ts +++ b/src/translations/sqlb_zh.ts @@ -15,8 +15,8 @@ - <html><head/><body><p>DB Browser for SQLite is an open source, freeware visual tool used to create, design and edit SQLite database files.</p><p>It is bi-licensed under the Mozilla Public License Version 2, as well as the GNU General Public License Version 3 or later. You can modify or redistribute it under the conditions of these licenses.</p><p>See <a href="https://www.gnu.org/licenses/gpl.html"><span style=" text-decoration: underline; color:#0000ff;">http://www.gnu.org/licenses/gpl.html</span></a> and <a href="https://www.mozilla.org/MPL/2.0/index.txt"><span style=" text-decoration: underline; color:#0000ff;">https://www.mozilla.org/MPL/2.0/index.txt</span></a> for details.</p><p>For more information on this program please visit our website at: <a href="https://sqlitebrowser.org"><span style=" text-decoration: underline; color:#0000ff;">http://sqlitebrowser.org</span></a></p><p><span style=" font-size:small;">This software uses the GPL/LGPL Qt Toolkit from </span><a href="http://qt-project.org/"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://qt-project.org/</span></a><span style=" font-size:small;"><br/>See </span><a href="https://doc.qt.io/qt-5/licensing.html"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://qt-project.org/doc/qt-5/licensing.html</span></a><span style=" font-size:small;"> for licensing terms and information.</span></p><p><span style=" font-size:8pt;">We use the nalgeon/sqlean library for SQLite extensions support.<br/>This library is licensed under the MIT license, see the following for more information:<br/></span><a href="https://github.com/nalgeon/sqlean"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">https://github.com/nalgeon/sqlean</span></a></p><p><span style=" font-size:small;">It also uses the Pastel SVG icon set by Michael Buckley under a Creative Commons Attribution Share Alike 4.0 license.<br/>See </span><a href="https://codefisher.org/pastel-svg/"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://codefisher.org/pastel-svg/</span></a><span style=" font-size:small;"> for details.</span></p></body></html> - + <html><head/><body><p>DB Browser for SQLite is an open source, freeware visual tool used to create, design and edit SQLite database files.</p><p>It is bi-licensed under the Mozilla Public License Version 2, as well as the GNU General Public License Version 3 or later. You can modify or redistribute it under the conditions of these licenses.</p><p>See <a href="https://www.gnu.org/licenses/gpl.html"><span style=" text-decoration: underline; color:#0000ff;">https://www.gnu.org/licenses/gpl.html</span></a> and <a href="https://www.mozilla.org/MPL/2.0/index.txt"><span style=" text-decoration: underline; color:#0000ff;">https://www.mozilla.org/MPL/2.0/index.txt</span></a> for details.</p><p>For more information on this program please visit our website at: <a href="https://sqlitebrowser.org"><span style=" text-decoration: underline; color:#0000ff;">https://sqlitebrowser.org</span></a></p><p><span style=" font-size:small;">This software uses the GPL/LGPL Qt Toolkit from </span><a href="https://qt-project.org/"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://qt-project.org/</span></a><span style=" font-size:small;"><br/>See </span><a href="https://doc.qt.io/qt-5/licensing.html"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://doc.qt.io/qt-5/licensing.html</span></a><span style=" font-size:small;"> for licensing terms and information.</span></p><p><span style=" font-size:8pt;">We use the nalgeon/sqlean library for SQLite extensions support.<br/>This library is licensed under the MIT license, see the following for more information:<br/></span><a href="https://github.com/nalgeon/sqlean"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">https://github.com/nalgeon/sqlean</span></a></p><p><span style=" font-size:small;">It also uses the Pastel SVG icon set by Michael Buckley under a Creative Commons Attribution Share Alike 4.0 license.<br/>See </span><a href="https://codefisher.org/pastel-svg/"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://codefisher.org/pastel-svg/</span></a><span style=" font-size:small;"> for details.</span></p></body></html> + <html><head/><body><p>DB Browser for SQLite 是一个开源的、免费的可视化工具,用于创建、设计和编辑 SQLite 数据库文件。</p><p>它根据 Mozilla Public License Version 2 和 GNU General Public License Version 3 或更高版本的双重许可进行授权。您可以根据这些许可证的条件进行修改或重新分发。</p><p>详情请参见 <a href="https://www.gnu.org/licenses/gpl.html"><span style=" text-decoration: underline; color:#0000ff;">https://www.gnu.org/licenses/gpl.html</span></a> 和 <a href="https://www.mozilla.org/MPL/2.0/index.txt"><span style=" text-decoration: underline; color:#0000ff;">https://www.mozilla.org/MPL/2.0/index.txt</span></a>。</p><p>有关此程序的更多信息,请访问我们的网站:<a href="https://sqlitebrowser.org"><span style=" text-decoration: underline; color:#0000ff;">https://sqlitebrowser.org</span></a></p><p><span style=" font-size:small;">此软件使用来自 <a href="https://qt-project.org/"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://qt-project.org/</span></a> 的 GPL/LGPL Qt Toolkit。<br/>有关许可条款和信息,请参见 <a href="https://doc.qt.io/qt-5/licensing.html"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://doc.qt.io/qt-5/licensing.html</span></a>。</span></p><p><span style=" font-size:8pt;">我们使用 nalgeon/sqlean 库来支持 SQLite 扩展。<br/>该库根据 MIT 许可证授权,更多信息请参见:<br/></span><a href="https://github.com/nalgeon/sqlean"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">https://github.com/nalgeon/sqlean</span></a></p><p><span style=" font-size:small;">此外,我们使用 Michael Buckley 的 Pastel SVG 图标集,该图标集根据 Creative Commons Attribution Share Alike 4.0 许可证授权。<br/>详情请参见 <a href="https://codefisher.org/pastel-svg/"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://codefisher.org/pastel-svg/</span></a>。</span></p></body></html> @@ -285,36 +285,36 @@ - Invalid option/non-existant file: %1 + Invalid option/non-existent file: %1 无效选项/不存在的文件: %1 - + SQLite Version SQLite 版本 - + SQLCipher Version %1 (based on SQLite %2) SQLCipher 版本 %1 (基于 SQLite %2) - + DB Browser for SQLite Version %1. DB Browser for SQLite 版本 %1。 - + Last commit hash when built: %1 构建时的最新提交: %1 - + Built for %1, running on %2 为 %1 构建,运行于 %2 - + Qt Version %1 Qt 版本 %1 @@ -392,7 +392,7 @@ 原始密钥 - + Please set a key to encrypt the database. Note that if you change any of the other, optional, settings you'll need to re-enter them as well every time you open the database file. Leave the password fields empty to disable the encryption. @@ -403,7 +403,7 @@ The encryption process might take some time and you should have a backup copy of 加密过程将花费一些时间,您应该在加密之前备份数据库!修改加密前,未保存的更改将会被应用。 - + Please enter the key used to encrypt the database. If any of the other settings were altered for this database file you need to provide this information as well. 请输入加密数据库的密码。 @@ -428,129 +428,129 @@ If any of the other settings were altered for this database file you need to pro 为列 '%1' 选择显示格式,将在显示每个值时使用。 - + Default 默认 - + Decimal number 十进制数 - + Exponent notation 指数表示法 - + Hex blob 十六进制大型对象 - + Hex number 十六进制数 - + Apple NSDate to date 苹果 NSDate 到日期 - + Java epoch (milliseconds) to date Java 时间戳(毫秒)到日期 - + .NET DateTime.Ticks to date .NET DateTime.Ticks 到日期 - + Julian day to date 儒略日 (Julian day) 到日期 - + Unix epoch to local time Unix 时间戳到本地时间 - + WebKit / Chromium epoch to date - + 将 WebKit / Chromium 纪元转换为日期 - + WebKit / Chromium epoch to local time - + 将 WebKit / Chromium 纪元转换为本地时间 - + Date as dd/mm/yyyy 日期,格式为 dd/mm/yyyy - + Lower case 小写 - + Binary GUID to text 二进制 GUID 到文本 - + SpatiaLite Geometry to SVG SpatiaLite Geometry 到 SVG - + Custom display format must contain a function call applied to %1 自定义显示格式必须包含处理 %1 的函数 - + Error in custom display format. Message from database engine: %1 自定义显示格式有误。数据库引擎提供的错误信息为:\n\n%1 - + Custom display format must return only one column but it returned %1. 自定义显示格式必须只返回1列,但目前返回 %1 。 - + Octal number 八进制数 - + Round number 取整数 - + Unix epoch to date Unix 时间到日期 - + Upper case 大写 - + Windows DATE to date Windows 日期到日期 - + Custom 自定义 @@ -677,164 +677,164 @@ If any of the other settings were altered for this database file you need to pro DBBrowserDB - + Please specify the database name under which you want to access the attached database 请指明想要附加的数据库名 - + Invalid file format 无效的文件格式 - + Do you want to save the changes made to the database file %1? 您是否想保存对数据库文件 %1 做出的更改? - + Exporting database to SQL file... 正在导出数据库到 SQL 文件... - - + + Cancel 取消 - + Executing SQL... 正在执行 SQL... - + Action cancelled. 操作已取消。 - + Do you really want to close this temporary database? All data will be lost. 你确定要关闭此临时数据库吗?所有数据都会丢失。 - + Database didn't close correctly, probably still busy 数据库未正确关闭,可能正忙 - + Cannot open destination file: '%1' 无法打开目标文件: '%1' - - + + Cannot backup to file: '%1'. Message: %2 无法备份到文件: '%1'。消息: %2 - + The database is currently busy: 数据库正忙: - + Do you want to abort that other operation? 确定要放弃操作吗? - - + + No database file opened 没有打开数据库文件 - - + + Error in statement #%1: %2. Aborting execution%3. 错误在语句 #%1: %2. 正在放弃执行%3. - - + + and rolling back 并回滚 - + didn't receive any output from %1 未收到来自 %1 的任何输出 - + could not execute command: %1 未能执行命令: %1 - + Cannot delete this object 无法删除此对象 - + Cannot set data on this object 不能为此数据设置对象 - - + + A table with the name '%1' already exists in schema '%2'. 一个与 '%1' 同名的表已经存在于架构 '%2' 中。 - + No table with name '%1' exists in schema '%2'. 架构 '%2' 中不存在表 '%1' 。 - - + + Cannot find column %1. 找不到列 %1 。 - + Creating savepoint failed. DB says: %1 创建保存点失败。数据库显示:%1 - + Renaming the column failed. DB says: %1 重命名列失败。数据库显示:\n%1 - - + + Releasing savepoint failed. DB says: %1 释放保存点失败。数据库显示:%1 - + Creating new table failed. DB says: %1 建立新表失败。数据库显示:%1 - + Copying data to new table failed. DB says: %1 复制数据到新表失败。数据库显示:\n%1 - + Deleting old table failed. DB says: %1 删除旧表失败。数据库显示:%1 - + Error renaming table '%1' to '%2'. Message from database engine: %3 @@ -843,12 +843,12 @@ Message from database engine: %1 - + could not get list of db objects: %1 未能获取数据库对象列表:%1 - + Restoring some of the objects associated with this table failed. This is most likely because some column names changed. Here's the SQL statement which you might want to fix and execute manually: @@ -857,32 +857,32 @@ Message from database engine: - + could not get list of databases: %1 无法获取数据库列表: %1 - + Error loading extension: %1 加载扩展时出错: %1 - + Error loading built-in extension: %1 - + 加载内置扩展时出错: %1 - + could not get column information 无法获取列信息 - + Error setting pragma %1 to %2: %3 设置杂注 %1 为 %2 时出错: %3 - + File not found. 文件找不到。 @@ -1441,7 +1441,7 @@ Do you want to apply the edited data to row=%1, column=%2? Make this a 'WITHOUT ROWID' table. Setting this flag requires specifying a PRIMARY KEY (which can be of any type, and can be composite), and forbids the AUTOINCREMENT flag. - + 将此表设置为 'WITHOUT ROWID' 表。设置此标志需要指定一个主键(可以是任何类型,并且可以是复合的),并禁止使用AUTOINCREMENT标志。 @@ -1946,7 +1946,7 @@ All data currently stored in this field will be lost. ExtendedScintilla - + Ctrl+H @@ -1957,22 +1957,22 @@ All data currently stored in this field will be lost. - + Ctrl+P - + Find... 查找... - + Find and Replace... 查找并替换... - + Print... 打印... @@ -1980,129 +1980,129 @@ All data currently stored in this field will be lost. ExtendedTableWidget - + Use as Exact Filter 用于精确过滤 - + Containing 包含 - + Not containing 不包含 - + Not equal to 不等于 - + Greater than 大于 - + Less than 小于 - + Greater or equal 大于等于 - + Less or equal 小于等于 - + Between this and... 在此值和...之间 - + Regular expression 正则表达式 - + Edit Conditional Formats... 编辑条件格式... - + Set to NULL 设置为 NULL - + Cut 剪切 - + Copy 复制 - + Copy with Headers 复制(带表头) - + Copy as SQL 复制为 SQL - + Paste 粘贴 - + Print... 打印... - + Use in Filter Expression 在过滤器表达式中使用 - + Alt+Del - + Ctrl+Shift+C - + Ctrl+Alt+C - + The content of the clipboard is bigger than the range selected. Do you want to insert it anyway? 剪贴板中的数据范围超过了选择的范围。 是否仍要插入? - + <p>Not all data has been loaded. <b>Do you want to load all data before selecting all the rows?</b><p><p>Answering <b>No</b> means that no more data will be loaded and the selection will not be performed.<br/>Answering <b>Yes</b> might take some time while the data is loaded but the selection will be complete.</p>Warning: Loading all the data might require a great amount of memory for big tables. <p>部分数据没有被加载。<b>在选择所有行之前是否要加载所有数据?</b><p><p>选择<b>否</b>表示不加载数据并放弃全选。<br/>选择<b>是</b>表示加载所有数据(可能花费一些时间)并进行全选。</p>警告:加载所有数据对于大表格可能占用大量内存。 - + Cannot set selection to NULL. Column %1 has a NOT NULL constraint. 不能将当前单元格设置为 NULL。列 %1 有 NOT NULL 约束。 @@ -2154,12 +2154,12 @@ Do you want to insert it anyway? FilterLineEdit - + Filter 过滤 - + These input fields allow you to perform quick filters in the currently selected table. By default, the rows containing the input text are filtered out. The following operators are also supported: @@ -2186,92 +2186,92 @@ x~y 范围: 值在 x 和 y 之间 /regexp/ 值符合正则表达式 - + Clear All Conditional Formats 清除所有条件格式 - + Use for Conditional Format 用于条件格式 - + Edit Conditional Formats... 编辑条件格式... - + Set Filter Expression 设置过滤表达式 - + What's This? 这是什么? - + Is NULL 为 NULL - + Is not NULL 非 NULL - + Is empty 为空 - + Is not empty 非空 - + Not containing... 不包含... - + Equal to... 等于... - + Not equal to... 不等于... - + Greater than... 大于... - + Less than... 小于... - + Greater or equal... 大于等于... - + Less or equal... 小于等于... - + In range... 在范围内... - + Regular expression... 正则表达式... @@ -2494,7 +2494,7 @@ x~y 范围: 值在 x 和 y 之间 - + Tab Tab @@ -2637,7 +2637,7 @@ x~y 范围: 值在 x 和 y 之间 - + Deselect All 全不选 @@ -2647,52 +2647,52 @@ x~y 范围: 值在 x 和 y 之间 匹配相似 - + Select All 全选 - + There is already a table named '%1' and an import into an existing table is only possible if the number of columns match. 已经有一张叫做 '%1' 的表。只有列数匹配时,才能导入到已经存在的表中。 - + There is already a table named '%1'. Do you want to import the data into it? 已经有一张叫做 '%1' 的表。你想把数据导入到此表中吗? - + Creating restore point failed: %1 创建还原点失败: %1 - + Creating the table failed: %1 创建表失败: %1 - + importing CSV 导入 CSV - + Could not prepare INSERT statement: %1 无法准备 INSERT 语句: %1 - + Unexpected end of file. Please make sure that you have configured the correct quote characters and the file is not malformed. 意外的文件结束。请确认已正确配置引号字符,并确认文件没有格式错误。 - + Importing the file '%1' took %2ms. Of this %3ms were spent in the row function. 导入文件 '%1' 用时 %2ms. 其中 %3ms 用在行方程上。 - + Inserting row failed: %1 插入行失败: %1 @@ -2705,437 +2705,437 @@ x~y 范围: 值在 x 和 y 之间 DB Browser for SQLite - + toolBar1 工具栏1 - + &Wiki 百科(&W) - + Bug &Report... Bug 上报(&R)... - + Feature Re&quest... 特性请求(&Q)... - + Web&site 网站(&S) - + &Donate on Patreon... 在 Patreon 上捐赠(&D)... - + Open &Project... 打开项目(&P)... - + &Attach Database... 附加数据库(&A)... - - + + Add another database file to the current database connection 添加另一个数据库到当前的数据库连接中 - + This button lets you add another database file to the current database connection 此按钮能添加另一个数据库到当前的数据库连接中 - + &Set Encryption... 设置加密(&S)... - + This button saves the content of the current SQL editor tab to a file 此按钮把当前 SQL 编辑器页的内容保存到一个文件 - + SQLCipher &FAQ SQLCipher 常见问题(&F) - + Table(&s) to JSON... 表到 JSON (&S)... - + Export one or more table(s) to a JSON file 导出一个或多个表到 JSON 文件 - + Un/comment block of SQL code 注释/取消注释 SQL 代码 - + Un/comment block 注释/取消注释 - + Comment or uncomment current line or selected block of code 注释/取消注释当前行或选中的代码段 - + Comment or uncomment the selected lines or the current line, when there is no selection. All the block is toggled according to the first line. 注释/取消注释选中的代码段,没有选中时为当前行。代码段的注释状态由第一行决定。 - + Ctrl+/ - + Stop SQL execution 停止 SQL 执行 - + Stop execution 停止执行 - + Stop the currently running SQL script 停止当前运行的 SQL 脚本 - + &File 文件(&F) - + &Import 导入(&I) - + &Export 导出(&E) - + &Edit 编辑(&E) - + &View 查看(&V) - + &Help 帮助(&H) - + &Remote 远程(&R) - + Execute all/selected SQL 执行所有/选中的 SQL - + This button executes the currently selected SQL statements. If no text is selected, all SQL statements are executed. 此按钮执行当前选中的 SQL 语句。如果没有选中文本,就执行所有的 SQL 语句。 - + &Load Extension... 加载扩展(&L)... - + This button executes the SQL statement present in the current editor line 此按钮执行编辑器当前行中的 SQL 语句 - + Shift+F5 - + Sa&ve Project 保存项目(&V) - - + + Save SQL file as SQL 文件另存为 - + &Browse Table 浏览表(&B) - + Copy Create statement 复制 Create 语句 - + Copy the CREATE statement of the item to the clipboard 复制选中项的 CREATE 语句到剪贴板 - + Open an existing database file in read only mode 用只读方式打开一个已有的数据库文件 - + Opens the SQLCipher FAQ in a browser window 用浏览器窗口打开 SQLCipher 常见问题 - + User 用户 - + Application 应用程序 - + &Clear 清除(&C) - + DB Sche&ma 数据库架构(&M) - + &New Database... 新建数据库(&N)... - - + + Create a new database file 创建一个新的数据库文件 - + This option is used to create a new database file. 这个选项用于创建一个新的数据库文件。 - + Ctrl+N - - + + &Open Database... 打开数据库(&O)... - - - - - + + + + + Open an existing database file 打开一个现有的数据库文件 - - - + + + This option is used to open an existing database file. 这个选项用于打开一个现有的数据库文件。 - + Ctrl+O - + &Close Database 关闭数据库(&C) - - + + Ctrl+W - - + + Revert database to last saved state 把数据库会退到先前保存的状态 - + This option is used to revert the current database file to its last saved state. All changes made since the last save operation are lost. 这个选项用于倒退当前的数据库文件为它最后的保存状态。从最后保存操作开始做出的所有更改将会丢失。 - - + + Write changes to the database file 把更改写入到数据库文件 - + This option is used to save changes to the database file. 这个选项用于保存更改到数据库文件。 - + Ctrl+S - + Compact &Database... 压缩数据库(&D)... - + Compact the database file, removing space wasted by deleted records 压缩数据库文件,去除已删除记录所占用的空间 - - + + Compact the database file, removing space wasted by deleted records. 压缩数据库文件,去除已删除记录所占用的空间。 - + E&xit 退出(&X) - + Ctrl+Q - + Import data from an .sql dump text file into a new or existing database. 从一个 .sql 转储文本文件中导入数据到一个新的或已有的数据库。 - + This option lets you import data from an .sql dump text file into a new or existing database. SQL dump files can be created on most database engines, including MySQL and PostgreSQL. 这个选项让你从一个 .sql 转储文本文件中导入数据到一个新的或现有的数据库。SQL 转储文件可以在大多数数据库引擎上创建,包括 MySQL 和 PostgreSQL。 - + Open a wizard that lets you import data from a comma separated text file into a database table. 打开一个向导让您从一个逗号间隔的文本文件导入数据到一个数据库表中。 - + Open a wizard that lets you import data from a comma separated text file into a database table. CSV files can be created on most database and spreadsheet applications. 打开一个向导让您从一个逗号间隔的文本文件导入数据到一个数据库表中。CSV 文件可以在大多数数据库和电子表格应用程序上创建。 - + Export a database to a .sql dump text file. 导出一个数据库导一个 .sql 转储文本文件。 - + This option lets you export a database to a .sql dump text file. SQL dump files contain all data necessary to recreate the database on most database engines, including MySQL and PostgreSQL. 这个选项让你导出一个数据库导一个 .sql 转储文本文件。SQL 转储文件包含在大多数数据库引擎上(包括 MySQL 和 PostgreSQL)重新创建数据库所需的所有数据。 - + Export a database table as a comma separated text file. 导出一个数据库表为逗号间隔的文本文件。 - + Export a database table as a comma separated text file, ready to be imported into other database or spreadsheet applications. 导出一个数据库表为逗号间隔的文本文件,准备好被导入到其他数据库或电子表格应用程序。 - + Open the Create Table wizard, where it is possible to define the name and fields for a new table in the database 打开“创建表”向导,在那里可以定义在数据库中的一个新表的名称和字段 - + Open the Delete Table wizard, where you can select a database table to be dropped. 打开“删除表”向导,在那里你可以选择要丢弃的一个数据库表。 - + Open the Create Index wizard, where it is possible to define a new index on an existing database table. 打开“创建索引”向导,在那里可以在一个现有的数据库表上定义一个新索引。 - + &Preferences... 首选项(&P)... - - + + Open the preferences window. 打开首选项窗口。 - + &DB Toolbar 数据库工具栏(&D) - + Shows or hides the Database toolbar. 显示或隐藏数据库工具栏。 - + Shift+F1 - + &Recently opened 最近打开(&R) - + Ctrl+T @@ -3149,57 +3149,216 @@ You can drag SQL statements from an object row and drop them into other applicat - + + Temp Store + 临时存储 + + + + Secure Delete + 安全删除 + + + + Case Sensitive Like + 区分大小写 + + + + Journal Mode + 日志模式 + + + + Journal Size Limit + 日志大小限制 + + + + Recursive Triggers + 递归触发器 + + + + Page Size + 页面大小 + + + + Foreign Keys + 外键 + + + + Auto Vacuum + 自动清理 + + + + Max Page Count + 最大页面计数 + + + + Checkpoint Full FSYNC + 检查点完全 fsync + + + + + Off + 关闭 + + + + + Normal + 普通 + + + + + Full + 完全 + + + + Default + 默认 + + + + File + 文件 + + + + + Memory + 内存 + + + + Delete + 删除 + + + + Truncate + 截断 + + + + Persist + 持久化 + + + + WAL + WAL + + + + Exclusive + 独占 + + + + Automatic Index + 自动索引 + + + + Ignore Check Constraints + 忽略检查约束 + + + + Full FSYNC + 完全 FSYNC + + + + WAL Auto Checkpoint + WAL 自动检查点 + + + + User Version + 用户版本 + + + + Synchronous + 同步 + + + Warning: this pragma is not readable and this value has been inferred. Writing the pragma might overwrite a redefined LIKE provided by an SQLite extension. 警告: 此杂注无法读取,此值为推断得到。编辑杂注可能会覆盖由 SQLite 扩展重定义的 LIKE。 - + + None + + + + + Incremental + 增量 + + + + Locking Mode + 锁定模式 + + + Too&ls 工具(&T) - + DB Toolbar 数据库工具栏 - + Edit Database &Cell 编辑数据库单元格(&C) - + SQL &Log SQL 日志(&L) - + Show S&QL submitted by 显示 SQL 提交自(&Q) - + Error Log 错误记录 - + This button clears the contents of the SQL logs 此按钮清除 SQL 日志的内容 - + This panel lets you examine a log of all SQL commands issued by the application or by yourself 此面板可以让你自行检查本应用程序执行的所有 SQL 命令的日志 - + &Plot 图表(&P) - + This is the structure of the opened database. You can drag multiple object names from the Name column and drop them into the SQL editor and you can adjust the properties of the dropped names using the context menu. This would help you in composing SQL statements. You can drag SQL statements from the Schema column and drop them into the SQL editor or into other applications. @@ -3209,304 +3368,304 @@ You can drag SQL statements from the Schema column and drop them into the SQL ed 你可以从架构列拖拽 SQL 语句到 SQL 编辑器或其他的应用程序。 - - + + Project Toolbar 项目工具栏 - + Extra DB toolbar 其他数据库工具栏 - - - + + + Close the current database file 关闭当前数据库文件 - + &New Database 新建数据库(&N) - + This button closes the connection to the currently open database file 此按钮关闭到当前打开的数据库文件的连接 - - + + Ctrl+F4 - + &Revert Changes 倒退更改(&R) - + &Undo 撤销(&U) - - + + Undo last change to the database 撤销对数据库的最后更改 - + This action undoes the last change performed to the database in the Database Browser or in Execute SQL. Redoing is not possible. 此操作将撤销上一次在数据库浏览器或 SQL 执行中对数据库所执行的更改。不能撤销(重做)本次撤销。 - + &Write Changes 写入更改(&W) - + Open the Modify Table wizard, where it is possible to rename an existing table. It is also possible to add or delete fields from a table, as well as modify field names and types. 打开修改表向导,可以在里面重命名现有表,添加或删除字段,修改字段名称和类型。 - + New &tab 新建标签页(&T) - + Open SQL file(s) 打开 SQL 文件 - + This button opens files containing SQL statements and loads them in new editor tabs 此按钮可打开包含 SQL 语句的一个或多个文件,将它们加载到新的编辑器标签页中 - + Ctrl+Shift+T Ctrl+Shift+T - + Execute line 执行行 - + F1 - + &Save Project 保存项目(&S) - + This button lets you save all the settings associated to the open DB to a DB Browser for SQLite project file 此按钮允许你将与已打开的数据库相关联的所有设置保存到一个本软件可用的项目文件中 - + Open &Project 打开项目(&P) - + This button lets you open a DB Browser for SQLite project file 此按钮允许你打开一个 DB Browser for SQLite 的项目文件 - + Open Data&base Read Only... 只读打开数据库(&B)... - + Ctrl+Shift+O - + Save results 保存结果 - + Save the results view 保存结果视图 - + This button lets you save the results of the last executed query 此按钮让你保存上次执行的查询的结果 - - + + Find text in SQL editor 在 SQL 编辑器中查找文本 - + Find 查找 - + This button opens the search bar of the editor 此按钮打开编辑器的查找栏 - + Ctrl+F - - + + Find or replace text in SQL editor 在 SQL 编辑器中查找或替换文本 - + Find or replace 查找或替换 - + This button opens the find/replace dialog for the current editor tab 此按钮为当前的编辑器标签页打开查找/替换对话框 - + Ctrl+H - + Export to &CSV 导出到 &CSV - + Export to &JSON 导出到 &JSON - + Save as &view 保存为视图(&V) - + Save as view 保存为视图 - + &Open Database 打开数据库(&O) - + Drag && Drop SELECT Query 拖放 SELECT 查询(&&) - - + + When dragging fields from the same table or a single table, drop a SELECT query into the editor 在同一个或单个表中拖拽字段,释放时将一条 SELECT 查询插入编辑器 - + Browse Table 浏览表 - + Close Pro&ject 关闭项目(&J) - - + + Close project and database files and return to the initial state 关闭项目和数据库文件并返回初始状态 - - + + Ctrl+Shift+W Ctrl+Shift+W - + Table from CSV data in Clipboard... 剪贴板中 CSV 的数据制表... - + This treats the current clipboard contents as a CSV file and opens the same import wizard that is used for importing CSV data from a file. 这会将剪贴板内容视作 CSV 文件,打开从文件导入 CSV 数据的向导来处理它。 - + Show &Row Counts 显示行数(&R) - + This shows the number of rows for each table and view in the database. 显示数据库中每个表和视图的行数。 - + Save Database &As... 另存为数据库(&A)... - + Save the current database as a different file 将当前数据库保存到另一个文件 - + Refresh 刷新 - + Reload the database structure 重新载入数据库结构 - + Ctrl+Shift+F4 Ctrl+Shift+F4 - - + + Detach Database 断开数据库 - - + + Detach database file attached to the current database connection 断开已附加到当前数据库连接的数据库文件 - + Shows or hides the Project toolbar. 显示或隐藏项目工具栏。 @@ -3532,334 +3691,334 @@ You can drag SQL statements from the Schema column and drop them into the SQL ed 编辑杂注(&R) - - + + E&xecute SQL This has to be equal to the tab title in all the main tabs 执行 SQL(&X) - + &Recent Files 最近的文件(&R) - + Extra DB Toolbar 其他数据库工具栏 - + New In-&Memory Database 新建内存数据库(&M) - + Drag && Drop Qualified Names 拖拽限定名称 - - + + Use qualified names (e.g. "Table"."Field") when dragging the objects and dropping them into the editor 当拖拽对象到编辑器中时,使用限定名称 (例如 "Table"."Field") - + Drag && Drop Enquoted Names 拖拽引用名字 - - + + Use escaped identifiers (e.g. "Table1") when dragging the objects and dropping them into the editor 当拖拽对象到编辑器中时,使用转义的标识符 (例如 "Table1") - + &Integrity Check 完全性检查(&I) - + Runs the integrity_check pragma over the opened database and returns the results in the Execute SQL tab. This pragma does an integrity check of the entire database. 对打开的数据库运行 integrity_check 杂注并在执行 SQL 标签页返回结果。此杂注对整个数据库进行完全性检查。 - + &Foreign-Key Check 外键检查(&F) - + Runs the foreign_key_check pragma over the opened database and returns the results in the Execute SQL tab 对打开的数据库运行 foreign_key_check 杂注并在“执行 SQL”标签页中返回结果 - + &Quick Integrity Check 快速完全性检查(&Q) - + Run a quick integrity check over the open DB 对打开的数据库执行快速完全性检查 - + Runs the quick_check pragma over the opened database and returns the results in the Execute SQL tab. This command does most of the checking of PRAGMA integrity_check but runs much faster. 对打开的数据库运行 quick_check 杂注并在执行 SQL 标签页返回结果。此命令会执行 integrity_check 的多数检查,但是要快得多。 - + &Optimize 优化(&O) - + Attempt to optimize the database 尝试优化数据库 - + Runs the optimize pragma over the opened database. This pragma might perform optimizations that will improve the performance of future queries. 对打开的数据库运行 optimize 杂注。可能会执行对未来查询性能有帮助的优化。 - - + + Print 打印 - + Print text from current SQL editor tab 从当前的 SQL 编辑器标签页打印文本 - + Open a dialog for printing the text in the current SQL editor tab 打开对话框以从当前的 SQL 编辑器标签页打印文 - + Print the structure of the opened database 打印当前打开的数据库的结构 - + Open a dialog for printing the structure of the opened database 打开对话框以打印当前打开的数据库的结构 - + &Save Project As... 另存为项目(&S)... - - - + + + Save the project in a file selected in a dialog 将项目保存为文件 - + Save A&ll 全部保存(&L) - - - + + + Save DB file, project file and opened SQL files 保存数据库文件、项目文件和打开的 SQL 文件 - + Ctrl+Shift+S - + &Database from SQL file... 从 SQL 文件导入数据库(&D)... - + &Table from CSV file... 从 CSV 文件导入表(&T)... - + &Database to SQL file... 导出数据库到 SQL 文件(&D)... - + &Table(s) as CSV file... 导出表到 CSV 文件(&T)... - + &Create Table... 创建表(&C)... - + &Delete Table... 删除表(&D)... - + &Modify Table... 修改表(&M)... - + Create &Index... 创建索引(&I)... - + W&hat's This? 这是什么(&W)? - + &About 关于(&A) - + This button opens a new tab for the SQL editor 此按钮打开一个 SQL 编辑器的新标签页 - + &Execute SQL 执行 SQL(&E) - - + + Save the current session to a file 保存当前会话到一个文件 - - + + Load a working session from a file 从一个文件加载工作会话 - - - + + + Save SQL file 保存 SQL 文件 - - + + Execute current line 执行当前行 - + Ctrl+E - + Export as CSV file 导出为 CSV 文件 - + Export table as comma separated values file 导出表为逗号间隔值文件 - + Ctrl+L - - + + Ctrl+P - + Database encoding 数据库编码 - - + + Choose a database file 选择一个数据库文件 - + Ctrl+Return - + Ctrl+D - + Ctrl+I - + Encrypted 加密的 - + Database is encrypted using SQLCipher 数据库使用 SQLCipher 进行了加密 - + Read only 只读 - + Database file is read only. Editing the database is disabled. 数据库是只读的。编辑被禁止。 - + Could not open database file. Reason: %1 无法打开数据库文件。 原因: %1 - - - + + + Choose a filename to save under 选择一个文件名保存 - + Setting PRAGMA values or vacuuming will commit your current transaction. Are you sure? 设置或清除杂注值会提交你的当前事务。 你确定吗? - + Error while saving the database file. This means that not all changes to the database were saved. You need to resolve the following error first. %1 @@ -3868,462 +4027,462 @@ Are you sure? %1 - + A new DB Browser for SQLite version is available (%1.%2.%3).<br/><br/>Please download at <a href='%4'>%4</a>. 有新版本的 DB Browser for SQLite (%1.%2.%3)可用。<br/><br/>请从 <a href='%4'>%4</a> 下载。 - + DB Browser for SQLite project file (*.sqbpro) DB Browser for SQLite 项目文件 (*.sqbpro) - + Reset Window Layout 重置窗口布局 - - The database is currenctly busy. + + The database is currently busy. 数据库正忙。 - + Click here to interrupt the currently running query. 点击此处中断当前运行的查询。 - + You are still executing SQL statements. Closing the database now will stop their execution, possibly leaving the database in an inconsistent state. Are you sure you want to close the database? 你正在执行SQL语句。关闭数据库会停止执行,可能使数据库处于不准确的状态。确实要关闭数据库吗? - + Do you want to save the changes made to the project file '%1'? 是否要保存对项目文件 '%1' 的修改? - + Error checking foreign keys after table modification. The changes will be reverted. 修改表格后的外键检查错误。修改会被回退。 - + This table did not pass a foreign-key check.<br/>You should run 'Tools | Foreign-Key Check' and fix the reported issues. 此表格没有通过外键检查。<br/>你需要执行 '工具 | 外键检查' 并修复发现的问题。 - + Edit View %1 编辑视图 %1 - + Edit Trigger %1 编辑触发器 %1 - - + + At line %1: 在行 %1: - + Result: %1 结果: %1 - + Result: %2 结果: %2 - + Execution finished with errors. 执行已完成,但有错误。 - + Execution finished without errors. 执行完成,无错误。 - + Opened '%1' in read-only mode from recent file list 已从最近文件列表中打开 '%1' (只读模式) - + Opened '%1' from recent file list 已从最近文件列表中打开 '%1' - + &%1 %2%3 &%1 %2%3 - + (read only) (只读) - + Open Database or Project 打开数据库或项目 - + Attach Database... 附加数据库... - + Import CSV file(s)... 导入CSV文件... - + Do you want to save the changes made to SQL tabs in a new project file? 是否要将对 SQL 标签页的修改保存为项目文件? - + The statements in the tab '%1' are still executing. Closing the tab will stop the execution. This might leave the database in an inconsistent state. Are you sure you want to close the tab? 标签页 '%1' 中的语句仍在执行。关闭该标签页将停止执行。这可能使数据库处于不一致状态。确定关闭标签页吗? - + This project file is using an old file format because it was created using DB Browser for SQLite version 3.10 or lower. Loading this file format is no longer fully supported. If you want to load it completely, please use DB Browser for SQLite version 3.12 to convert it to the new file format. 此项目文件使用了 DB Browser for SQLite 3.10 或更旧版本使用的旧文件格式。这种文件格式的加载已不再充分支持。如要完全加载该文件,请使用 DB Browser for SQLite 3.12 版本将其转换为新型文件格式。 - + Yes. Don't ask again 是,不再询问 - + This action will open a new SQL tab with the following statements for you to edit and run: 此操作将打开一个新的 SQL 标签页,其中包含以下语句供您编辑和运行: - + Rename Tab 重命名标签 - + Duplicate Tab 复制标签 - + Close Tab 关闭标签 - + Opening '%1'... 正在打开 '%1'... - + There was an error opening '%1'... 打开 '%1' 时出错... - + Value is not a valid URL or filename: %1 不是正确的URL或文件名:%1 - + Do you want to save the changes made to the SQL file %1? 是否要保存对SQL文件 %1 的修改? - + Could not find resource file: %1 不能找到资源文件:%1 - + Choose a project file to open 选择一个要打开的项目文件 - + Could not open project file for writing. Reason: %1 未能写入项目文件。 原因:%1 - + Busy (%1) 正忙 (%1) - + Are you sure you want to undo all changes made to the database file '%1' since the last save? 您是否确定想撤销自上次保存以来对数据库文件“%1”所做的所有更改? - + Choose a file to import 选择要导入的一个文件 - + Text files(*.sql *.txt);;All files(*) 文本文件(*.sql *.txt);;所有文件(*) - + Do you want to create a new database file to hold the imported data? If you answer no we will attempt to import the data in the SQL file to the current database. 您是否确认您想创建一个新的数据库文件用来存放导入的数据? 如果您会到“否”的话,我们将尝试导入 SQL 文件中的数据到当前数据库。 - + Ctrl+Tab Ctrl+Tab - + Ctrl+Shift+Tab Ctrl+Shift+Tab - + Clear List 清除列表 - + Window Layout 窗口布局 - + Simplify Window Layout 简化窗口布局 - - Shift+Alt+0 - Shift+Alt+0 + + Alt+Shift+0 + Alt+Shift+0 - + Dock Windows at Bottom 窗口停靠底部 - + Dock Windows at Left Side 窗口停靠左侧 - + Dock Windows at Top 窗口停靠顶部 - + File %1 already exists. Please choose a different name. 文件 %1 已存在。请选择一个不同的名称。 - + Error importing data: %1 导入数据时出错: %1 - + Import completed. 导入完成。 - + Delete View 删除视图 - + Modify View 修改视图 - + Delete Trigger 删除触发器 - + Modify Trigger 修改触发器 - + Delete Index 删除索引 - - + + Delete Table 删除表 - + Setting PRAGMA values will commit your current transaction. Are you sure? 设置 PRAGMA 值将会提交您的当前事务。 您确定吗? - + In-Memory database 内存数据库 - + Automatically load the last opened DB file at startup - + 启动时自动加载上次打开的数据库文件 - + Ctrl+Alt+0 Ctrl+Alt+0 - + Ctrl+Alt+W Ctrl+Alt+W - + Choose a database file to save under 选择数据库文件保存位置 - + Error while saving the database to the new file. 保存数据库到新文件时出错。 - + Are you sure you want to delete the table '%1'? All data associated with the table will be lost. 你确定要删除表 '%1' 吗? 所有关联的数据都会丢失。 - + Are you sure you want to delete the view '%1'? 你确定要删除视图 '%1' 吗? - + Are you sure you want to delete the trigger '%1'? 你确定要删除触发器 '%1' 吗? - + Are you sure you want to delete the index '%1'? 你确定要删除索引 '%1' 吗? - + Error: could not delete the table. 错误: 无法删除表。 - + Error: could not delete the view. 错误: 无法删除视图。 - + Error: could not delete the trigger. 错误: 无法删除触发器。 - + Error: could not delete the index. 错误: 无法删除索引。 - + Message from database engine: %1 来自数据库引擎的消息: %1 - + Editing the table requires to save all pending changes now. Are you sure you want to save the database? 编辑表格之前需要立刻保存所有修改。 你确定要保存数据库吗? - + You are already executing SQL statements. Do you want to stop them in order to execute the current statements instead? Note that this might leave the database in an inconsistent state. 你已经在执行SQL语句。是否要停止执行并改为执行当前语句?注意,这可能使数据库处于不准确的状态。 - + -- EXECUTING SELECTION IN '%1' -- -- 执行 '%1' 中所选 -- - + -- EXECUTING LINE IN '%1' -- -- 执行 '%1' 中的行 -- - + -- EXECUTING ALL IN '%1' -- -- 执行 '%1' 中所有 -- - + %1 rows returned in %2ms %1 行返回,耗时 %2ms - + Choose text files 选择文本文件 - + Import completed. Some foreign key constraints are violated. Please fix them before saving. 导入完成。一些外键约束被违反了。请在保存之前修复。 - + Modify Index 修改索引 - + Modify Table 修改表 - + Select the action to apply to the dropped file(s). <br/>Note: only 'Import' will process more than one file. Note for translation: Although there is no %n in the original, you can use the numerus-form to adjust 'files(s)' and remove the note when n = 1. Including %n in the translation will also work. @@ -4331,73 +4490,73 @@ Are you sure you want to save the database? - + Do you want to save the changes made to SQL tabs in the project file '%1'? 是否要将对 SQL 标签页的修改保存到项目文件 '%1'? - + Select SQL file to open 选择要打开的 SQL 文件 - + Select file name 选择文件名 - + Select extension file 选择扩展文件 - + Extension successfully loaded. 扩展成功加载。 - + Error loading extension: %1 加载扩展时出错: %1 - - + + Don't show again 不再显示 - + New version available. 新版本可用。 - + DB file '%1' could not be opened 无法打开数据库文件 '%1' - + Table '%1' not found; settings ignored 找不到表 '%1'; 设置已忽略 - + -- Reference to file "%1" (not supported by this version) -- -- 引用文件 "%1" (此版本暂不支持) -- - + Project saved to file '%1' 项目已保存到文件 '%1' - + Collation needed! Proceed? 需要整理! 继续? - + A table in this database requires a special collation function '%1' that this application can't provide without further knowledge. If you choose to proceed, be aware bad things can happen to your database. Create a backup! @@ -4406,42 +4565,42 @@ Create a backup! 记得备份! - + creating collation 创建整理 - + Set a new name for the SQL tab. Use the '&&' character to allow using the following character as a keyboard shortcut. 为 SQL 标签页设置新名称。使用 '&&' 字符来允许它作为键盘快捷键。 - + Please specify the view name 请指定视图名称 - + There is already an object with that name. Please choose a different name. 已有同名的对象。请选择一个不同的名称。 - + View successfully created. 视图创建成功。 - + Error creating view: %1 创建视图出错: %1 - + This action will open a new SQL tab for running: 此动作会打开新的 SQL 标签页以运行: - + Press Help for opening the corresponding SQLite reference page. 按下帮助以打开对应的 SQLite 参考页。 @@ -4636,102 +4795,107 @@ Select the axes or axes labels to drag and zoom only in that orientation. - + Load all data and redraw plot 载入所有数据并重新绘图 - - - + + + Row # 行 # - + Copy 复制 - + Print... 打印... - + + Help + 帮助 + + + Show legend 显示图例 - + Stacked bars 堆叠的条形 - + Fixed number format - 固定数字格式 + 固定数字格式 - + Date/Time 日期/时间 - + Date 日期 - + Time 时间 - - + + Numeric 数值 - + Label 标签 - + Invalid 无效的 - + Load all data and redraw plot. Warning: not all data has been fetched from the table yet due to the partial fetch mechanism. 载入所有数据并重新绘图。 警告:由于部分加载机制,现在并没有加载所有的数据。 - + Choose an axis color 选一个坐标轴颜色 - + Choose a filename to save under 选择一个文件名保存 - + PNG(*.png);;JPG(*.jpg);;PDF(*.pdf);;BMP(*.bmp);;All Files(*) PNG(*.png);;JPG(*.jpg);;PDF(*.pdf);;BMP(*.bmp);;所有文件(*) - + There are curves in this plot and the selected line style can only be applied to graphs sorted by X. Either sort the table or query by X to remove curves or select one of the styles supported by curves: None or Line. 图中有曲线,选择的线形只能用到按 X 排列的图中。要么对表排序或者用 X 查询,要么选一种曲线支持的线形:无或者折线。 - + Loading all remaining data for this table took %1ms. 加载表中全部剩余数据花费了%1毫秒。 @@ -5370,7 +5534,7 @@ Can be set to 0 for disabling completion. Select built-in extensions to load for every database: - + 选择要为每个数据库加载的内置扩展: @@ -5472,1959 +5636,393 @@ Can be set to 0 for disabling completion. 文件 - - Subject Common Name - 主题公用名称 (Subject Common Name) - - - - Issuer CN - 签发人 CN (Issuer CN) - - - - Issuer Common Name - 签发人公用名称 (Issuer Common Name) - - - - Clone databases into - 克隆数据库信息 - - - - - Choose a directory - 选择一个目录 - - - - - The language will change after you restart the application. - 语言将在重启应用程序后改变。 - - - - Select extension file - 选择扩展文件 - - - - Extensions(*.so *.dylib *.dll);;All files(*) - 扩展(*.so *.dylib *.dll);;所有文件(*) - - - - Import certificate file - 导入证书文件 - - - - No certificates found in this file. - 在文件中找不到证书。 - - - - Are you sure you want do remove this certificate? All certificate data will be deleted from the application settings! - 您确定要删除此证书吗?所有的证书数据都会被从应用设置中删除! - - - - Are you sure you want to clear all the saved settings? -All your preferences will be lost and default values will be used. - 你确定要清除所有保存的设置吗? -所有你做的设置都会丢失,并使用默认值。 - - - - Save Settings File - 保存设置文件 - - - - - Initialization File (*.ini) - 初始化文件 (*.ini) - - - - The settings file has been saved in location : - - 设置文件已保存到: - - - - Open Settings File - 打开设置文件 - - - - The settings file was loaded properly. - 设置文件成功加载。 - - - - The selected settings file is not a normal settings file. -Please check again. - 所选的设置文件格式不正常。 -请复查。 - - - - ProxyDialog - - - Proxy Configuration - 代理服务器配置 - - - - Pro&xy Type - 代理服务器类型(&X) - - - - Host Na&me - 主机名(&M) - - - - Port - 端口 - - - - Authentication Re&quired - 需要身份验证(&Q) - - - - &User Name - 用户名(&U) - - - - Password - 密码 - - - - None - - - - - System settings - 跟随系统设置 - - - - HTTP - HTTP - - - - Socks v5 - Socks v5 - - - - QObject - - - Error importing data - 导入数据时出错 - - - - from record number %1 - 自记录编号 %1 - - - - . -%1 - . -%1 - - - - Importing CSV file... - 导入 CSV 文件... - - - - Cancel - 取消 - - - - All files (*) - 所有文件 (*) - - - - SQLite database files (*.db *.sqlite *.sqlite3 *.db3) - SQLite 数据库文件 (*.db *.sqlite *.sqlite3 *.db3) - - - - Left - - - - - Right - - - - - Center - 居中 - - - - Justify - 两段 - - - - SQLite Database Files (*.db *.sqlite *.sqlite3 *.db3) - SQLite 数据库文件 (*.db *.sqlite *.sqlite3 *.db3) - - - - DB Browser for SQLite Project Files (*.sqbpro) - DB Browser for SQLite 项目文件 (*.sqbpro) - - - - SQL Files (*.sql) - SQL 文件 (*.sql) - - - - All Files (*) - 所有文件 (*) - - - - Text Files (*.txt) - 纯文本文件 (*.txt) - - - - Comma-Separated Values Files (*.csv) - CSV (逗号分隔)(*.csv) - - - - Tab-Separated Values Files (*.tsv) - TSV (制表符分隔)(*.tsv) - - - - Delimiter-Separated Values Files (*.dsv) - DSV (分隔符分隔)(*.dsv) - - - - Concordance DAT files (*.dat) - Concordance DAT 文件 (*.dat) - - - - JSON Files (*.json *.js) - JSON 文件 (*.json *.js) - - - - XML Files (*.xml) - XML 文件 (*.xml) - - - - Binary Files (*.bin *.dat) - 二进制文件 (*.bin *.dat) - - - - SVG Files (*.svg) - SVG 文件 (*.svg) - - - - Hex Dump Files (*.dat *.bin) - 十六进制转储文件 (*.dat *.bin) - - - - Extensions (*.so *.dylib *.dll) - 扩展 (*.so *.dylib *.dll) - - - - Initialization File (*.ini) - 初始化文件 (*.ini) - - - - QsciCommand - - - Move down one line - - - - - Extend selection down one line - - - - - Extend rectangular selection down one line - - - - - Scroll view down one line - - - - - Move up one line - - - - - Extend selection up one line - - - - - Extend rectangular selection up one line - - - - - Scroll view up one line - - - - - Scroll to start of document - - - - - Scroll to end of document - - - - - Scroll vertically to centre current line - - - - - Move down one paragraph - - - - - Extend selection down one paragraph - - - - - Move up one paragraph - - - - - Extend selection up one paragraph - - - - - Move left one character - - - - - Extend selection left one character - - - - - Extend rectangular selection left one character - - - - - Move right one character - - - - - Extend selection right one character - - - - - Extend rectangular selection right one character - - - - - Move left one word - - - - - Extend selection left one word - - - - - Move right one word - - - - - Extend selection right one word - - - - - Move to end of previous word - - - - - Extend selection to end of previous word - - - - - Move to end of next word - - - - - Extend selection to end of next word - - - - - Move left one word part - - - - - Extend selection left one word part - - - - - Move right one word part - - - - - Extend selection right one word part - - - - - Move to start of document line - - - - - Extend selection to start of document line - - - - - Extend rectangular selection to start of document line - - - - - Move to start of display line - - - - - Extend selection to start of display line - - - - - Move to start of display or document line - - - - - Extend selection to start of display or document line - - - - - Move to first visible character in document line - - - - - Extend selection to first visible character in document line - - - - - Extend rectangular selection to first visible character in document line - - - - - Move to first visible character of display in document line - - - - - Extend selection to first visible character in display or document line - - - - - Move to end of document line - - - - - Extend selection to end of document line - - - - - Extend rectangular selection to end of document line - - - - - Move to end of display line - - - - - Extend selection to end of display line - - - - - Move to end of display or document line - - - - - Extend selection to end of display or document line - - - - - Move to start of document - - - - - Extend selection to start of document - - - - - Move to end of document - - - - - Extend selection to end of document - - - - - Move up one page - - - - - Extend selection up one page - - - - - Extend rectangular selection up one page - - - - - Move down one page - - - - - Extend selection down one page - - - - - Extend rectangular selection down one page - - - - - Stuttered move up one page - - - - - Stuttered extend selection up one page - - - - - Stuttered move down one page - - - - - Stuttered extend selection down one page - - - - - Delete current character - - - - - Delete previous character - - - - - Delete previous character if not at start of line - - - - - Delete word to left - - - - - Delete word to right - - - - - Delete right to end of next word - - - - - Delete line to left - - - - - Delete line to right - - - - - Delete current line - - - - - Cut current line - - - - - Copy current line - - - - - Transpose current and previous lines - - - - - Duplicate the current line - - - - - Select all - - - - - Move selected lines up one line - - - - - Move selected lines down one line - - - - - Duplicate selection - - - - - Convert selection to lower case - - - - - Convert selection to upper case - - - - - Cut selection - - - - - Copy selection - - - - - Paste - 粘贴 - - - - Toggle insert/overtype - - - - - Insert newline - - - - - Formfeed - - - - - Indent one level - - - - - De-indent one level - - - - - Cancel - 取消 - - - - Undo last command - - - - - Redo last command - - - - - Zoom in - - - - - Zoom out - - - - - QsciLexerCPP - - - Default - 默认 - - - - Inactive default - - - - - C comment - - - - - Inactive C comment - - - - - C++ comment - - - - - Inactive C++ comment - - - - - JavaDoc style C comment - - - - - Inactive JavaDoc style C comment - - - - - Number - - - - - Inactive number - - - - - Keyword - 关键字 - - - - Inactive keyword - - - - - Double-quoted string - - - - - Inactive double-quoted string - - - - - Single-quoted string - - - - - Inactive single-quoted string - - - - - IDL UUID - - - - - Inactive IDL UUID - - - - - Pre-processor block - - - - - Inactive pre-processor block - - - - - Operator - - - - - Inactive operator - - - - - Identifier - 识别符 - - - - Inactive identifier - - - - - Unclosed string - - - - - Inactive unclosed string - - - - - C# verbatim string - - - - - Inactive C# verbatim string - - - - - JavaScript regular expression - - - - - Inactive JavaScript regular expression - - - - - JavaDoc style C++ comment - - - - - Inactive JavaDoc style C++ comment - - - - - Secondary keywords and identifiers - - - - - Inactive secondary keywords and identifiers - - - - - JavaDoc keyword - - - - - Inactive JavaDoc keyword - - - - - JavaDoc keyword error - - - - - Inactive JavaDoc keyword error - - - - - Global classes and typedefs - - - - - Inactive global classes and typedefs - - - - - C++ raw string - - - - - Inactive C++ raw string - - - - - Vala triple-quoted verbatim string - - - - - Inactive Vala triple-quoted verbatim string - - - - - Pike hash-quoted string - - - - - Inactive Pike hash-quoted string - - - - - Pre-processor C comment - - - - - Inactive pre-processor C comment - - - - - JavaDoc style pre-processor comment - - - - - Inactive JavaDoc style pre-processor comment - - - - - User-defined literal - - - - - Inactive user-defined literal - - - - - Task marker - - - - - Inactive task marker - - - - - Escape sequence - - - - - Inactive escape sequence - - - - - QsciLexerHTML - - - HTML default - - - - - Tag - - - - - Unknown tag - - - - - Attribute - - - - - Unknown attribute - - - - - HTML number - - - - - HTML double-quoted string - - - - - HTML single-quoted string - - - - - Other text in a tag - - - - - HTML comment - - - - - Entity - - - - - End of a tag - - - - - Start of an XML fragment - - - - - End of an XML fragment - - - - - Script tag - - - - - Start of an ASP fragment with @ - - - - - Start of an ASP fragment - - - - - CDATA - - - - - Start of a PHP fragment - - - - - Unquoted HTML value - - - - - ASP X-Code comment - - - - - SGML default - - - - - SGML command - - - - - First parameter of an SGML command - - - - - SGML double-quoted string - - - - - SGML single-quoted string - - - - - SGML error - - - - - SGML special entity - - - - - SGML comment - - - - - First parameter comment of an SGML command - - - - - SGML block default - - - - - Start of a JavaScript fragment - - - - - JavaScript default - - - - - JavaScript comment - - - - - JavaScript line comment - - - - - JavaDoc style JavaScript comment - - - - - JavaScript number - - - - - JavaScript word - - - - - JavaScript keyword - - - - - JavaScript double-quoted string - - - - - JavaScript single-quoted string - - - - - JavaScript symbol - - - - - JavaScript unclosed string - - - - - JavaScript regular expression - - - - - Start of an ASP JavaScript fragment - - - - - ASP JavaScript default - - - - - ASP JavaScript comment - - - - - ASP JavaScript line comment - - - - - JavaDoc style ASP JavaScript comment - - - - - ASP JavaScript number - - - - - ASP JavaScript word - - - - - ASP JavaScript keyword - - - - - ASP JavaScript double-quoted string - - - - - ASP JavaScript single-quoted string - - - - - ASP JavaScript symbol - - - - - ASP JavaScript unclosed string - - - - - ASP JavaScript regular expression - - - - - Start of a VBScript fragment - - - - - VBScript default - - - - - VBScript comment - - - - - VBScript number - - - - - VBScript keyword - - - - - VBScript string - - - - - VBScript identifier - - - - - VBScript unclosed string - - - - - Start of an ASP VBScript fragment - - - - - ASP VBScript default - - - - - ASP VBScript comment - - - - - ASP VBScript number - - - - - ASP VBScript keyword - - - - - ASP VBScript string - - - - - ASP VBScript identifier - - - - - ASP VBScript unclosed string - - - - - Start of a Python fragment - - - - - Python default - - - - - Python comment - - - - - Python number - - - - - Python double-quoted string - - - - - Python single-quoted string - - - - - Python keyword - - - - - Python triple double-quoted string - - - - - Python triple single-quoted string - - - - - Python class name - - - - - Python function or method name - - - - - Python operator - - - - - Python identifier - - - - - Start of an ASP Python fragment - - - - - ASP Python default - - - - - ASP Python comment - - - - - ASP Python number - - - - - ASP Python double-quoted string - - - - - ASP Python single-quoted string - - - - - ASP Python keyword - - - - - ASP Python triple double-quoted string - - - - - ASP Python triple single-quoted string - + + Subject Common Name + 主题公用名称 (Subject Common Name) - - ASP Python class name - + + Issuer CN + 签发人 CN (Issuer CN) - - ASP Python function or method name - + + Issuer Common Name + 签发人公用名称 (Issuer Common Name) - - ASP Python operator - + + Clone databases into + 克隆数据库信息 - - ASP Python identifier - + + + Choose a directory + 选择一个目录 - - PHP default - + + + The language will change after you restart the application. + 语言将在重启应用程序后改变。 - - PHP double-quoted string - + + Select extension file + 选择扩展文件 - - PHP single-quoted string - + + Extensions(*.so *.dylib *.dll);;All files(*) + 扩展(*.so *.dylib *.dll);;所有文件(*) - - PHP keyword - + + Import certificate file + 导入证书文件 - - PHP number - + + No certificates found in this file. + 在文件中找不到证书。 - - PHP variable - + + Are you sure you want do remove this certificate? All certificate data will be deleted from the application settings! + 您确定要删除此证书吗?所有的证书数据都会被从应用设置中删除! - - PHP comment - + + Are you sure you want to clear all the saved settings? +All your preferences will be lost and default values will be used. + 你确定要清除所有保存的设置吗? +所有你做的设置都会丢失,并使用默认值。 - - PHP line comment - + + Save Settings File + 保存设置文件 - - PHP double-quoted variable - + + + Initialization File (*.ini) + 初始化文件 (*.ini) - - PHP operator - + + The settings file has been saved in location : + + 设置文件已保存到: - - - QsciLexerJSON - - Default - 默认 + + Open Settings File + 打开设置文件 - - Number - + + The settings file was loaded properly. + 设置文件成功加载。 - - String - 字符串 + + The selected settings file is not a normal settings file. +Please check again. + 所选的设置文件格式不正常。 +请复查。 + + + ProxyDialog - - Unclosed string - + + Proxy Configuration + 代理服务器配置 - - Property - + + Pro&xy Type + 代理服务器类型(&X) - - Escape sequence - + + Host Na&me + 主机名(&M) - - Line comment - + + Port + 端口 - - Block comment - + + Authentication Re&quired + 需要身份验证(&Q) - - Operator - + + &User Name + 用户名(&U) - - IRI - + + Password + 密码 - - JSON-LD compact IRI - + + None + - - JSON keyword - + + System settings + 跟随系统设置 - - JSON-LD keyword - + + HTTP + HTTP - - Parsing error - + + SOCKS5 + SOCKS5 - QsciLexerJavaScript + QObject - - Regular expression - 正则表达式 + + Error importing data + 导入数据时出错 - - - QsciLexerPython - - Default - 默认 + + from record number %1 + 自记录编号 %1 - - Comment - 注释 + + . +%1 + . +%1 - - Number - + + Importing CSV file... + 导入 CSV 文件... - - Double-quoted string - + + Cancel + 取消 - - Single-quoted string - + + All files (*) + 所有文件 (*) - - Keyword - 关键字 + + SQLite database files (*.db *.sqlite *.sqlite3 *.db3) + SQLite 数据库文件 (*.db *.sqlite *.sqlite3 *.db3) - - Triple single-quoted string - + + Left + - - Triple double-quoted string - + + Right + - - Class name - + + Center + 居中 - - Function or method name - + + Justify + 两段 - - Operator - + + SQLite Database Files (*.db *.sqlite *.sqlite3 *.db3) + SQLite 数据库文件 (*.db *.sqlite *.sqlite3 *.db3) - - Identifier - 识别符 + + DB Browser for SQLite Project Files (*.sqbpro) + DB Browser for SQLite 项目文件 (*.sqbpro) - - Comment block - + + SQL Files (*.sql) + SQL 文件 (*.sql) - - Unclosed string - + + All Files (*) + 所有文件 (*) - - Highlighted identifier - + + Text Files (*.txt) + 纯文本文件 (*.txt) - - Decorator - + + Comma-Separated Values Files (*.csv) + CSV (逗号分隔)(*.csv) - - Double-quoted f-string - + + Tab-Separated Values Files (*.tsv) + TSV (制表符分隔)(*.tsv) - - Single-quoted f-string - + + Delimiter-Separated Values Files (*.dsv) + DSV (分隔符分隔)(*.dsv) - - Triple single-quoted f-string - + + Concordance DAT files (*.dat) + Concordance DAT 文件 (*.dat) - - Triple double-quoted f-string - + + JSON Files (*.json *.js) + JSON 文件 (*.json *.js) - - - QsciLexerSQL - - Default - 默认 + + XML Files (*.xml) + XML 文件 (*.xml) - - Comment - 注释 + + Binary Files (*.bin *.dat) + 二进制文件 (*.bin *.dat) - - Comment line - + + SVG Files (*.svg) + SVG 文件 (*.svg) - - JavaDoc style comment - + + Hex Dump Files (*.dat *.bin) + 十六进制转储文件 (*.dat *.bin) - - Number - + + Extensions (*.so *.dylib *.dll) + 扩展 (*.so *.dylib *.dll) - - Keyword - 关键字 + + Initialization File (*.ini) + 初始化文件 (*.ini) + + + QsciCommand - - Double-quoted string - + Paste + 粘贴 - - Single-quoted string - + Cancel + 取消 + + + QsciLexerCPP - - SQL*Plus keyword - + Default + 默认 - - SQL*Plus prompt - + Keyword + 关键字 - - Operator - + Identifier + 识别符 + + + QsciLexerJSON - - Identifier - 识别符 + Default + 默认 - - SQL*Plus comment - + String + 字符串 + + + QsciLexerJavaScript - - # comment line - + Regular expression + 正则表达式 + + + QsciLexerPython - - JavaDoc keyword - + Default + 默认 - - JavaDoc keyword error - + Comment + 注释 - - User defined 1 - + Keyword + 关键字 - - User defined 2 - + Identifier + 识别符 + + + QsciLexerSQL - - User defined 3 - + Default + 默认 - - User defined 4 - + Comment + 注释 - - Quoted identifier - + Keyword + 关键字 - - Quoted operator - + Identifier + 识别符 QsciScintilla - &Undo - 撤销(&U) - - - - &Redo - - - - - Cu&t - - - - - &Copy - - - - - &Paste - - - - - Delete - + 撤销(&U) - Select All - 全选 + 全选 @@ -7817,26 +6415,26 @@ Are you sure you want to proceed? 请输入此客户端证书的口令以进行身份验证。 - + Cancel 取消 - + Uploading remote database to %1 正在上传远程数据库到 %1 - + Downloading remote database from %1 正在下载远程数据库自 %1 - + Error: Cannot open the file for sending. 错误:无法打开文件以进行发送。 @@ -8041,12 +6639,12 @@ Are you sure you want to proceed? Ctrl+PgUp - Ctrl+PgUp + Ctrl+PgDown - Ctrl+PgDown + @@ -8356,22 +6954,22 @@ Use of this function must be authorized from Preferences. () The row_number() of the first peer in each group - the rank of the current row with gaps. If there is no ORDER BY clause, then all rows are considered peers and this function always returns 1. - + () 每组中第一个同级的 row_number() - 当前行的排名(有间隙)。如果没有 ORDER BY 子句,则所有行都被视为同级,并且此函数始终返回 1。 () The number of the current row's peer group within its partition - the rank of the current row without gaps. Partitions are numbered starting from 1 in the order defined by the ORDER BY clause in the window definition. If there is no ORDER BY clause, then all rows are considered peers and this function always returns 1. - + () 当前行所在分区内同级组的编号 - 无间隙的当前行排名。分区按窗口定义中的 ORDER BY 子句的顺序从 1 开始编号。如果没有 ORDER BY 子句,则所有行都被视为同级,并且此函数始终返回 1。 () Despite the name, this function always returns a value between 0.0 and 1.0 equal to (rank - 1)/(partition-rows - 1), where rank is the value returned by built-in window function rank() and partition-rows is the total number of rows in the partition. If the partition contains only one row, this function returns 0.0. - + () 尽管名称如此,此函数始终返回介于 0.0 和 1.0 之间的值,等于 (rank - 1)/(partition-rows - 1),其中 rank 是内置窗口函数 rank() 返回的值,partition-rows 是分区中的总行数。如果分区中只有一行,则此函数返回 0.0。 () The cumulative distribution. Calculated as row-number/partition-rows, where row-number is the value returned by row_number() for the last peer in the group and partition-rows the number of rows in the partition. - + () 累积分布。计算方法为 row-number/partition-rows,其中 row-number 是 row_number() 为组中最后一个同级返回的值,partition-rows 是分区中的行数。 @@ -8407,17 +7005,17 @@ Use of this function must be authorized from Preferences. (expr) This built-in window function calculates the window frame for each row in the same way as an aggregate window function. It returns the value of expr evaluated against the first row in the window frame for each row. - + (表达式) 此内置窗口函数以与聚合窗口函数相同的方式计算每行的窗口框架。它返回针对每行窗口框架中的第一行计算的表达式的值。 (expr) This built-in window function calculates the window frame for each row in the same way as an aggregate window function. It returns the value of expr evaluated against the last row in the window frame for each row. - + (表达式) 此内置窗口函数以与聚合窗口函数相同的方式计算每行的窗口框架。它返回针对每行窗口框架中的最后一行计算的表达式的值。 (expr,N) This built-in window function calculates the window frame for each row in the same way as an aggregate window function. It returns the value of expr evaluated against the row N of the window frame. Rows are numbered within the window frame starting from 1 in the order defined by the ORDER BY clause if one is present, or in arbitrary order otherwise. If there is no Nth row in the partition, then NULL is returned. - + (表达式,N) 此内置窗口函数以与聚合窗口函数相同的方式计算每行的窗口框架。它返回针对窗口框架中第 N 行计算的表达式的值。如果存在 ORDER BY 子句,则窗口框架中的行按定义的顺序从 1 开始编号,否则按任意顺序编号。如果分区中没有第 N 行,则返回 NULL。 @@ -8437,28 +7035,28 @@ Use of this function must be authorized from Preferences. (X) Return the hyperbolic arcsine of X. - + (X) 返回 X 的双曲反正弦值。 (X) Return the arctangent of X. The result is in radians. - + (X) 返回 X 的反正切值。结果以弧度表示。 (X,Y) Return the arctangent of Y/X. The result is in radians. The result is placed into correct quadrant depending on the signs of X and Y. - + (X,Y) 返回 Y/X 的反正切值。结果以弧度表示。根据 X 和 Y 的符号将结果放置在正确的象限中。 (X) Return the hyperbolic arctangent of X. - + (X) 返回 X 的双曲反正切值。 (X) Return the first representable integer value greater than or equal to X. For positive values of X, this routine rounds away from zero. For negative values of X, this routine rounds toward zero. - + (X) 返回大于或等于 X 的第一个可表示的整数值。对于正值 X,此例程向远离零的方向舍入。对于负值 X,此例程向接近零的方向舍入。 @@ -8468,43 +7066,43 @@ Use of this function must be authorized from Preferences. (X) Return the hyperbolic cosine of X. - + (X) 返回 X 的双曲余弦值。 (X) Convert value X from radians into degrees. - + (X) 将 X 值从弧度转换为度数。 (X) Compute e (Euler's number, approximately 2.71828182845905) raised to the power X. - + (X) 计算 e(欧拉数,约为 2.71828182845905)的 X 次幂。 (X) Return the first representable integer value less than or equal to X. For positive numbers, this function rounds toward zero. For negative numbers, this function rounds away from zero. - + (X) 返回小于或等于 X 的第一个可表示的整数值。对于正数,此函数向零舍入。对于负数,此函数向远离零的方向舍入。 (X) Return the natural logarithm of X. - + (X) 返回 X 的自然对数。 (B,X) Return the base-B logarithm of X. - + (B,X) 返回 X 的以 B 为底的对数。 (X) Return the base-10 logarithm for X. - + (X) 返回 X 的以 10 为底的对数。 (X) Return the logarithm base-2 for the number X. - + (X) 返回数 X 的以 2 为底的对数。 @@ -8535,27 +7133,27 @@ Use of this function must be authorized from Preferences. (X) Return the hyperbolic sine of X. - + (X) 返回 X 的双曲正弦值 (X) Return the square root of X. NULL is returned if X is negative. - + (X) 返回 X 的平方根。如果 X 为负数,则返回 NULL。 (X) Return the tangent of X. X is in radians. - + (X) 返回 X 的正切值。X 以弧度为单位。 (X) Return the hyperbolic tangent of X. - + (X) 返回 X 的双曲正切值。 (X) Return the representable integer in between X and 0 (inclusive) that is furthest away from zero. Or, in other words, return the integer part of X, rounding toward zero. - + (X) 返回 X 和 0(包括 0)之间最远离 0 的可表示整数。换句话说,返回 X 的整数部分,向零舍入。 @@ -8571,32 +7169,32 @@ Use of this function must be authorized from Preferences. 正在加载... - + References %1(%2) Hold %3Shift and click to jump there 引用 %1(%2) 按住 %3Shift 并点击以跳转 - + Error changing data: %1 更改数据库时出错: %1 - + retrieving list of columns 正在检索列的列表 - + Fetching data... 正在拉取数据... - - + + Cancel 取消 @@ -8933,12 +7531,12 @@ Hold %3Shift and click to jump there - <html><head/><body><p>This button creates a new record in the database. Hold the mouse button to open a pop-up menu of different options:</p><ul><li><span style=" font-weight:600;">New Record</span>: insert a new record with default values in the database.</li><li><span style=" font-weight:600;">Insert Values...</span>: open a dialog for entering values before they are inserted in the database. This allows to enter values acomplishing the different constraints. This dialog is also open if the <span style=" font-weight:600;">New Record</span> option fails due to these constraints.</li></ul></body></html> + <html><head/><body><p>This button creates a new record in the database. Hold the mouse button to open a pop-up menu of different options:</p><ul><li><span style=" font-weight:600;">New Record</span>: insert a new record with default values in the database.</li><li><span style=" font-weight:600;">Insert Values...</span>: open a dialog for entering values before they are inserted in the database. This allows to enter values accomplishing the different constraints. This dialog is also open if the <span style=" font-weight:600;">New Record</span> option fails due to these constraints.</li></ul></body></html> <html><head/><body><p>此按钮在数据库中创建新记录。按住鼠标按钮以打开菜单选择不同选项:</p><ul><li><span style=" font-weight:600;">新记录</span>: 用默认值插入一条新记录到数据库中。</li><li><span style=" font-weight:600;">插入值...</span>: 打开对话框编辑要插入的值。可以输入满足约束的值。如果 <span style=" font-weight:600;">新记录</span> 选项失败,对话框也会打开。</li></ul></body></html> - + Delete Record 删除记录 @@ -9015,7 +7613,7 @@ Hold %3Shift and click to jump there - <html><head/><body><p>This popup menu provides the following options applying to the currently browsed and filtered table:</p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Export to CSV: this option exports the data of the browsed table as currently displayed (after filters, display formats and order column) to a CSV file.</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Save as view: this option saves the current setting of the browsed table (filters, display formats and order column) as an SQL view that you can later browse or use in SQL statements.</li></ul></body></html> + <html><head/><body><p>This pop-up menu provides the following options applying to the currently browsed and filtered table:</p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Export to CSV: this option exports the data of the browsed table as currently displayed (after filters, display formats and order column) to a CSV file.</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Save as view: this option saves the current setting of the browsed table (filters, display formats and order column) as an SQL view that you can later browse or use in SQL statements.</li></ul></body></html> <html><head/><body><p>此菜单提供以下可应用到当前浏览、过滤的表的选项:</p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">导出到CSV: 导出当前浏览、过滤的表的数据 (过滤后,显示格式和列的顺序) 到一个CSV文件。</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">保存为视图: 此选项保存当前浏览表格的设置 (过滤,显示格式和列的顺序) 为SQL视图,之后可以再用SQL语句浏览。</li></ul></body></html> @@ -9040,7 +7638,7 @@ Hold %3Shift and click to jump there - + Set encoding 设置编码 @@ -9306,96 +7904,96 @@ Hold %3Shift and click to jump there . Sum: %1; Average: %2; Min: %3; Max: %4 - + Conditional formats for "%1" "%1" 的条件格式 - + determining row count... 正在决定行数... - + %L1 - %L2 of >= %L3 %L1 - %L2 / 至少 %L3 - + %L1 - %L2 of %L3 %L1 - %L2 / %L3 - + (clipped at %L1 rows) (%L1 行的一部分) - + Please enter a pseudo-primary key in order to enable editing on this view. This should be the name of a unique column in the view. 请输入一个伪主键以在当前视图启用编辑。这需要是视图中的一个满足唯一性的列的名字。 - + Delete Records 删除记录 - + Duplicate records 重复记录 - + Duplicate record 重复的记录 - + Ctrl+" - + Adjust rows to contents 按内容调整行高 - + Error deleting record: %1 删除记录时出错: %1 - + Please select a record first 请首先选择一条记录 - + Please choose a new encoding for all tables. 请为所有表选择新的编码。 - + Please choose a new encoding for this table. 请为此表选择新的编码。 - + %1 Leave the field empty for using the database encoding. %1 留空此字段以使用数据库默认编码。 - + This encoding is either not valid or not supported. 这种编码非法或者不支持。 - + %1 replacement(s) made. 进行了 %1 次替换。 @@ -9423,24 +8021,6 @@ Leave the field empty for using the database encoding. 设定数据浏览器的新名称。被“&&”标记的字符可作为键盘快捷键的字符。 - - UndoStack - - - Inserting %1 bytes - - - - - Delete %1 chars - - - - - Overwrite %1 chars - - - VacuumDialog diff --git a/src/translations/sqlb_zh_TW.ts b/src/translations/sqlb_zh_TW.ts index 9b65e5d7b..384896c64 100644 --- a/src/translations/sqlb_zh_TW.ts +++ b/src/translations/sqlb_zh_TW.ts @@ -15,7 +15,7 @@ - <html><head/><body><p>DB Browser for SQLite is an open source, freeware visual tool used to create, design and edit SQLite database files.</p><p>It is bi-licensed under the Mozilla Public License Version 2, as well as the GNU General Public License Version 3 or later. You can modify or redistribute it under the conditions of these licenses.</p><p>See <a href="https://www.gnu.org/licenses/gpl.html"><span style=" text-decoration: underline; color:#0000ff;">http://www.gnu.org/licenses/gpl.html</span></a> and <a href="https://www.mozilla.org/MPL/2.0/index.txt"><span style=" text-decoration: underline; color:#0000ff;">https://www.mozilla.org/MPL/2.0/index.txt</span></a> for details.</p><p>For more information on this program please visit our website at: <a href="https://sqlitebrowser.org"><span style=" text-decoration: underline; color:#0000ff;">http://sqlitebrowser.org</span></a></p><p><span style=" font-size:small;">This software uses the GPL/LGPL Qt Toolkit from </span><a href="http://qt-project.org/"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://qt-project.org/</span></a><span style=" font-size:small;"><br/>See </span><a href="https://doc.qt.io/qt-5/licensing.html"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://qt-project.org/doc/qt-5/licensing.html</span></a><span style=" font-size:small;"> for licensing terms and information.</span></p><p><span style=" font-size:8pt;">We use the nalgeon/sqlean library for SQLite extensions support.<br/>This library is licensed under the MIT license, see the following for more information:<br/></span><a href="https://github.com/nalgeon/sqlean"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">https://github.com/nalgeon/sqlean</span></a></p><p><span style=" font-size:small;">It also uses the Pastel SVG icon set by Michael Buckley under a Creative Commons Attribution Share Alike 4.0 license.<br/>See </span><a href="https://codefisher.org/pastel-svg/"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://codefisher.org/pastel-svg/</span></a><span style=" font-size:small;"> for details.</span></p></body></html> + <html><head/><body><p>DB Browser for SQLite is an open source, freeware visual tool used to create, design and edit SQLite database files.</p><p>It is bi-licensed under the Mozilla Public License Version 2, as well as the GNU General Public License Version 3 or later. You can modify or redistribute it under the conditions of these licenses.</p><p>See <a href="https://www.gnu.org/licenses/gpl.html"><span style=" text-decoration: underline; color:#0000ff;">https://www.gnu.org/licenses/gpl.html</span></a> and <a href="https://www.mozilla.org/MPL/2.0/index.txt"><span style=" text-decoration: underline; color:#0000ff;">https://www.mozilla.org/MPL/2.0/index.txt</span></a> for details.</p><p>For more information on this program please visit our website at: <a href="https://sqlitebrowser.org"><span style=" text-decoration: underline; color:#0000ff;">https://sqlitebrowser.org</span></a></p><p><span style=" font-size:small;">This software uses the GPL/LGPL Qt Toolkit from </span><a href="https://qt-project.org/"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://qt-project.org/</span></a><span style=" font-size:small;"><br/>See </span><a href="https://doc.qt.io/qt-5/licensing.html"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://doc.qt.io/qt-5/licensing.html</span></a><span style=" font-size:small;"> for licensing terms and information.</span></p><p><span style=" font-size:8pt;">We use the nalgeon/sqlean library for SQLite extensions support.<br/>This library is licensed under the MIT license, see the following for more information:<br/></span><a href="https://github.com/nalgeon/sqlean"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">https://github.com/nalgeon/sqlean</span></a></p><p><span style=" font-size:small;">It also uses the Pastel SVG icon set by Michael Buckley under a Creative Commons Attribution Share Alike 4.0 license.<br/>See </span><a href="https://codefisher.org/pastel-svg/"><span style=" font-size:small; text-decoration: underline; color:#0000ff;">https://codefisher.org/pastel-svg/</span></a><span style=" font-size:small;"> for details.</span></p></body></html> @@ -285,36 +285,36 @@ - Invalid option/non-existant file: %1 + Invalid option/non-existent file: %1 無效選項或不存在的檔案:%1 - + SQLite Version SQLite 版本 - + SQLCipher Version %1 (based on SQLite %2) SQLCipher 版本 %1(基於 SQLite %2) - + DB Browser for SQLite Version %1. DB Browser for SQLite 版本 %1。 - + Last commit hash when built: %1 建置時最後提交的雜湊:%1 - + Built for %1, running on %2 為 %1 建置,執行於 %2 - + Qt Version %1 Qt 版本 %1 @@ -392,7 +392,7 @@ 原始金鑰 - + Please set a key to encrypt the database. Note that if you change any of the other, optional, settings you'll need to re-enter them as well every time you open the database file. Leave the password fields empty to disable the encryption. @@ -403,7 +403,7 @@ The encryption process might take some time and you should have a backup copy of 加密過程可能需要一些時間,您應該要有資料庫的備份!在修改加密之前,未儲存的變更將會被套用。 - + Please enter the key used to encrypt the database. If any of the other settings were altered for this database file you need to provide this information as well. 請輸入用於加密資料庫的金鑰。 @@ -428,92 +428,92 @@ If any of the other settings were altered for this database file you need to pro 選擇欄位 '%1' 的顯示格式,該格式將在顯示每個值之前套用。 - + Default 預設 - + Decimal number 十進位數字 - + Exponent notation 指數表示法 - + Hex blob 十六進位制 BLOB - + Hex number 十六進位數字 - + Apple NSDate to date Apple NSDate 轉換為日期 - + Java epoch (milliseconds) to date Java epoch (毫秒)轉換為日期 - + .NET DateTime.Ticks to date .NET DateTime.Ticks 轉換為日期 - + Julian day to date 儒略日轉換為日期 - + Unix epoch to local time Unix epoch 轉換為本地時間 - + WebKit / Chromium epoch to date - + WebKit / Chromium epoch to local time - + Date as dd/mm/yyyy 日期格式為 dd/mm/yyyy - + Lower case 小寫 - + Binary GUID to text 二進位制 GUID 轉換為文字 - + SpatiaLite Geometry to SVG SpatiaLite 幾何資料轉 SVG - + Custom display format must contain a function call applied to %1 自訂顯示格式必須包含套用於 %1 的函式呼叫 - + Error in custom display format. Message from database engine: %1 @@ -522,37 +522,37 @@ If any of the other settings were altered for this database file you need to pro %1 - + Custom display format must return only one column but it returned %1. 自訂顯示格式只能回傳一個欄位,但它回傳了 %1。 - + Octal number 八進位數字 - + Round number 四捨五入數字 - + Unix epoch to date Unix epoch 轉換為日期 - + Upper case 大寫 - + Windows DATE to date Windows DATE 轉換為日期 - + Custom 自訂 @@ -679,166 +679,166 @@ If any of the other settings were altered for this database file you need to pro DBBrowserDB - + Please specify the database name under which you want to access the attached database 請指定您要存取附加資料庫的資料庫名稱 - + Invalid file format 無效的檔案格式 - + Do you want to save the changes made to the database file %1? 您是否想儲存對資料庫檔案 %1 做出的修改? - + Exporting database to SQL file... 正在匯出資料庫到 SQL 檔案... - - + + Cancel 取消 - + Executing SQL... 正在執行 SQL... - + Action cancelled. 操作已取消。 - + Do you really want to close this temporary database? All data will be lost. 您確定要關閉此臨時資料庫嗎?所有資料將會遺失。 - + Database didn't close correctly, probably still busy 資料庫未正確關閉,可能仍在忙碌中 - + Cannot open destination file: '%1' 無法開啟目標檔案:'%1' - - + + Cannot backup to file: '%1'. Message: %2 無法備份到檔案:'%1'。訊息:%2 - + The database is currently busy: 資料庫目前忙碌中: - + Do you want to abort that other operation? 您是否要中止其他操作? - - + + No database file opened 沒有開啟的資料庫檔案 - - + + Error in statement #%1: %2. Aborting execution%3. 陳述式 #%1 中的錯誤:%2。 正在中止執行%3。 - - + + and rolling back 並正在回滾 - + didn't receive any output from %1 未從 %1 收到任何輸出 - + could not execute command: %1 無法執行命令:%1 - + Cannot delete this object 無法刪除此物件 - + Cannot set data on this object 無法在此物件上設定資料 - - + + A table with the name '%1' already exists in schema '%2'. 在結構 '%2' 中已存在名為 '%1' 的資料表。 - + No table with name '%1' exists in schema '%2'. 在結構 '%2' 中不存在名為 '%1' 的資料表。 - - + + Cannot find column %1. 找不到列 %1。 - + Creating savepoint failed. DB says: %1 建立儲存點失敗。資料庫顯示:%1 - + Renaming the column failed. DB says: %1 重新命名欄位失敗。資料庫顯示: %1 - - + + Releasing savepoint failed. DB says: %1 釋放儲存點失敗。資料庫顯示:%1 - + Creating new table failed. DB says: %1 建立新資料表失敗。資料庫顯示:%1 - + Copying data to new table failed. DB says: %1 複製資料到新資料表失敗。資料庫顯示: %1 - + Deleting old table failed. DB says: %1 刪除舊資料表失敗。資料庫顯示:%1 - + Error renaming table '%1' to '%2'. Message from database engine: %3 @@ -847,12 +847,12 @@ Message from database engine: %3 - + could not get list of db objects: %1 無法取得資料庫物件的列表:%1 - + Restoring some of the objects associated with this table failed. This is most likely because some column names changed. Here's the SQL statement which you might want to fix and execute manually: @@ -861,32 +861,32 @@ Message from database engine: - + could not get list of databases: %1 無法取得資料庫的列表:%1 - + Error loading extension: %1 載入擴充套件時出現錯誤: %1 - + Error loading built-in extension: %1 - + could not get column information 無法取得列資訊 - + Error setting pragma %1 to %2: %3 設定 pragma %1 為 %2 時出現錯誤: %3 - + File not found. 找不到檔案。 @@ -1948,7 +1948,7 @@ All data currently stored in this field will be lost. ExtendedScintilla - + Ctrl+H Ctrl+H @@ -1959,22 +1959,22 @@ All data currently stored in this field will be lost. - + Ctrl+P Ctrl+P - + Find... 尋找... - + Find and Replace... 尋找和取代... - + Print... 列印... @@ -1982,129 +1982,129 @@ All data currently stored in this field will be lost. ExtendedTableWidget - + Use as Exact Filter 作為精確篩選使用 - + Containing 包含 - + Not containing 不包含 - + Not equal to 不等於 - + Greater than 大於 - + Less than 小於 - + Greater or equal 大於或等於 - + Less or equal 小於或等於 - + Between this and... 介於此和... - + Regular expression 正規表達式 - + Edit Conditional Formats... 編輯條件格式... - + Set to NULL 設定為 NULL - + Cut 剪下 - + Copy 複製 - + Copy with Headers 連同標頭複製 - + Copy as SQL 複製為 SQL - + Paste 貼上 - + Print... 列印... - + Use in Filter Expression 在篩選表達式中使用 - + Alt+Del Alt+Del - + Ctrl+Shift+C Ctrl+Shift+C - + Ctrl+Alt+C Ctrl+Alt+C - + The content of the clipboard is bigger than the range selected. Do you want to insert it anyway? 剪貼簿的內容大於所選的範圍。 您仍然要插入嗎? - + <p>Not all data has been loaded. <b>Do you want to load all data before selecting all the rows?</b><p><p>Answering <b>No</b> means that no more data will be loaded and the selection will not be performed.<br/>Answering <b>Yes</b> might take some time while the data is loaded but the selection will be complete.</p>Warning: Loading all the data might require a great amount of memory for big tables. <p>並未載入所有資料。<b>您是否要在選擇所有行之前載入所有資料?</b><p><p>回答 <b>否</b> 表示將不再載入更多資料,並且不會進行選擇。<br/>回答 <b>是</b> 可能需要一些時間來載入資料,但選擇將會完成。</p>警告:載入所有資料可能需要大量記憶體來處理大型資料表。 - + Cannot set selection to NULL. Column %1 has a NOT NULL constraint. 無法將選擇設定為 NULL。欄位 %1 有一個 NOT NULL 條件。 @@ -2156,12 +2156,12 @@ Do you want to insert it anyway? FilterLineEdit - + Filter 篩選 - + These input fields allow you to perform quick filters in the currently selected table. By default, the rows containing the input text are filtered out. The following operators are also supported: @@ -2188,92 +2188,92 @@ x~y 範圍:介於 x 和 y 之間的值 /regexp/ 符合正規表達式的值 - + Clear All Conditional Formats 清除所有條件格式 - + Use for Conditional Format 用於條件格式 - + Edit Conditional Formats... 編輯條件格式... - + Set Filter Expression 設定篩選表達式 - + What's This? 這是什麼? - + Is NULL 是 NULL - + Is not NULL 不是 NULL - + Is empty 是空的 - + Is not empty 不是空的 - + Not containing... 不包含... - + Equal to... 等於... - + Not equal to... 不等於... - + Greater than... 大於... - + Less than... 小於... - + Greater or equal... 大於或等於... - + Less or equal... 小於或等於... - + In range... 在範圍內... - + Regular expression... 正規表達式... @@ -2496,7 +2496,7 @@ x~y 範圍:介於 x 和 y 之間的值 - + Tab Tab @@ -2639,7 +2639,7 @@ x~y 範圍:介於 x 和 y 之間的值 - + Deselect All 全部取消選取 @@ -2649,52 +2649,52 @@ x~y 範圍:介於 x 和 y 之間的值 符合相似 - + Select All 全部選取 - + There is already a table named '%1' and an import into an existing table is only possible if the number of columns match. 已存在名為 '%1' 的表格,只有在欄位數量符合的情況下才能匯入到現有表格。 - + There is already a table named '%1'. Do you want to import the data into it? 已存在名為 '%1' 的表格。您要將資料匯入其中嗎? - + Creating restore point failed: %1 建立還原點失敗:%1 - + Creating the table failed: %1 建立表格失敗:%1 - + importing CSV 正在匯入 CSV - + Could not prepare INSERT statement: %1 無法準備 INSERT 陳述式:%1 - + Unexpected end of file. Please make sure that you have configured the correct quote characters and the file is not malformed. 檔案意外結束。請確保您已設定正確的引號字元,並且檔案格式正確。 - + Importing the file '%1' took %2ms. Of this %3ms were spent in the row function. 匯入檔案 '%1' 花費了 %2ms。其中 %3ms 花在行函式上。 - + Inserting row failed: %1 插入資料列失敗%1 @@ -2702,17 +2702,17 @@ x~y 範圍:介於 x 和 y 之間的值 MainWindow - + toolBar1 工具列1 - + Opens the SQLCipher FAQ in a browser window 在瀏覽器視窗中開啟 SQLCipher 常見問題 - + Export one or more table(s) to a JSON file 匯出一個或多個資料表到 JSON 檔案 @@ -2722,12 +2722,12 @@ x~y 範圍:介於 x 和 y 之間的值 DB Browser for SQLite - + Open an existing database file in read only mode 以唯讀模式開啟現有的資料庫檔案 - + &File 檔案(&F) @@ -2753,314 +2753,314 @@ x~y 範圍:介於 x 和 y 之間的值 編輯 P&ragmas - - + + E&xecute SQL This has to be equal to the tab title in all the main tabs 執&行 SQL - + &Import 匯入(&I) - + &Export 匯出(&E) - + &Recent Files 最近使用的檔案 - + &Edit 編輯(&E) - + &View 檢視(&V) - + &Help 幫助(&H) - + Edit Database &Cell 編輯資料庫儲存格(&C) - + DB Sche&ma 資料庫結構(&M) - + &Remote 遠端(&R) - - + + Execute current line 執行目前這一行 - + This button executes the SQL statement present in the current editor line 這個按鈕執行目前編輯器這一行的 SQL 陳述式 - + Shift+F5 Shift+F5 - + Sa&ve Project 儲存專案(&V) - - + + Save SQL file as 將 SQL 檔案儲存為 - + This button saves the content of the current SQL editor tab to a file 這個按鈕將目前 SQL 編輯器分頁的內容儲存到一個檔案 - + &Browse Table 瀏覽資料表(&B) - + Copy Create statement 複製建立陳述式 - + Copy the CREATE statement of the item to the clipboard 將項目的 CREATE 陳述式複製到剪貼簿 - + User 使用者 - + Application 應用程式 - + &Clear 清除(&C) - + &New Database... 新建資料庫(&N)... - - + + Create a new database file 建立一個新的資料庫檔 - + This option is used to create a new database file. 這個選項用於建立一個新的資料庫檔案。 - + Ctrl+N Ctrl+N - - + + &Open Database... 開啟資料庫(&O)... - - - - - + + + + + Open an existing database file 開啟一個現有的資料庫檔 - - - + + + This option is used to open an existing database file. 這個選項用於開啟一個現有的資料庫檔案。 - + Ctrl+O Ctrl+O - + &Close Database 關閉資料庫(&C) - - + + Ctrl+W Ctrl+W - - + + Revert database to last saved state 把資料庫退回到先前儲存的狀態 - + This option is used to revert the current database file to its last saved state. All changes made since the last save operation are lost. 這個選項用於倒退目前的資料庫檔為它最後的儲存狀態。從最後儲存操作開始做出的所有修改將會遺失。 - - + + Write changes to the database file 把修改寫入到資料庫檔 - + This option is used to save changes to the database file. 這個選項用於儲存修改到資料庫檔案。 - + Ctrl+S Ctrl+S - + Compact the database file, removing space wasted by deleted records 壓縮資料庫檔案,透過刪除記錄去掉浪費的空間 - - + + Compact the database file, removing space wasted by deleted records. 壓縮資料庫檔案,透過刪除記錄去掉浪費的空間。 - + E&xit 退出(&X) - + Ctrl+Q Ctrl+Q - + Import data from an .sql dump text file into a new or existing database. 從一個 .sql 轉儲文字檔中匯入資料到一個新的或已有的資料庫。 - + This option lets you import data from an .sql dump text file into a new or existing database. SQL dump files can be created on most database engines, including MySQL and PostgreSQL. 這個選項讓您從一個 .sql 轉儲文字檔中匯入資料到一個新的或現有的資料庫。SQL 轉儲檔可以在大多數資料庫引擎上建立,包括 MySQL 和 PostgreSQL。 - + Open a wizard that lets you import data from a comma separated text file into a database table. 開啟一個引導精靈讓您從一個逗號間隔的文字檔匯入資料到一個資料庫資料表中。 - + Open a wizard that lets you import data from a comma separated text file into a database table. CSV files can be created on most database and spreadsheet applications. 開啟一個引導精靈讓您從一個逗號間隔的文字檔匯入資料到一個資料庫資料表中。CSV 檔可以在大多數資料庫和試算資料表應用程式上建立。 - + Export a database to a .sql dump text file. 匯出一個資料庫導一個 .sql 轉儲文字檔案。 - + This option lets you export a database to a .sql dump text file. SQL dump files contain all data necessary to recreate the database on most database engines, including MySQL and PostgreSQL. 這個選項讓您匯出一個資料庫導一個 .sql 轉儲文字檔案。SQL 轉儲檔包含在大多數資料庫引擎上(包括 MySQL 和 PostgreSQL)重新建立資料庫所需的所有資料。 - + Export a database table as a comma separated text file. 匯出一個資料庫資料表為逗號間隔的文字檔案。 - + Export a database table as a comma separated text file, ready to be imported into other database or spreadsheet applications. 匯出一個資料庫資料表為逗號間隔的文字檔,準備好被匯入到其他資料庫或試算資料表應用程式。 - + Open the Create Table wizard, where it is possible to define the name and fields for a new table in the database 開啟「建立資料表」引導精靈,在那裡可以定義在資料庫中的一個新資料表的名稱和欄位 - + Open the Delete Table wizard, where you can select a database table to be dropped. 開啟「刪除資料表」引導精靈,在那裡您可以選擇要丟棄的一個資料庫資料表。 - + Open the Create Index wizard, where it is possible to define a new index on an existing database table. 開啟「建立索引」引導精靈,在那裡可以在一個現有的資料庫資料表上定義一個新索引。 - + &Preferences... 偏好設定(&P)... - - + + Open the preferences window. 開啟偏好設定視窗。 - + &DB Toolbar 資料庫工具列(&D) - + Shows or hides the Database toolbar. 顯示或隱藏資料庫工具列。 - + Shift+F1 Shift+F1 - + &Recently opened 最近開啟(&R) - + Ctrl+T Ctrl+T @@ -3073,92 +3073,251 @@ You can drag SQL statements from an object row and drop them into other applicat 您可以從物件列中拖曳 SQL 陳述式,並將它們拖曳到其他應用程式或另一個「DB Browser for SQLite」中。 - + Un/comment block of SQL code 註解/取消註解 SQL 程式碼區塊 - + Un/comment block 註解/取消註解區塊 - + Comment or uncomment current line or selected block of code 對這一行或選定區塊的程式碼進行註解或取消註解 - + Comment or uncomment the selected lines or the current line, when there is no selection. All the block is toggled according to the first line. 對選取的行數或目前這一行(當沒有選取任何東西時)註解或取消註解。所有的區塊將根據第一行進行切換。 - + Ctrl+/ Ctrl+/ - + Stop SQL execution 停止 SQL 執行 - + Stop execution 停止執行 - + Stop the currently running SQL script 停止目前正在執行的 SQL 腳本 - + Warning: this pragma is not readable and this value has been inferred. Writing the pragma might overwrite a redefined LIKE provided by an SQLite extension. 警告:這個 pragma 是不可讀的,並且這個值已經被推斷出來。寫入 pragma 可能會覆蓋由 SQLite 擴充套件提供的已重新定義的 LIKE。 - + + Temp Store + + + + + Secure Delete + + + + + Case Sensitive Like + + + + + Journal Mode + + + + + Journal Size Limit + + + + + Recursive Triggers + + + + + Page Size + + + + + Foreign Keys + 外鍵 + + + + Auto Vacuum + + + + + Max Page Count + + + + + Checkpoint Full FSYNC + + + + + + Off + + + + + + Normal + + + + + + Full + + + + + Default + 預設 + + + + File + 檔案 + + + + + Memory + + + + + Delete + + + + + Truncate + + + + + Persist + + + + + WAL + + + + + Exclusive + + + + + Automatic Index + + + + + Ignore Check Constraints + + + + + Full FSYNC + + + + + WAL Auto Checkpoint + + + + + User Version + + + + + Synchronous + + + + + None + + + + + Incremental + + + + + Locking Mode + + + + Too&ls 工具(&T) - + DB Toolbar 資料庫工具列 - + SQL &Log SQL 日誌(&L) - + Show S&QL submitted by 顯示提交的 SQL(&Q) - + Error Log 錯誤日誌 - + This button clears the contents of the SQL logs 這個按鈕清除 SQL 日誌的內容 - + This panel lets you examine a log of all SQL commands issued by the application or by yourself 這個面板讓您檢視由應用程式或您自己發出的所有 SQL 命令的日誌 - + &Plot 繪圖(&P) - + This is the structure of the opened database. You can drag multiple object names from the Name column and drop them into the SQL editor and you can adjust the properties of the dropped names using the context menu. This would help you in composing SQL statements. You can drag SQL statements from the Schema column and drop them into the SQL editor or into other applications. @@ -3168,707 +3327,707 @@ You can drag SQL statements from the Schema column and drop them into the SQL ed 您可以從結構欄位中拖曳 SQL 陳述式,並將它們拖曳到 SQL 編輯器或其他應用程式。 - - + + Project Toolbar 專案工具列 - + Extra DB toolbar 額外的資料庫工具列 - - - + + + Close the current database file 關閉目前的資料庫檔案 - + &New Database &新建資料庫 - + This button closes the connection to the currently open database file 這個按鈕會關閉目前開啟的資料庫檔案的連線 - - + + Ctrl+F4 Ctrl+F4 - + &Revert Changes &還原變更 - + &Undo &復原 - - + + Undo last change to the database 復原資料庫的最後一次變更 - + This action undoes the last change performed to the database in the Database Browser or in Execute SQL. Redoing is not possible. 這個動作會復原在 Database Browser 或執行 SQL 中對資料庫進行的最後一次變更。無法重做。 - + &Write Changes 寫入變更(&W) - + Compact &Database... 壓縮資料庫(&D)... - + Open the Modify Table wizard, where it is possible to rename an existing table. It is also possible to add or delete fields from a table, as well as modify field names and types. 開啟「修改表格」精靈,在此您可以重新命名已存在的表格。您也可以新增或刪除表格中的欄位,以及修改欄位名稱和類型。 - + Execute all/selected SQL 執行所有/選取的 SQL - + This button executes the currently selected SQL statements. If no text is selected, all SQL statements are executed. 這個按鈕執行目前選取的 SQL 陳述式。如果沒有選取任何文字,則執行所有 SQL 陳述式。 - + Ctrl+Shift+T Ctrl+Shift+T - + &Load Extension... 載入擴充套件(&L)... - + Execute line 執行這一行 - + &Wiki 維基(&W) - + F1 F1 - + Bug &Report... 錯誤回報(&R)... - + Feature Re&quest... 功能請求(&Q)... - + Web&site 網站(&S) - + &Donate on Patreon... 在 Patreon 上贊助(&D)... - + &Save Project 儲存專案(&S) - + Open &Project... 開啟專案(&P)... - + Open &Project 開啟專案(&P) - + &Attach Database... 附加資料庫(&A)... - - + + Add another database file to the current database connection 將另一個資料庫檔案加到目前的資料庫連線 - + This button lets you add another database file to the current database connection 這個按鈕讓您將另一個資料庫檔案加到目前的資料庫連線 - + &Set Encryption... 設定加密(&S)... - + SQLCipher &FAQ SQLCipher 常見問題(&F) - + Table(&s) to JSON... 資料表(&S)轉換為 JSON... - + Open Data&base Read Only... 以唯讀模式開啟資料庫(&B)... - + Ctrl+Shift+O Ctrl+Shift+O - + Save results 儲存結果 - + Save the results view 儲存結果顯示 - + This button lets you save the results of the last executed query 這個按鈕讓您儲存最後執行查詢的結果 - - + + Find text in SQL editor 在 SQL 編輯器中尋找文字 - + Find 尋找 - + This button opens the search bar of the editor 這個按鈕開啟編輯器的搜尋列 - + Ctrl+F Ctrl+F - - + + Find or replace text in SQL editor 在 SQL 編輯器中尋找或取代文字 - + Find or replace 尋找或取代 - + This button opens the find/replace dialog for the current editor tab 這個按鈕開啟目前編輯器分頁的尋找/取代對話框 - + Ctrl+H Ctrl+H - + Export to &CSV 匯出為 &CSV - + Export to &JSON 匯出為 &JSON - + Save as &view 儲存為檢視表(&V) - + Save as view 儲存為檢視表 - + &Open Database &開啟資料庫 - + Drag && Drop SELECT Query 拖曳 && 放下 SELECT 查詢 - - + + When dragging fields from the same table or a single table, drop a SELECT query into the editor 當從同一資料表或單一資料表拖曳欄位時,將 SELECT 查詢放入編輯器 - + Browse Table 瀏覽資料表 - - + + Ctrl+Shift+W Ctrl+Shift+W - + Table from CSV data in Clipboard... 從剪貼簿中的 CSV 資料建立資料表... - + This treats the current clipboard contents as a CSV file and opens the same import wizard that is used for importing CSV data from a file. 將目前剪貼簿的內容視為 CSV 檔案,並開啟與從檔案匯入 CSV 資料相同的匯入精靈。 - + Show &Row Counts 顯示 &列計數 - + This shows the number of rows for each table and view in the database. 顯示資料庫中每個資料表和檢視表的列數。 - + Save Database &As... 另存資料庫 &為... - + Save the current database as a different file 將目前的資料庫另存為不同的檔案 - + Refresh 重新整理 - + Reload the database structure 重新載入資料庫結構 - + Shows or hides the Project toolbar. 顯示或隱藏專案工具列。 - + New &tab 新分頁(&T) - + Open SQL file(s) 開啟 SQL 檔案 - + This button opens files containing SQL statements and loads them in new editor tabs 這個按鈕開啟包含 SQL 陳述式的檔案,並在新的編輯器分頁中載入它們 - + This button lets you save all the settings associated to the open DB to a DB Browser for SQLite project file 這個按鈕讓您儲存所有與開啟的資料庫相關的設定到一個 DB Browser for SQLite 的專案檔 - + This button lets you open a DB Browser for SQLite project file 這個按鈕讓您開啟一個 DB Browser for SQLite 的專案檔 - + Extra DB Toolbar 額外的資料庫工具列 - + New In-&Memory Database 新建記憶體中的資料庫 - + Drag && Drop Qualified Names 拖曳並放下完全限定名稱 - - + + Use qualified names (e.g. "Table"."Field") when dragging the objects and dropping them into the editor 在拖曳物件並將其放入編輯器時,使用完全限定名稱(例如「Table」.「Field」) - + Drag && Drop Enquoted Names 拖曳並放下引號名稱 - - + + Use escaped identifiers (e.g. "Table1") when dragging the objects and dropping them into the editor 在拖曳物件並將其放入編輯器時,使用轉義識別符號(例如「Table1」) - + &Integrity Check &完整性檢查 - + Runs the integrity_check pragma over the opened database and returns the results in the Execute SQL tab. This pragma does an integrity check of the entire database. 在已開啟的資料庫上執行 integrity_check pragma,並在執行 SQL 標籤中回傳結果。此 pragma 對整個資料庫進行完整性檢查。 - + &Foreign-Key Check &外鍵檢查 - + Runs the foreign_key_check pragma over the opened database and returns the results in the Execute SQL tab 在已開啟的資料庫上執行 foreign_key_check pragma,並在執行 SQL 標籤中回傳結果 - + &Quick Integrity Check &快速完整性檢查 - + Run a quick integrity check over the open DB 對開啟的資料庫進行快速完整性檢查 - + Runs the quick_check pragma over the opened database and returns the results in the Execute SQL tab. This command does most of the checking of PRAGMA integrity_check but runs much faster. 在已開啟的資料庫上執行 quick_check pragma,並在執行 SQL 標籤中回傳結果。此命令執行 PRAGMA integrity_check 的大部分檢查,但執行速度更快。 - + &Optimize &最佳化 - + Attempt to optimize the database 嘗試最佳化資料庫 - + Runs the optimize pragma over the opened database. This pragma might perform optimizations that will improve the performance of future queries. 在已開啟的資料庫上執行 optimize pragma。此 pragma 可能會執行最佳化,以提高未來查詢的效能。 - - + + Print 列印 - + Print text from current SQL editor tab 列印目前 SQL 編輯器標籤中的文字 - + Open a dialog for printing the text in the current SQL editor tab 開啟一個對話框以列印目前 SQL 編輯器標籤中的文字 - + Print the structure of the opened database 列印已開啟的資料庫結構 - + Open a dialog for printing the structure of the opened database 開啟一個對話框以列印已開啟的資料庫結構 - + &Save Project As... &另存專案為... - - - + + + Save the project in a file selected in a dialog 在對話框中選擇的檔案中儲存專案 - + Save A&ll 全部儲存 - - - + + + Save DB file, project file and opened SQL files 儲存資料庫檔案、專案檔案和已開啟的 SQL 檔案 - + Ctrl+Shift+S Ctrl+Shift+S - + Close Pro&ject 關閉專案 - - + + Close project and database files and return to the initial state 關閉專案和資料庫檔案,並返回初始狀態 - + Ctrl+Shift+F4 Ctrl+Shift+F4 - - + + Detach Database 分離資料庫 - - + + Detach database file attached to the current database connection 分離目前資料庫連線所附加的資料庫檔案 - + &Database from SQL file... &從 SQL 檔案建立資料庫... - + &Table from CSV file... &從 CSV 檔案建立資料表... - + &Database to SQL file... &資料庫轉換為 SQL 檔案... - + &Table(s) as CSV file... &資料表轉換為 CSV 檔案... - + &Create Table... &建立資料表... - + &Delete Table... &刪除資料表... - + &Modify Table... &修改資料表... - + Create &Index... 建立 &索引... - + W&hat's This? 這是什麼? - + &About &關於 - + This button opens a new tab for the SQL editor 此按鈕將開啟 SQL 編輯器的新標籤 - + &Execute SQL 執行 SQL(&E) - - + + Save the current session to a file 儲存目前工作階段到檔案 - - + + Load a working session from a file 從一檔案載入工作階段 - - - + + + Save SQL file 儲存 SQL 檔案 - + Ctrl+E Ctrl+E - + Export as CSV file 匯出為 CSV 檔案 - + Export table as comma separated values file 將資料表匯出為逗號分隔值檔案 - + Ctrl+L Ctrl+L - - + + Ctrl+P Ctrl+P - + Database encoding 資料庫編碼 - - + + Choose a database file 選擇一個資料庫檔案 - + Ctrl+Return Ctrl+Return - + Ctrl+D Ctrl+D - + Ctrl+I Ctrl+I - + Reset Window Layout 重設視窗配置 - - The database is currenctly busy. + + The database is currently busy. 資料庫目前忙碌中。 - + Click here to interrupt the currently running query. 點選這裡中斷目前正在執行的查詢。 - + Encrypted 已加密 - + Database is encrypted using SQLCipher 資料庫已使用 SQLCipher 加密 - + Read only 唯讀 - + Database file is read only. Editing the database is disabled. 資料庫檔案是唯讀的。已停用編輯資料庫。 - + Could not open database file. Reason: %1 無法開啟資料庫檔案。 原因: %1 - - - + + + Choose a filename to save under 選擇一個要儲存的檔案名稱 - + Error while saving the database file. This means that not all changes to the database were saved. You need to resolve the following error first. %1 @@ -3877,302 +4036,302 @@ Reason: %1 %1 - + Do you want to save the changes made to SQL tabs in the project file '%1'? 您是否要儲存對專案檔案「%1」中的 SQL 分頁所做的變更? - + A new DB Browser for SQLite version is available (%1.%2.%3).<br/><br/>Please download at <a href='%4'>%4</a>. 有新版的 DB Browser for SQLite 可用 (%1.%2.%3)。<br/><br/>請在 <a href='%4'>%4</a> 下載。 - + DB Browser for SQLite project file (*.sqbpro) DB Browser for SQLite 專案檔案 (*.sqbpro) - + Error checking foreign keys after table modification. The changes will be reverted. 修改資料表後檢查外鍵時出現錯誤。將會還原變更。 - + This table did not pass a foreign-key check.<br/>You should run 'Tools | Foreign-Key Check' and fix the reported issues. 這個資料表未通過外鍵檢查。<br/>您應該執行「工具 | 外鍵檢查」並修正報告的問題。 - + Execution finished with errors. 執行完成並出現錯誤。 - + Execution finished without errors. 執行完成並未出現錯誤。 - + Are you sure you want to undo all changes made to the database file '%1' since the last save? 您是否確認您想撤銷從上次儲存以來對資料庫檔‘%1’做出的所有修改。? - + Choose a file to import 選擇要匯入的一個檔案 - + Text files(*.sql *.txt);;All files(*) 文字檔案(*.sql *.txt);;所有擋檔案(*) - + Do you want to create a new database file to hold the imported data? If you answer no we will attempt to import the data in the SQL file to the current database. 您是否想要建立一個新的資料庫檔案來儲存匯入的資料? 如果您選擇「否」,我們將嘗試將 SQL 檔中的資料匯入到目前的資料庫。 - + File %1 already exists. Please choose a different name. 檔案 %1 已存在。請選擇一個不同的名稱。 - + Error importing data: %1 匯入資料時出現錯誤: %1 - + Import completed. 匯入完成。 - + Delete View 刪除檢視表 - + Delete Trigger 刪除觸發器 - + Delete Index 刪除索引 - - + + Delete Table 刪除資料表 - + Setting PRAGMA values will commit your current transaction. Are you sure? 設定 PRAGMA 值將會提交您的目前交易。. 您確認嗎? - + In-Memory database 記憶體內部資料庫 - + Ctrl+Tab Ctrl+Tab - + Ctrl+Shift+Tab Ctrl+Shift+Tab - + Clear List 清除清單 - + Window Layout 視窗配置 - + Ctrl+Alt+0 Ctrl+Alt+0 - + Simplify Window Layout 簡化視窗配置 - - Shift+Alt+0 - Shift+Alt+0 + + Alt+Shift+0 + Alt+Shift+0 - + Dock Windows at Bottom 在底端停駐視窗 - + Dock Windows at Left Side 在左側停駐視窗 - + Dock Windows at Top 在頂端停駐視窗 - + Ctrl+Alt+W Ctrl+Alt+W - + Choose a database file to save under 選擇一個資料庫檔案進行儲存 - + Error while saving the database to the new file. 儲存資料庫到新檔案時發生錯誤。 - + Are you sure you want to delete the table '%1'? All data associated with the table will be lost. 您是否確認您想刪除資料表「%1」? 所有與資料表相關的資料將會遺失。 - + Are you sure you want to delete the view '%1'? 您是否確認您想刪除檢視表「%1」? - + Are you sure you want to delete the trigger '%1'? 您是否確認您想刪除觸發器「%1」? - + Are you sure you want to delete the index '%1'? 您是否確認您想刪除索引「%1」? - + Error: could not delete the table. 錯誤:無法刪除資料表。 - + Error: could not delete the view. 錯誤:無法刪除檢視表。 - + Error: could not delete the trigger. 錯誤:無法刪除觸發器。 - + Error: could not delete the index. 錯誤:無法刪除索引。 - + Message from database engine: %1 來自資料庫引擎的訊息: %1 - + Editing the table requires to save all pending changes now. Are you sure you want to save the database? 編輯表格前必須先儲存所有尚未完成的修改。 您確定要儲存這個資料庫嗎? - + Edit View %1 編輯檢視表 %1 - + Edit Trigger %1 編輯觸發器 %1 - + You are already executing SQL statements. Do you want to stop them in order to execute the current statements instead? Note that this might leave the database in an inconsistent state. 您已經在執行 SQL 陳述式。您是否要停止它們,以便改為執行目前的陳述式? 請注意,這可能會使資料庫處於不一致的狀態。 - + -- EXECUTING SELECTION IN '%1' -- -- 在「%1」中執行選取的部份 -- - + -- EXECUTING LINE IN '%1' -- -- 在「%1」中執行這一行 -- - + -- EXECUTING ALL IN '%1' -- -- 在「%1」中執行所有 -- - - + + At line %1: 在第 %1 行: - + Result: %1 結果:%1 - + Result: %2 結果:%2 - + Setting PRAGMA values or vacuuming will commit your current transaction. Are you sure? 設定 PRAGMA 值或清理將會提交您的目前交易。. 您確認嗎? - + Opened '%1' in read-only mode from recent file list 從最近的檔案列表中以唯讀模式開啟 '%1' - + Opened '%1' from recent file list 從最近的檔案列表中開啟 '%1' - + Select the action to apply to the dropped file(s). <br/>Note: only 'Import' will process more than one file. Note for translation: Although there is no %n in the original, you can use the numerus-form to adjust 'files(s)' and remove the note when n = 1. Including %n in the translation will also work. @@ -4180,220 +4339,220 @@ Are you sure? - + The statements in the tab '%1' are still executing. Closing the tab will stop the execution. This might leave the database in an inconsistent state. Are you sure you want to close the tab? 標籤 '%1' 中的指令仍在執行。關閉標籤將會停止執行。這可能會使資料庫處於不一致的狀態。您確定要關閉標籤嗎? - + DB file '%1' could not be opened 無法開啟資料庫檔案 '%1' - + This project file is using an old file format because it was created using DB Browser for SQLite version 3.10 or lower. Loading this file format is no longer fully supported. If you want to load it completely, please use DB Browser for SQLite version 3.12 to convert it to the new file format. 此專案檔案使用舊的檔案格式,因為它是使用 DB Browser for SQLite 3.10 版或更舊的版本建立的。我們已經不再完全支援載入此檔案格式。如果您想完全載入,請使用 DB Browser for SQLite 3.12 版將其轉換為新的檔案格式。 - + Table '%1' not found; settings ignored 找不到資料表 '%1';設定已忽略 - + -- Reference to file "%1" (not supported by this version) -- -- 指向檔案 "%1"(本版本不支援)-- - + Project saved to file '%1' 專案已儲存到檔案 '%1' - + Yes. Don't ask again 是的。不再詢問 - + This action will open a new SQL tab with the following statements for you to edit and run: 此動作將開啟一個新的 SQL 標籤,供您編輯和執行以下指令: - + Rename Tab 重新命名標籤 - + Duplicate Tab 複製標籤 - + Close Tab 關閉標籤 - + Opening '%1'... 正在開啟 '%1'... - + There was an error opening '%1'... 開啟 '%1' 時發生錯誤... - + Value is not a valid URL or filename: %1 值不是有效的 URL 或檔案名稱:%1 - + %1 rows returned in %2ms %2ms 內回傳 %1 行 - + Automatically load the last opened DB file at startup - + You are still executing SQL statements. Closing the database now will stop their execution, possibly leaving the database in an inconsistent state. Are you sure you want to close the database? 您仍在執行 SQL 指令。現在關閉資料庫將會停止他們的執行,可能會使資料庫處於不一致的狀態。您確定要關閉資料庫嗎? - + Do you want to save the changes made to the project file '%1'? 您是否要儲存對專案檔案 '%1' 所做的更改? - + Choose text files 選擇文字檔案 - + Import completed. Some foreign key constraints are violated. Please fix them before saving. 匯入完成。違反了一些外鍵條件。請在儲存之前修正它們。 - + Modify View 修改檢視表 - + Modify Trigger 修改觸發器 - + Modify Index 修改索引 - + Modify Table 修改表格 - + &%1 %2%3 &%1 %2%3 - + (read only) (唯讀) - + Open Database or Project 開啟資料庫或專案 - + Attach Database... 附加資料庫... - + Import CSV file(s)... 匯入 CSV 檔案... - + Do you want to save the changes made to SQL tabs in a new project file? 您是否要在新的專案檔中儲存對 SQL 分頁所做的變更? - + Do you want to save the changes made to the SQL file %1? 您是否要儲存對 SQL 檔案 %1 所做的變更? - + Select SQL file to open 選擇要開啟的 SQL 檔案 - + Select file name 選擇檔案名稱 - + Select extension file 選擇擴充套件檔案 - + Extension successfully loaded. 擴充套件成功載入。 - + Error loading extension: %1 載入擴充套件時出現錯誤: %1 - + Could not find resource file: %1 找不到資源檔案: %1 - - + + Don't show again 不再顯示 - + New version available. 有新版本可用。 - + Choose a project file to open 選擇要開啟的專案檔 - + Could not open project file for writing. Reason: %1 無法開啟專案檔以進行寫入。 原因:%1 - + Collation needed! Proceed? 需要定序! 繼續? - + A table in this database requires a special collation function '%1' that this application can't provide without further knowledge. If you choose to proceed, be aware bad things can happen to your database. Create a backup! @@ -4402,47 +4561,47 @@ Create a backup! 建立備份! - + creating collation 建立定序規則 - + Set a new name for the SQL tab. Use the '&&' character to allow using the following character as a keyboard shortcut. 為 SQL 分頁設定一個新名稱。使用「&&」字元以允許使用後面的字元作為鍵盤快捷鍵。 - + Please specify the view name 請指定檢視表名稱 - + There is already an object with that name. Please choose a different name. 已有相同名稱的物件。請選擇一個不同的名稱。 - + View successfully created. 成功建立檢視表。 - + Error creating view: %1 建立檢視表時出現錯誤: %1 - + This action will open a new SQL tab for running: 這個動作將會開啟一個新的 SQL 分頁以進行執行: - + Press Help for opening the corresponding SQLite reference page. 按下「說明」以開啟對應的 SQLite 參考頁面。 - + Busy (%1) 忙碌 (%1) @@ -4637,102 +4796,107 @@ Select the axes or axes labels to drag and zoom only in that orientation. - + Load all data and redraw plot 載入所有資料並重繪圖表 - - - + + + Row # 列 # - + Copy 複製 - + Print... 列印... - + + Help + + + + Show legend 顯示圖例 - + Stacked bars 堆疊長條圖 - + Fixed number format 固定數字格式 - + Date/Time 日期/時間 - + Date 日期 - + Time 時間 - - + + Numeric 數值 - + Label 標籤 - + Invalid 無效 - + Load all data and redraw plot. Warning: not all data has been fetched from the table yet due to the partial fetch mechanism. 載入所有資料並重繪圖表。 警告:由於部分取得機制,尚未從表格取得所有資料。 - + Choose an axis color 選擇座標軸顏色 - + Choose a filename to save under 選擇要儲存的檔案名稱 - + PNG(*.png);;JPG(*.jpg);;PDF(*.pdf);;BMP(*.bmp);;All Files(*) PNG(*.png);;JPG(*.jpg);;PDF(*.pdf);;BMP(*.bmp);;所有檔案(*) - + There are curves in this plot and the selected line style can only be applied to graphs sorted by X. Either sort the table or query by X to remove curves or select one of the styles supported by curves: None or Line. 此圖表中有曲線,且所選的線型只能套用於按 X 排序的圖形。請按 X 排序表格或查詢以移除曲線,或選擇曲線支援的其中一種樣式:無或線條。 - + Loading all remaining data for this table took %1ms. 載入此表格所有剩餘資料花了 %1ms。 @@ -5627,8 +5791,8 @@ Please check again. - Socks v5 - Socks v5 + SOCKS5 + SOCKS5 @@ -5774,1873 +5938,303 @@ Please check again. QsciCommand - - Move down one line - + Paste + 貼上 - - Extend selection down one line - + Cancel + 取消 + + + QsciLexerCPP - - Extend rectangular selection down one line - + Default + 預設 - - Scroll view down one line - + Keyword + 關鍵字 - - Move up one line - + Identifier + 識別符號 + + + QsciLexerJSON - - Extend selection up one line - + Default + 預設 - - Extend rectangular selection up one line - + String + 字串 + + + QsciLexerJavaScript - - Scroll view up one line - + Regular expression + 正規表達式 + + + QsciLexerPython - - Scroll to start of document - + Default + 預設 - - Scroll to end of document - + Comment + 注釋 - - Scroll vertically to centre current line - + Keyword + 關鍵字 - - Move down one paragraph - + Identifier + 識別符號 + + + QsciLexerSQL - - Extend selection down one paragraph - + Default + 預設 - - Move up one paragraph - + Comment + 注釋 - - Extend selection up one paragraph - + Keyword + 關鍵字 - - Move left one character - + Identifier + 識別符號 + + + QsciScintilla - - Extend selection left one character - + &Undo + &復原 + + + RemoteCommitsModel - - Extend rectangular selection left one character - + + Commit ID + 提交 ID - - Move right one character - + + Message + 訊息 - - Extend selection right one character - + + Date + 日期 - - Extend rectangular selection right one character - + + Author + 作者 - - Move left one word - + + Size + 大小 - - Extend selection left one word - + + Authored and committed by %1 + 由 %1 撰寫並提交 - - Move right one word - + + Authored by %1, committed by %2 + 由 %1 撰寫,由 %2 提交 + + + RemoteDatabase - - Extend selection right one word - + + Error opening local databases list. +%1 + 開啟本機資料庫清單時發生錯誤。 +%1 - - Move to end of previous word - + + Error creating local databases list. +%1 + 建立本機資料庫清單時發生錯誤。 +%1 + + + RemoteDock - - Extend selection to end of previous word - + + Remote + 遠端 - - Move to end of next word - + + Identity + 身份 - - Extend selection to end of next word - + + Push currently opened database to server + 將目前開啟的資料庫推送到伺服器 - - Move left one word part - + + Upload + 上傳 - - Extend selection left one word part - + + DBHub.io + DBHub.io - - Move right one word part - + + <html><head/><body><p>In this pane, remote databases from dbhub.io website can be added to DB Browser for SQLite. First you need an identity:</p><ol style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Login to the dbhub.io website (use your GitHub credentials or whatever you want)</li><li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click the button to &quot;Generate client certificate&quot; (that's your identity). That'll give you a certificate file (save it to your local disk).</li><li style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Go to the Remote tab in DB Browser for SQLite Preferences. Click the button to add a new certificate to DB Browser for SQLite and choose the just downloaded certificate file.</li></ol><p>Now the Remote panel shows your identity and you can add remote databases.</p></body></html> + <html><head/><body><p>在此面板中,您可以將來自 dbhub.io 網站的遠端資料庫新增至 DB Browser for SQLite。首先,您需要一個身份識別:</p><ol style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">登入 dbhub.io 網站(可使用您的 GitHub 憑證或其他您選擇的方式)</li><li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">點選「產生客戶端憑證」按鈕(這就是您的身份識別)。這會提供您一個憑證檔案(請將其儲存至您的本機磁碟)</li><li style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">前往 DB Browser for SQLite 偏好設定中的遠端標籤。點選按鈕以將新的憑證新增至 DB Browser for SQLite,並選擇您剛下載的憑證檔案。</li></ol><p>現在,遠端面板會顯示您的身份識別,您便可以新增遠端資料庫。</p></body></html> - - Extend selection right one word part - + + Local + 本機 - - Move to start of document line - + + Current Database + 目前的資料庫 - - Extend selection to start of document line - + + Clone + 複製 - - Extend rectangular selection to start of document line - + + &User + 使用者 - - Move to start of display line - + + &Database + 資料庫(&D) - - Extend selection to start of display line - + + Branch + 分支 - - Move to start of display or document line - + + Commits + 提交 - - Extend selection to start of display or document line - + + Commits for + 提交給 - - Move to first visible character in document line - + + <html><head/><body><p>You are currently using a built-in, read-only identity. For uploading your database, you need to configure and use your DBHub.io account.</p><p>No DBHub.io account yet? <a href="https://dbhub.io/"><span style=" text-decoration: underline; color:#007af4;">Create one now</span></a> and import your certificate <a href="#preferences"><span style=" text-decoration: underline; color:#007af4;">here</span></a> to share your databases.</p><p>For online help visit <a href="https://dbhub.io/about"><span style=" text-decoration: underline; color:#007af4;">here</span></a>.</p></body></html> + <html><head/><body><p>您目前正在使用內建的唯讀身份。要上傳您的資料庫,您需要設定並使用您的 DBHub.io 帳戶。</p><p>還沒有 DBHub.io 帳戶嗎? <a href="https://dbhub.io/"><span style=" text-decoration: underline; color:#007af4;">現在就建立一個</span></a>,並將您的憑證匯入 <a href="#preferences"><span style=" text-decoration: underline; color:#007af4;">此處</span></a>,以分享您的資料庫。</p><p>如需線上支援,請造訪 <a href="https://dbhub.io/about"><span style=" text-decoration: underline; color:#007af4;">此處</span></a>。</p></body></html> - - Extend selection to first visible character in document line - + + Back + 返回 - - Extend rectangular selection to first visible character in document line - + + Delete Database + 刪除資料庫 - - Move to first visible character of display in document line - + + Delete the local clone of this database + 刪除此資料庫的本機複製 - - Extend selection to first visible character in display or document line - + + Open in Web Browser + 在網頁瀏覽器中開啟 - - Move to end of document line - + + Open the web page for the current database in your browser + 在您的瀏覽器中開啟目前資料庫的網頁 - - Extend selection to end of document line - + + Clone from Link + 從連結複製 - - Extend rectangular selection to end of document line - + + Use this to download a remote database for local editing using a URL as provided on the web page of the database. + 使用此功能,透過資料庫網頁上提供的 URL 下載遠端資料庫進行本機編輯。 - - Move to end of display line - + + Refresh + 重新整理 - - Extend selection to end of display line - + + Reload all data and update the views + 重新載入所有資料並更新檢視表 - - Move to end of display or document line - + + Clone Database + 複製資料庫 - - Extend selection to end of display or document line - + + Open Database + 開啟資料庫 - - Move to start of document - + + Open the local copy of this database + 開啟此資料庫的本機複製 - - Extend selection to start of document - + + Check out Commit + 查看提交 - - Move to end of document - + + Download and open this specific commit + 下載並開啟此特定提交 - - Extend selection to end of document - + + Check out Latest Commit + 查看最新提交 - - Move up one page - - - - - Extend selection up one page - - - - - Extend rectangular selection up one page - - - - - Move down one page - - - - - Extend selection down one page - - - - - Extend rectangular selection down one page - - - - - Stuttered move up one page - - - - - Stuttered extend selection up one page - - - - - Stuttered move down one page - - - - - Stuttered extend selection down one page - - - - - Delete current character - - - - - Delete previous character - - - - - Delete previous character if not at start of line - - - - - Delete word to left - - - - - Delete word to right - - - - - Delete right to end of next word - - - - - Delete line to left - - - - - Delete line to right - - - - - Delete current line - - - - - Cut current line - - - - - Copy current line - - - - - Transpose current and previous lines - - - - - Duplicate the current line - - - - - Select all - - - - - Move selected lines up one line - - - - - Move selected lines down one line - - - - - Duplicate selection - - - - - Convert selection to lower case - - - - - Convert selection to upper case - - - - - Cut selection - - - - - Copy selection - - - - - Paste - 貼上 - - - - Toggle insert/overtype - - - - - Insert newline - - - - - Formfeed - - - - - Indent one level - - - - - De-indent one level - - - - - Cancel - 取消 - - - - Undo last command - - - - - Redo last command - - - - - Zoom in - - - - - Zoom out - - - - - QsciLexerCPP - - - Default - 預設 - - - - Inactive default - - - - - C comment - - - - - Inactive C comment - - - - - C++ comment - - - - - Inactive C++ comment - - - - - JavaDoc style C comment - - - - - Inactive JavaDoc style C comment - - - - - Number - - - - - Inactive number - - - - - Keyword - 關鍵字 - - - - Inactive keyword - - - - - Double-quoted string - - - - - Inactive double-quoted string - - - - - Single-quoted string - - - - - Inactive single-quoted string - - - - - IDL UUID - - - - - Inactive IDL UUID - - - - - Pre-processor block - - - - - Inactive pre-processor block - - - - - Operator - - - - - Inactive operator - - - - - Identifier - 識別符號 - - - - Inactive identifier - - - - - Unclosed string - - - - - Inactive unclosed string - - - - - C# verbatim string - - - - - Inactive C# verbatim string - - - - - JavaScript regular expression - - - - - Inactive JavaScript regular expression - - - - - JavaDoc style C++ comment - - - - - Inactive JavaDoc style C++ comment - - - - - Secondary keywords and identifiers - - - - - Inactive secondary keywords and identifiers - - - - - JavaDoc keyword - - - - - Inactive JavaDoc keyword - - - - - JavaDoc keyword error - - - - - Inactive JavaDoc keyword error - - - - - Global classes and typedefs - - - - - Inactive global classes and typedefs - - - - - C++ raw string - - - - - Inactive C++ raw string - - - - - Vala triple-quoted verbatim string - - - - - Inactive Vala triple-quoted verbatim string - - - - - Pike hash-quoted string - - - - - Inactive Pike hash-quoted string - - - - - Pre-processor C comment - - - - - Inactive pre-processor C comment - - - - - JavaDoc style pre-processor comment - - - - - Inactive JavaDoc style pre-processor comment - - - - - User-defined literal - - - - - Inactive user-defined literal - - - - - Task marker - - - - - Inactive task marker - - - - - Escape sequence - - - - - Inactive escape sequence - - - - - QsciLexerHTML - - - HTML default - - - - - Tag - - - - - Unknown tag - - - - - Attribute - - - - - Unknown attribute - - - - - HTML number - - - - - HTML double-quoted string - - - - - HTML single-quoted string - - - - - Other text in a tag - - - - - HTML comment - - - - - Entity - - - - - End of a tag - - - - - Start of an XML fragment - - - - - End of an XML fragment - - - - - Script tag - - - - - Start of an ASP fragment with @ - - - - - Start of an ASP fragment - - - - - CDATA - - - - - Start of a PHP fragment - - - - - Unquoted HTML value - - - - - ASP X-Code comment - - - - - SGML default - - - - - SGML command - - - - - First parameter of an SGML command - - - - - SGML double-quoted string - - - - - SGML single-quoted string - - - - - SGML error - - - - - SGML special entity - - - - - SGML comment - - - - - First parameter comment of an SGML command - - - - - SGML block default - - - - - Start of a JavaScript fragment - - - - - JavaScript default - - - - - JavaScript comment - - - - - JavaScript line comment - - - - - JavaDoc style JavaScript comment - - - - - JavaScript number - - - - - JavaScript word - - - - - JavaScript keyword - - - - - JavaScript double-quoted string - - - - - JavaScript single-quoted string - - - - - JavaScript symbol - - - - - JavaScript unclosed string - - - - - JavaScript regular expression - - - - - Start of an ASP JavaScript fragment - - - - - ASP JavaScript default - - - - - ASP JavaScript comment - - - - - ASP JavaScript line comment - - - - - JavaDoc style ASP JavaScript comment - - - - - ASP JavaScript number - - - - - ASP JavaScript word - - - - - ASP JavaScript keyword - - - - - ASP JavaScript double-quoted string - - - - - ASP JavaScript single-quoted string - - - - - ASP JavaScript symbol - - - - - ASP JavaScript unclosed string - - - - - ASP JavaScript regular expression - - - - - Start of a VBScript fragment - - - - - VBScript default - - - - - VBScript comment - - - - - VBScript number - - - - - VBScript keyword - - - - - VBScript string - - - - - VBScript identifier - - - - - VBScript unclosed string - - - - - Start of an ASP VBScript fragment - - - - - ASP VBScript default - - - - - ASP VBScript comment - - - - - ASP VBScript number - - - - - ASP VBScript keyword - - - - - ASP VBScript string - - - - - ASP VBScript identifier - - - - - ASP VBScript unclosed string - - - - - Start of a Python fragment - - - - - Python default - - - - - Python comment - - - - - Python number - - - - - Python double-quoted string - - - - - Python single-quoted string - - - - - Python keyword - - - - - Python triple double-quoted string - - - - - Python triple single-quoted string - - - - - Python class name - - - - - Python function or method name - - - - - Python operator - - - - - Python identifier - - - - - Start of an ASP Python fragment - - - - - ASP Python default - - - - - ASP Python comment - - - - - ASP Python number - - - - - ASP Python double-quoted string - - - - - ASP Python single-quoted string - - - - - ASP Python keyword - - - - - ASP Python triple double-quoted string - - - - - ASP Python triple single-quoted string - - - - - ASP Python class name - - - - - ASP Python function or method name - - - - - ASP Python operator - - - - - ASP Python identifier - - - - - PHP default - - - - - PHP double-quoted string - - - - - PHP single-quoted string - - - - - PHP keyword - - - - - PHP number - - - - - PHP variable - - - - - PHP comment - - - - - PHP line comment - - - - - PHP double-quoted variable - - - - - PHP operator - - - - - QsciLexerJSON - - - Default - 預設 - - - - Number - - - - - String - 字串 - - - - Unclosed string - - - - - Property - - - - - Escape sequence - - - - - Line comment - - - - - Block comment - - - - - Operator - - - - - IRI - - - - - JSON-LD compact IRI - - - - - JSON keyword - - - - - JSON-LD keyword - - - - - Parsing error - - - - - QsciLexerJavaScript - - - Regular expression - 正規表達式 - - - - QsciLexerPython - - - Default - 預設 - - - - Comment - 注釋 - - - - Number - - - - - Double-quoted string - - - - - Single-quoted string - - - - - Keyword - 關鍵字 - - - - Triple single-quoted string - - - - - Triple double-quoted string - - - - - Class name - - - - - Function or method name - - - - - Operator - - - - - Identifier - 識別符號 - - - - Comment block - - - - - Unclosed string - - - - - Highlighted identifier - - - - - Decorator - - - - - Double-quoted f-string - - - - - Single-quoted f-string - - - - - Triple single-quoted f-string - - - - - Triple double-quoted f-string - - - - - QsciLexerSQL - - - Default - 預設 - - - - Comment - 注釋 - - - - Comment line - - - - - JavaDoc style comment - - - - - Number - - - - - Keyword - 關鍵字 - - - - Double-quoted string - - - - - Single-quoted string - - - - - SQL*Plus keyword - - - - - SQL*Plus prompt - - - - - Operator - - - - - Identifier - 識別符號 - - - - SQL*Plus comment - - - - - # comment line - - - - - JavaDoc keyword - - - - - JavaDoc keyword error - - - - - User defined 1 - - - - - User defined 2 - - - - - User defined 3 - - - - - User defined 4 - - - - - Quoted identifier - - - - - Quoted operator - - - - - QsciScintilla - - - &Undo - &復原 - - - - &Redo - - - - - Cu&t - - - - - &Copy - - - - - &Paste - - - - - Delete - - - - - Select All - - - - - RemoteCommitsModel - - - Commit ID - 提交 ID - - - - Message - 訊息 - - - - Date - 日期 - - - - Author - 作者 - - - - Size - 大小 - - - - Authored and committed by %1 - 由 %1 撰寫並提交 - - - - Authored by %1, committed by %2 - 由 %1 撰寫,由 %2 提交 - - - - RemoteDatabase - - - Error opening local databases list. -%1 - 開啟本機資料庫清單時發生錯誤。 -%1 - - - - Error creating local databases list. -%1 - 建立本機資料庫清單時發生錯誤。 -%1 - - - - RemoteDock - - - Remote - 遠端 - - - - Identity - 身份 - - - - Push currently opened database to server - 將目前開啟的資料庫推送到伺服器 - - - - Upload - 上傳 - - - - DBHub.io - DBHub.io - - - - <html><head/><body><p>In this pane, remote databases from dbhub.io website can be added to DB Browser for SQLite. First you need an identity:</p><ol style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Login to the dbhub.io website (use your GitHub credentials or whatever you want)</li><li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click the button to &quot;Generate client certificate&quot; (that's your identity). That'll give you a certificate file (save it to your local disk).</li><li style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Go to the Remote tab in DB Browser for SQLite Preferences. Click the button to add a new certificate to DB Browser for SQLite and choose the just downloaded certificate file.</li></ol><p>Now the Remote panel shows your identity and you can add remote databases.</p></body></html> - <html><head/><body><p>在此面板中,您可以將來自 dbhub.io 網站的遠端資料庫新增至 DB Browser for SQLite。首先,您需要一個身份識別:</p><ol style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">登入 dbhub.io 網站(可使用您的 GitHub 憑證或其他您選擇的方式)</li><li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">點選「產生客戶端憑證」按鈕(這就是您的身份識別)。這會提供您一個憑證檔案(請將其儲存至您的本機磁碟)</li><li style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">前往 DB Browser for SQLite 偏好設定中的遠端標籤。點選按鈕以將新的憑證新增至 DB Browser for SQLite,並選擇您剛下載的憑證檔案。</li></ol><p>現在,遠端面板會顯示您的身份識別,您便可以新增遠端資料庫。</p></body></html> - - - - Local - 本機 - - - - Current Database - 目前的資料庫 - - - - Clone - 複製 - - - - &User - 使用者 - - - - &Database - 資料庫(&D) - - - - Branch - 分支 - - - - Commits - 提交 - - - - Commits for - 提交給 - - - - <html><head/><body><p>You are currently using a built-in, read-only identity. For uploading your database, you need to configure and use your DBHub.io account.</p><p>No DBHub.io account yet? <a href="https://dbhub.io/"><span style=" text-decoration: underline; color:#007af4;">Create one now</span></a> and import your certificate <a href="#preferences"><span style=" text-decoration: underline; color:#007af4;">here</span></a> to share your databases.</p><p>For online help visit <a href="https://dbhub.io/about"><span style=" text-decoration: underline; color:#007af4;">here</span></a>.</p></body></html> - <html><head/><body><p>您目前正在使用內建的唯讀身份。要上傳您的資料庫,您需要設定並使用您的 DBHub.io 帳戶。</p><p>還沒有 DBHub.io 帳戶嗎? <a href="https://dbhub.io/"><span style=" text-decoration: underline; color:#007af4;">現在就建立一個</span></a>,並將您的憑證匯入 <a href="#preferences"><span style=" text-decoration: underline; color:#007af4;">此處</span></a>,以分享您的資料庫。</p><p>如需線上支援,請造訪 <a href="https://dbhub.io/about"><span style=" text-decoration: underline; color:#007af4;">此處</span></a>。</p></body></html> - - - - Back - 返回 - - - - Delete Database - 刪除資料庫 - - - - Delete the local clone of this database - 刪除此資料庫的本機複製 - - - - Open in Web Browser - 在網頁瀏覽器中開啟 - - - - Open the web page for the current database in your browser - 在您的瀏覽器中開啟目前資料庫的網頁 - - - - Clone from Link - 從連結複製 - - - - Use this to download a remote database for local editing using a URL as provided on the web page of the database. - 使用此功能,透過資料庫網頁上提供的 URL 下載遠端資料庫進行本機編輯。 - - - - Refresh - 重新整理 - - - - Reload all data and update the views - 重新載入所有資料並更新檢視表 - - - - Clone Database - 複製資料庫 - - - - Open Database - 開啟資料庫 - - - - Open the local copy of this database - 開啟此資料庫的本機複製 - - - - Check out Commit - 查看提交 - - - - Download and open this specific commit - 下載並開啟此特定提交 - - - - Check out Latest Commit - 查看最新提交 - - - - Check out the latest commit of the current branch - 查看目前分支的最新提交 + + Check out the latest commit of the current branch + 查看目前分支的最新提交 @@ -7821,26 +6415,26 @@ Are you sure you want to proceed? 請輸入此客戶端憑證的密碼以進行驗證。 - + Cancel 取消 - + Uploading remote database to %1 正在上傳遠端資料庫到 %1 - + Downloading remote database from %1 正在從 %1 下載遠端資料庫 - + Error: Cannot open the file for sending. 錯誤:無法開啟要傳送的檔案。 @@ -8575,32 +7169,32 @@ Use of this function must be authorized from Preferences. 正在載入... - + References %1(%2) Hold %3Shift and click to jump there 參考 %1(%2) 按住 %3Shift 並點選以跳至該處 - + Error changing data: %1 變更資料時出現錯誤: %1 - + retrieving list of columns 正在擷取欄位清單 - + Fetching data... 正在擷取資料... - - + + Cancel 取消 @@ -8937,12 +7531,12 @@ Hold %3Shift and click to jump there - <html><head/><body><p>This button creates a new record in the database. Hold the mouse button to open a pop-up menu of different options:</p><ul><li><span style=" font-weight:600;">New Record</span>: insert a new record with default values in the database.</li><li><span style=" font-weight:600;">Insert Values...</span>: open a dialog for entering values before they are inserted in the database. This allows to enter values acomplishing the different constraints. This dialog is also open if the <span style=" font-weight:600;">New Record</span> option fails due to these constraints.</li></ul></body></html> + <html><head/><body><p>This button creates a new record in the database. Hold the mouse button to open a pop-up menu of different options:</p><ul><li><span style=" font-weight:600;">New Record</span>: insert a new record with default values in the database.</li><li><span style=" font-weight:600;">Insert Values...</span>: open a dialog for entering values before they are inserted in the database. This allows to enter values accomplishing the different constraints. This dialog is also open if the <span style=" font-weight:600;">New Record</span> option fails due to these constraints.</li></ul></body></html> <html><head/><body><p>此按鈕在資料庫中建立新記錄。按住滑鼠按鈕以開啟不同選項的彈出式選單:</p><ul><li><span style=" font-weight:600;">新記錄</span>:在資料庫中插入具有預設值的新記錄。</li><li><span style=" font-weight:600;">插入值...</span>:在將值插入資料庫之前,開啟一個對話框以輸入值。這允許輸入滿足不同約束的值。如果 <span style=" font-weight:600;">新記錄</span> 選項由於這些約束而失敗,則也會開啟此對話框。</li></ul></body></html> - + Delete Record 刪除記錄 @@ -9019,7 +7613,7 @@ Hold %3Shift and click to jump there - <html><head/><body><p>This popup menu provides the following options applying to the currently browsed and filtered table:</p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Export to CSV: this option exports the data of the browsed table as currently displayed (after filters, display formats and order column) to a CSV file.</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Save as view: this option saves the current setting of the browsed table (filters, display formats and order column) as an SQL view that you can later browse or use in SQL statements.</li></ul></body></html> + <html><head/><body><p>This pop-up menu provides the following options applying to the currently browsed and filtered table:</p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Export to CSV: this option exports the data of the browsed table as currently displayed (after filters, display formats and order column) to a CSV file.</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Save as view: this option saves the current setting of the browsed table (filters, display formats and order column) as an SQL view that you can later browse or use in SQL statements.</li></ul></body></html> <html><head/><body><p>此彈出式選單提供以下適用於目前瀏覽和篩選的資料表的選項:</p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">匯出至 CSV:此選項將瀏覽的資料表的資料匯出為 CSV 檔,其內容為目前顯示的內容(篩選、顯示格式和排序欄位之後)。</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">另存為檢視表:此選項將瀏覽的資料表的目前設定(篩選、顯示格式和排序欄位)另存為 SQL 檢視表,您稍後可以瀏覽或在 SQL 陳述式中使用。</li></ul></body></html> @@ -9044,7 +7638,7 @@ Hold %3Shift and click to jump there - + Set encoding 設定編碼 @@ -9307,96 +7901,96 @@ Hold %3Shift and click to jump there . 總計:%1;平均:%2;最小值:%3;最大值:%4 - + Conditional formats for "%1" "%1" 的條件式格式 - + determining row count... 正在計算列數... - + %L1 - %L2 of >= %L3 %L1 - %L2 / 總數 >= %L3 - + %L1 - %L2 of %L3 %L1 - %L2 / 總數 %L3 - + (clipped at %L1 rows) (在 %L1 列處截斷) - + Please enter a pseudo-primary key in order to enable editing on this view. This should be the name of a unique column in the view. 請輸入一個偽主鍵以啟用此檢視表的編輯功能。這應該是檢視表中一個唯一欄位的名稱。 - + Delete Records 刪除記錄 - + Duplicate records 複製記錄 - + Duplicate record 複製記錄 - + Ctrl+" Ctrl+" - + Adjust rows to contents 調整列以適應內容 - + Error deleting record: %1 刪除記錄時出現錯誤: %1 - + Please select a record first 請先選擇一筆記錄 - + Please choose a new encoding for all tables. 請為所有資料表選擇新的編碼。 - + Please choose a new encoding for this table. 請為此資料表選擇新的編碼。 - + %1 Leave the field empty for using the database encoding. %1 留空此欄位以使用資料庫編碼。 - + This encoding is either not valid or not supported. 此編碼無效或不被支援。 - + %1 replacement(s) made. 已進行 %1 次取代。 @@ -9424,24 +8018,6 @@ Leave the field empty for using the database encoding. 為資料瀏覽器設定新名稱。使用 '&&' 字元以允許使用後續字元作為鍵盤快捷鍵。 - - UndoStack - - - Inserting %1 bytes - - - - - Delete %1 chars - - - - - Overwrite %1 chars - - - VacuumDialog