mirror of
https://github.com/xiaoyifang/goldendict-ng.git
synced 2024-11-23 20:14:05 +00:00
Merge pull request #1773 from xiaoyifang/staged
Some checks failed
Release AutoTag / Build (push) Has been cancelled
Release macOS / Build (macos-12, clang_64, 6.6.3) (push) Has been cancelled
Release macOS / Build (macos-12, clang_64, 6.7.2) (push) Has been cancelled
Release macOS / Build (macos-14, clang_64, 6.6.3) (push) Has been cancelled
Release macOS / Build (macos-14, clang_64, 6.7.2) (push) Has been cancelled
Release Windows CMake / Build (windows-2022, win64_msvc2019_64, 6.6.3) (push) Has been cancelled
Release Windows CMake / Build (windows-2022, win64_msvc2019_64, 6.7.2) (push) Has been cancelled
Some checks failed
Release AutoTag / Build (push) Has been cancelled
Release macOS / Build (macos-12, clang_64, 6.6.3) (push) Has been cancelled
Release macOS / Build (macos-12, clang_64, 6.7.2) (push) Has been cancelled
Release macOS / Build (macos-14, clang_64, 6.6.3) (push) Has been cancelled
Release macOS / Build (macos-14, clang_64, 6.7.2) (push) Has been cancelled
Release Windows CMake / Build (windows-2022, win64_msvc2019_64, 6.6.3) (push) Has been cancelled
Release Windows CMake / Build (windows-2022, win64_msvc2019_64, 6.7.2) (push) Has been cancelled
This commit is contained in:
commit
316ec900cd
19
.clang-tidy
19
.clang-tidy
|
@ -1,15 +1,18 @@
|
|||
# https://clang.llvm.org/extra/clang-tidy/
|
||||
---
|
||||
Checks: >
|
||||
-*
|
||||
-*,
|
||||
bugprone-*,
|
||||
cert-*,
|
||||
clang-analyzer-*,
|
||||
clang-diagnostic-*,
|
||||
concurrency-*,
|
||||
cppcoreguidelines-*,
|
||||
google-*,
|
||||
hicpp-*,
|
||||
misc-*,
|
||||
modernize-*,
|
||||
objc-*,
|
||||
performance-*,
|
||||
portability-*,
|
||||
readability-*,
|
||||
|
@ -17,18 +20,22 @@ Checks: >
|
|||
-bugprone-reserved-identifier,
|
||||
-cppcoreguidelines-owning-memory,
|
||||
-cppcoreguidelines-prefer-member-initializer,
|
||||
-cppcoreguidelines-pro-bounds-array-to-pointer-decay,
|
||||
-cppcoreguidelines-pro-type-cstyle-cast,
|
||||
-cppcoreguidelines-pro-type-reinterpret-cast,
|
||||
-google-default-arguments,
|
||||
-misc-non-private-member-variables-in-classes,
|
||||
-google-readability-casting,
|
||||
-hicpp-deprecated-headers,
|
||||
-misc-const-correctness,
|
||||
-misc-non-private-member-variables-in-classes,
|
||||
-modernize-avoid-c-arrays,
|
||||
# -modernize-use-auto,
|
||||
-modernize-deprecated-headers,
|
||||
-modernize-use-nodiscard,
|
||||
-modernize-use-trailing-return-type,
|
||||
-readability-magic-numbers,
|
||||
-google-readability-braces-around-statements,
|
||||
-readability-braces-around-statements,
|
||||
-readability-identifier-length,
|
||||
-readability-function-cognitive-complexity,
|
||||
-readability-identifier-length,
|
||||
-readability-magic-numbers,
|
||||
CheckOptions:
|
||||
- key: modernize-loop-convert.MinConfidence
|
||||
value: reasonable
|
||||
|
|
5
.editorconfig
Normal file
5
.editorconfig
Normal file
|
@ -0,0 +1,5 @@
|
|||
root = true
|
||||
# Unix-style newlines with a newline ending every file
|
||||
[*]
|
||||
end_of_line = lf
|
||||
insert_final_newline = true
|
|
@ -2,3 +2,10 @@
|
|||
|
||||
# reformat everything commit
|
||||
b5349478cfb0dc2dd0de8c8e8aeebdd24cf7ac6b
|
||||
|
||||
# reformat every .js .css
|
||||
534d8c2e96ef00ae03650c2185d7b240ea5a1114
|
||||
|
||||
# replace QVector & QPair
|
||||
3273f39dd73f4dba07fa95be2be74061f2690b2c
|
||||
44853544f850e1de90b341780168c04d089c37a1
|
||||
|
|
1
.gitattributes
vendored
Normal file
1
.gitattributes
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
* text=auto eol=lf
|
92
.github/scripts/windows-publish.ps1
vendored
92
.github/scripts/windows-publish.ps1
vendored
|
@ -1,92 +0,0 @@
|
|||
[CmdletBinding()]
|
||||
param (
|
||||
[string] $archiveName, [string] $targetName
|
||||
)
|
||||
# 外部环境变量包括:
|
||||
# archiveName: ${{ matrix.qt_ver }}-${{ matrix.qt_arch }}
|
||||
# winSdkDir: ${{ steps.build.outputs.winSdkDir }}
|
||||
# winSdkVer: ${{ steps.build.outputs.winSdkVer }}
|
||||
# vcToolsInstallDir: ${{ steps.build.outputs.vcToolsInstallDir }}
|
||||
# vcToolsRedistDir: ${{ steps.build.outputs.vcToolsRedistDir }}
|
||||
# msvcArch: ${{ matrix.msvc_arch }}
|
||||
|
||||
|
||||
# winSdkDir: C:\Program Files (x86)\Windows Kits\10\
|
||||
# winSdkVer: 10.0.19041.0\
|
||||
# vcToolsInstallDir: C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.28.29333\
|
||||
# vcToolsRedistDir: C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Redist\MSVC\14.28.29325\
|
||||
# archiveName: 5.9.9-win32_msvc2015
|
||||
# msvcArch: x86
|
||||
|
||||
$scriptDir = $PSScriptRoot
|
||||
$currentDir = Get-Location
|
||||
Write-Host "currentDir" $currentDir
|
||||
Write-Host "scriptDir" $scriptDir
|
||||
|
||||
function Main() {
|
||||
|
||||
New-Item -ItemType Directory $archiveName
|
||||
New-Item -ItemType Directory $archiveName\locale
|
||||
New-Item -ItemType Directory $archiveName\opencc
|
||||
# 拷贝exe
|
||||
Copy-Item release\$targetName $archiveName\
|
||||
Write-Host "copy item finished..."
|
||||
|
||||
# #拷贝pdb
|
||||
# Copy-Item release\*.pdb $archiveName\
|
||||
# Write-Host "copy pdb finished..."
|
||||
# 拷贝依赖
|
||||
windeployqt --qmldir . --plugindir $archiveName\plugins --compiler-runtime $archiveName\$targetName
|
||||
# 删除不必要的文件
|
||||
# $excludeList = @("*.qmlc", "*.ilk", "*.exp", "*.lib", "*.pdb")
|
||||
$excludeList = @("*.qmlc", "*.ilk", "*.exp", "*.lib")
|
||||
Remove-Item -Path $archiveName -Include $excludeList -Recurse -Force
|
||||
Write-Host "remove item finished..."
|
||||
# 拷贝vcRedist dll
|
||||
$redistDll="{0}{1}\*.CRT\*.dll" -f $env:vcToolsRedistDir.Trim(),$env:msvcArch
|
||||
Write-Host "redist dll $($redistDll)"
|
||||
Copy-Item $redistDll $archiveName\
|
||||
Write-Host "copy redist dll..."
|
||||
Copy-Item "LICENSE.txt" $archiveName\
|
||||
Write-Host "copy license.."
|
||||
Copy-Item "opencc\*" $archiveName\opencc\
|
||||
Write-Host "opencc config files.."
|
||||
|
||||
# 拷贝WinSDK dll
|
||||
$sdkDll="{0}Redist\{1}ucrt\DLLs\{2}\*.dll" -f $env:winSdkDir.Trim(),$env:winSdkVer.Trim(),$env:msvcArch
|
||||
Write-Host "copy sdk dll$($sdkDll)"
|
||||
Copy-Item $sdkDll $archiveName\
|
||||
Copy-Item winlibs\lib\msvc\*.dll $archiveName\
|
||||
Copy-Item winlibs\lib\*.dll $archiveName\
|
||||
Copy-Item locale\*.qm $archiveName\locale\
|
||||
|
||||
$webengineqm="{0}\translations\qtwebengine_*.qm" -f $env:QTDIR.Trim()
|
||||
Write-Host "copy qtwebengine qm from $($webengineqm)"
|
||||
Copy-Item $webengineqm $archiveName\locale\
|
||||
|
||||
# $multimedia="{0}\plugins\multimedia" -f $env:QTDIR.Trim()
|
||||
# if(Test-Path $multimedia){
|
||||
# Write-Host "copy multimedia $($multimedia) to plugins"
|
||||
# Copy-Item -Path $multimedia -Destination $archiveName\plugins -Recurse
|
||||
# }
|
||||
|
||||
$multimedia_ffmpeg_av_dll="{0}\bin\av*.dll" -f $env:QTDIR.Trim()
|
||||
$multimedia_ffmpeg_sw_dll="{0}\bin\sw*.dll" -f $env:QTDIR.Trim()
|
||||
if (Test-Path $multimedia_ffmpeg_av_dll && Test-Path $multimedia_ffmpeg_sw_dll) {
|
||||
Write-Host "copy multimedia_ffmpeg_dlls $($multimedia_ffmpeg_av_dll) $($multimedia_ffmpeg_sw_dll) from qt"
|
||||
Copy-Item -Path $multimedia_ffmpeg_av_dll -Destination $archiveName\
|
||||
Copy-Item -Path $multimedia_ffmpeg_sw_dll -Destination $archiveName\
|
||||
}
|
||||
|
||||
Write-Host "compress zip..."
|
||||
# 打包zip
|
||||
Compress-Archive -Path $archiveName -DestinationPath $archiveName'.zip'
|
||||
}
|
||||
|
||||
if ($null -eq $archiveName || $null -eq $targetName) {
|
||||
Write-Host "args missing, archiveName is" $archiveName ", targetName is" $targetName
|
||||
return
|
||||
}
|
||||
Main
|
||||
|
||||
|
109
.github/workflows/PR-check-cmake.yml
vendored
Normal file
109
.github/workflows/PR-check-cmake.yml
vendored
Normal file
|
@ -0,0 +1,109 @@
|
|||
name: Build Check
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.ref }}
|
||||
cancel-in-progress: true
|
||||
on:
|
||||
workflow_dispatch:
|
||||
pull_request:
|
||||
branches:
|
||||
- dev
|
||||
- master
|
||||
- experimental
|
||||
- staged
|
||||
jobs:
|
||||
job_ubuntu_build_check:
|
||||
name: ubuntu Build and analyze
|
||||
runs-on: ubuntu-24.04
|
||||
steps:
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
sudo apt-get install build-essential ninja-build \
|
||||
libvorbis-dev zlib1g-dev libhunspell-dev x11proto-record-dev \
|
||||
libxtst-dev liblzo2-dev libbz2-dev \
|
||||
libavutil-dev libavformat-dev libeb16-dev \
|
||||
libzstd-dev libxkbcommon-dev \
|
||||
libxapian-dev libzim-dev libopencc-dev \
|
||||
qt6-5compat-dev \
|
||||
qt6-base-dev \
|
||||
qt6-multimedia-dev \
|
||||
qt6-speech-dev \
|
||||
qt6-svg-dev \
|
||||
qt6-tools-dev \
|
||||
qt6-tools-dev-tools \
|
||||
qt6-webchannel-dev \
|
||||
qt6-webengine-dev
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of analysis
|
||||
submodules: false
|
||||
- name: Run build
|
||||
run: |
|
||||
mkdir build_dir
|
||||
cmake -S . \
|
||||
-B ./build_dir \
|
||||
-G Ninja
|
||||
cmake --build ./build_dir
|
||||
job_macos_build_check:
|
||||
name: macos Build and analyze
|
||||
runs-on: macos-12
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of analysis
|
||||
submodules: false
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
brew install \
|
||||
ninja \
|
||||
opencc \
|
||||
ffmpeg \
|
||||
libao \
|
||||
libiconv \
|
||||
bzip2 \
|
||||
lzip \
|
||||
libvorbis \
|
||||
hunspell \
|
||||
xapian \
|
||||
libzim \
|
||||
qt
|
||||
|
||||
wget ftp://ftp.sra.co.jp/pub/misc/eb/eb-4.4.3.tar.bz2
|
||||
tar xvjf eb-4.4.3.tar.bz2
|
||||
cd eb-4.4.3 && ./configure && make -j 8 && sudo make install && cd ..
|
||||
|
||||
- name: Run build
|
||||
run: |
|
||||
mkdir build_dir
|
||||
cmake -S . \
|
||||
-B ./build_dir \
|
||||
-G Ninja
|
||||
cmake --build ./build_dir
|
||||
|
||||
job_window_build_check:
|
||||
name: windows Build and analyze
|
||||
runs-on: windows-latest
|
||||
steps:
|
||||
- name: Install Qt
|
||||
uses: jurplel/install-qt-action@v4
|
||||
with:
|
||||
version: 6.7.2
|
||||
arch: win64_msvc2019_64
|
||||
modules: qtwebengine qtwebchannel qtpositioning qt5compat qtmultimedia qtimageformats qtspeech
|
||||
setup-python: 'false'
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of analysis
|
||||
submodules: true
|
||||
- name: Run build
|
||||
run: |
|
||||
# Launch-VsDevShell also provides Ninja
|
||||
& 'C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\Tools\Launch-VsDevShell.ps1' `
|
||||
-SkipAutomaticLocation -Arch amd64 -HostArch amd64
|
||||
|
||||
New-Item -Path './build_dir' -ItemType Directory
|
||||
cmake -S . -B "./build_dir" `
|
||||
-G Ninja `
|
||||
-DWITH_VCPKG_BREAKPAD=ON `
|
||||
-DCMAKE_C_COMPILER="cl.exe" -DCMAKE_CXX_COMPILER="cl.exe" `
|
||||
-DWITH_FFMPEG_PLAYER=OFF
|
||||
cmake --build "./build_dir"
|
55
.github/workflows/Sonar Cloud.yml
vendored
55
.github/workflows/Sonar Cloud.yml
vendored
|
@ -6,7 +6,6 @@ on:
|
|||
workflow_dispatch:
|
||||
push:
|
||||
branches:
|
||||
- dev
|
||||
- staged
|
||||
|
||||
pull_request:
|
||||
|
@ -14,54 +13,40 @@ on:
|
|||
jobs:
|
||||
build:
|
||||
name: Build and analyze
|
||||
runs-on: ubuntu-latest
|
||||
runs-on: ubuntu-24.04
|
||||
env:
|
||||
BUILD_WRAPPER_OUT_DIR: build_wrapper_output_directory # Directory where build-wrapper output will be placed
|
||||
steps:
|
||||
- name: Install Qt
|
||||
uses: jurplel/install-qt-action@v3
|
||||
with:
|
||||
version: 6.5.1
|
||||
arch: gcc_64
|
||||
|
||||
#serialport linuxdeploy need serialport to work.
|
||||
modules: qtwebengine qtwebchannel qtpositioning qt5compat qtmultimedia qtimageformats qtspeech qtserialport
|
||||
|
||||
- name: ubuntu install thirdparty dependencies
|
||||
run: |
|
||||
sudo apt-get install git pkg-config build-essential
|
||||
sudo apt-get install libvorbis-dev zlib1g-dev libhunspell-dev x11proto-record-dev
|
||||
sudo apt-get install libxtst-dev liblzo2-dev libbz2-dev
|
||||
sudo apt-get install libavutil-dev libavformat-dev libeb16-dev
|
||||
sudo apt-get install doxygen libzstd-dev libxkbcommon-dev libgstreamer-plugins-base1.0-0 libgstreamer-gl1.0-0
|
||||
sudo ln -sf /usr/bin/x86_64-linux-gnu-ld.gold /usr/bin/ld
|
||||
sudo apt install libxapian-dev
|
||||
#build opencc
|
||||
git clone https://github.com/BYVoid/OpenCC
|
||||
cd OpenCC/
|
||||
make PREFIX=/usr -j$(nproc)
|
||||
sudo make install
|
||||
cd ..
|
||||
sudo apt-get install libzim-dev
|
||||
|
||||
sudo apt install openjdk-17-jdk openjdk-17-jre
|
||||
java -version
|
||||
sudo apt-get install build-essential ninja-build \
|
||||
libvorbis-dev zlib1g-dev libhunspell-dev x11proto-record-dev \
|
||||
libxtst-dev liblzo2-dev libbz2-dev \
|
||||
libavutil-dev libavformat-dev libeb16-dev \
|
||||
libzstd-dev libxkbcommon-dev \
|
||||
libxapian-dev libzim-dev libopencc-dev \
|
||||
qt6-5compat-dev \
|
||||
qt6-base-dev \
|
||||
qt6-multimedia-dev \
|
||||
qt6-speech-dev \
|
||||
qt6-svg-dev \
|
||||
qt6-tools-dev \
|
||||
qt6-tools-dev-tools \
|
||||
qt6-webchannel-dev \
|
||||
qt6-webengine-dev
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of analysis
|
||||
submodules: true
|
||||
- uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: 18
|
||||
submodules: true
|
||||
- name: Install sonar-scanner and build-wrapper
|
||||
uses: SonarSource/sonarcloud-github-c-cpp@v2
|
||||
- name: Run build-wrapper
|
||||
run: |
|
||||
qmake CONFIG+=release CONFIG+=zim_support CONFIG+=chinese_conversion_support
|
||||
build-wrapper-linux-x86-64 --out-dir ${{ env.BUILD_WRAPPER_OUT_DIR }} make -j8
|
||||
mkdir build_dir
|
||||
cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -S . -B ./build_dir -G Ninja
|
||||
- name: Run sonar-scanner
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
|
||||
run: |
|
||||
sonar-scanner --define sonar.cfamily.build-wrapper-output="${{ env.BUILD_WRAPPER_OUT_DIR }}"
|
||||
sonar-scanner --define sonar.cfamily.compile-commands=./build_dir/compile_commands.json
|
||||
|
|
144
.github/workflows/cmake build check.yml
vendored
144
.github/workflows/cmake build check.yml
vendored
|
@ -1,144 +0,0 @@
|
|||
name: CMake Build Check
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.ref }}
|
||||
cancel-in-progress: true
|
||||
on:
|
||||
workflow_dispatch:
|
||||
pull_request:
|
||||
branches:
|
||||
- dev
|
||||
- master
|
||||
- experimental
|
||||
- staged
|
||||
paths-ignore:
|
||||
- 'docs/**'
|
||||
# - ".github/**"
|
||||
- "howto/**"
|
||||
- "*.md"
|
||||
- "locale/**"
|
||||
jobs:
|
||||
job1:
|
||||
name: ubuntu Build and analyze
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/setup-python@v3
|
||||
with:
|
||||
python-version: '3.9'
|
||||
- name: Install Qt
|
||||
uses: jurplel/install-qt-action@v3
|
||||
with:
|
||||
version: 6.6.3
|
||||
arch: gcc_64
|
||||
|
||||
#serialport linuxdeploy need serialport to work.
|
||||
modules: qtwebengine qtwebchannel qtpositioning qt5compat qtmultimedia qtimageformats qtspeech qtserialport
|
||||
setup-python: 'false'
|
||||
|
||||
- name: ubuntu install thirdparty dependencies
|
||||
run: |
|
||||
sudo apt-get install git pkg-config build-essential
|
||||
sudo apt-get install libvorbis-dev zlib1g-dev libhunspell-dev x11proto-record-dev
|
||||
sudo apt-get install libxtst-dev liblzo2-dev libbz2-dev
|
||||
sudo apt-get install libavutil-dev libavformat-dev libeb16-dev
|
||||
sudo apt-get install doxygen libzstd-dev libxkbcommon-dev libgstreamer-plugins-base1.0-0 libgstreamer-gl1.0-0
|
||||
sudo ln -sf /usr/bin/x86_64-linux-gnu-ld.gold /usr/bin/ld
|
||||
sudo apt install libxapian-dev
|
||||
|
||||
#build opencc
|
||||
git clone https://github.com/BYVoid/OpenCC
|
||||
cd OpenCC/
|
||||
make PREFIX=/usr -j$(nproc)
|
||||
sudo make install
|
||||
cd ..
|
||||
sudo apt-get install libzim-dev
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of analysis
|
||||
submodules: false
|
||||
|
||||
- name: Run build-wrapper
|
||||
run: |
|
||||
cmake . -DWITH_FFMPEG_PLAYER=OFF
|
||||
cmake --build .
|
||||
|
||||
job2:
|
||||
name: windows Build and analyze
|
||||
runs-on: windows-2019
|
||||
steps:
|
||||
- uses: actions/setup-python@v3
|
||||
with:
|
||||
python-version: '3.9'
|
||||
- name: Install Qt
|
||||
uses: jurplel/install-qt-action@v3
|
||||
with:
|
||||
version: 6.5.1
|
||||
arch: win64_msvc2019_64
|
||||
|
||||
#serialport linuxdeploy need serialport to work.
|
||||
modules: qtwebengine qtwebchannel qtpositioning qt5compat qtmultimedia qtimageformats qtspeech qtserialport
|
||||
setup-python: 'false'
|
||||
- uses: ilammy/msvc-dev-cmd@v1
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of analysis
|
||||
submodules: true
|
||||
|
||||
- name: Run build-wrapper
|
||||
run: |
|
||||
cmake -S . -DWITH_FFMPEG_PLAYER=OFF
|
||||
cmake --build . --config Release
|
||||
job3:
|
||||
name: macos Build and analyze
|
||||
runs-on: macos-12
|
||||
steps:
|
||||
- uses: actions/setup-python@v3
|
||||
with:
|
||||
python-version: '3.9'
|
||||
- name: Install Qt
|
||||
uses: jurplel/install-qt-action@v3
|
||||
with:
|
||||
version: 6.5.1
|
||||
arch: clang_64
|
||||
|
||||
#serialport linuxdeploy need serialport to work.
|
||||
modules: qtwebengine qtwebchannel qtpositioning qt5compat qtmultimedia qtimageformats qtspeech qtserialport
|
||||
setup-python: 'false'
|
||||
- uses: ilammy/msvc-dev-cmd@v1
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of analysis
|
||||
submodules: false
|
||||
- name: install dependencies
|
||||
run: |
|
||||
brew install pcre2 harfbuzz freetype
|
||||
brew install cmake ninja python
|
||||
brew install automake
|
||||
brew install autoconf
|
||||
brew install libtool
|
||||
brew install opencc
|
||||
|
||||
brew install speex
|
||||
brew tap homebrew-ffmpeg/ffmpeg
|
||||
brew install homebrew-ffmpeg/ffmpeg/ffmpeg --with-speex
|
||||
brew install libao
|
||||
brew install libiconv
|
||||
brew install lzo bzip2
|
||||
brew install libogg
|
||||
brew install zstd lzip
|
||||
brew install libvorbis --force
|
||||
brew install hunspell
|
||||
wget ftp://ftp.sra.co.jp/pub/misc/eb/eb-4.4.3.tar.bz2
|
||||
tar xvjf eb-4.4.3.tar.bz2
|
||||
cd eb-4.4.3 && ./configure && make -j 8 && sudo make install && cd ..
|
||||
#brew install qt # or use official offline installer
|
||||
brew install xz lzo
|
||||
brew install pkg-config
|
||||
brew install xapian
|
||||
brew install libzim
|
||||
brew install icu4c
|
||||
- name: Run build-wrapper
|
||||
run: |
|
||||
export PKG_CONFIG_PATH=/opt/homebrew/opt/icu4c/lib/pkgconfig:/usr/local/opt/icu4c/lib/pkgconfig:"$PKG_CONFIG_PATH"
|
||||
cmake . -DWITH_FFMPEG_PLAYER=OFF
|
||||
cmake --build .
|
||||
|
56
.github/workflows/create-vcpkg-export-archive.yml
vendored
Normal file
56
.github/workflows/create-vcpkg-export-archive.yml
vendored
Normal file
|
@ -0,0 +1,56 @@
|
|||
name: Create vcpkg export archive
|
||||
on:
|
||||
workflow_dispatch:
|
||||
|
||||
|
||||
env:
|
||||
outputName: goldendict-ng-vcpkg-export
|
||||
|
||||
jobs:
|
||||
create_new_cache:
|
||||
runs-on: windows-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- name: Create export
|
||||
run: |
|
||||
# ensure always up to date
|
||||
vcpkg x-update-baseline
|
||||
|
||||
vcpkg install --x-feature=breakpad
|
||||
vcpkg export --raw --output-dir=.\exports --output=${{ env.outputName }}
|
||||
echo "Starts compressing..."
|
||||
cd .\exports
|
||||
cmake -E tar c ${{ env.outputName }}.tar.zst --zstd .\${{ env.outputName }}
|
||||
|
||||
- name: Upload as release
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
run: |
|
||||
$vcpkgBaselineVersion = $(Get-Content .\vcpkg-configuration.json | ConvertFrom-Json).'default-registry'.'baseline'
|
||||
$dateString = Get-Date -Format "yyMMdd"
|
||||
|
||||
$tagName = "vcpkg_${dateString}_${vcpkgBaselineVersion}"
|
||||
|
||||
cd .\exports\
|
||||
$fileHash = $(Get-FileHash ${{ env.outputName }}.tar.zst SHA512).Hash
|
||||
|
||||
|
||||
$notes=@"
|
||||
GoldenDict-ng's windows build artifacts created with vcpkg, for development purpose only.
|
||||
|
||||
vcpkg baseline version: <https://github.com/microsoft/vcpkg/tree/${vcpkgBaselineVersion}>
|
||||
SHA512:
|
||||
``````
|
||||
${fileHash}
|
||||
``````
|
||||
packages:
|
||||
``````
|
||||
"@
|
||||
Add-Content -Path .\note.txt -Value ${notes}
|
||||
vcpkg list | Add-Content .\note.txt
|
||||
Add-Content -Path .\note.txt -Value "``````"
|
||||
Get-Content .\note.txt
|
||||
|
||||
|
||||
gh release create "${tagName}" --notes-file=.\note.txt --title "vcpkg package export archive" --latest=false
|
||||
gh release upload "${tagName}" ${{ env.outputName }}.tar.zst --clobber
|
80
.github/workflows/macos-homebrew-PR-check.yml
vendored
80
.github/workflows/macos-homebrew-PR-check.yml
vendored
|
@ -1,80 +0,0 @@
|
|||
name: macos-homebrew-PR-check
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.ref }}
|
||||
cancel-in-progress: true
|
||||
on:
|
||||
|
||||
workflow_dispatch:
|
||||
|
||||
pull_request:
|
||||
branches:
|
||||
- dev
|
||||
- master
|
||||
- experimental
|
||||
- staged
|
||||
paths-ignore:
|
||||
- 'docs/**'
|
||||
# - ".github/**"
|
||||
- "howto/**"
|
||||
- "*.md"
|
||||
- "locale/**"
|
||||
- "website/**"
|
||||
jobs:
|
||||
build:
|
||||
name: Build
|
||||
runs-on: ${{ matrix.os }}
|
||||
strategy:
|
||||
matrix:
|
||||
os: [macos-12]
|
||||
qt_ver: [6.6.3]
|
||||
qt_arch: [clang_64]
|
||||
env:
|
||||
targetName: GoldenDict
|
||||
steps:
|
||||
|
||||
- name: Install Qt
|
||||
uses: jurplel/install-qt-action@v3
|
||||
with:
|
||||
version: ${{ matrix.qt_ver }}
|
||||
arch: ${{ matrix.qt_arch }}
|
||||
|
||||
modules: qtwebengine qtwebchannel qtpositioning qt5compat qtmultimedia qtspeech
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 1
|
||||
submodules: true
|
||||
- name: Set outputs
|
||||
id: githash
|
||||
run: |
|
||||
echo "sha_short=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: install deps on macos
|
||||
run: |
|
||||
export HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK=TRUE
|
||||
brew install cmake ninja
|
||||
brew install automake
|
||||
brew install autoconf
|
||||
brew install libtool
|
||||
brew install opencc
|
||||
|
||||
brew install libao
|
||||
brew install libiconv
|
||||
brew install lzo bzip2
|
||||
brew install libogg
|
||||
brew install zstd lzip
|
||||
brew install libvorbis --force
|
||||
brew install hunspell
|
||||
wget ftp://ftp.sra.co.jp/pub/misc/eb/eb-4.4.3.tar.bz2
|
||||
tar xvjf eb-4.4.3.tar.bz2
|
||||
cd eb-4.4.3 && ./configure && make -j 8 && sudo make install && cd ..
|
||||
# brew install xz
|
||||
brew install pkg-config
|
||||
brew install libiconv
|
||||
brew install xapian
|
||||
brew install libzim
|
||||
|
||||
- name: compile
|
||||
run: |
|
||||
qmake CONFIG+=release CONFIG+=no_macos_universal CONFIG+=zim_support CONFIG+=use_iconv CONFIG+=use_xapian CONFIG+=no_ffmpeg_player
|
||||
make
|
||||
|
224
.github/workflows/macos-homebrew-breakpad.yml
vendored
224
.github/workflows/macos-homebrew-breakpad.yml
vendored
|
@ -1,224 +0,0 @@
|
|||
name: macos-homebrew-breakpad
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.ref }}
|
||||
cancel-in-progress: true
|
||||
on:
|
||||
workflow_dispatch:
|
||||
#push:
|
||||
# branches:
|
||||
# - dev
|
||||
# - master
|
||||
# # - staged
|
||||
# paths-ignore:
|
||||
# - 'docs/**'
|
||||
# - ".github/**"
|
||||
# - "howto/**"
|
||||
# - "*.md"
|
||||
# - ".clang-format"
|
||||
jobs:
|
||||
build:
|
||||
name: Build
|
||||
runs-on: ${{ matrix.os }}
|
||||
strategy:
|
||||
matrix:
|
||||
os: [macos-13]
|
||||
qt_ver: [ 6.6.0 ]
|
||||
qt_arch: [clang_64]
|
||||
env:
|
||||
targetName: GoldenDict
|
||||
version: 24.05.05
|
||||
version-suffix: alpha
|
||||
prerelease: true
|
||||
steps:
|
||||
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
submodules: true
|
||||
- name: Set outputs
|
||||
id: githash
|
||||
run: |
|
||||
echo "sha_short=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: install deps on macos
|
||||
run: |
|
||||
brew install cmake ninja
|
||||
brew install automake
|
||||
brew install autoconf
|
||||
brew install libtool
|
||||
brew install opencc
|
||||
brew install speex
|
||||
brew install wavpack
|
||||
brew install automake fdk-aac git lame libass libtool libvorbis libvpx opus sdl shtool texi2html theora wget x264 x265 xvid nasm
|
||||
|
||||
brew install libiconv
|
||||
brew install lzo bzip2
|
||||
brew install libogg
|
||||
brew install zstd lzip
|
||||
brew install libvorbis
|
||||
brew install hunspell
|
||||
git clone https://github.com/xiaoyifang/eb.git
|
||||
cd eb && ./configure && make -j 8 && sudo make install && cd ..
|
||||
brew install xz lzo
|
||||
brew install pkg-config
|
||||
brew install create-dmg
|
||||
brew install xapian
|
||||
brew install libzim
|
||||
# brew reinstall icu4c
|
||||
brew install dylibbundler
|
||||
find /opt -name libicudata.72.dylib
|
||||
find /usr/local -name libicudata.72.dylib
|
||||
- name: version-file
|
||||
shell: bash
|
||||
env:
|
||||
VAR_SUFFIX: ${{env.version-suffix}}
|
||||
VAR_VERSION: ${{env.version}}
|
||||
run: |
|
||||
current_tag=$(git rev-parse --short=8 HEAD)
|
||||
release_date=$(date +'%Y%m%d')
|
||||
echo "$VAR_VERSION-$VAR_SUFFIX.$release_date.$current_tag">version.txt
|
||||
cat version.txt
|
||||
echo "$version"
|
||||
|
||||
- name: vcpkg install
|
||||
shell: bash
|
||||
run: |
|
||||
vcpkg install breakpad
|
||||
- name: copy vcpkg packages into winlibs
|
||||
shell: bash
|
||||
run: |
|
||||
ls -al /usr/local/share/vcpkg/packages/breakpad*
|
||||
cp -R /usr/local/share/vcpkg/packages/breakpad*/* thirdparty/breakpad
|
||||
ls -al thirdparty/breakpad/lib
|
||||
|
||||
- name: Install Qt
|
||||
uses: jurplel/install-qt-action@v3
|
||||
with:
|
||||
version: ${{ matrix.qt_ver }}
|
||||
arch: ${{ matrix.qt_arch }}
|
||||
modules: qtwebengine qtwebchannel qtpositioning qt5compat qtmultimedia qtimageformats qtspeech
|
||||
|
||||
- name: compile
|
||||
run: |
|
||||
qmake CONFIG+=release CONFIG+=no_macos_universal CONFIG+=zim_support CONFIG+=use_xapian CONFIG+=use_breakpad CONFIG+=no_ffmpeg_player CONFIG+=no_tts_support
|
||||
make -j8
|
||||
|
||||
- name: package
|
||||
run: |
|
||||
|
||||
macdeployqt ${targetName}.app -no-strip -qmldir=. -verbose=1
|
||||
otool -L GoldenDict.app/Contents/MacOS/GoldenDict
|
||||
ls -al GoldenDict.app/Contents/Frameworks
|
||||
# otool -L GoldenDict.app/Contents/Frameworks/libicu*.dylib
|
||||
ls -al /usr/local/Cellar/icu4c/7*/lib/libicudata.*.dylib
|
||||
# cp -r /usr/local/Cellar/icu4c/7*/lib/libicudata.*.dylib GoldenDict.app/Contents/Frameworks
|
||||
|
||||
codesign --force --deep -s - GoldenDict.app
|
||||
|
||||
ls -al GoldenDict.app/Contents/Frameworks
|
||||
mkdir tmp
|
||||
mv ${targetName}.app ./tmp
|
||||
# --background "installer_background.png"
|
||||
create-dmg --volname "${targetName} Installer" --volicon "icons/macicon.icns" --window-pos 200 120 --window-size 800 400 --icon-size 100 --icon "${targetName}.app" 200 190 --hide-extension "${targetName}.app" --app-drop-link 600 185 --skip-jenkins "${targetName}.dmg" tmp/
|
||||
- name: changelog
|
||||
id: changelog
|
||||
run: |
|
||||
previousTag=$(git tag --sort=-creatordate | grep "^v" | sed -n 2p)
|
||||
echo "previousTag : $previousTag"
|
||||
|
||||
|
||||
echo "prev_tag=$previousTag" >> $GITHUB_OUTPUT
|
||||
echo "curr_tag=$(git tag --sort=-creatordate | grep "^v" | sed -n 1p)" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Set outputs
|
||||
id: vars
|
||||
run: |
|
||||
echo "sha_short=$(git rev-parse --short=8 HEAD)" >> $GITHUB_OUTPUT
|
||||
echo "release_date=$(date +'%Y%m%d')" >> $GITHUB_OUTPUT
|
||||
echo "release_time=$(date +'%H%M%S')" >> $GITHUB_OUTPUT
|
||||
echo "release_time_clock=$(date +'%H:%M:%S')" >> $GITHUB_OUTPUT
|
||||
echo "release_hm=$(date +'%y%m%d')" >> $GITHUB_OUTPUT
|
||||
|
||||
# tag 上传Release
|
||||
- name: "Build Changelog"
|
||||
id: build_changelog
|
||||
uses: mikepenz/release-changelog-builder-action@v3
|
||||
with:
|
||||
commitMode: false
|
||||
fromTag: ${{ steps.changelog.outputs.prev_tag }}
|
||||
toTag: "${{ steps.changelog.outputs.curr_tag }}"
|
||||
configurationJson: |
|
||||
{
|
||||
"template": "#{{CHANGELOG}}\n\n<details>\n<summary>🔴 Uncategorized</summary>\n\n#{{UNCATEGORIZED}}\n</details>",
|
||||
"categories": [
|
||||
{
|
||||
"title": "## 🚀 Features",
|
||||
"labels": ["feature","feat","opt"]
|
||||
},
|
||||
{
|
||||
"title": "## 🐛 Fixes",
|
||||
"labels": ["fix","bug"]
|
||||
}
|
||||
,
|
||||
{
|
||||
"title": "## 🤖 Github action",
|
||||
"labels": ["action"]
|
||||
}
|
||||
,
|
||||
{
|
||||
"title": "## 🧼 Clean Code",
|
||||
"labels": ["clean"]
|
||||
}
|
||||
|
||||
],
|
||||
"label_extractor": [
|
||||
{
|
||||
"pattern": "([^:]*):.*",
|
||||
"target": "$1",
|
||||
"on_property": "title",
|
||||
"flags": "gu"
|
||||
}
|
||||
]
|
||||
}
|
||||
- name: uploadRelease
|
||||
uses: svenstaro/upload-release-action@v2
|
||||
with:
|
||||
repo_token: ${{ secrets.GITHUB_TOKEN }}
|
||||
file: ${{ env.targetName }}.dmg
|
||||
asset_name: ${{ matrix.qt_ver }}-${{ env.targetName }}_${{ matrix.os }}_homebrew_breakpad_${{steps.vars.outputs.release_date}}.dmg
|
||||
|
||||
tag: v${{env.version}}-${{env.version-suffix}}.${{ steps.vars.outputs.sha_short }}
|
||||
overwrite: true
|
||||
release_name: GoldenDict-ng-v${{env.version}}-${{env.version-suffix}}.${{ steps.vars.outputs.release_hm }}.${{ steps.vars.outputs.sha_short }}
|
||||
prerelease: ${{env.prerelease}}
|
||||
body: |
|
||||
#### Install instructions for Windows, macOS and Linux
|
||||
|
||||
<https://xiaoyifang.github.io/goldendict-ng/install/>.
|
||||
|
||||
#### Filename pattern (文件名模式): **[Qt version]-GoldenDict-ng-[OS]-[release-date].[ext]**
|
||||
|
||||
Qt6.X is recommended for various enhancements.
|
||||
|
||||
Windows users can use either `****-installer.exe` (for installer) or `****.zip` (unzip and run).
|
||||
The `goldendict.exe` can be dropped into previous installation's folder (if dependencies aren't changed).
|
||||
|
||||
Linux users can use Flatpak or build from source.
|
||||
https://flathub.org/apps/io.github.xiaoyifang.goldendict_ng
|
||||
|
||||
macOS users can use `.dmg` installer.
|
||||
|
||||
`6.5.1-GoldenDict.exe_windows-2019_20230701.zip` means built with Qt6.5.1, windows/msvc-2019 at 20230701 as a zip archive.
|
||||
|
||||
#### Build Details
|
||||
|
||||
Flatpak
|
||||
macOS: macOS-12 and macOS-13
|
||||
Windows: Visual studio 2019
|
||||
based on: ${{github.ref_name}}
|
||||
|
||||
|
||||
|
||||
#### Changes
|
||||
|
||||
${{steps.build_changelog.outputs.changelog}}
|
|
@ -1,4 +1,4 @@
|
|||
name: AutoTag
|
||||
name: Release AutoTag
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.ref }}
|
||||
cancel-in-progress: true
|
||||
|
@ -22,8 +22,8 @@ jobs:
|
|||
runs-on: ubuntu-latest
|
||||
|
||||
env:
|
||||
version: 24.05.05
|
||||
version-suffix: ${{ !contains(github.ref_name,'master') && 'alpha' || 'LiXia' }}
|
||||
version: 24.09.0
|
||||
version-suffix: ${{ !contains(github.ref_name,'master') && 'alpha' || 'Release' }}
|
||||
prerelease: ${{ !contains(github.ref_name,'master') }}
|
||||
|
||||
steps:
|
|
@ -1,4 +1,4 @@
|
|||
name: macos-homebrew
|
||||
name: Release macOS
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.ref }}
|
||||
cancel-in-progress: true
|
||||
|
@ -23,12 +23,12 @@ jobs:
|
|||
strategy:
|
||||
matrix:
|
||||
os: [macos-12,macos-14]
|
||||
qt_ver: [ 6.7.0 ]
|
||||
qt_ver: [ 6.7.2,6.6.3 ]
|
||||
qt_arch: [clang_64]
|
||||
env:
|
||||
targetName: GoldenDict
|
||||
version: 24.05.05
|
||||
version-suffix: ${{ !contains(github.ref_name,'master') && 'alpha' || 'LiXia' }}
|
||||
version: 24.09.0
|
||||
version-suffix: ${{ !contains(github.ref_name,'master') && 'alpha' || 'Release' }}
|
||||
prerelease: ${{ !contains(github.ref_name,'master') }}
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
@ -73,7 +73,7 @@ jobs:
|
|||
- name: compile
|
||||
run: |
|
||||
mkdir build_dir
|
||||
cmake -S . -B build_dir -G Ninja -DWITH_FFMPEG_PLAYER=OFF -DWITH_TTS=OFF -DCMAKE_BUILD_TYPE=Release
|
||||
cmake -S . -B build_dir -G Ninja -DWITH_FFMPEG_PLAYER=OFF -DWITH_TTS=OFF -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_OSX_DEPLOYMENT_TARGET="12.0"
|
||||
cmake --build build_dir
|
||||
|
||||
- name: package
|
||||
|
@ -157,31 +157,17 @@ jobs:
|
|||
file_glob: true
|
||||
tag: v${{env.version}}-${{env.version-suffix}}.${{ steps.vars.outputs.sha_short }}
|
||||
overwrite: true
|
||||
release_name: GoldenDict-ng-v${{env.version}}-${{env.version-suffix}}.${{ steps.vars.outputs.release_hm }}.${{ steps.vars.outputs.sha_short }}
|
||||
release_name: v${{env.version}}-${{env.version-suffix}}.${{ steps.vars.outputs.release_hm }}.${{ steps.vars.outputs.sha_short }}
|
||||
prerelease: ${{env.prerelease}}
|
||||
body: |
|
||||
#### Install instructions for Windows, macOS and Linux
|
||||
|
||||
<https://xiaoyifang.github.io/goldendict-ng/install/>.
|
||||
|
||||
#### Filename pattern (文件名模式): **[Qt version]-GoldenDict-ng-[OS]-[release-date].[ext]**
|
||||
|
||||
Windows users can use either `****-installer.exe` (for installer) or `****.zip` (unzip and run).
|
||||
The `goldendict.exe` can be dropped into previous installation's folder (if dependencies aren't changed).
|
||||
|
||||
Linux users can use Flatpak or build from source.
|
||||
https://flathub.org/apps/io.github.xiaoyifang.goldendict_ng
|
||||
|
||||
macOS users can use `.dmg` installer.
|
||||
|
||||
`6.5.1-GoldenDict.exe_windows-2019_20230701.zip` means built with Qt6.5.1, windows/msvc-2019 at 20230701 as a zip archive.
|
||||
|
||||
#### Build Details
|
||||
|
||||
macOS: macOS-12 (x86_64) and macOS-14 (Arm)
|
||||
Windows: Visual studio 2019
|
||||
based on: ${{github.ref_name}}
|
||||
|
||||
[Install instructions for Windows, macOS and Linux](https://xiaoyifang.github.io/goldendict-ng/install/).
|
||||
|
||||
Filename pattern: GoldenDict-ng-[version]-[Qt version]-[system name]-...
|
||||
|
||||
For Linux, the released version is on Flathub → [io.github.xiaoyifang.goldendict_ng](https://flathub.org/apps/io.github.xiaoyifang.goldendict_ng).
|
||||
|
||||
Based on branch: ${{github.ref_name}}
|
||||
|
||||
#### Changes
|
||||
|
||||
${{steps.build_changelog.outputs.changelog}}
|
||||
${{steps.build_changelog.outputs.changelog}}
|
189
.github/workflows/release-windows-vcpkg-cmake.yml
vendored
Normal file
189
.github/workflows/release-windows-vcpkg-cmake.yml
vendored
Normal file
|
@ -0,0 +1,189 @@
|
|||
name: Release Windows CMake
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.ref }}
|
||||
cancel-in-progress: true
|
||||
on:
|
||||
workflow_dispatch:
|
||||
push:
|
||||
branches:
|
||||
- dev
|
||||
- master
|
||||
- experimental
|
||||
paths-ignore:
|
||||
- 'docs/**'
|
||||
- "*.md"
|
||||
- ".*"
|
||||
|
||||
jobs:
|
||||
build:
|
||||
name: Build
|
||||
runs-on: ${{ matrix.os }}
|
||||
strategy:
|
||||
matrix:
|
||||
os: [windows-2022]
|
||||
qt_ver: [ 6.7.2, 6.6.3 ]
|
||||
qt_arch: [win64_msvc2019_64]
|
||||
env:
|
||||
version: 24.09.0
|
||||
versionSuffix: ${{ !contains(github.ref_name,'master') && 'alpha' || 'Release' }}
|
||||
prerelease: ${{ !contains(github.ref_name,'master') }}
|
||||
steps:
|
||||
- name: Install Qt
|
||||
uses: jurplel/install-qt-action@v3
|
||||
with:
|
||||
version: ${{ matrix.qt_ver }}
|
||||
# target: ${{ matrix.qt_target }}
|
||||
arch: ${{ matrix.qt_arch }}
|
||||
modules: qtwebengine qtwebchannel qtpositioning qt5compat qtmultimedia qtimageformats qtspeech
|
||||
setup-python: 'false'
|
||||
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
submodules: true
|
||||
|
||||
- name: Setup changelog
|
||||
id: changelog
|
||||
shell: bash
|
||||
env:
|
||||
prerelease: ${{env.prerelease}}
|
||||
run: |
|
||||
if [[ "$prerelease" == 'true' ]]
|
||||
then
|
||||
echo "This is a pre-release"
|
||||
previousTag=$(git tag --sort=-creatordate | grep "^v" | sed -n 2p)
|
||||
currentTag=$(git tag --sort=-creatordate | grep "^v" | sed -n 1p)
|
||||
else
|
||||
echo "This is not a pre-release"
|
||||
previousTag=$(git tag --sort=-creatordate | grep "^v" | grep -v "alpha" | sed -n 2p)
|
||||
currentTag=$(git tag --sort=-creatordate | grep "^v" | grep -v "alpha" | sed -n 1p)
|
||||
fi
|
||||
echo "prev_tag=$previousTag" >> $GITHUB_OUTPUT
|
||||
echo "curr_tag=$currentTag" >> $GITHUB_OUTPUT
|
||||
echo "previousTag : $previousTag"
|
||||
echo "currentTag : $currentTag"
|
||||
|
||||
- name: "Build Changelog"
|
||||
id: build_changelog
|
||||
uses: mikepenz/release-changelog-builder-action@v3
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
with:
|
||||
commitMode: false
|
||||
fromTag: "${{ steps.changelog.outputs.prev_tag }}"
|
||||
toTag: "${{ steps.changelog.outputs.curr_tag }}"
|
||||
configurationJson: |
|
||||
{
|
||||
"template": "#{{CHANGELOG}}\n\n<details>\n<summary>🔴 Uncategorized</summary>\n\n#{{UNCATEGORIZED}}\n</details>",
|
||||
"categories": [
|
||||
{
|
||||
"title": "## 🚀 Features",
|
||||
"labels": ["feature","feat","opt"]
|
||||
},
|
||||
{
|
||||
"title": "## 🐛 Fixes",
|
||||
"labels": ["fix","bug"]
|
||||
}
|
||||
,
|
||||
{
|
||||
"title": "## 🤖 Github action",
|
||||
"labels": ["action"]
|
||||
}
|
||||
,
|
||||
{
|
||||
"title": "## 🧼 Clean Code",
|
||||
"labels": ["clean"]
|
||||
}
|
||||
|
||||
|
||||
],
|
||||
"label_extractor": [
|
||||
{
|
||||
"pattern": "([^:]*):.*",
|
||||
"target": "$1",
|
||||
"on_property": "title",
|
||||
"flags": "gu"
|
||||
}
|
||||
]
|
||||
}
|
||||
- name: Build binaries
|
||||
id: build
|
||||
run: |
|
||||
# Launch-VsDevShell also provides Ninja
|
||||
& 'C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\Tools\Launch-VsDevShell.ps1' `
|
||||
-SkipAutomaticLocation -Arch amd64 -HostArch amd64
|
||||
New-Item -Path './build_dir' -ItemType Directory
|
||||
|
||||
# RelWithDebInfo + msvc's = .pdb file beside program file.
|
||||
cmake -S . -B "./build_dir" `
|
||||
-G Ninja `
|
||||
-DCMAKE_C_COMPILER="cl.exe" -DCMAKE_CXX_COMPILER="cl.exe" `
|
||||
-DCMAKE_BUILD_TYPE=RelWithDebInfo `
|
||||
-DWITH_FFMPEG_PLAYER=OFF `
|
||||
-DWITH_VCPKG_BREAKPAD=ON
|
||||
cmake --build "./build_dir"
|
||||
- name: CPack create package
|
||||
run: |
|
||||
cd './build_dir'
|
||||
cpack --verbose --trace
|
||||
cd ..
|
||||
pwd
|
||||
- name: Upload packages
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
run: |
|
||||
$tagName = "v$env:version-$env:versionSuffix.$(git rev-parse --short=8 HEAD)"
|
||||
$releaseName = "v$env:version-$env:versionSuffix.$(date +'%y%m%d').$(git rev-parse --short=8 HEAD)"
|
||||
|
||||
Add-Content -Path ./change_note.txt -Value "
|
||||
[Install instructions for Windows, macOS and Linux](https://xiaoyifang.github.io/goldendict-ng/install/).
|
||||
|
||||
Filename pattern: GoldenDict-ng-[version]-[Qt version]-[system name]-...
|
||||
|
||||
For Linux, the released version is on Flathub → [io.github.xiaoyifang.goldendict_ng](https://flathub.org/apps/io.github.xiaoyifang.goldendict_ng).
|
||||
|
||||
Based on branch: ${{github.ref_name}}
|
||||
|
||||
#### Changes
|
||||
"
|
||||
|
||||
Add-Content -Path ./change_note.txt -Value @'
|
||||
${{steps.build_changelog.outputs.changelog}}
|
||||
'@
|
||||
|
||||
$tagExist = gh api --silent "repos/:owner/:repo/git/refs/tags/${tagName}"
|
||||
if (-not $?) {
|
||||
if ($env:prerelease -eq "true") {
|
||||
gh release create ${tagName} -t ${releaseName} --target ${{github.ref_name}} --notes-file=./change_note.txt --latest=false --prerelease
|
||||
} else {
|
||||
gh release create ${tagName} -t ${releaseName} --target ${{github.ref_name}} --notes-file=./change_note.txt --latest=true
|
||||
}
|
||||
}
|
||||
|
||||
# file name after # is display label
|
||||
|
||||
$namePrefix="GoldenDict-ng-${{env.version}}-Qt${{matrix.qt_ver}}"
|
||||
|
||||
cd './build_dir'
|
||||
gh release upload "${tagName}" "${namePrefix}.7z#${namePrefix}-Windows.7z" --clobber
|
||||
gh release upload "${tagName}" "${namePrefix}.exe#${namePrefix}-Windows-installer.exe" --clobber
|
||||
|
||||
|
||||
- name: Upload Single packages
|
||||
shell: bash
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
run: |
|
||||
tagName="v${{env.version}}-${{env.versionSuffix}}.$(git rev-parse --short=8 HEAD)"
|
||||
echo $tagName
|
||||
namePrefix="GoldenDict-ng-${{env.version}}-Qt${{matrix.qt_ver}}"
|
||||
|
||||
cd ./build_dir/goldendict
|
||||
|
||||
# rename to avoid conflict with other packages
|
||||
mv goldendict.exe goldendict-Qt${{matrix.qt_ver}}.exe
|
||||
mv goldendict.pdb goldendict-Qt${{matrix.qt_ver}}.pdb
|
||||
|
||||
gh release upload "${tagName}" "goldendict-Qt${{matrix.qt_ver}}.exe#${namePrefix}-Windows-main-exe-file-only.exe" --clobber
|
||||
gh release upload "${tagName}" "goldendict-Qt${{matrix.qt_ver}}.pdb#${namePrefix}-Windows-debug-file.pdb" --clobber
|
||||
cd ..
|
84
.github/workflows/ubuntu-PR-check.yml
vendored
84
.github/workflows/ubuntu-PR-check.yml
vendored
|
@ -1,84 +0,0 @@
|
|||
name: Ubuntu-PR-check
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.ref }}
|
||||
cancel-in-progress: true
|
||||
on:
|
||||
|
||||
workflow_dispatch:
|
||||
|
||||
pull_request:
|
||||
branches:
|
||||
- dev
|
||||
- master
|
||||
- experimental
|
||||
- staged
|
||||
paths-ignore:
|
||||
- 'docs/**'
|
||||
# - ".github/**"
|
||||
- "howto/**"
|
||||
- "*.md"
|
||||
- "locale/**"
|
||||
- "website/**"
|
||||
|
||||
jobs:
|
||||
build:
|
||||
name: Build
|
||||
runs-on: ${{ matrix.os }}
|
||||
strategy:
|
||||
matrix:
|
||||
os: [ubuntu-latest]
|
||||
qt_ver: [5.15.2,6.6.0]
|
||||
qt_arch: [gcc_64]
|
||||
|
||||
steps:
|
||||
- name: Install Qt
|
||||
if: ${{ matrix.qt_ver == '5.15.2' }}
|
||||
uses: jurplel/install-qt-action@v3
|
||||
with:
|
||||
version: ${{ matrix.qt_ver }}
|
||||
|
||||
modules: qtwebengine
|
||||
|
||||
- name: Install Qt
|
||||
if: ${{ matrix.qt_ver != '5.15.2' }}
|
||||
uses: jurplel/install-qt-action@v3
|
||||
with:
|
||||
version: ${{ matrix.qt_ver }}
|
||||
arch: ${{ matrix.qt_arch }}
|
||||
|
||||
modules: qtwebengine qtwebchannel qtpositioning qt5compat qtmultimedia qtimageformats qtspeech
|
||||
|
||||
- name: ubuntu install thirdparty dependencies
|
||||
run: |
|
||||
sudo apt-get install git pkg-config build-essential qt5-qmake
|
||||
sudo apt-get install libvorbis-dev zlib1g-dev libhunspell-dev x11proto-record-dev
|
||||
sudo apt-get install qtdeclarative5-dev libxtst-dev liblzo2-dev libbz2-dev
|
||||
sudo apt-get install libavutil-dev libavformat-dev libeb16-dev
|
||||
sudo apt-get install libqt5webkit5-dev libqt5svg5-dev libqt5x11extras5-dev qttools5-dev
|
||||
sudo apt-get install qttools5-dev-tools qtmultimedia5-dev libqt5multimedia5-plugins doxygen libzstd-dev #libopencc-dev
|
||||
sudo apt-get install libxkbcommon-dev libc6-dev
|
||||
sudo ln -sf /usr/bin/x86_64-linux-gnu-ld.gold /usr/bin/ld
|
||||
git clone https://github.com/BYVoid/OpenCC
|
||||
pwd
|
||||
cd OpenCC/
|
||||
make PREFIX=/usr -j$(nproc)
|
||||
sudo make install
|
||||
cd ..
|
||||
sudo apt install libxapian-dev
|
||||
sudo apt-get install libzim-dev
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 1
|
||||
submodules: true
|
||||
|
||||
- name: build goldendict
|
||||
run: |
|
||||
qmake CONFIG+=release PREFIX=/usr CONFIG+=zim_support CONFIG+=chinese_conversion_support CONFIG+=use_iconv CONFIG+=use_xapian
|
||||
make INSTALL_ROOT=appdir -j`nproc` install; find appdir/
|
||||
|
||||
#copy missing shared dll to appdir.
|
||||
mkdir -p appdir/usr/lib
|
||||
cp $(ldd appdir/usr/bin/goldendict | grep -o '\W/[^ ]*' |grep gobject ) appdir/usr/lib
|
||||
cp $(ldd appdir/usr/bin/goldendict | grep -o '\W/[^ ]*' |grep libpango ) appdir/usr/lib
|
||||
|
||||
|
278
.github/workflows/windows-6.x.yml
vendored
278
.github/workflows/windows-6.x.yml
vendored
|
@ -1,278 +0,0 @@
|
|||
name: Windows-6.x
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.ref }}
|
||||
cancel-in-progress: true
|
||||
on:
|
||||
# workflow_run:
|
||||
# workflows: [AutoTag]
|
||||
# types: [completed]
|
||||
workflow_dispatch:
|
||||
push:
|
||||
branches:
|
||||
- dev
|
||||
- master
|
||||
- experimental
|
||||
# - staged
|
||||
paths-ignore:
|
||||
- 'docs/**'
|
||||
# - ".github/**"
|
||||
- "howto/**"
|
||||
- "*.md"
|
||||
- ".clang-format"
|
||||
|
||||
jobs:
|
||||
build:
|
||||
name: Build
|
||||
# see https://github.com/actions/virtual-environments/blob/main/images/win/Windows2019-Readme.md
|
||||
runs-on: ${{ matrix.os }}
|
||||
strategy:
|
||||
matrix:
|
||||
os: [windows-2019]
|
||||
qt_ver: [ 6.6.3,6.7.0 ]
|
||||
qt_arch: [win64_msvc2019_64]
|
||||
env:
|
||||
targetName: GoldenDict.exe
|
||||
version: 24.05.05
|
||||
version-suffix: ${{ !contains(github.ref_name,'master') && 'alpha' || 'LiXia' }}
|
||||
prerelease: ${{ !contains(github.ref_name,'master') }}
|
||||
steps:
|
||||
- uses: actions/setup-python@v3
|
||||
with:
|
||||
python-version: '3.9'
|
||||
- name: Install Qt
|
||||
uses: jurplel/install-qt-action@v3
|
||||
with:
|
||||
version: ${{ matrix.qt_ver }}
|
||||
# target: ${{ matrix.qt_target }}
|
||||
arch: ${{ matrix.qt_arch }}
|
||||
modules: qtwebengine qtwebchannel qtpositioning qt5compat qtmultimedia qtimageformats qtspeech
|
||||
setup-python: 'false'
|
||||
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
submodules: true
|
||||
|
||||
- name: changelog
|
||||
id: changelog
|
||||
shell: bash
|
||||
env:
|
||||
prerelease: ${{env.prerelease}}
|
||||
run: |
|
||||
if [[ "$prerelease" == 'true' ]]
|
||||
then
|
||||
echo "This is a pre-release"
|
||||
previousTag=$(git tag --sort=-creatordate | grep "^v" | sed -n 2p)
|
||||
currentTag=$(git tag --sort=-creatordate | grep "^v" | sed -n 1p)
|
||||
else
|
||||
echo "This is not a pre-release"
|
||||
previousTag=$(git tag --sort=-creatordate | grep "^v" | grep -v "alpha" | sed -n 2p)
|
||||
currentTag=$(git tag --sort=-creatordate | grep "^v" | grep -v "alpha" | sed -n 1p)
|
||||
fi
|
||||
echo "prev_tag=$previousTag" >> $GITHUB_OUTPUT
|
||||
echo "curr_tag=$currentTag" >> $GITHUB_OUTPUT
|
||||
echo "previousTag : $previousTag"
|
||||
echo "currentTag : $currentTag"
|
||||
|
||||
- name: "Build Changelog"
|
||||
id: build_changelog
|
||||
uses: mikepenz/release-changelog-builder-action@v3
|
||||
with:
|
||||
commitMode: false
|
||||
fromTag: "${{ steps.changelog.outputs.prev_tag }}"
|
||||
toTag: "${{ steps.changelog.outputs.curr_tag }}"
|
||||
configurationJson: |
|
||||
{
|
||||
"template": "#{{CHANGELOG}}\n\n<details>\n<summary>🔴 Uncategorized</summary>\n\n#{{UNCATEGORIZED}}\n</details>",
|
||||
"categories": [
|
||||
{
|
||||
"title": "## 🚀 Features",
|
||||
"labels": ["feature","feat","opt"]
|
||||
},
|
||||
{
|
||||
"title": "## 🐛 Fixes",
|
||||
"labels": ["fix","bug"]
|
||||
}
|
||||
,
|
||||
{
|
||||
"title": "## 🤖 Github action",
|
||||
"labels": ["action"]
|
||||
}
|
||||
,
|
||||
{
|
||||
"title": "## 🧼 Clean Code",
|
||||
"labels": ["clean"]
|
||||
}
|
||||
|
||||
|
||||
],
|
||||
"label_extractor": [
|
||||
{
|
||||
"pattern": "([^:]*):.*",
|
||||
"target": "$1",
|
||||
"on_property": "title",
|
||||
"flags": "gu"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
- name: Set outputs
|
||||
id: vars
|
||||
shell: bash
|
||||
run: |
|
||||
echo "sha_short=$(git rev-parse --short=8 HEAD)" >> $GITHUB_OUTPUT
|
||||
echo "release_date=$(date +'%Y%m%d')" >> $GITHUB_OUTPUT
|
||||
echo "release_time=$(date +'%H%M%S')" >> $GITHUB_OUTPUT
|
||||
echo "release_time_clock=$(date +'%H:%M:%S')" >> $GITHUB_OUTPUT
|
||||
echo "release_hm=$(date +'%y%m%d')" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: version-file
|
||||
shell: bash
|
||||
env:
|
||||
VAR_SUFFIX: ${{env.version-suffix}}
|
||||
VAR_VERSION: ${{env.version}}
|
||||
run: |
|
||||
current_tag=$(git rev-parse --short=8 HEAD)
|
||||
release_date=$(date +'%Y%m%d')
|
||||
echo "$VAR_VERSION-$VAR_SUFFIX.$release_date.$current_tag">version.txt
|
||||
cat version.txt
|
||||
echo "$version"
|
||||
|
||||
- name: vcpkg build
|
||||
uses: johnwason/vcpkg-action@v5
|
||||
id: vcpkg
|
||||
with:
|
||||
# pkgs: ffmpeg[core,avcodec,avformat,mp3lame,opus,speex,swresample,vorbis,fdk-aac,gpl] breakpad
|
||||
pkgs: breakpad
|
||||
triplet: x64-windows-release
|
||||
token: ${{ github.token }}
|
||||
- name: copy vcpkg packages into winlibs
|
||||
shell: bash
|
||||
run: |
|
||||
cp -R vcpkg/packages/breakpad_x64-windows-release/* thirdparty/breakpad
|
||||
ls -al thirdparty/breakpad
|
||||
|
||||
# # msvc编译
|
||||
- uses: ilammy/msvc-dev-cmd@v1
|
||||
# with:
|
||||
# arch: ${{ matrix.msvc_arch }}
|
||||
- name: msvc-build goldendict
|
||||
id: build
|
||||
shell: cmd
|
||||
run: |
|
||||
qmake "CONFIG+=zim_support" CONFIG+=release CONFIG+=use_xapian CONFIG+=use_iconv CONFIG+=use_breakpad CONFIG+=no_ffmpeg_player CONFIG+=no_tts_support
|
||||
nmake
|
||||
|
||||
echo winSdkDir=%WindowsSdkDir% >> %GITHUB_ENV%
|
||||
echo winSdkVer=%WindowsSdkVersion% >> %GITHUB_ENV%
|
||||
echo vcToolsInstallDir=%VCToolsInstallDir% >> %GITHUB_ENV%
|
||||
echo vcToolsRedistDir=%VCToolsRedistDir% >> %GITHUB_ENV%
|
||||
echo QTDIR=%Qt6_DIR% >> %GITHUB_ENV%
|
||||
|
||||
# 打包
|
||||
- name: windows ps package
|
||||
id: package-windows
|
||||
env:
|
||||
archiveName: GoldenDict-Windows.${{ steps.vars.outputs.sha_short }}-${{ steps.vars.outputs.release_time }}
|
||||
shell: pwsh
|
||||
run: |
|
||||
& .github\scripts\windows-publish.ps1 ${env:archiveName} ${env:targetName}
|
||||
|
||||
- name: package
|
||||
id: package
|
||||
shell: bash
|
||||
run: |
|
||||
packageName=GoldenDict-Windows.${{ steps.vars.outputs.sha_short }}-${{ steps.vars.outputs.release_time }}
|
||||
echo $packageName
|
||||
echo "packageName=$packageName" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: upload goldendict.exe only
|
||||
uses: svenstaro/upload-release-action@v2
|
||||
with:
|
||||
repo_token: ${{ secrets.GITHUB_TOKEN }}
|
||||
file: release/${{ env.targetName }}
|
||||
asset_name: ${{ matrix.qt_ver }}.${{ matrix.os }}-${{ env.targetName }}
|
||||
|
||||
tag: v${{env.version}}-${{env.version-suffix}}.${{ steps.vars.outputs.sha_short }}
|
||||
overwrite: true
|
||||
release_name: GoldenDict-ng-v${{env.version}}-${{env.version-suffix}}.${{ steps.vars.outputs.release_hm }}.${{ steps.vars.outputs.sha_short }}
|
||||
prerelease: ${{env.prerelease}}
|
||||
|
||||
- name: upload pdb
|
||||
uses: svenstaro/upload-release-action@v2
|
||||
with:
|
||||
repo_token: ${{ secrets.GITHUB_TOKEN }}
|
||||
file: release/GoldenDict.pdb
|
||||
asset_name: ${{ matrix.qt_ver }}.${{ matrix.os }}-GoldenDict.pdb
|
||||
|
||||
tag: v${{env.version}}-${{env.version-suffix}}.${{ steps.vars.outputs.sha_short }}
|
||||
overwrite: true
|
||||
release_name: GoldenDict-ng-v${{env.version}}-${{env.version-suffix}}.${{ steps.vars.outputs.release_hm }}.${{ steps.vars.outputs.sha_short }}
|
||||
prerelease: ${{env.prerelease}}
|
||||
|
||||
- name: copy nsis
|
||||
shell: bash
|
||||
run: |
|
||||
cp tools/nsis/GoldenDict.nsi ${{ steps.package.outputs.packageName }}/
|
||||
- name: Create installer
|
||||
uses: joncloud/makensis-action@v4
|
||||
with:
|
||||
arguments: "/V3"
|
||||
script-file: ${{ steps.package.outputs.packageName }}/GoldenDict.nsi
|
||||
- name: make installer
|
||||
run: |
|
||||
cd ${{ steps.package.outputs.packageName }}
|
||||
ls *.exe
|
||||
- name: upload goldendict installer
|
||||
uses: svenstaro/upload-release-action@v2
|
||||
with:
|
||||
repo_token: ${{ secrets.GITHUB_TOKEN }}
|
||||
file: ${{ steps.package.outputs.packageName }}/GoldenDict-ng-v23-Installer.exe
|
||||
asset_name: ${{ matrix.qt_ver }}-GoldenDict-ng-Installer.exe
|
||||
|
||||
tag: v${{env.version}}-${{env.version-suffix}}.${{ steps.vars.outputs.sha_short }}
|
||||
overwrite: true
|
||||
release_name: GoldenDict-ng-v${{env.version}}-${{env.version-suffix}}.${{ steps.vars.outputs.release_hm }}.${{ steps.vars.outputs.sha_short }}
|
||||
prerelease: ${{env.prerelease}}
|
||||
|
||||
- name: uploadRelease
|
||||
# if: startsWith(github.event.ref, 'refs/tags/')
|
||||
uses: svenstaro/upload-release-action@v2
|
||||
with:
|
||||
repo_token: ${{ secrets.GITHUB_TOKEN }}
|
||||
file: ${{ steps.package.outputs.packageName }}.zip
|
||||
asset_name: ${{ matrix.qt_ver }}-${{ env.targetName }}_${{ matrix.os }}_${{steps.vars.outputs.release_date}}.zip
|
||||
|
||||
tag: v${{env.version}}-${{env.version-suffix}}.${{ steps.vars.outputs.sha_short }}
|
||||
overwrite: true
|
||||
release_name: GoldenDict-ng-v${{env.version}}-${{env.version-suffix}}.${{ steps.vars.outputs.release_hm }}.${{ steps.vars.outputs.sha_short }}
|
||||
prerelease: ${{env.prerelease}}
|
||||
body: |
|
||||
#### Install instructions for Windows, macOS and Linux
|
||||
|
||||
<https://xiaoyifang.github.io/goldendict-ng/install/>.
|
||||
|
||||
#### Filename pattern (文件名模式): **[Qt version]-GoldenDict-ng-[OS]-[release-date].[ext]**
|
||||
|
||||
Windows users can use either `****-installer.exe` (for installer) or `****.zip` (unzip and run).
|
||||
The `goldendict.exe` can be dropped into previous installation's folder (if dependencies aren't changed).
|
||||
|
||||
Linux users can use Flatpak or build from source.
|
||||
https://flathub.org/apps/io.github.xiaoyifang.goldendict_ng
|
||||
|
||||
macOS users can use `.dmg` installer.
|
||||
|
||||
`6.5.1-GoldenDict.exe_windows-2019_20230701.zip` means built with Qt6.5.1, windows/msvc-2019 at 20230701 as a zip archive.
|
||||
|
||||
#### Build Details
|
||||
|
||||
macOS: macOS-12 (x86_64) and macOS-14 (Arm)
|
||||
Windows: Visual studio 2019
|
||||
based on: ${{github.ref_name}}
|
||||
|
||||
#### Changes
|
||||
|
||||
${{steps.build_changelog.outputs.changelog}}
|
69
.github/workflows/windows-PR-check.yml
vendored
69
.github/workflows/windows-PR-check.yml
vendored
|
@ -1,69 +0,0 @@
|
|||
name: Windows-PR-check
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.ref }}
|
||||
cancel-in-progress: true
|
||||
on:
|
||||
|
||||
workflow_dispatch:
|
||||
|
||||
pull_request:
|
||||
branches:
|
||||
- dev
|
||||
- master
|
||||
- experimental
|
||||
- staged
|
||||
paths-ignore:
|
||||
- 'docs/**'
|
||||
# - ".github/**"
|
||||
- "howto/**"
|
||||
- "*.md"
|
||||
- "locale/**"
|
||||
- "website/**"
|
||||
|
||||
jobs:
|
||||
build:
|
||||
name: Build
|
||||
# see https://github.com/actions/virtual-environments/blob/main/images/win/Windows2019-Readme.md
|
||||
runs-on: ${{ matrix.os }}
|
||||
strategy:
|
||||
matrix:
|
||||
os: [windows-2019]
|
||||
qt_ver: [5.15.2,6.6.3]
|
||||
qt_arch: [win64_msvc2019_64]
|
||||
steps:
|
||||
- uses: actions/setup-python@v3
|
||||
with:
|
||||
python-version: '3.9'
|
||||
- name: Install Qt
|
||||
if: ${{ matrix.qt_ver == '5.15.2' }}
|
||||
uses: jurplel/install-qt-action@v3
|
||||
with:
|
||||
version: ${{ matrix.qt_ver }}
|
||||
arch: ${{ matrix.qt_arch }}
|
||||
|
||||
modules: qtwebengine
|
||||
- name: Install Qt
|
||||
if: ${{ matrix.qt_ver != '5.15.2' }}
|
||||
uses: jurplel/install-qt-action@v3
|
||||
with:
|
||||
version: ${{ matrix.qt_ver }}
|
||||
# target: ${{ matrix.qt_target }}
|
||||
arch: ${{ matrix.qt_arch }}
|
||||
|
||||
modules: qtwebengine qtwebchannel qtpositioning qt5compat qtmultimedia qtimageformats qtspeech
|
||||
setup-python: 'false'
|
||||
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 1
|
||||
submodules: true
|
||||
|
||||
- uses: ilammy/msvc-dev-cmd@v1
|
||||
# with:
|
||||
# arch: ${{ matrix.msvc_arch }}
|
||||
- name: msvc-build goldendict
|
||||
id: build
|
||||
shell: cmd
|
||||
run: |
|
||||
qmake "CONFIG+=zim_support" CONFIG+=release CONFIG+=use_iconv CONFIG+=use_xapian CONFIG+=no_ffmpeg_player
|
||||
nmake
|
2
.gitignore
vendored
2
.gitignore
vendored
|
@ -21,8 +21,6 @@ object_script.goldendict.Release
|
|||
|
||||
version.txt
|
||||
|
||||
.gitattributes
|
||||
|
||||
*.dmg
|
||||
|
||||
.DS_Store
|
||||
|
|
133
CMakeLists.txt
133
CMakeLists.txt
|
@ -1,16 +1,16 @@
|
|||
cmake_minimum_required(VERSION 3.25) # ubuntu 23.04 Fedora 36
|
||||
|
||||
# Qt6.4+ only
|
||||
|
||||
option(WITH_FFMPEG_PLAYER "Enable support for FFMPEG player" ON)
|
||||
option(WITH_EPWING_SUPPORT "Enable epwing support" ON)
|
||||
option(WITH_ZIM "enable zim support" ON)
|
||||
option(WITH_TTS "enable QTexttoSpeech support" ON)
|
||||
option(WITH_TTS "enable QTexttoSpeech support" OFF)
|
||||
|
||||
# options for linux packaging
|
||||
option(USE_SYSTEM_FMT "use system fmt instead of bundled one" OFF)
|
||||
option(USE_SYSTEM_TOML "use system toml++ instead of bundled one" OFF)
|
||||
|
||||
option(WITH_VCPKG_BREAKPAD "build with Breakpad support for VCPKG build only" OFF)
|
||||
|
||||
## Change binary & resources folder to parallel install with original GD.
|
||||
## This flag should be avoided because it leads to small regressions:
|
||||
## 1. There are personal scripts assuming the binary name to be "goldendict" -> require everyone to change the name in their script
|
||||
|
@ -18,10 +18,36 @@ option(USE_SYSTEM_TOML "use system toml++ instead of bundled one" OFF)
|
|||
## 3. There are dictionary packages that install files to "/usr/share/goldendict/content" -> nullify the auto dict discovery
|
||||
option(USE_ALTERNATIVE_NAME "Force the name goldendict-ng " OFF)
|
||||
|
||||
set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake;${CMAKE_MODULE_PATH}") # to put staff in the ./cmake folder
|
||||
|
||||
|
||||
# vcpkg handling code, must be placed before project()
|
||||
if (WIN32)
|
||||
if (DEFINED CMAKE_TOOLCHAIN_FILE)
|
||||
message(STATUS "Using toolchain file: ${CMAKE_TOOLCHAIN_FILE}")
|
||||
else ()
|
||||
message(STATUS "CMAKE_TOOLCHAIN_FILE is not set. Try fetching cached vcpkg.")
|
||||
include(FetchContent)
|
||||
FetchContent_Declare(
|
||||
vcpkg-export
|
||||
URL https://github.com/xiaoyifang/goldendict-ng/releases/download/vcpkg_240711_3d72d8c930e1b6a1b2432b262c61af7d3287dcd0/goldendict-ng-vcpkg-export.tar.zst
|
||||
URL_HASH SHA512=CB7AB20F03CE1BB1D46FE5DF25C9B9F4E365B72CE0A817B3C9E39BD0C85DC571F992363A1A5E8DD1E31C44FF88C51E9A88A537688C6070B4E58FF8FA2585EAB7
|
||||
)
|
||||
FetchContent_MakeAvailable(vcpkg-export)
|
||||
set(VCPKG_MANIFEST_MODE OFF CACHE BOOL "disable existing manifest mode caused by the existrance of vcpkg.json" FORCE)
|
||||
set(CMAKE_TOOLCHAIN_FILE "${CMAKE_BINARY_DIR}/_deps/vcpkg-export-src/scripts/buildsystems/vcpkg.cmake")
|
||||
endif ()
|
||||
endif ()
|
||||
|
||||
|
||||
if (WITH_VCPKG_BREAKPAD)
|
||||
list(APPEND VCPKG_MANIFEST_FEATURES "breakpad")
|
||||
endif ()
|
||||
|
||||
include(FeatureSummary)
|
||||
|
||||
project(goldendict-ng
|
||||
VERSION 24.05.05
|
||||
VERSION 24.09.0
|
||||
LANGUAGES CXX C)
|
||||
|
||||
set(GOLDENDICT "goldendict") # binary/executable name
|
||||
|
@ -78,7 +104,7 @@ set(CMAKE_AUTOUIC_SEARCH_PATHS "${CMAKE_CURRENT_SOURCE_DIR}/src/ui/")
|
|||
# https://cmake.org/cmake/help/latest/command/file.html#filesystem
|
||||
# ! Using GLOB_RECURSE is not recommended by cmake's documentation
|
||||
# CONFIGURE_DEPENDS will trigger file tree recheck in every rebuilds.
|
||||
file(GLOB_RECURSE ALL_SOURCE_FILES CONFIGURE_DEPENDS src/*.cc src/*.hh src/*.c)
|
||||
file(GLOB_RECURSE ALL_SOURCE_FILES CONFIGURE_DEPENDS src/*.cc src/*.hh src/*.ui src/*.c)
|
||||
|
||||
if (APPLE)
|
||||
file(GLOB_RECURSE MACOS_SOURCE_FILES CONFIGURE_DEPENDS src/macos/*.mm)
|
||||
|
@ -144,6 +170,10 @@ target_include_directories(${GOLDENDICT} PRIVATE
|
|||
${PROJECT_SOURCE_DIR}/src/ui
|
||||
)
|
||||
|
||||
if (WIN32)
|
||||
target_include_directories(${GOLDENDICT} PRIVATE ${PROJECT_SOURCE_DIR}/src/windows)
|
||||
endif ()
|
||||
|
||||
if (NOT USE_SYSTEM_TOML)
|
||||
target_include_directories(${GOLDENDICT} PRIVATE ${PROJECT_SOURCE_DIR}/thirdparty/tomlplusplus)
|
||||
endif ()
|
||||
|
@ -156,11 +186,17 @@ endif ()
|
|||
|
||||
target_compile_definitions(${GOLDENDICT} PUBLIC
|
||||
CMAKE_USED_HACK # temporal hack to avoid breaking qmake build
|
||||
USE_ICONV
|
||||
MAKE_QTMULTIMEDIA_PLAYER
|
||||
MAKE_CHINESE_CONVERSION_SUPPORT
|
||||
)
|
||||
|
||||
if (WIN32)
|
||||
target_compile_definitions(${GOLDENDICT} PUBLIC
|
||||
__WIN32
|
||||
INCLUDE_LIBRARY_PATH
|
||||
)
|
||||
endif ()
|
||||
|
||||
if (WITH_FFMPEG_PLAYER)
|
||||
target_compile_definitions(${GOLDENDICT} PUBLIC MAKE_FFMPEG_PLAYER)
|
||||
endif ()
|
||||
|
@ -178,12 +214,16 @@ if (WITH_ZIM)
|
|||
target_compile_definitions(${GOLDENDICT} PUBLIC MAKE_ZIM_SUPPORT)
|
||||
endif ()
|
||||
|
||||
if (WITH_VCPKG_BREAKPAD)
|
||||
target_compile_definitions(${GOLDENDICT} PUBLIC USE_BREAKPAD)
|
||||
endif ()
|
||||
|
||||
#### libraries linking && includes for Win or Unix
|
||||
|
||||
if (WIN32)
|
||||
include(CMake_Win.cmake)
|
||||
include(Deps_Vcpkg)
|
||||
else ()
|
||||
include(CMake_Unix.cmake)
|
||||
include(Deps_Unix)
|
||||
endif ()
|
||||
|
||||
#### add translations
|
||||
|
@ -197,9 +237,12 @@ if (WIN32)
|
|||
else ()
|
||||
set_source_files_properties(${TRANS_FILES} PROPERTIES OUTPUT_LOCATION "${CMAKE_CURRENT_BINARY_DIR}/locale")
|
||||
endif ()
|
||||
# a wrapper over qt_add_lupdate and qt_add_lrelease
|
||||
|
||||
qt_add_translations(${GOLDENDICT} TS_FILES ${TRANS_FILES}
|
||||
QM_FILES_OUTPUT_VARIABLE qm_files)
|
||||
QM_FILES_OUTPUT_VARIABLE qm_files
|
||||
LUPDATE_OPTIONS "-no-ui-lines -locations none -no-obsolete")
|
||||
|
||||
add_dependencies(${GOLDENDICT} "release_translations")
|
||||
|
||||
#### installation or assemble redistribution
|
||||
|
||||
|
@ -228,7 +271,19 @@ if (APPLE)
|
|||
|
||||
install(TARGETS ${GOLDENDICT} BUNDLE DESTINATION "${Assembling_Dir}")
|
||||
install(FILES ${qm_files} DESTINATION "${Redistributable_APP}/Contents/MacOS/locale")
|
||||
install(DIRECTORY "${CMAKE_SOURCE_DIR}/opencc" DESTINATION "${Redistributable_APP}/Contents/MacOS")
|
||||
|
||||
if (IS_READABLE "/opt/homebrew/share/opencc/")
|
||||
set(OPENCC_DATA_PATH "/opt/homebrew/share/opencc/" CACHE PATH "opencc's data path")
|
||||
elseif (IS_READABLE "/usr/local/share/opencc/")
|
||||
set(OPENCC_DATA_PATH "/usr/local/share/opencc/" CACHE PATH "opencc's data path")
|
||||
else ()
|
||||
message(FATAL_ERROR "Cannot find opencc's data folder!")
|
||||
endif ()
|
||||
|
||||
file(REAL_PATH "${OPENCC_DATA_PATH}" OPENCC_DATA_PATH_FOR_REAL)
|
||||
|
||||
message(STATUS "OPENCC data is found -> ${OPENCC_DATA_PATH_FOR_REAL}")
|
||||
install(DIRECTORY "${OPENCC_DATA_PATH_FOR_REAL}" DESTINATION "${Redistributable_APP}/Contents/MacOS")
|
||||
|
||||
install(SCRIPT ${deploy_script})
|
||||
|
||||
|
@ -244,7 +299,7 @@ if (APPLE)
|
|||
--volicon ${CMAKE_SOURCE_DIR}/icons/macicon.icns \
|
||||
--icon \"${App_Name}\" 100 100
|
||||
--app-drop-link 300 100 \
|
||||
\"GoldenDict-${CMAKE_PROJECT_VERSION}-Qt${Qt6_VERSION}-${CMAKE_SYSTEM_PROCESSOR}.dmg\" \
|
||||
\"GoldenDict-ng-${CMAKE_PROJECT_VERSION}-Qt${Qt6_VERSION}-macOS-${CMAKE_SYSTEM_PROCESSOR}.dmg\" \
|
||||
\"${Assembling_Dir}\")"
|
||||
)
|
||||
else ()
|
||||
|
@ -279,6 +334,7 @@ if (LINUX OR BSD)
|
|||
endif ()
|
||||
|
||||
if (WIN32)
|
||||
|
||||
set_target_properties(${GOLDENDICT}
|
||||
PROPERTIES
|
||||
WIN32_EXECUTABLE TRUE
|
||||
|
@ -286,26 +342,49 @@ if (WIN32)
|
|||
LIBRARY_OUTPUT_DIRECTORY "${GD_WIN_OUTPUT_DIR}"
|
||||
)
|
||||
|
||||
add_custom_target(windeploy
|
||||
COMMENT "Deploy everything to the output dir"
|
||||
DEPENDS ${GOLDENDICT} # build this target will check if Goldendict.exe is already built
|
||||
COMMAND ${WINDEPLOYQT_EXECUTABLE} --no-quick-import "${GD_WIN_OUTPUT_DIR}/${GOLDENDICT}.exe" --plugindir "${GD_WIN_OUTPUT_DIR}/plugins"
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_directory "${CMAKE_SOURCE_DIR}/opencc" "${GD_WIN_OUTPUT_DIR}/opencc"
|
||||
COMMAND ${CMAKE_COMMAND} -E copy "${CMAKE_SOURCE_DIR}/LICENSE.txt" "${GD_WIN_OUTPUT_DIR}/LICENSE.txt"
|
||||
COMMAND ${CMAKE_COMMAND} -E rm -f "${GD_WIN_OUTPUT_DIR}/goldendict.exe.manifest" "${GD_WIN_OUTPUT_DIR}/eb.dll.manifest"
|
||||
WORKING_DIRECTORY ${GD_WIN_OUTPUT_DIR}
|
||||
set(CMAKE_INSTALL_PREFIX "${GD_WIN_OUTPUT_DIR}" CACHE PATH "If you see this message, don't change this unless you want look into CMake build script. If you are an expert, yes, this is wrong. Help welcomed." FORCE)
|
||||
|
||||
qt_generate_deploy_script(
|
||||
TARGET ${GOLDENDICT}
|
||||
OUTPUT_SCRIPT deploy_script
|
||||
CONTENT "qt_deploy_runtime_dependencies(
|
||||
EXECUTABLE \"${CMAKE_INSTALL_PREFIX}/goldendict.exe\"
|
||||
BIN_DIR .
|
||||
LIB_DIR .
|
||||
)"
|
||||
)
|
||||
|
||||
# use CPack to make the output folder as NSIS installer
|
||||
install(
|
||||
DIRECTORY "${GD_WIN_OUTPUT_DIR}/"
|
||||
DESTINATION .
|
||||
)
|
||||
install(SCRIPT ${deploy_script})
|
||||
install(DIRECTORY "${VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/share/opencc" DESTINATION .)
|
||||
# TODO: do we really need to carry a copy of openSSL?
|
||||
install(FILES "${VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/bin/libssl-3-x64.dll" DESTINATION .)
|
||||
install(FILES "${VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/bin/libcrypto-3-x64.dll" DESTINATION .)
|
||||
|
||||
set(CPACK_PACKAGE_FILE_NAME "${Qt6Widgets_VERSION}-${PROJECT_NAME}-${PROJECT_VERSION}-${CMAKE_SYSTEM_NAME}-${CMAKE_SYSTEM_PROCESSOR}")
|
||||
set(CPACK_GENERATOR "7Z;NSIS")
|
||||
# trick CPack to make the output folder as NSIS installer
|
||||
install(DIRECTORY "${GD_WIN_OUTPUT_DIR}/"
|
||||
DESTINATION .
|
||||
FILES_MATCHING
|
||||
PATTERN "*"
|
||||
PATTERN "*.pdb" EXCLUDE
|
||||
PATTERN "*.ilk" EXCLUDE)
|
||||
|
||||
|
||||
set(CPACK_PACKAGE_FILE_NAME "GoldenDict-ng-${PROJECT_VERSION}-Qt${Qt6Widgets_VERSION}")
|
||||
set(CPACK_GENERATOR "7Z;NSIS64")
|
||||
|
||||
# override the default install path, which is $PROGRAMFILES64\${project-name} ${project-version} in NSIS
|
||||
set(CPACK_PACKAGE_INSTALL_DIRECTORY "GoldenDict-ng")
|
||||
|
||||
# NSIS specificS
|
||||
set(CPACK_NSIS_MANIFEST_DPI_AWARE ON)
|
||||
set(CPACK_NSIS_MUI_ICON "${CMAKE_SOURCE_DIR}/icons/programicon.ico")
|
||||
set(CPACK_NSIS_PACKAGE_NAME "${CMAKE_PROJECT_NAME}-${CMAKE_PROJECT_VERSION}")
|
||||
set(CPACK_NSIS_DISPLAY_NAME "${CMAKE_PROJECT_NAME}-${CMAKE_PROJECT_VERSION}")
|
||||
set(CPACK_NSIS_URL_INFO_ABOUT [=[https://xiaoyifang.github.io/goldendict-ng/]=])
|
||||
set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE.txt")
|
||||
set(CPACK_NSIS_CREATE_ICONS_EXTRA "CreateShortCut '$SMPROGRAMS\\\\$STARTMENU_FOLDER\\\\GoldenDict-ng.lnk' '$INSTDIR\\\\${GOLDENDICT}.exe'")
|
||||
set(CPACK_NSIS_DELETE_ICONS_EXTRA "Delete '$SMPROGRAMS\\\\$START_MENU\\\\GoldenDict-ng.lnk'")
|
||||
|
||||
include(CPack)
|
||||
endif ()
|
||||
|
||||
|
|
|
@ -1,55 +0,0 @@
|
|||
target_compile_definitions(${GOLDENDICT} PUBLIC
|
||||
__WIN32
|
||||
INCLUDE_LIBRARY_PATH # temporal hack to let singleapplication compile
|
||||
)
|
||||
|
||||
target_include_directories(${GOLDENDICT} PUBLIC
|
||||
${CMAKE_SOURCE_DIR}/winlibs/include/
|
||||
)
|
||||
|
||||
set_property(TARGET ${BIN_NAME} PROPERTY
|
||||
MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>DLL")
|
||||
|
||||
file(GLOB WINLIBS_FILES "${CMAKE_SOURCE_DIR}/winlibs/lib/msvc/*.lib")
|
||||
foreach (A_WIN_LIB ${WINLIBS_FILES})
|
||||
target_link_libraries(${GOLDENDICT} PRIVATE ${A_WIN_LIB})
|
||||
endforeach ()
|
||||
|
||||
set(THIRD_PARTY_LIBARY
|
||||
debug ${CMAKE_SOURCE_DIR}/winlibs/lib/dbg/lzma.lib optimized ${CMAKE_SOURCE_DIR}/winlibs/lib/lzma.lib
|
||||
debug ${CMAKE_SOURCE_DIR}/winlibs/lib/dbg/zstd.lib optimized ${CMAKE_SOURCE_DIR}/winlibs/lib/zstd.lib
|
||||
debug ${CMAKE_SOURCE_DIR}/winlibs/lib/dbg/xapian.lib optimized ${CMAKE_SOURCE_DIR}/winlibs/lib/xapian.lib
|
||||
debug ${CMAKE_SOURCE_DIR}/winlibs/lib/dbg/hunspell-1.7.lib optimized ${CMAKE_SOURCE_DIR}/winlibs/lib/hunspell-1.7.lib
|
||||
debug ${CMAKE_SOURCE_DIR}/winlibs/lib/dbg/zim.lib optimized ${CMAKE_SOURCE_DIR}/winlibs/lib/zim.lib
|
||||
debug ${CMAKE_SOURCE_DIR}/winlibs/lib/dbg/opencc.lib optimized ${CMAKE_SOURCE_DIR}/winlibs/lib/opencc.lib
|
||||
debug ${CMAKE_SOURCE_DIR}/winlibs/lib/dbg/zlibd.lib optimized ${CMAKE_SOURCE_DIR}/winlibs/lib/zlib.lib
|
||||
)
|
||||
target_link_libraries(${GOLDENDICT} PRIVATE ${THIRD_PARTY_LIBARY})
|
||||
|
||||
# Copy .dlls to output dir
|
||||
|
||||
file(GLOB DLL_FILES LIST_DIRECTORIES false "${CMAKE_SOURCE_DIR}/winlibs/lib/msvc/*.dll" "${Qt6_ROOT}/bin/av*.dll" "${Qt6_ROOT}/bin/sw*.dll")
|
||||
foreach (A_DLL_FILE ${DLL_FILES})
|
||||
get_filename_component(TEMP_VAR_HOLDING_DLL_FILENAME ${A_DLL_FILE} NAME)
|
||||
configure_file("${A_DLL_FILE}" "${GD_WIN_OUTPUT_DIR}/${TEMP_VAR_HOLDING_DLL_FILENAME}" COPYONLY)
|
||||
endforeach ()
|
||||
|
||||
if (CMAKE_BUILD_TYPE MATCHES Debug)
|
||||
file(GLOB DLL_FILES LIST_DIRECTORIES false "${CMAKE_SOURCE_DIR}/winlibs/lib/dbg/*.dll")
|
||||
else ()
|
||||
file(GLOB DLL_FILES LIST_DIRECTORIES false "${CMAKE_SOURCE_DIR}/winlibs/lib/*.dll")
|
||||
endif ()
|
||||
foreach (A_DLL_FILE ${DLL_FILES})
|
||||
get_filename_component(TEMP_VAR_HOLDING_DLL_FILENAME ${A_DLL_FILE} NAME)
|
||||
configure_file("${A_DLL_FILE}" "${GD_WIN_OUTPUT_DIR}/${TEMP_VAR_HOLDING_DLL_FILENAME}" COPYONLY)
|
||||
endforeach ()
|
||||
|
||||
if (WITH_EPWING_SUPPORT)
|
||||
add_subdirectory(thirdparty/eb EXCLUDE_FROM_ALL)
|
||||
target_include_directories(${GOLDENDICT} PRIVATE
|
||||
thirdparty
|
||||
)
|
||||
target_link_libraries(${GOLDENDICT} PRIVATE eb)
|
||||
|
||||
set_target_properties(eb PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${GD_WIN_OUTPUT_DIR})
|
||||
endif ()
|
29
README.md
29
README.md
|
@ -2,9 +2,7 @@
|
|||
|
||||
[![Crowdin](https://badges.crowdin.net/goldendict-ng/localized.svg)](https://crowdin.com/project/goldendict-ng)
|
||||
[![Maintainability Rating](https://sonarcloud.io/api/project_badges/measure?project=xiaoyifang_goldendict&metric=sqale_rating)](https://sonarcloud.io/summary/new_code?id=xiaoyifang_goldendict)
|
||||
[![Windows-6.x](https://github.com/xiaoyifang/goldendict-ng/actions/workflows/windows-6.x.yml/badge.svg)](https://github.com/xiaoyifang/goldendict-ng/actions/workflows/windows-6.x.yml)
|
||||
[![Ubuntu-6.2](https://github.com/xiaoyifang/goldendict-ng/actions/workflows/ubuntu-6.2.yml/badge.svg?event=push)](https://github.com/xiaoyifang/goldendict-ng/actions/workflows/ubuntu-6.2.yml)
|
||||
[![macos-homebrew](https://github.com/xiaoyifang/goldendict-ng/actions/workflows/macos-homebrew.yml/badge.svg)](https://github.com/xiaoyifang/goldendict-ng/actions/workflows/macos-homebrew.yml)
|
||||
[![Build](https://github.com/xiaoyifang/goldendict-ng/actions/workflows/PR-check-cmake.yml/badge.svg)](https://github.com/xiaoyifang/goldendict-ng/actions/workflows/PR-check-cmake.yml)
|
||||
|
||||
The Next Generation GoldenDict. A feature-rich open-source dictionary lookup program,
|
||||
supporting [multiple dictionary formats](https://xiaoyifang.github.io/goldendict-ng/dictformats/) and online
|
||||
|
@ -14,22 +12,27 @@ dictionaries.
|
|||
|--|--|--|
|
||||
| [<img src="website/docs/img/linux_genshin.webp" width="500"/>](https://xiaoyifang.github.io/goldendict-ng/) | [<img src="website/docs/img/windows_white.webp" width="500"/>](https://xiaoyifang.github.io/goldendict-ng/) | [<img src="website/docs/img/mac_black.webp" width="500"/>](https://xiaoyifang.github.io/goldendict-ng/) |
|
||||
|
||||
[Download & Install](https://xiaoyifang.github.io/goldendict-ng/install/)
|
||||
|
||||
[Documentation](https://xiaoyifang.github.io/goldendict-ng/)
|
||||
|
||||
[Bug reporting in issue tracker](https://github.com/xiaoyifang/goldendict-ng/issues)
|
||||
|
||||
[General discussions](https://github.com/xiaoyifang/goldendict-ng/discussions)
|
||||
|
||||
# Some significant features of this fork
|
||||
|
||||
- webengine with latest html/css feature support
|
||||
- support >4GB dictionary
|
||||
- support highdpi screen resolution
|
||||
- built with xapian as fulltext engine
|
||||
- support Qt5.15.2 and higher ,include latest Qt6
|
||||
- support latest Qt6
|
||||
- performance optimization(eg. >10000000 headwords support)
|
||||
- anki integration
|
||||
- dark theme
|
||||
- daily auto release support
|
||||
- lots of bug fixes and improvements
|
||||
|
||||
## Installation
|
||||
|
||||
<https://xiaoyifang.github.io/goldendict-ng/install/>
|
||||
- general code improvements for easier development
|
||||
|
||||
## Help GoldenDict's Development
|
||||
|
||||
|
@ -41,16 +44,6 @@ To translate the interface, you can use the Crowdin <https://crowdin.com/project
|
|||
|
||||
To start development, check out [developer guide](https://xiaoyifang.github.io/goldendict-ng/developer/)
|
||||
|
||||
## Build from source
|
||||
|
||||
<https://xiaoyifang.github.io/goldendict-ng/howto/build_from_source/>
|
||||
|
||||
## Support
|
||||
|
||||
Bug reporting: [GoldenDict issue tracker](https://github.com/xiaoyifang/goldendict-ng/issues)
|
||||
|
||||
General discussions: [discussions](https://github.com/xiaoyifang/goldendict-ng/discussions)
|
||||
|
||||
|
||||
## License
|
||||
|
||||
|
|
|
@ -83,6 +83,12 @@ endif ()
|
|||
if (WITH_ZIM)
|
||||
pkg_check_modules(ZIM REQUIRED IMPORTED_TARGET libzim)
|
||||
target_link_libraries(${GOLDENDICT} PRIVATE PkgConfig::ZIM)
|
||||
if (APPLE)
|
||||
# For some reason, icu4c as transitive dependency of libzim may not be copied into app bundle,
|
||||
# so we directly depends on it to help macdeployqt or whatever
|
||||
pkg_check_modules(BREW_ICU_FOR_LIBZIM_FORCE_LINK REQUIRED IMPORTED_TARGET icu-i18n icu-uc)
|
||||
target_link_libraries(${GOLDENDICT} PUBLIC PkgConfig::BREW_ICU_FOR_LIBZIM_FORCE_LINK)
|
||||
endif ()
|
||||
endif ()
|
||||
|
||||
if (USE_SYSTEM_FMT)
|
40
cmake/Deps_Vcpkg.cmake
Normal file
40
cmake/Deps_Vcpkg.cmake
Normal file
|
@ -0,0 +1,40 @@
|
|||
find_package(BZip2 REQUIRED)
|
||||
find_package(Iconv REQUIRED)
|
||||
find_package(LibLZMA REQUIRED)
|
||||
find_package(Vorbis CONFIG REQUIRED)
|
||||
find_package(ZLIB REQUIRED)
|
||||
|
||||
find_package(PkgConfig REQUIRED)
|
||||
pkg_check_modules(PKGCONFIG_DEPS IMPORTED_TARGET
|
||||
hunspell
|
||||
libzim
|
||||
lzo2
|
||||
opencc
|
||||
xapian-core
|
||||
)
|
||||
|
||||
target_link_libraries(${GOLDENDICT}
|
||||
PRIVATE
|
||||
PkgConfig::PKGCONFIG_DEPS
|
||||
BZip2::BZip2
|
||||
Iconv::Iconv
|
||||
LibLZMA::LibLZMA
|
||||
Vorbis::vorbis
|
||||
Vorbis::vorbisfile
|
||||
ZLIB::ZLIB
|
||||
)
|
||||
|
||||
if (WITH_VCPKG_BREAKPAD)
|
||||
find_package(unofficial-breakpad REQUIRED)
|
||||
target_link_libraries(${GOLDENDICT} PRIVATE unofficial::breakpad::libbreakpad_client)
|
||||
endif ()
|
||||
|
||||
if (WITH_EPWING_SUPPORT)
|
||||
add_subdirectory(thirdparty/eb EXCLUDE_FROM_ALL)
|
||||
target_include_directories(${GOLDENDICT} PRIVATE
|
||||
thirdparty
|
||||
)
|
||||
target_link_libraries(${GOLDENDICT} PRIVATE eb)
|
||||
|
||||
set_target_properties(eb PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${GD_WIN_OUTPUT_DIR})
|
||||
endif ()
|
648
goldendict.pro
648
goldendict.pro
|
@ -1,648 +0,0 @@
|
|||
TEMPLATE = app
|
||||
TARGET = goldendict
|
||||
VERSION = 24.05.05
|
||||
|
||||
# Generate version file. We do this here and in a build rule described later.
|
||||
# The build rule is required since qmake isn't run each time the project is
|
||||
# rebuilt; and doing it here is required too since any other way the RCC
|
||||
# compiler would complain if version.txt wouldn't exist (fresh checkouts).
|
||||
|
||||
system(git describe --tags --always --dirty): hasGit=1
|
||||
|
||||
!isEmpty(hasGit){
|
||||
GIT_HASH=$$system(git rev-parse --short=8 HEAD )
|
||||
}
|
||||
|
||||
!exists( version.txt ) {
|
||||
message( "generate version.txt...." )
|
||||
system(echo $${VERSION}.$${GIT_HASH} on $${_DATE_} > version.txt)
|
||||
}
|
||||
|
||||
|
||||
# users can suppress verbose console compile output by add `CONFIG += silent` to qmake.
|
||||
|
||||
CONFIG( release, debug|release ) {
|
||||
DEFINES += NDEBUG
|
||||
}
|
||||
|
||||
# DEPENDPATH += . generators
|
||||
INCLUDEPATH += ./src/
|
||||
INCLUDEPATH += ./src/ui # for compiled .ui files to find headers
|
||||
INCLUDEPATH += ./src/common
|
||||
INCLUDEPATH += ./thirdparty/tomlplusplus
|
||||
INCLUDEPATH += ./thirdparty/fmt/include
|
||||
|
||||
QT += core \
|
||||
gui \
|
||||
xml \
|
||||
network \
|
||||
svg \
|
||||
widgets \
|
||||
webenginewidgets\
|
||||
webchannel\
|
||||
printsupport \
|
||||
concurrent \
|
||||
texttospeech
|
||||
|
||||
greaterThan(QT_MAJOR_VERSION, 5): QT += webenginecore core5compat
|
||||
|
||||
DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x050F00
|
||||
|
||||
!CONFIG( no_qtmultimedia_player ) {
|
||||
QT += multimedia
|
||||
DEFINES += MAKE_QTMULTIMEDIA_PLAYER
|
||||
}
|
||||
|
||||
!CONFIG( no_ffmpeg_player ) {
|
||||
# ffmpeg depended on multimedia now.
|
||||
QT += multimedia
|
||||
DEFINES += MAKE_FFMPEG_PLAYER
|
||||
}
|
||||
|
||||
contains(DEFINES, MAKE_QTMULTIMEDIA_PLAYER|MAKE_FFMPEG_PLAYER) {
|
||||
HEADERS += \
|
||||
src/audiooutput.hh
|
||||
SOURCES += \
|
||||
src/audiooutput.cc
|
||||
}
|
||||
|
||||
#xapian is the must option now.
|
||||
win32{
|
||||
Debug: LIBS+= -L$$PWD/winlibs/lib/dbg/ -lxapian
|
||||
Release: LIBS+= -L$$PWD/winlibs/lib -lxapian
|
||||
}else{
|
||||
LIBS += -lxapian
|
||||
}
|
||||
|
||||
CONFIG( use_breakpad ) {
|
||||
DEFINES += USE_BREAKPAD
|
||||
|
||||
#the lib ,include files are copied from vcpkg install package.
|
||||
LIBS += -L$$PWD/thirdparty/breakpad/lib/ -llibbreakpad -llibbreakpad_client
|
||||
|
||||
|
||||
INCLUDEPATH += $$PWD/thirdparty/breakpad/include
|
||||
DEPENDPATH += $$PWD/thirdparty/breakpad/include
|
||||
|
||||
CONFIG( release, debug|release ) {
|
||||
# create debug symbols for release builds
|
||||
CONFIG*=force_debug_info
|
||||
QMAKE_CXXFLAGS_RELEASE_WITH_DEBUGINFO -= -O2
|
||||
}
|
||||
}
|
||||
|
||||
CONFIG( use_iconv ) {
|
||||
DEFINES += USE_ICONV
|
||||
unix:!mac{
|
||||
#ignore
|
||||
}
|
||||
else {
|
||||
LIBS+= -liconv
|
||||
}
|
||||
}
|
||||
|
||||
CONFIG += exceptions \
|
||||
rtti \
|
||||
stl \
|
||||
c++17 \
|
||||
lrelease \
|
||||
utf8_source
|
||||
|
||||
mac {
|
||||
CONFIG += app_bundle
|
||||
}
|
||||
|
||||
OBJECTS_DIR = build
|
||||
UI_DIR = build
|
||||
MOC_DIR = build
|
||||
RCC_DIR = build
|
||||
LIBS += -lbz2 \
|
||||
-llzo2
|
||||
|
||||
win32{
|
||||
Debug: LIBS+= -L$$PWD/winlibs/lib/dbg/ -lzlibd
|
||||
Release: LIBS+= -L$$PWD/winlibs/lib/ -lzlib
|
||||
}else{
|
||||
LIBS += -lz
|
||||
}
|
||||
|
||||
|
||||
win32 {
|
||||
QM_FILES_INSTALL_PATH = /locale/
|
||||
TARGET = GoldenDict
|
||||
|
||||
win32-msvc* {
|
||||
# VS does not recognize 22.number.alpha,cause errors during compilation under MSVC++
|
||||
VERSION = 25.05.05
|
||||
DEFINES += __WIN32 _CRT_SECURE_NO_WARNINGS
|
||||
contains(QMAKE_TARGET.arch, x86_64) {
|
||||
DEFINES += NOMINMAX __WIN64
|
||||
}
|
||||
LIBS += -L$${PWD}/winlibs/lib/msvc
|
||||
# silence the warning C4290: C++ exception specification ignored,C4267 size_t to const T , lost data.
|
||||
QMAKE_CXXFLAGS += /wd4290 /wd4267 /Zc:__cplusplus /std:c++17 /permissive-
|
||||
# QMAKE_LFLAGS_RELEASE += /OPT:REF /OPT:ICF
|
||||
|
||||
# QMAKE_CXXFLAGS_RELEASE += /GL # slows down the linking significantly
|
||||
LIBS += -lshell32 -luser32 -lsapi -lole32
|
||||
Debug: LIBS+= -L$$PWD/winlibs/lib/dbg/ -lhunspell-1.7
|
||||
Release: LIBS+= -L$$PWD/winlibs/lib/ -lhunspell-1.7
|
||||
}
|
||||
|
||||
LIBS += -lwsock32 \
|
||||
-lpsapi \
|
||||
-lole32 \
|
||||
-loleaut32 \
|
||||
-ladvapi32 \
|
||||
-lcomdlg32
|
||||
LIBS += -lvorbisfile \
|
||||
-lvorbis \
|
||||
-logg
|
||||
!CONFIG( no_ffmpeg_player ) {
|
||||
LIBS += -lswresample \
|
||||
-lavutil \
|
||||
-lavformat \
|
||||
-lavcodec
|
||||
}
|
||||
|
||||
RC_ICONS += icons/programicon.ico icons/programicon_old.ico
|
||||
INCLUDEPATH += winlibs/include
|
||||
|
||||
# Enable console in Debug mode on Windows, with useful logging messages
|
||||
Debug:CONFIG += console
|
||||
|
||||
Release:DEFINES += NO_CONSOLE
|
||||
|
||||
gcc48:QMAKE_CXXFLAGS += -Wno-unused-local-typedefs
|
||||
|
||||
!CONFIG( no_chinese_conversion_support ) {
|
||||
CONFIG += chinese_conversion_support
|
||||
}
|
||||
}
|
||||
|
||||
!mac {
|
||||
DEFINES += INCLUDE_LIBRARY_PATH
|
||||
}
|
||||
|
||||
unix:!mac {
|
||||
DEFINES += HAVE_X11
|
||||
|
||||
lessThan(QT_MAJOR_VERSION, 6): QT += x11extras
|
||||
|
||||
CONFIG += link_pkgconfig
|
||||
|
||||
PKGCONFIG += vorbisfile \
|
||||
vorbis \
|
||||
ogg \
|
||||
hunspell
|
||||
!CONFIG( no_ffmpeg_player ) {
|
||||
PKGCONFIG += libavutil \
|
||||
libavformat \
|
||||
libavcodec \
|
||||
libswresample \
|
||||
}
|
||||
!arm {
|
||||
LIBS += -lX11 -lXtst
|
||||
}
|
||||
|
||||
# Install prefix: first try to use qmake's PREFIX variable,
|
||||
# then $PREFIX from system environment, and if both fails,
|
||||
# use the hardcoded /usr/local.
|
||||
PREFIX = $${PREFIX}
|
||||
isEmpty( PREFIX ):PREFIX = $$(PREFIX)
|
||||
isEmpty( PREFIX ):PREFIX = /usr/local
|
||||
message(Install Prefix is: $$PREFIX)
|
||||
|
||||
DEFINES += PROGRAM_DATA_DIR=\\\"$$PREFIX/share/goldendict/\\\"
|
||||
target.path = $$PREFIX/bin/
|
||||
locale.path = $$PREFIX/share/goldendict/locale/
|
||||
locale.files = locale/*.qm
|
||||
INSTALLS += target \
|
||||
locale
|
||||
icons.path = $$PREFIX/share/pixmaps
|
||||
icons.files = redist/icons/*.*
|
||||
INSTALLS += icons
|
||||
desktops.path = $$PREFIX/share/applications
|
||||
desktops.files = redist/*.desktop
|
||||
INSTALLS += desktops
|
||||
metainfo.path = $$PREFIX/share/metainfo
|
||||
metainfo.files = redist/*.metainfo.xml
|
||||
INSTALLS += metainfo
|
||||
}
|
||||
freebsd {
|
||||
LIBS += -lexecinfo
|
||||
}
|
||||
mac {
|
||||
QM_FILES_INSTALL_PATH = /locale/
|
||||
TARGET = GoldenDict
|
||||
# Uncomment this line to make a universal binary.
|
||||
# You will need to use Xcode 3 and Qt Carbon SDK
|
||||
# if you want the support for PowerPC and/or Mac OS X 10.4
|
||||
# CONFIG += x86 x86_64 ppc
|
||||
LIBS += -lz \
|
||||
-lbz2 \
|
||||
-lvorbisfile \
|
||||
-lvorbis \
|
||||
-logg \
|
||||
-llzo2
|
||||
|
||||
!CONFIG( no_ffmpeg_player ) {
|
||||
LIBS += -lswresample \
|
||||
-lavutil \
|
||||
-lavformat \
|
||||
-lavcodec
|
||||
}
|
||||
QT_CONFIG -= no-pkg-config
|
||||
CONFIG += link_pkgconfig
|
||||
|
||||
PKGCONFIG += hunspell
|
||||
INCLUDEPATH += /opt/homebrew/include /usr/local/include
|
||||
LIBS += -L/opt/homebrew/lib -L/usr/local/lib -framework AppKit -framework Carbon
|
||||
|
||||
|
||||
OBJECTIVE_SOURCES += src/macos/machotkeywrapper.mm \
|
||||
src/macos/macmouseover.mm
|
||||
ICON = icons/macicon.icns
|
||||
QMAKE_INFO_PLIST = redist/myInfo.plist
|
||||
|
||||
|
||||
QMAKE_POST_LINK = mkdir -p GoldenDict.app/Contents/Frameworks && \
|
||||
mkdir -p GoldenDict.app/Contents/MacOS/locale && \
|
||||
cp -R locale/*.qm GoldenDict.app/Contents/MacOS/locale/
|
||||
|
||||
|
||||
!CONFIG( no_chinese_conversion_support ) {
|
||||
CONFIG += chinese_conversion_support
|
||||
QMAKE_POST_LINK += && mkdir -p GoldenDict.app/Contents/MacOS/opencc && \
|
||||
cp -R $${PWD}/opencc/*.* GoldenDict.app/Contents/MacOS/opencc/
|
||||
}
|
||||
|
||||
}
|
||||
DEFINES += PROGRAM_VERSION=\\\"$$VERSION\\\"
|
||||
|
||||
# Input
|
||||
HEADERS += \
|
||||
src/ankiconnector.hh \
|
||||
src/article_maker.hh \
|
||||
src/article_netmgr.hh \
|
||||
src/audiolink.hh \
|
||||
src/audioplayerfactory.hh \
|
||||
src/audioplayerinterface.hh \
|
||||
src/btreeidx.hh \
|
||||
src/chunkedstorage.hh \
|
||||
src/common/base_type.hh \
|
||||
src/common/ex.hh \
|
||||
src/common/file.hh \
|
||||
src/common/filetype.hh \
|
||||
src/common/folding.hh \
|
||||
src/common/gddebug.hh \
|
||||
src/common/globalbroadcaster.hh \
|
||||
src/common/globalregex.hh \
|
||||
src/common/help.hh \
|
||||
src/common/htmlescape.hh \
|
||||
src/common/iconv.hh \
|
||||
src/common/inc_case_folding.hh \
|
||||
src/common/sptr.hh \
|
||||
src/common/ufile.hh \
|
||||
src/common/utf8.hh \
|
||||
src/common/utils.hh \
|
||||
src/common/wstring.hh \
|
||||
src/common/wstring_qt.hh \
|
||||
src/config.hh \
|
||||
src/decompress.hh \
|
||||
src/delegate.hh \
|
||||
src/dict/aard.hh \
|
||||
src/dict/belarusiantranslit.hh \
|
||||
src/dict/bgl.hh \
|
||||
src/dict/bgl_babylon.hh \
|
||||
src/dict/customtransliteration.hh \
|
||||
src/dict/dictdfiles.hh \
|
||||
src/dict/dictionary.hh \
|
||||
src/dict/dictserver.hh \
|
||||
src/dict/dsl.hh \
|
||||
src/dict/dsl_details.hh \
|
||||
src/dict/forvo.hh \
|
||||
src/dict/german.hh \
|
||||
src/dict/gls.hh \
|
||||
src/dict/greektranslit.hh \
|
||||
src/dict/hunspell.hh \
|
||||
src/dict/lingualibre.hh \
|
||||
src/dict/loaddictionaries.hh \
|
||||
src/dict/lsa.hh \
|
||||
src/dict/mdictparser.hh \
|
||||
src/dict/mdx.hh \
|
||||
src/dict/mediawiki.hh \
|
||||
src/dict/programs.hh \
|
||||
src/dict/ripemd.hh \
|
||||
src/dict/romaji.hh \
|
||||
src/dict/russiantranslit.hh \
|
||||
src/dict/sdict.hh \
|
||||
src/dict/slob.hh \
|
||||
src/dict/sounddir.hh \
|
||||
src/dict/sources.hh \
|
||||
src/dict/stardict.hh \
|
||||
src/dict/transliteration.hh \
|
||||
src/dict/voiceengines.hh \
|
||||
src/dict/website.hh \
|
||||
src/dict/xdxf.hh \
|
||||
src/dict/xdxf2html.hh \
|
||||
src/dict/zim.hh \
|
||||
src/dict/zipsounds.hh \
|
||||
src/dictzip.hh \
|
||||
src/externalaudioplayer.hh \
|
||||
src/externalviewer.hh \
|
||||
src/ffmpegaudio.hh \
|
||||
src/ffmpegaudioplayer.hh \
|
||||
src/ftshelpers.hh \
|
||||
src/fulltextsearch.hh \
|
||||
src/gestures.hh \
|
||||
src/headwordsmodel.hh \
|
||||
src/history.hh \
|
||||
src/hotkeywrapper.hh \
|
||||
src/iframeschemehandler.hh \
|
||||
src/indexedzip.hh \
|
||||
src/initializing.hh \
|
||||
src/instances.hh \
|
||||
src/keyboardstate.hh \
|
||||
src/langcoder.hh \
|
||||
src/language.hh \
|
||||
src/metadata.hh \
|
||||
src/multimediaaudioplayer.hh \
|
||||
src/parsecmdline.hh \
|
||||
src/pronounceengine.hh \
|
||||
src/resourceschemehandler.hh \
|
||||
src/splitfile.hh \
|
||||
src/termination.hh \
|
||||
src/tiff.hh \
|
||||
src/ui/about.hh \
|
||||
src/ui/article_inspect.hh \
|
||||
src/ui/articleview.hh \
|
||||
src/ui/articlewebpage.hh \
|
||||
src/ui/articlewebview.hh \
|
||||
src/ui/dictheadwords.hh \
|
||||
src/ui/dictinfo.hh \
|
||||
src/ui/dictionarybar.hh \
|
||||
src/ui/dictspanewidget.hh \
|
||||
src/ui/editdictionaries.hh \
|
||||
src/ui/favoritespanewidget.hh \
|
||||
src/ui/ftssearchpanel.hh \
|
||||
src/ui/groupcombobox.hh \
|
||||
src/ui/groups.hh \
|
||||
src/ui/groups_widgets.hh \
|
||||
src/ui/historypanewidget.hh \
|
||||
src/ui/mainstatusbar.hh \
|
||||
src/ui/maintabwidget.hh \
|
||||
src/ui/mainwindow.hh \
|
||||
src/ui/mruqmenu.hh \
|
||||
src/ui/orderandprops.hh \
|
||||
src/ui/preferences.hh \
|
||||
src/ui/scanpopup.hh \
|
||||
src/ui/searchpanel.hh \
|
||||
src/ui/searchpanewidget.hh \
|
||||
src/ui/stylescombobox.hh \
|
||||
src/ui/translatebox.hh \
|
||||
src/version.hh \
|
||||
src/webmultimediadownload.hh \
|
||||
src/weburlrequestinterceptor.hh \
|
||||
src/wordfinder.hh \
|
||||
src/zipfile.hh \
|
||||
thirdparty/tomlplusplus/toml++/toml.h
|
||||
|
||||
FORMS += $$files(src/ui/*.ui)
|
||||
|
||||
SOURCES += \
|
||||
src/ankiconnector.cc \
|
||||
src/article_maker.cc \
|
||||
src/article_netmgr.cc \
|
||||
src/audiolink.cc \
|
||||
src/audioplayerfactory.cc \
|
||||
src/btreeidx.cc \
|
||||
src/chunkedstorage.cc \
|
||||
src/common/file.cc \
|
||||
src/common/filetype.cc \
|
||||
src/common/folding.cc \
|
||||
src/common/gddebug.cc \
|
||||
src/common/globalbroadcaster.cc \
|
||||
src/common/globalregex.cc \
|
||||
src/common/help.cc \
|
||||
src/common/htmlescape.cc \
|
||||
src/common/iconv.cc \
|
||||
src/common/ufile.cc \
|
||||
src/common/utf8.cc \
|
||||
src/common/utils.cc \
|
||||
src/common/wstring_qt.cc \
|
||||
src/config.cc \
|
||||
src/decompress.cc \
|
||||
src/delegate.cc \
|
||||
src/dict/aard.cc \
|
||||
src/dict/belarusiantranslit.cc \
|
||||
src/dict/bgl.cc \
|
||||
src/dict/bgl_babylon.cc \
|
||||
src/dict/customtransliteration.cc \
|
||||
src/dict/dictdfiles.cc \
|
||||
src/dict/dictionary.cc \
|
||||
src/dict/dictserver.cc \
|
||||
src/dict/dsl.cc \
|
||||
src/dict/dsl_details.cc \
|
||||
src/dict/forvo.cc \
|
||||
src/dict/german.cc \
|
||||
src/dict/gls.cc \
|
||||
src/dict/greektranslit.cc \
|
||||
src/dict/hunspell.cc \
|
||||
src/dict/lingualibre.cc \
|
||||
src/dict/loaddictionaries.cc \
|
||||
src/dict/lsa.cc \
|
||||
src/dict/mdictparser.cc \
|
||||
src/dict/mdx.cc \
|
||||
src/dict/mediawiki.cc \
|
||||
src/dict/programs.cc \
|
||||
src/dict/ripemd.cc \
|
||||
src/dict/romaji.cc \
|
||||
src/dict/russiantranslit.cc \
|
||||
src/dict/sdict.cc \
|
||||
src/dict/slob.cc \
|
||||
src/dict/sounddir.cc \
|
||||
src/dict/sources.cc \
|
||||
src/dict/stardict.cc \
|
||||
src/dict/transliteration.cc \
|
||||
src/dict/voiceengines.cc \
|
||||
src/dict/website.cc \
|
||||
src/dict/xdxf.cc \
|
||||
src/dict/xdxf2html.cc \
|
||||
src/dict/zim.cc \
|
||||
src/dict/zipsounds.cc \
|
||||
src/dictzip.c \
|
||||
src/externalaudioplayer.cc \
|
||||
src/externalviewer.cc \
|
||||
src/ffmpegaudio.cc \
|
||||
src/ftshelpers.cc \
|
||||
src/fulltextsearch.cc \
|
||||
src/gestures.cc \
|
||||
src/headwordsmodel.cc \
|
||||
src/history.cc \
|
||||
src/hotkeywrapper.cc \
|
||||
src/iframeschemehandler.cc \
|
||||
src/indexedzip.cc \
|
||||
src/initializing.cc \
|
||||
src/instances.cc \
|
||||
src/keyboardstate.cc \
|
||||
src/langcoder.cc \
|
||||
src/language.cc \
|
||||
src/main.cc \
|
||||
src/metadata.cc \
|
||||
src/multimediaaudioplayer.cc \
|
||||
src/parsecmdline.cc \
|
||||
src/pronounceengine.cc \
|
||||
src/resourceschemehandler.cc \
|
||||
src/splitfile.cc \
|
||||
src/termination.cc \
|
||||
src/tiff.cc \
|
||||
src/ui/about.cc \
|
||||
src/ui/article_inspect.cc \
|
||||
src/ui/articleview.cc \
|
||||
src/ui/articlewebpage.cc \
|
||||
src/ui/articlewebview.cc \
|
||||
src/ui/dictheadwords.cc \
|
||||
src/ui/dictinfo.cc \
|
||||
src/ui/dictionarybar.cc \
|
||||
src/ui/editdictionaries.cc \
|
||||
src/ui/favoritespanewidget.cc \
|
||||
src/ui/ftssearchpanel.cc \
|
||||
src/ui/groupcombobox.cc \
|
||||
src/ui/groups.cc \
|
||||
src/ui/groups_widgets.cc \
|
||||
src/ui/historypanewidget.cc \
|
||||
src/ui/mainstatusbar.cc \
|
||||
src/ui/maintabwidget.cc \
|
||||
src/ui/mainwindow.cc \
|
||||
src/ui/mruqmenu.cc \
|
||||
src/ui/orderandprops.cc \
|
||||
src/ui/preferences.cc \
|
||||
src/ui/scanpopup.cc \
|
||||
src/ui/searchpanel.cc \
|
||||
src/ui/stylescombobox.cc \
|
||||
src/ui/translatebox.cc \
|
||||
src/version.cc \
|
||||
src/webmultimediadownload.cc \
|
||||
src/weburlrequestinterceptor.cc \
|
||||
src/wordfinder.cc \
|
||||
src/zipfile.cc \
|
||||
thirdparty/fmt/format.cc
|
||||
|
||||
#speech to text
|
||||
SOURCES += src/speechclient.cc \
|
||||
src/texttospeechsource.cc
|
||||
HEADERS += src/texttospeechsource.hh \
|
||||
src/speechclient.hh
|
||||
|
||||
CONFIG( no_tts_support ) {
|
||||
DEFINES += NO_TTS_SUPPORT
|
||||
}
|
||||
|
||||
|
||||
mac {
|
||||
HEADERS += src/macos/macmouseover.hh \
|
||||
src/macos/gd_clipboard.hh
|
||||
SOURCES += src/macos/gd_clipboard.cc
|
||||
}
|
||||
|
||||
unix:!mac {
|
||||
HEADERS += src/ui/scanflag.hh
|
||||
SOURCES += src/ui/scanflag.cc
|
||||
}
|
||||
|
||||
|
||||
HEADERS += src/common/wildcard.hh
|
||||
SOURCES += src/common/wildcard.cc
|
||||
|
||||
|
||||
LIBS += -llzma
|
||||
|
||||
CONFIG( zim_support ) {
|
||||
DEFINES += MAKE_ZIM_SUPPORT
|
||||
LIBS += -lzim
|
||||
}
|
||||
|
||||
CONFIG( no_epwing_support ) {
|
||||
DEFINES += NO_EPWING_SUPPORT
|
||||
}
|
||||
|
||||
!CONFIG( no_epwing_support ) {
|
||||
HEADERS += src/dict/epwing.hh \
|
||||
src/dict/epwing_book.hh \
|
||||
src/dict/epwing_charmap.hh
|
||||
SOURCES += src/dict/epwing.cc \
|
||||
src/dict/epwing_book.cc \
|
||||
src/dict/epwing_charmap.cc
|
||||
if(win32){
|
||||
INCLUDEPATH += thirdparty
|
||||
HEADERS += $$files(thirdparty/eb/*.h)
|
||||
SOURCES += $$files(thirdparty/eb/*.c)
|
||||
}
|
||||
else{
|
||||
LIBS += -leb
|
||||
}
|
||||
}
|
||||
|
||||
CONFIG( chinese_conversion_support ) {
|
||||
DEFINES += MAKE_CHINESE_CONVERSION_SUPPORT
|
||||
FORMS += src/ui/chineseconversion.ui
|
||||
HEADERS += src/dict/chinese.hh \
|
||||
src/ui/chineseconversion.hh
|
||||
SOURCES += src/dict/chinese.cc \
|
||||
src/ui/chineseconversion.cc
|
||||
|
||||
win32{
|
||||
Debug: LIBS+= -L$$PWD/winlibs/lib/dbg/ -lopencc
|
||||
Release: LIBS+= -L$$PWD/winlibs/lib -lopencc
|
||||
}else{
|
||||
LIBS += -lopencc
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
RESOURCES += resources.qrc \
|
||||
src/scripts/scripts.qrc \
|
||||
icons/flags.qrc \
|
||||
src/stylesheets/css.qrc
|
||||
#EXTRA_TRANSLATIONS += thirdparty/qwebengine_ts/qtwebengine_zh_CN.ts
|
||||
TRANSLATIONS += $$files(locale/*.ts)
|
||||
|
||||
# Build version file
|
||||
!isEmpty( hasGit ) {
|
||||
PRE_TARGETDEPS += $$PWD/version.txt
|
||||
}
|
||||
|
||||
# This makes qmake generate translations
|
||||
|
||||
|
||||
isEmpty(QMAKE_LRELEASE):QMAKE_LRELEASE = $$[QT_INSTALL_BINS]/lrelease
|
||||
|
||||
|
||||
# The *.qm files might not exist when qmake is run for the first time,
|
||||
# causing the standard install rule to be ignored, and no translations
|
||||
# will be installed. With this, we create the qm files during qmake run.
|
||||
!win32 {
|
||||
system($${QMAKE_LRELEASE} -silent $${_PRO_FILE_} 2> /dev/null)
|
||||
}
|
||||
else{
|
||||
system($${QMAKE_LRELEASE} -silent $${_PRO_FILE_})
|
||||
}
|
||||
|
||||
updateqm.input = TRANSLATIONS
|
||||
updateqm.output = locale/${QMAKE_FILE_BASE}.qm
|
||||
updateqm.commands = $$QMAKE_LRELEASE \
|
||||
${QMAKE_FILE_IN} \
|
||||
-qm \
|
||||
${QMAKE_FILE_OUT}
|
||||
updateqm.CONFIG += no_link
|
||||
QMAKE_EXTRA_COMPILERS += updateqm
|
||||
TS_OUT = $$TRANSLATIONS
|
||||
TS_OUT ~= s/.ts/.qm/g
|
||||
PRE_TARGETDEPS += $$TS_OUT
|
||||
|
||||
#QTBUG-105984
|
||||
# avoid qt6.4.0-6.4.2 . the qtmultimedia module is buggy in all these versions
|
||||
|
||||
include( thirdparty/qtsingleapplication/src/qtsingleapplication.pri )
|
||||
|
BIN
icons/lsasound.png
Normal file
BIN
icons/lsasound.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 3.1 KiB |
|
@ -3,14 +3,14 @@
|
|||
|
||||
<svg
|
||||
sodipodi:docname="lsasound.svg"
|
||||
inkscape:version="1.2.2 (732a01da63, 2022-12-09)"
|
||||
inkscape:version="1.3.2 (091e20e, 2023-11-25, custom)"
|
||||
sodipodi:version="0.32"
|
||||
id="svg2963"
|
||||
height="48px"
|
||||
width="48px"
|
||||
inkscape:output_extension="org.inkscape.output.svg.inkscape"
|
||||
version="1.1"
|
||||
inkscape:export-filename="Package-x-generic.png"
|
||||
inkscape:export-filename="lsasound.png"
|
||||
inkscape:export-xdpi="96"
|
||||
inkscape:export-ydpi="96"
|
||||
xml:space="preserve"
|
||||
|
@ -27,13 +27,7 @@
|
|||
y="25.102291"
|
||||
width="26.870057"
|
||||
height="13.788583"
|
||||
id="rect3582" /><inkscape:perspective
|
||||
sodipodi:type="inkscape:persp3d"
|
||||
inkscape:vp_x="0 : 24 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_z="48 : 24 : 1"
|
||||
inkscape:persp3d-origin="24 : 16 : 1"
|
||||
id="perspective77" /><radialGradient
|
||||
id="rect3582" /><radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient5060"
|
||||
id="radialGradient6719"
|
||||
|
@ -81,13 +75,6 @@
|
|||
y1="366.64789"
|
||||
x2="302.85715"
|
||||
y2="609.50507" /><linearGradient
|
||||
id="linearGradient2869"><stop
|
||||
style="stop-color:#ffffff;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop2871" /><stop
|
||||
style="stop-color:#cccccc;stop-opacity:1.0000000;"
|
||||
offset="1.0000000"
|
||||
id="stop2873" /></linearGradient><linearGradient
|
||||
id="linearGradient4995"><stop
|
||||
id="stop4997"
|
||||
offset="0"
|
||||
|
@ -103,21 +90,6 @@
|
|||
id="stop4991"
|
||||
offset="1"
|
||||
style="stop-color:#a0670c;stop-opacity:0;" /></linearGradient><linearGradient
|
||||
id="linearGradient4979"><stop
|
||||
id="stop4981"
|
||||
offset="0.0000000"
|
||||
style="stop-color:#fbf0e0;stop-opacity:1.0000000;" /><stop
|
||||
id="stop4983"
|
||||
offset="1.0000000"
|
||||
style="stop-color:#f0ce99;stop-opacity:1.0000000;" /></linearGradient><linearGradient
|
||||
id="linearGradient4946"
|
||||
inkscape:collect="always"><stop
|
||||
id="stop4948"
|
||||
offset="0"
|
||||
style="stop-color:#000000;stop-opacity:1;" /><stop
|
||||
id="stop4950"
|
||||
offset="1"
|
||||
style="stop-color:#000000;stop-opacity:0;" /></linearGradient><linearGradient
|
||||
id="linearGradient4222"><stop
|
||||
id="stop4224"
|
||||
offset="0"
|
||||
|
@ -145,17 +117,7 @@
|
|||
style="stop-color:#a36d18;stop-opacity:1.0000000;" /><stop
|
||||
id="stop4186"
|
||||
offset="1.0000000"
|
||||
style="stop-color:#d79020;stop-opacity:1.0000000;" /></linearGradient><radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient4946"
|
||||
id="radialGradient2252"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.000000,0.000000,0.000000,0.333333,2.658463e-16,23.58206)"
|
||||
cx="22.930462"
|
||||
cy="35.373093"
|
||||
fx="22.930462"
|
||||
fy="35.373093"
|
||||
r="17.576654" /><linearGradient
|
||||
style="stop-color:#d79020;stop-opacity:1.0000000;" /></linearGradient><linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient4995"
|
||||
id="linearGradient2274"
|
||||
|
@ -241,9 +203,9 @@
|
|||
stop-color="#fff"
|
||||
stop-opacity="0"
|
||||
id="stop3399" /></linearGradient></defs><sodipodi:namedview
|
||||
inkscape:window-y="-9"
|
||||
inkscape:window-x="-9"
|
||||
inkscape:window-height="991"
|
||||
inkscape:window-y="-8"
|
||||
inkscape:window-x="-8"
|
||||
inkscape:window-height="1017"
|
||||
inkscape:window-width="1920"
|
||||
stroke="#c17d11"
|
||||
fill="#e9b96e"
|
||||
|
@ -252,8 +214,8 @@
|
|||
inkscape:grid-bbox="true"
|
||||
showgrid="false"
|
||||
inkscape:current-layer="layer1"
|
||||
inkscape:cy="80.079843"
|
||||
inkscape:cx="83.615377"
|
||||
inkscape:cy="79.72629"
|
||||
inkscape:cx="83.615378"
|
||||
inkscape:zoom="2.8284271"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:pageopacity="0.0"
|
||||
|
@ -275,107 +237,108 @@
|
|||
inkscape:groupmode="layer"
|
||||
inkscape:label="Layer 1"
|
||||
id="layer1"><g
|
||||
style="display:inline"
|
||||
transform="matrix(2.105461e-2,0,0,2.086758e-2,42.60172,35.4036)"
|
||||
id="g6707"><rect
|
||||
style="opacity:0.40206185;color:black;fill:url(#linearGradient6715);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
|
||||
id="rect6709"
|
||||
width="1339.6335"
|
||||
height="478.35718"
|
||||
x="-1559.2523"
|
||||
y="-150.69685" /><path
|
||||
style="opacity:0.40206185;color:black;fill:url(#radialGradient6717);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
|
||||
d="M -219.61876,-150.68038 C -219.61876,-150.68038 -219.61876,327.65041 -219.61876,327.65041 C -76.744594,328.55086 125.78146,220.48075 125.78138,88.454235 C 125.78138,-43.572302 -33.655436,-150.68036 -219.61876,-150.68038 z "
|
||||
id="path6711"
|
||||
sodipodi:nodetypes="cccc" /><path
|
||||
sodipodi:nodetypes="cccc"
|
||||
id="path6713"
|
||||
d="M -1559.2523,-150.68038 C -1559.2523,-150.68038 -1559.2523,327.65041 -1559.2523,327.65041 C -1702.1265,328.55086 -1904.6525,220.48075 -1904.6525,88.454235 C -1904.6525,-43.572302 -1745.2157,-150.68036 -1559.2523,-150.68038 z "
|
||||
style="opacity:0.40206185;color:black;fill:url(#radialGradient6719);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" /></g><rect
|
||||
ry="2.3944440"
|
||||
rx="2.4241352"
|
||||
y="15.275433"
|
||||
x="7.4623847"
|
||||
height="23.112879"
|
||||
width="31.978371"
|
||||
id="rect3115"
|
||||
style="opacity:1.0000000;color:#000000;fill:url(#linearGradient2288);fill-opacity:1.0000000;fill-rule:nonzero;stroke:#a0670c;stroke-width:1.0000007;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:block;overflow:visible" /><rect
|
||||
style="opacity:0.48101267;color:#000000;fill:none;fill-opacity:1.0000000;fill-rule:nonzero;stroke:url(#linearGradient2285);stroke-width:1.0000011;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:block;overflow:visible"
|
||||
id="rect4220"
|
||||
width="29.804138"
|
||||
height="21.075352"
|
||||
x="8.4989996"
|
||||
y="16.243698"
|
||||
rx="1.2846882"
|
||||
ry="1.2846882" /><path
|
||||
sodipodi:nodetypes="ccccc"
|
||||
id="path4162"
|
||||
d="M 8.7697819,16.547178 L 13.819731,9.7363408 L 32.615291,9.6353255 L 37.835264,16.408941 L 8.7697819,16.547178 z "
|
||||
style="fill:url(#linearGradient2280);fill-opacity:1.0000000;fill-rule:evenodd;stroke:url(#linearGradient2282);stroke-width:1.0000008;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000" /><path
|
||||
sodipodi:nodetypes="ccccc"
|
||||
id="path4164"
|
||||
d="M 38.276321,16.325703 L 43.469269,23.520364 L 3.9609455,23.520364 L 8.6250143,16.320763 L 38.276321,16.325703 z "
|
||||
style="opacity:1.0000000;color:#000000;fill:url(#linearGradient2277);fill-opacity:1.0000000;fill-rule:nonzero;stroke:#a0670c;stroke-width:1.0000005;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:block;overflow:visible" /><path
|
||||
sodipodi:nodetypes="ccccc"
|
||||
id="path4178"
|
||||
d="M 32.849333,9.6141009 L 37.532219,16.536370 L 46.565835,20.921197 L 38.451329,12.008545 L 32.849333,9.6141009 z "
|
||||
style="opacity:1.0000000;color:#000000;fill:url(#linearGradient2274);fill-opacity:1.0000000;fill-rule:nonzero;stroke:#a0670c;stroke-width:1.0000005;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:block;overflow:visible" /><path
|
||||
sodipodi:nodetypes="ccccc"
|
||||
style="opacity:1.0000000;color:#000000;fill:#f8e8cf;fill-opacity:1.0000000;fill-rule:nonzero;stroke:#a0670c;stroke-width:1.0000000;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:block;overflow:visible"
|
||||
d="M 13.617702,9.7151161 L 9.6419233,16.435355 L 0.50729183,20.820182 L 8.6217973,11.907530 L 13.617702,9.7151161 z "
|
||||
id="path4180" /><path
|
||||
style="opacity:1.0000000;color:#000000;fill:none;fill-opacity:1.0000000;fill-rule:nonzero;stroke:#f4e3ca;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:block;overflow:visible"
|
||||
d="M 37.024959,16.436050 L 41.478871,22.493011 L 5.6482792,22.493011 L 9.7892982,16.312694 L 37.024959,16.436050 z "
|
||||
id="path4954"
|
||||
sodipodi:nodetypes="ccccc" /><g
|
||||
color="#000000"
|
||||
id="g3414"
|
||||
transform="matrix(0.56662726,0,0,0.57555804,7.9823278,3.8741842)"><path
|
||||
fill="url(#c)"
|
||||
fill-rule="evenodd"
|
||||
d="m 41.75,35.375 a 18.5,7.375 0 1 1 -37,0 18.5,7.375 0 1 1 37,0 z"
|
||||
opacity="0.3"
|
||||
overflow="visible"
|
||||
style="fill:url(#c);marker:none"
|
||||
transform="translate(0,2.834646)"
|
||||
id="path3404" /><path
|
||||
fill="#9db029"
|
||||
stroke="#596616"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
d="M 41.625,7.7951523 18.5625,10.629798 v 21.78125 c -1.645955,-0.557651 -3.931785,-0.703429 -6.4375,-0.1875 -4.356314,0.896969 -7.4778602,3.299487 -7,5.34375 0.4778601,2.044263 4.393685,2.99072 8.75,2.09375 4.116641,-0.84762 7.684123,-3.037802 7.602633,-5 l 0.15625,-19.03125 16.930457,-2.895306 v 17.284614 c -10.25,-1.5 -13.292201,2.893236 -12.81434,4.9375 0.47786,2.044263 4.393686,2.990719 8.75,2.09375 3.865376,-0.795885 6.63241,-2.763211 6.90625,-4.625 z"
|
||||
display="block"
|
||||
style="marker:none"
|
||||
id="path3406" /><path
|
||||
fill="none"
|
||||
stroke="#ffffff"
|
||||
d="M 40.729036,8.8956383 19.547267,11.730284 V 33.568621 C 11.982012,31.663311 5.8141632,35.40303 6.2685944,37.347065 6.9730255,40.6661 20.646969,38.449299 20.569474,34.208305 l 0.148589,-19.473166 18.850374,-2.892332 v 19.437166 c -7.566284,-1.926647 -13.265498,1.376384 -12.811066,3.32042 0.579431,3.194035 12.378226,2.113362 13.76364,-2.657146 z"
|
||||
display="block"
|
||||
opacity="0.511765"
|
||||
style="marker:none"
|
||||
id="path3408" /><path
|
||||
fill="url(#d)"
|
||||
d="m 12.25,32.75 a 6.375,3.25 0 1 1 -12.75,0 6.375,3.25 0 1 1 12.75,0 z"
|
||||
display="block"
|
||||
opacity="0.511765"
|
||||
overflow="visible"
|
||||
style="fill:url(#d);marker:none"
|
||||
transform="matrix(0.73452,-0.11164,0.11164,0.73452,3.903362,12.22551)"
|
||||
id="path3410" /><path
|
||||
fill="url(#e)"
|
||||
d="m 12.25,32.75 a 6.375,3.25 0 1 1 -12.75,0 6.375,3.25 0 1 1 12.75,0 z"
|
||||
display="block"
|
||||
opacity="0.511765"
|
||||
overflow="visible"
|
||||
style="fill:url(#e);marker:none"
|
||||
transform="matrix(0.73452,-0.11164,0.11164,0.73452,23.74587,9.390864)"
|
||||
id="path3412" /></g><text
|
||||
xml:space="preserve"
|
||||
id="text3580"
|
||||
style="white-space:pre;shape-inside:url(#rect3582);fill:#808080;stroke:#000000"
|
||||
transform="translate(4.5961941,0.70710678)"><tspan
|
||||
x="10.607422"
|
||||
y="36.020065"
|
||||
id="tspan3816"><tspan
|
||||
style="fill:#008000"
|
||||
id="tspan3814">lsa</tspan></tspan></text></g></svg>
|
||||
id="g1"><g
|
||||
style="display:inline"
|
||||
transform="matrix(2.105461e-2,0,0,2.086758e-2,42.60172,35.4036)"
|
||||
id="g6707"><rect
|
||||
style="opacity:0.40206185;color:black;fill:url(#linearGradient6715);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
|
||||
id="rect6709"
|
||||
width="1339.6335"
|
||||
height="478.35718"
|
||||
x="-1559.2523"
|
||||
y="-150.69685" /><path
|
||||
style="opacity:0.40206185;color:black;fill:url(#radialGradient6717);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
|
||||
d="M -219.61876,-150.68038 C -219.61876,-150.68038 -219.61876,327.65041 -219.61876,327.65041 C -76.744594,328.55086 125.78146,220.48075 125.78138,88.454235 C 125.78138,-43.572302 -33.655436,-150.68036 -219.61876,-150.68038 z "
|
||||
id="path6711"
|
||||
sodipodi:nodetypes="cccc" /><path
|
||||
sodipodi:nodetypes="cccc"
|
||||
id="path6713"
|
||||
d="M -1559.2523,-150.68038 C -1559.2523,-150.68038 -1559.2523,327.65041 -1559.2523,327.65041 C -1702.1265,328.55086 -1904.6525,220.48075 -1904.6525,88.454235 C -1904.6525,-43.572302 -1745.2157,-150.68036 -1559.2523,-150.68038 z "
|
||||
style="opacity:0.40206185;color:black;fill:url(#radialGradient6719);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" /></g><rect
|
||||
ry="2.3944440"
|
||||
rx="2.4241352"
|
||||
y="15.275433"
|
||||
x="7.4623847"
|
||||
height="23.112879"
|
||||
width="31.978371"
|
||||
id="rect3115"
|
||||
style="opacity:1.0000000;color:#000000;fill:url(#linearGradient2288);fill-opacity:1.0000000;fill-rule:nonzero;stroke:#a0670c;stroke-width:1.0000007;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:block;overflow:visible" /><rect
|
||||
style="opacity:0.48101267;color:#000000;fill:none;fill-opacity:1.0000000;fill-rule:nonzero;stroke:url(#linearGradient2285);stroke-width:1.0000011;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:block;overflow:visible"
|
||||
id="rect4220"
|
||||
width="29.804138"
|
||||
height="21.075352"
|
||||
x="8.4989996"
|
||||
y="16.243698"
|
||||
rx="1.2846882"
|
||||
ry="1.2846882" /><path
|
||||
sodipodi:nodetypes="ccccc"
|
||||
id="path4162"
|
||||
d="M 8.7697819,16.547178 L 13.819731,9.7363408 L 32.615291,9.6353255 L 37.835264,16.408941 L 8.7697819,16.547178 z "
|
||||
style="fill:url(#linearGradient2280);fill-opacity:1.0000000;fill-rule:evenodd;stroke:url(#linearGradient2282);stroke-width:1.0000008;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000" /><path
|
||||
sodipodi:nodetypes="ccccc"
|
||||
id="path4164"
|
||||
d="M 38.276321,16.325703 L 43.469269,23.520364 L 3.9609455,23.520364 L 8.6250143,16.320763 L 38.276321,16.325703 z "
|
||||
style="opacity:1.0000000;color:#000000;fill:url(#linearGradient2277);fill-opacity:1.0000000;fill-rule:nonzero;stroke:#a0670c;stroke-width:1.0000005;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:block;overflow:visible" /><path
|
||||
sodipodi:nodetypes="ccccc"
|
||||
id="path4178"
|
||||
d="M 32.849333,9.6141009 L 37.532219,16.536370 L 46.565835,20.921197 L 38.451329,12.008545 L 32.849333,9.6141009 z "
|
||||
style="opacity:1.0000000;color:#000000;fill:url(#linearGradient2274);fill-opacity:1.0000000;fill-rule:nonzero;stroke:#a0670c;stroke-width:1.0000005;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:block;overflow:visible" /><path
|
||||
sodipodi:nodetypes="ccccc"
|
||||
style="opacity:1.0000000;color:#000000;fill:#f8e8cf;fill-opacity:1.0000000;fill-rule:nonzero;stroke:#a0670c;stroke-width:1.0000000;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:block;overflow:visible"
|
||||
d="M 13.617702,9.7151161 L 9.6419233,16.435355 L 0.50729183,20.820182 L 8.6217973,11.907530 L 13.617702,9.7151161 z "
|
||||
id="path4180" /><path
|
||||
style="opacity:1.0000000;color:#000000;fill:none;fill-opacity:1.0000000;fill-rule:nonzero;stroke:#f4e3ca;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:block;overflow:visible"
|
||||
d="M 37.024959,16.436050 L 41.478871,22.493011 L 5.6482792,22.493011 L 9.7892982,16.312694 L 37.024959,16.436050 z "
|
||||
id="path4954"
|
||||
sodipodi:nodetypes="ccccc" /><g
|
||||
color="#000000"
|
||||
id="g3414"
|
||||
transform="matrix(0.56662726,0,0,0.57555804,7.9823278,3.8741842)"><path
|
||||
fill="url(#c)"
|
||||
fill-rule="evenodd"
|
||||
d="m 41.75,35.375 a 18.5,7.375 0 1 1 -37,0 18.5,7.375 0 1 1 37,0 z"
|
||||
opacity="0.3"
|
||||
overflow="visible"
|
||||
style="fill:url(#c);marker:none"
|
||||
transform="translate(0,2.834646)"
|
||||
id="path3404" /><path
|
||||
fill="#9db029"
|
||||
stroke="#596616"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
d="M 41.625,7.7951523 18.5625,10.629798 v 21.78125 c -1.645955,-0.557651 -3.931785,-0.703429 -6.4375,-0.1875 -4.356314,0.896969 -7.4778602,3.299487 -7,5.34375 0.4778601,2.044263 4.393685,2.99072 8.75,2.09375 4.116641,-0.84762 7.684123,-3.037802 7.602633,-5 l 0.15625,-19.03125 16.930457,-2.895306 v 17.284614 c -10.25,-1.5 -13.292201,2.893236 -12.81434,4.9375 0.47786,2.044263 4.393686,2.990719 8.75,2.09375 3.865376,-0.795885 6.63241,-2.763211 6.90625,-4.625 z"
|
||||
display="block"
|
||||
style="marker:none"
|
||||
id="path3406" /><path
|
||||
fill="none"
|
||||
stroke="#ffffff"
|
||||
d="M 40.729036,8.8956383 19.547267,11.730284 V 33.568621 C 11.982012,31.663311 5.8141632,35.40303 6.2685944,37.347065 6.9730255,40.6661 20.646969,38.449299 20.569474,34.208305 l 0.148589,-19.473166 18.850374,-2.892332 v 19.437166 c -7.566284,-1.926647 -13.265498,1.376384 -12.811066,3.32042 0.579431,3.194035 12.378226,2.113362 13.76364,-2.657146 z"
|
||||
display="block"
|
||||
opacity="0.511765"
|
||||
style="marker:none"
|
||||
id="path3408" /><path
|
||||
fill="url(#d)"
|
||||
d="m 12.25,32.75 a 6.375,3.25 0 1 1 -12.75,0 6.375,3.25 0 1 1 12.75,0 z"
|
||||
display="block"
|
||||
opacity="0.511765"
|
||||
overflow="visible"
|
||||
style="fill:url(#d);marker:none"
|
||||
transform="matrix(0.73452,-0.11164,0.11164,0.73452,3.903362,12.22551)"
|
||||
id="path3410" /><path
|
||||
fill="url(#e)"
|
||||
d="m 12.25,32.75 a 6.375,3.25 0 1 1 -12.75,0 6.375,3.25 0 1 1 12.75,0 z"
|
||||
display="block"
|
||||
opacity="0.511765"
|
||||
overflow="visible"
|
||||
style="fill:url(#e);marker:none"
|
||||
transform="matrix(0.73452,-0.11164,0.11164,0.73452,23.74587,9.390864)"
|
||||
id="path3412" /></g><text
|
||||
xml:space="preserve"
|
||||
id="text3580"
|
||||
style="white-space:pre;shape-inside:url(#rect3582);display:inline;fill:#808080;stroke:#000000"
|
||||
transform="translate(4.5961941,0.70710678)"><tspan
|
||||
x="10.607422"
|
||||
y="36.049526"
|
||||
id="tspan2"><tspan
|
||||
style="fill:#008000"
|
||||
id="tspan1">lsa</tspan></tspan></text></g></g></svg>
|
||||
|
|
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 17 KiB |
4084
locale/ar_SA.ts
4084
locale/ar_SA.ts
File diff suppressed because it is too large
Load diff
4240
locale/ay_BO.ts
4240
locale/ay_BO.ts
File diff suppressed because it is too large
Load diff
4042
locale/be_BY.ts
4042
locale/be_BY.ts
File diff suppressed because it is too large
Load diff
4032
locale/bg_BG.ts
4032
locale/bg_BG.ts
File diff suppressed because it is too large
Load diff
5538
locale/crowdin.ts
5538
locale/crowdin.ts
File diff suppressed because it is too large
Load diff
4044
locale/cs_CZ.ts
4044
locale/cs_CZ.ts
File diff suppressed because it is too large
Load diff
4030
locale/de_CH.ts
4030
locale/de_CH.ts
File diff suppressed because it is too large
Load diff
4034
locale/de_DE.ts
4034
locale/de_DE.ts
File diff suppressed because it is too large
Load diff
4048
locale/el_GR.ts
4048
locale/el_GR.ts
File diff suppressed because it is too large
Load diff
4046
locale/eo_UY.ts
4046
locale/eo_UY.ts
File diff suppressed because it is too large
Load diff
4706
locale/es_AR.ts
4706
locale/es_AR.ts
File diff suppressed because it is too large
Load diff
5358
locale/es_BO.ts
5358
locale/es_BO.ts
File diff suppressed because it is too large
Load diff
4044
locale/es_ES.ts
4044
locale/es_ES.ts
File diff suppressed because it is too large
Load diff
4044
locale/fa_IR.ts
4044
locale/fa_IR.ts
File diff suppressed because it is too large
Load diff
4046
locale/fi_FI.ts
4046
locale/fi_FI.ts
File diff suppressed because it is too large
Load diff
4040
locale/fr_FR.ts
4040
locale/fr_FR.ts
File diff suppressed because it is too large
Load diff
4026
locale/hi_IN.ts
4026
locale/hi_IN.ts
File diff suppressed because it is too large
Load diff
4287
locale/hu_HU.ts
Normal file
4287
locale/hu_HU.ts
Normal file
File diff suppressed because it is too large
Load diff
4046
locale/ie_001.ts
4046
locale/ie_001.ts
File diff suppressed because it is too large
Load diff
4048
locale/it_IT.ts
4048
locale/it_IT.ts
File diff suppressed because it is too large
Load diff
4042
locale/ja_JP.ts
4042
locale/ja_JP.ts
File diff suppressed because it is too large
Load diff
4052
locale/jbo_EN.ts
4052
locale/jbo_EN.ts
File diff suppressed because it is too large
Load diff
4042
locale/ko_KR.ts
4042
locale/ko_KR.ts
File diff suppressed because it is too large
Load diff
4042
locale/lt_LT.ts
4042
locale/lt_LT.ts
File diff suppressed because it is too large
Load diff
4050
locale/mk_MK.ts
4050
locale/mk_MK.ts
File diff suppressed because it is too large
Load diff
4038
locale/nl_NL.ts
4038
locale/nl_NL.ts
File diff suppressed because it is too large
Load diff
4050
locale/pl_PL.ts
4050
locale/pl_PL.ts
File diff suppressed because it is too large
Load diff
4058
locale/pt_BR.ts
4058
locale/pt_BR.ts
File diff suppressed because it is too large
Load diff
4046
locale/pt_PT.ts
4046
locale/pt_PT.ts
File diff suppressed because it is too large
Load diff
4038
locale/qu_PE.ts
4038
locale/qu_PE.ts
File diff suppressed because it is too large
Load diff
4062
locale/ru_RU.ts
4062
locale/ru_RU.ts
File diff suppressed because it is too large
Load diff
4038
locale/sk_SK.ts
4038
locale/sk_SK.ts
File diff suppressed because it is too large
Load diff
4038
locale/sq_AL.ts
4038
locale/sq_AL.ts
File diff suppressed because it is too large
Load diff
4050
locale/sr_SP.ts
4050
locale/sr_SP.ts
File diff suppressed because it is too large
Load diff
4050
locale/sv_SE.ts
4050
locale/sv_SE.ts
File diff suppressed because it is too large
Load diff
4046
locale/tg_TJ.ts
4046
locale/tg_TJ.ts
File diff suppressed because it is too large
Load diff
4040
locale/tk_TM.ts
4040
locale/tk_TM.ts
File diff suppressed because it is too large
Load diff
4038
locale/tr_TR.ts
4038
locale/tr_TR.ts
File diff suppressed because it is too large
Load diff
4048
locale/uk_UA.ts
4048
locale/uk_UA.ts
File diff suppressed because it is too large
Load diff
4032
locale/vi_VN.ts
4032
locale/vi_VN.ts
File diff suppressed because it is too large
Load diff
4032
locale/zh_CN.ts
4032
locale/zh_CN.ts
File diff suppressed because it is too large
Load diff
4038
locale/zh_TW.ts
4038
locale/zh_TW.ts
File diff suppressed because it is too large
Load diff
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -1,56 +0,0 @@
|
|||
Apache License
|
||||
Version 2.0, January 2004
|
||||
http://www.apache.org/licenses/
|
||||
|
||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||
|
||||
1. Definitions.
|
||||
|
||||
"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document.
|
||||
|
||||
"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License.
|
||||
|
||||
"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.
|
||||
|
||||
"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License.
|
||||
|
||||
"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files.
|
||||
|
||||
"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types.
|
||||
|
||||
"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below).
|
||||
|
||||
"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof.
|
||||
|
||||
"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution."
|
||||
|
||||
"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work.
|
||||
|
||||
2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form.
|
||||
|
||||
3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed.
|
||||
|
||||
4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions:
|
||||
|
||||
1. You must give any other recipients of the Work or Derivative Works a copy of this License; and
|
||||
|
||||
2. You must cause any modified files to carry prominent notices stating that You changed the files; and
|
||||
|
||||
3. You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and
|
||||
|
||||
4. If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License.
|
||||
|
||||
You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License.
|
||||
|
||||
5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions.
|
||||
|
||||
6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file.
|
||||
|
||||
7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.
|
||||
|
||||
8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages.
|
||||
|
||||
9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
|
@ -1,33 +0,0 @@
|
|||
{
|
||||
"name": "Traditional Chinese (Hong Kong variant) to Simplified Chinese",
|
||||
"segmentation": {
|
||||
"type": "mmseg",
|
||||
"dict": {
|
||||
"type": "ocd2",
|
||||
"file": "TSPhrases.ocd2"
|
||||
}
|
||||
},
|
||||
"conversion_chain": [{
|
||||
"dict": {
|
||||
"type": "group",
|
||||
"dicts": [{
|
||||
"type": "ocd2",
|
||||
"file": "HKVariantsRevPhrases.ocd2"
|
||||
}, {
|
||||
"type": "ocd2",
|
||||
"file": "HKVariantsRev.ocd2"
|
||||
}]
|
||||
}
|
||||
}, {
|
||||
"dict": {
|
||||
"type": "group",
|
||||
"dicts": [{
|
||||
"type": "ocd2",
|
||||
"file": "TSPhrases.ocd2"
|
||||
}, {
|
||||
"type": "ocd2",
|
||||
"file": "TSCharacters.ocd2"
|
||||
}]
|
||||
}
|
||||
}]
|
||||
}
|
|
@ -1,22 +0,0 @@
|
|||
{
|
||||
"name": "Traditional Chinese (Hong Kong variant) to Traditional Chinese",
|
||||
"segmentation": {
|
||||
"type": "mmseg",
|
||||
"dict": {
|
||||
"type": "ocd2",
|
||||
"file": "HKVariantsRevPhrases.ocd2"
|
||||
}
|
||||
},
|
||||
"conversion_chain": [{
|
||||
"dict": {
|
||||
"type": "group",
|
||||
"dicts": [{
|
||||
"type": "ocd2",
|
||||
"file": "HKVariantsRevPhrases.ocd2"
|
||||
}, {
|
||||
"type": "ocd2",
|
||||
"file": "HKVariantsRev.ocd2"
|
||||
}]
|
||||
}
|
||||
}]
|
||||
}
|
|
@ -1,25 +0,0 @@
|
|||
{
|
||||
"name": "New Japanese Kanji (Shinjitai) to Traditional Chinese Characters (Kyūjitai)",
|
||||
"segmentation": {
|
||||
"type": "mmseg",
|
||||
"dict": {
|
||||
"type": "ocd2",
|
||||
"file": "JPShinjitaiPhrases.ocd2"
|
||||
}
|
||||
},
|
||||
"conversion_chain": [{
|
||||
"dict": {
|
||||
"type": "group",
|
||||
"dicts": [{
|
||||
"type": "ocd2",
|
||||
"file": "JPShinjitaiPhrases.ocd2"
|
||||
}, {
|
||||
"type": "ocd2",
|
||||
"file": "JPShinjitaiCharacters.ocd2"
|
||||
}, {
|
||||
"type": "ocd2",
|
||||
"file": "JPVariantsRev.ocd2"
|
||||
}]
|
||||
}
|
||||
}]
|
||||
}
|
|
@ -1,27 +0,0 @@
|
|||
{
|
||||
"name": "Simplified Chinese to Traditional Chinese (Hong Kong variant)",
|
||||
"segmentation": {
|
||||
"type": "mmseg",
|
||||
"dict": {
|
||||
"type": "ocd2",
|
||||
"file": "STPhrases.ocd2"
|
||||
}
|
||||
},
|
||||
"conversion_chain": [{
|
||||
"dict": {
|
||||
"type": "group",
|
||||
"dicts": [{
|
||||
"type": "ocd2",
|
||||
"file": "STPhrases.ocd2"
|
||||
}, {
|
||||
"type": "ocd2",
|
||||
"file": "STCharacters.ocd2"
|
||||
}]
|
||||
}
|
||||
}, {
|
||||
"dict": {
|
||||
"type": "ocd2",
|
||||
"file": "HKVariants.ocd2"
|
||||
}
|
||||
}]
|
||||
}
|
|
@ -1,22 +0,0 @@
|
|||
{
|
||||
"name": "Simplified Chinese to Traditional Chinese",
|
||||
"segmentation": {
|
||||
"type": "mmseg",
|
||||
"dict": {
|
||||
"type": "ocd2",
|
||||
"file": "STPhrases.ocd2"
|
||||
}
|
||||
},
|
||||
"conversion_chain": [{
|
||||
"dict": {
|
||||
"type": "group",
|
||||
"dicts": [{
|
||||
"type": "ocd2",
|
||||
"file": "STPhrases.ocd2"
|
||||
}, {
|
||||
"type": "ocd2",
|
||||
"file": "STCharacters.ocd2"
|
||||
}]
|
||||
}
|
||||
}]
|
||||
}
|
|
@ -1,27 +0,0 @@
|
|||
{
|
||||
"name": "Simplified Chinese to Traditional Chinese (Taiwan standard)",
|
||||
"segmentation": {
|
||||
"type": "mmseg",
|
||||
"dict": {
|
||||
"type": "ocd2",
|
||||
"file": "STPhrases.ocd2"
|
||||
}
|
||||
},
|
||||
"conversion_chain": [{
|
||||
"dict": {
|
||||
"type": "group",
|
||||
"dicts": [{
|
||||
"type": "ocd2",
|
||||
"file": "STPhrases.ocd2"
|
||||
}, {
|
||||
"type": "ocd2",
|
||||
"file": "STCharacters.ocd2"
|
||||
}]
|
||||
}
|
||||
}, {
|
||||
"dict": {
|
||||
"type": "ocd2",
|
||||
"file": "TWVariants.ocd2"
|
||||
}
|
||||
}]
|
||||
}
|
|
@ -1,32 +0,0 @@
|
|||
{
|
||||
"name": "Simplified Chinese to Traditional Chinese (Taiwan standard, with phrases)",
|
||||
"segmentation": {
|
||||
"type": "mmseg",
|
||||
"dict": {
|
||||
"type": "ocd2",
|
||||
"file": "STPhrases.ocd2"
|
||||
}
|
||||
},
|
||||
"conversion_chain": [{
|
||||
"dict": {
|
||||
"type": "group",
|
||||
"dicts": [{
|
||||
"type": "ocd2",
|
||||
"file": "STPhrases.ocd2"
|
||||
}, {
|
||||
"type": "ocd2",
|
||||
"file": "STCharacters.ocd2"
|
||||
}]
|
||||
}
|
||||
}, {
|
||||
"dict": {
|
||||
"type": "ocd2",
|
||||
"file": "TWPhrases.ocd2"
|
||||
}
|
||||
}, {
|
||||
"dict": {
|
||||
"type": "ocd2",
|
||||
"file": "TWVariants.ocd2"
|
||||
}
|
||||
}]
|
||||
}
|
|
@ -1,16 +0,0 @@
|
|||
{
|
||||
"name": "Traditional Chinese to Traditional Chinese (Hong Kong variant)",
|
||||
"segmentation": {
|
||||
"type": "mmseg",
|
||||
"dict": {
|
||||
"type": "ocd2",
|
||||
"file": "HKVariants.ocd2"
|
||||
}
|
||||
},
|
||||
"conversion_chain": [{
|
||||
"dict": {
|
||||
"type": "ocd2",
|
||||
"file": "HKVariants.ocd2"
|
||||
}
|
||||
}]
|
||||
}
|
|
@ -1,16 +0,0 @@
|
|||
{
|
||||
"name": "Traditional Chinese Characters (Kyūjitai) to New Japanese Kanji (Shinjitai)",
|
||||
"segmentation": {
|
||||
"type": "mmseg",
|
||||
"dict": {
|
||||
"type": "ocd2",
|
||||
"file": "JPVariants.ocd2"
|
||||
}
|
||||
},
|
||||
"conversion_chain": [{
|
||||
"dict": {
|
||||
"type": "ocd2",
|
||||
"file": "JPVariants.ocd2"
|
||||
}
|
||||
}]
|
||||
}
|
|
@ -1,22 +0,0 @@
|
|||
{
|
||||
"name": "Traditional Chinese to Simplified Chinese",
|
||||
"segmentation": {
|
||||
"type": "mmseg",
|
||||
"dict": {
|
||||
"type": "ocd2",
|
||||
"file": "TSPhrases.ocd2"
|
||||
}
|
||||
},
|
||||
"conversion_chain": [{
|
||||
"dict": {
|
||||
"type": "group",
|
||||
"dicts": [{
|
||||
"type": "ocd2",
|
||||
"file": "TSPhrases.ocd2"
|
||||
}, {
|
||||
"type": "ocd2",
|
||||
"file": "TSCharacters.ocd2"
|
||||
}]
|
||||
}
|
||||
}]
|
||||
}
|
|
@ -1,16 +0,0 @@
|
|||
{
|
||||
"name": "Traditional Chinese to Traditional Chinese (Taiwan standard)",
|
||||
"segmentation": {
|
||||
"type": "mmseg",
|
||||
"dict": {
|
||||
"type": "ocd2",
|
||||
"file": "TWVariants.ocd2"
|
||||
}
|
||||
},
|
||||
"conversion_chain": [{
|
||||
"dict": {
|
||||
"type": "ocd2",
|
||||
"file": "TWVariants.ocd2"
|
||||
}
|
||||
}]
|
||||
}
|
|
@ -1,33 +0,0 @@
|
|||
{
|
||||
"name": "Traditional Chinese (Taiwan standard) to Simplified Chinese",
|
||||
"segmentation": {
|
||||
"type": "mmseg",
|
||||
"dict": {
|
||||
"type": "ocd2",
|
||||
"file": "TSPhrases.ocd2"
|
||||
}
|
||||
},
|
||||
"conversion_chain": [{
|
||||
"dict": {
|
||||
"type": "group",
|
||||
"dicts": [{
|
||||
"type": "ocd2",
|
||||
"file": "TWVariantsRevPhrases.ocd2"
|
||||
}, {
|
||||
"type": "ocd2",
|
||||
"file": "TWVariantsRev.ocd2"
|
||||
}]
|
||||
}
|
||||
}, {
|
||||
"dict": {
|
||||
"type": "group",
|
||||
"dicts": [{
|
||||
"type": "ocd2",
|
||||
"file": "TSPhrases.ocd2"
|
||||
}, {
|
||||
"type": "ocd2",
|
||||
"file": "TSCharacters.ocd2"
|
||||
}]
|
||||
}
|
||||
}]
|
||||
}
|
|
@ -1,36 +0,0 @@
|
|||
{
|
||||
"name": "Traditional Chinese (Taiwan standard) to Simplified Chinese (with phrases)",
|
||||
"segmentation": {
|
||||
"type": "mmseg",
|
||||
"dict": {
|
||||
"type": "ocd2",
|
||||
"file": "TSPhrases.ocd2"
|
||||
}
|
||||
},
|
||||
"conversion_chain": [{
|
||||
"dict": {
|
||||
"type": "group",
|
||||
"dicts": [{
|
||||
"type": "ocd2",
|
||||
"file": "TWPhrasesRev.ocd2"
|
||||
}, {
|
||||
"type": "ocd2",
|
||||
"file": "TWVariantsRevPhrases.ocd2"
|
||||
}, {
|
||||
"type": "ocd2",
|
||||
"file": "TWVariantsRev.ocd2"
|
||||
}]
|
||||
}
|
||||
}, {
|
||||
"dict": {
|
||||
"type": "group",
|
||||
"dicts": [{
|
||||
"type": "ocd2",
|
||||
"file": "TSPhrases.ocd2"
|
||||
}, {
|
||||
"type": "ocd2",
|
||||
"file": "TSCharacters.ocd2"
|
||||
}]
|
||||
}
|
||||
}]
|
||||
}
|
|
@ -1,22 +0,0 @@
|
|||
{
|
||||
"name": "Traditional Chinese (Taiwan standard) to Traditional Chinese",
|
||||
"segmentation": {
|
||||
"type": "mmseg",
|
||||
"dict": {
|
||||
"type": "ocd2",
|
||||
"file": "TWVariantsRevPhrases.ocd2"
|
||||
}
|
||||
},
|
||||
"conversion_chain": [{
|
||||
"dict": {
|
||||
"type": "group",
|
||||
"dicts": [{
|
||||
"type": "ocd2",
|
||||
"file": "TWVariantsRevPhrases.ocd2"
|
||||
}, {
|
||||
"type": "ocd2",
|
||||
"file": "TWVariantsRev.ocd2"
|
||||
}]
|
||||
}
|
||||
}]
|
||||
}
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue