fix: merge conflict

This commit is contained in:
YiFang Xiao 2023-07-21 20:58:36 +08:00
commit 9d5505669c
471 changed files with 88351 additions and 84635 deletions

4
.git-blame-ignore-revs Normal file
View file

@ -0,0 +1,4 @@
# To use this file: https://docs.github.com/en/repositories/working-with-files/using-files/viewing-a-file#ignore-commits-in-the-blame-view
# reformat everything commit
b5349478cfb0dc2dd0de8c8e8aeebdd24cf7ac6b

View file

@ -38,3 +38,16 @@ Copy & paste `help` -> `about` -> `Copy version info` to here
**Additional context** **Additional context**
Add any other context about the problem here. Add any other context about the problem here.
Windows:
Upload the dmp file in the crash folder located in the configuration folder (can be opened through the menu help->configuration folder) to here
Macos:
upload the crashpad crash log
Linux:
gdb backtrace info.

View file

@ -33,3 +33,15 @@ assignees: ''
- Version [e.g. 22] - Version [e.g. 22]
**额外的信息** **额外的信息**
Windows:
_将位于配置文件夹中可以通过菜单 **help->配置文件夹** 打开crash文件夹里面的dmp文件上传到此处_
Macos:
将macos自带的crashpad的log粘贴到此处
Linux:
gdb crash 堆栈信息

View file

@ -57,7 +57,6 @@ function Main() {
Write-Host "copy sdk dll$($sdkDll)" Write-Host "copy sdk dll$($sdkDll)"
Copy-Item $sdkDll $archiveName\ Copy-Item $sdkDll $archiveName\
Copy-Item winlibs\lib\msvc\*.dll $archiveName\ Copy-Item winlibs\lib\msvc\*.dll $archiveName\
Copy-Item winlibs\lib\xapian\rel\*.dll $archiveName\
Copy-Item winlibs\lib\*.dll $archiveName\ Copy-Item winlibs\lib\*.dll $archiveName\
Copy-Item locale\*.qm $archiveName\locale\ Copy-Item locale\*.qm $archiveName\locale\

View file

@ -43,7 +43,7 @@ jobs:
- name: Bump version and push tag - name: Bump version and push tag
if: ${{env.prerelease != true}} if: ${{env.prerelease != 'true'}}
uses: mathieudutour/github-tag-action@v6.0 uses: mathieudutour/github-tag-action@v6.0
with: with:
github_token: ${{ secrets.GITHUB_TOKEN }} github_token: ${{ secrets.GITHUB_TOKEN }}

View file

@ -1,44 +0,0 @@
name: "auto clang-format code"
on:
pull_request:
branches:
# - dev
# - master
- staged
paths-ignore:
- "docs/**"
# - ".github/**"
- "howto/**"
- "*.md"
- "locale/**"
jobs:
format:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3.5.2
with:
# check out HEAD on the branch
ref: ${{ github.head_ref }}
repository: ${{github.event.pull_request.head.repo.full_name}}
# make sure the parent commit is grabbed as well, because
# that's what will get formatted (i.e. the most recent commit)
fetch-depth: 2
# format the latest commit
- name: ubuntu install clang-format
if: ${{ github.event.pull_request.head.repo.full_name == 'xiaoyifang/goldendict-ng' }}
id: clang-format
run: |
sudo apt-get install git lsb-release wget software-properties-common
wget -qO - https://apt.llvm.org/llvm.sh| sudo bash
sudo apt-get update
sudo apt-get install -y clang-format
git-clang-format --style=file HEAD^
- uses: EndBug/add-and-commit@v9
if: ${{ github.event.pull_request.head.repo.full_name == 'xiaoyifang/goldendict-ng' }}
with:
default_author: github_actor
message: 🎨 apply clang-format changes

61
.github/workflows/auto format.yml vendored Normal file
View file

@ -0,0 +1,61 @@
name: autofix.ci
on:
pull_request:
branches:
# - dev
# - master
- staged
paths-ignore:
- "docs/**"
# - ".github/**"
- "howto/**"
- "*.md"
- "locale/**"
permissions:
contents: read
jobs:
format:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3.5.2
with:
# check out HEAD on the branch
# ref: ${{ github.head_ref }}
# repository: ${{github.event.pull_request.head.repo.full_name}}
# make sure the parent commit is grabbed as well, because
# that's what will get formatted (i.e. the most recent commit)
fetch-depth: 2
# format the latest commit
- name: ubuntu install clang-format
# if: ${{ github.event.pull_request.head.repo.full_name == 'xiaoyifang/goldendict-ng' }}
id: clang-format
run: |
sudo apt-get install git lsb-release wget software-properties-common
wget -qO - https://apt.llvm.org/llvm.sh| sudo bash
sudo apt-get update
sudo apt-get install -y clang-format
git-clang-format --style=file HEAD^
- uses: autofix-ci/action@89762f9c25dd85f6b78cd40e521232e403357ec0
css-js-html-format:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 2
- uses: actions/setup-node@v3
with:
node-version: 16
- run: npm ci
- run: npx prettier --write src/stylesheets src/scripts/gd-*.js
# Optimize all PNGs with https://pngquant.org/
# - run: sudo apt-get update && sudo apt-get install -y pngquant
# - name: Run pngquant
# run: |
# shopt -s globstar
# pngquant -f --ext .png --skip-if-larger -- **/*.png
- uses: autofix-ci/action@89762f9c25dd85f6b78cd40e521232e403357ec0

View file

@ -24,9 +24,9 @@ jobs:
- name: Install Qt - name: Install Qt
uses: jurplel/install-qt-action@v3 uses: jurplel/install-qt-action@v3
with: with:
version: 6.4.3 version: 6.5.1
arch: gcc_64 arch: gcc_64
cached: 'false'
#serialport linuxdeploy need serialport to work. #serialport linuxdeploy need serialport to work.
modules: qtwebengine qtwebchannel qtpositioning qt5compat qtmultimedia qtimageformats qtspeech qtserialport modules: qtwebengine qtwebchannel qtpositioning qt5compat qtmultimedia qtimageformats qtspeech qtserialport
setup-python: 'false' setup-python: 'false'

View file

@ -26,9 +26,9 @@ jobs:
- name: Install Qt - name: Install Qt
uses: jurplel/install-qt-action@v3 uses: jurplel/install-qt-action@v3
with: with:
version: 6.4.3 version: 6.5.1
arch: gcc_64 arch: gcc_64
cached: 'false'
#serialport linuxdeploy need serialport to work. #serialport linuxdeploy need serialport to work.
modules: qtwebengine qtwebchannel qtpositioning qt5compat qtmultimedia qtimageformats qtspeech qtserialport modules: qtwebengine qtwebchannel qtpositioning qt5compat qtmultimedia qtimageformats qtspeech qtserialport
setup-python: 'false' setup-python: 'false'
@ -70,9 +70,9 @@ jobs:
- name: Install Qt - name: Install Qt
uses: jurplel/install-qt-action@v3 uses: jurplel/install-qt-action@v3
with: with:
version: 6.4.3 version: 6.5.1
arch: win64_msvc2019_64 arch: win64_msvc2019_64
cached: 'false'
#serialport linuxdeploy need serialport to work. #serialport linuxdeploy need serialport to work.
modules: qtwebengine qtwebchannel qtpositioning qt5compat qtmultimedia qtimageformats qtspeech qtserialport modules: qtwebengine qtwebchannel qtpositioning qt5compat qtmultimedia qtimageformats qtspeech qtserialport
setup-python: 'false' setup-python: 'false'
@ -96,9 +96,9 @@ jobs:
- name: Install Qt - name: Install Qt
uses: jurplel/install-qt-action@v3 uses: jurplel/install-qt-action@v3
with: with:
version: 6.4.3 version: 6.5.1
arch: clang_64 arch: clang_64
cached: 'false'
#serialport linuxdeploy need serialport to work. #serialport linuxdeploy need serialport to work.
modules: qtwebengine qtwebchannel qtpositioning qt5compat qtmultimedia qtimageformats qtspeech qtserialport modules: qtwebengine qtwebchannel qtpositioning qt5compat qtmultimedia qtimageformats qtspeech qtserialport
setup-python: 'false' setup-python: 'false'

View file

@ -1,223 +0,0 @@
name: ffmpeg-macos-build
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
on:
workflow_dispatch:
jobs:
build:
name: Build
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [macos-12]
steps:
# macos 11.0 默认环境变了,要指定
- name: prepare env
if: ${{ matrix.os == 'macos-11' }}
run: |
softwareupdate --all --install --force
sudo xcode-select --print-path
sudo xcode-select --switch /Library/Developer/CommandLineTools
- name: build ffmpeg
run: |
mkdir build
brew install automake fdk-aac git lame libass libtool libvorbis libvpx opus sdl shtool texi2html theora wget x264 x265 xvid nasm
brew install speex
git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg
cd ffmpeg
./configure --prefix=../build/ \
--enable-shared \
--disable-static \
--disable-debug \
--disable-programs \
--disable-network \
--disable-avdevice \
--disable-avfilter \
--disable-swscale \
--disable-network \
--disable-muxers \
--disable-demuxers \
--enable-rdft \
--enable-demuxer=aac \
--enable-demuxer=ac3 \
--enable-demuxer=aiff \
--enable-demuxer=ape \
--enable-demuxer=asf \
--enable-demuxer=flac \
--enable-demuxer=matroska \
--enable-demuxer=mp3 \
--enable-demuxer=mpc \
--enable-demuxer=mov \
--enable-demuxer=mpc8 \
--enable-demuxer=ogg \
--enable-demuxer=tta \
--enable-demuxer=wav \
--enable-demuxer=wv \
--disable-bsfs \
--disable-filters \
--disable-parsers \
--enable-parser=aac \
--enable-parser=ac3 \
--enable-parser=mpegaudio \
--disable-protocols \
--disable-indevs \
--disable-outdevs \
--disable-encoders \
--disable-decoders \
--enable-decoder=eightsvx_exp \
--enable-decoder=eightsvx_fib \
--enable-decoder=aac \
--enable-decoder=aac_latm \
--enable-decoder=ac3 \
--enable-decoder=adpcm_4xm \
--enable-decoder=adpcm_adx \
--enable-decoder=adpcm_afc \
--enable-decoder=adpcm_ct \
--enable-decoder=adpcm_ea \
--enable-decoder=adpcm_ea_maxis_xa \
--enable-decoder=adpcm_ea_r1 \
--enable-decoder=adpcm_ea_r2 \
--enable-decoder=adpcm_ea_r3 \
--enable-decoder=adpcm_ea_xas \
--enable-decoder=adpcm_g722 \
--enable-decoder=adpcm_g726 \
--enable-decoder=adpcm_ima_amv \
--enable-decoder=adpcm_ima_apc \
--enable-decoder=adpcm_ima_dk3 \
--enable-decoder=adpcm_ima_dk4 \
--enable-decoder=adpcm_ima_ea_eacs \
--enable-decoder=adpcm_ima_ea_sead \
--enable-decoder=adpcm_ima_iss \
--enable-decoder=adpcm_ima_oki \
--enable-decoder=adpcm_ima_qt \
--enable-decoder=adpcm_ima_smjpeg \
--enable-decoder=adpcm_ima_wav \
--enable-decoder=adpcm_ima_ws \
--enable-decoder=adpcm_ms \
--enable-decoder=adpcm_sbpro_2 \
--enable-decoder=adpcm_sbpro_3 \
--enable-decoder=adpcm_sbpro_4 \
--enable-decoder=adpcm_swf \
--enable-decoder=adpcm_thp \
--enable-decoder=adpcm_xa \
--enable-decoder=adpcm_yamaha \
--enable-decoder=alac \
--enable-decoder=amrnb \
--enable-decoder=libopencore_amrnb \
--enable-decoder=amrwb \
--enable-decoder=libopencore_amrwb \
--enable-decoder=ape \
--enable-decoder=atrac1 \
--enable-decoder=atrac3 \
--enable-decoder=binkaudio_dct \
--enable-decoder=binkaudio_rdft \
--enable-decoder=bmv_audio \
--enable-decoder=comfortnoise \
--enable-decoder=cook \
--enable-decoder=dsicinaudio \
--enable-decoder=dca \
--enable-decoder=eac3 \
--enable-decoder=flac \
--enable-decoder=g723_1 \
--enable-decoder=g729 \
--enable-decoder=gsm \
--enable-decoder=libgsm \
--enable-decoder=gsm_ms \
--enable-decoder=libgsm_ms \
--enable-decoder=iac \
--enable-decoder=imc \
--enable-decoder=interplay_dpcm \
--enable-decoder=mace3 \
--enable-decoder=mace6 \
--enable-decoder=mlp \
--enable-decoder=mp1 \
--enable-decoder=mp1float \
--enable-decoder=mp2 \
--enable-decoder=mp2float \
--enable-decoder=mp3 \
--enable-decoder=mp3float \
--enable-decoder=mp3adu \
--enable-decoder=mp3adufloat \
--enable-decoder=mp3on4 \
--enable-decoder=mp3on4float \
--enable-decoder=als \
--enable-decoder=mpc7 \
--enable-decoder=mpc8 \
--enable-decoder=nellymoser \
--enable-decoder=libopus \
--enable-decoder=paf_audio \
--enable-decoder=pcm_alaw \
--enable-decoder=pcm_bluray \
--enable-decoder=pcm_dvd \
--enable-decoder=pcm_f32be \
--enable-decoder=pcm_f32le \
--enable-decoder=pcm_f64be \
--enable-decoder=pcm_f64le \
--enable-decoder=pcm_lxf \
--enable-decoder=pcm_mulaw \
--enable-decoder=pcm_s16be \
--enable-decoder=pcm_s16be_planar \
--enable-decoder=pcm_s16le \
--enable-decoder=pcm_s16le_planar \
--enable-decoder=pcm_s24be \
--enable-decoder=pcm_s24daud \
--enable-decoder=pcm_s24le \
--enable-decoder=pcm_s24le_planar \
--enable-decoder=pcm_s32be \
--enable-decoder=pcm_s32le \
--enable-decoder=pcm_s32le_planar \
--enable-decoder=pcm_s8 \
--enable-decoder=pcm_s8_planar \
--enable-decoder=pcm_u16be \
--enable-decoder=pcm_u16le \
--enable-decoder=pcm_u24be \
--enable-decoder=pcm_u24le \
--enable-decoder=pcm_u32be \
--enable-decoder=pcm_u32le \
--enable-decoder=pcm_u8 \
--enable-decoder=pcm_zork \
--enable-decoder=qcelp \
--enable-decoder=qdm2 \
--enable-decoder=ra_144 \
--enable-decoder=ra_288 \
--enable-decoder=ralf \
--enable-decoder=roq_dpcm \
--enable-decoder=s302m \
--enable-decoder=shorten \
--enable-decoder=sipr \
--enable-decoder=smackaud \
--enable-decoder=sol_dpcm \
--enable-decoder=sonic \
--enable-decoder=libspeex \
--enable-decoder=tak \
--enable-decoder=truehd \
--enable-decoder=truespeech \
--enable-decoder=tta \
--enable-decoder=twinvq \
--enable-decoder=vima \
--enable-decoder=vmdaudio \
--enable-decoder=vorbis \
--enable-decoder=ffwavesynth \
--enable-decoder=wavpack \
--enable-decoder=ws_snd1 \
--enable-decoder=wmalossless \
--enable-decoder=wmapro \
--enable-decoder=wmav1 \
--enable-decoder=wmav2 \
--enable-decoder=wmavoice \
--enable-decoder=xan_dpcm \
--enable-libspeex
make
sudo make install
ls -al ../build
# otool -L build/*.dylib
# - uses: actions/upload-artifact@v2
# with:
# name: build
# path: build/*

View file

@ -1,52 +0,0 @@
name: ffmpeg-build
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
on:
workflow_dispatch:
jobs:
build:
name: Build
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [macos-12]
steps:
# macos 11.0 默认环境变了,要指定
- name: prepare env
if: ${{ matrix.os == 'macos-11' }}
run: |
softwareupdate --all --install --force
sudo xcode-select --print-path
sudo xcode-select --switch /Library/Developer/CommandLineTools
- name: build ffmpeg
run: |
mkdir build
brew install autoconf automake libtool
brew install nasm
export VCPKG_OSX_ARCHITECTURES="x86_64 arm64"
vcpkg install ffmpeg[core,avcodec,avformat,mp3lame,opus,speex,swresample,vorbis,fdk-aac,gpl]:arm64-osx-dynamic --x-install-root=build
vcpkg install ffmpeg[core,avcodec,avformat,mp3lame,opus,speex,swresample,vorbis,fdk-aac,gpl]:x64-osx-dynamic --x-install-root=build
ls -al build/arm64-osx-dynamic/lib
ls -al build/
lipo -info build/arm64-osx-dynamic/lib/libavco*
cd build
lipo -create -output libavcodec.dylib arm64-osx-dynamic/lib/libavcodec.dylib x64-osx-dynamic/lib/libavcodec.dylib
lipo -create -output libspeex.dylib arm64-osx-dynamic/lib/libspeex.dylib x64-osx-dynamic/lib/libspeex.dylib
lipo -detailed_info libavcodec.dylib
lipo -detailed_info libspeex.dylib
- uses: actions/upload-artifact@v2
with:
name: build
path: build/*
- uses: actions/upload-artifact@v2
with:
name: build-lipo
path: build/*.dylib

View file

@ -12,7 +12,7 @@ jobs:
- uses: a631807682/issues-translator@v1.2.1 - uses: a631807682/issues-translator@v1.2.1
with: with:
github-token: ${{ secrets.GITHUB_TOKEN }} github-token: ${{ secrets.GITHUB_TOKEN }}
match-languages: cmn match-languages: cmn,rus
min-match-percent: 0.15 min-match-percent: 0.15
modify-title: true modify-title: true
modify-body: true modify-body: true

View file

@ -25,7 +25,7 @@ jobs:
strategy: strategy:
matrix: matrix:
os: [macos-12] os: [macos-12]
qt_ver: [6.4.3] qt_ver: [6.5.1]
qt_arch: [clang_64] qt_arch: [clang_64]
env: env:
targetName: GoldenDict targetName: GoldenDict
@ -41,7 +41,7 @@ jobs:
with: with:
version: ${{ matrix.qt_ver }} version: ${{ matrix.qt_ver }}
arch: ${{ matrix.qt_arch }} arch: ${{ matrix.qt_arch }}
cached: 'false'
modules: qtwebengine qtwebchannel qtpositioning qt5compat qtmultimedia qtspeech modules: qtwebengine qtwebchannel qtpositioning qt5compat qtmultimedia qtspeech
- uses: actions/checkout@v3 - uses: actions/checkout@v3
with: with:

View file

@ -0,0 +1,238 @@
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.4.3,6.5.1 ]
qt_arch: [clang_64]
env:
targetName: GoldenDict
version: 23.06.02
version-suffix: alpha
prerelease: true
steps:
# macos 11.0 默认环境变了,要指定
- name: prepare env
if: ${{ matrix.os == 'macos-11' }}
run: |
softwareupdate --all --install --force
sudo xcode-select --print-path
sudo xcode-select --switch /Library/Developer/CommandLineTools
- uses: actions/checkout@v3
with:
fetch-depth: 0
submodules: true
- name: Set outputs
id: githash
run: |
echo "::set-output name=sha_short::$(git rev-parse --short HEAD)"
- name: install deps on macos
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 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 speex
brew tap homebrew-ffmpeg/ffmpeg
brew install homebrew-ffmpeg/ffmpeg/ffmpeg --with-speex
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
- uses: actions/setup-python@v3
with:
python-version: '3.9'
- 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
setup-python: 'false'
- name: compile
run: |
qmake CONFIG+=release CONFIG+=no_macos_universal CONFIG+=zim_support CONFIG+=use_xapian CONFIG+=use_breakpad
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 "::set-output name=prev_tag::$previousTag"
echo "::set-output name=curr_tag::$(git tag --sort=-creatordate | grep "^v" | sed -n 1p)"
- name: Set outputs
id: vars
run: |
echo "::set-output name=sha_short::$(git rev-parse --short=8 HEAD)"
echo "::set-output name=release_date::$(date +'%Y%m%d')"
echo "::set-output name=release_time::$(date +'%H%M%S')"
echo "::set-output name=release_time_clock::$(date +'%H:%M:%S')"
echo "::set-output name=release_hm::$(date +'%y%m%d')"
# 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: tag-${{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 AppImages.
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
AppImage: Ubuntu-20.04
macOS: macOS-12 and macOS-13
Windows: Visual studio 2019
#### Changes
${{steps.build_changelog.outputs.changelog}}

View file

@ -1,4 +1,4 @@
name: macos-homebrew-xapian name: macos-homebrew
concurrency: concurrency:
group: ${{ github.workflow }}-${{ github.ref }} group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true cancel-in-progress: true
@ -11,7 +11,7 @@ on:
# - staged # - staged
paths-ignore: paths-ignore:
- 'docs/**' - 'docs/**'
- ".github/**" # - ".github/**"
- "howto/**" - "howto/**"
- "*.md" - "*.md"
- ".clang-format" - ".clang-format"
@ -21,14 +21,14 @@ jobs:
runs-on: ${{ matrix.os }} runs-on: ${{ matrix.os }}
strategy: strategy:
matrix: matrix:
os: [macos-11,macos-12] os: [macos-12,macos-13]
qt_ver: [6.4.3] qt_ver: [ 6.4.3 ]
qt_arch: [clang_64] qt_arch: [clang_64]
env: env:
targetName: GoldenDict targetName: GoldenDict
version: 23.06.01 version: 23.06.02
version-suffix: ChildrenDay version-suffix: alpha
prerelease: false prerelease: true
steps: steps:
# macos 11.0 默认环境变了,要指定 # macos 11.0 默认环境变了,要指定
- name: prepare env - name: prepare env
@ -37,17 +37,6 @@ jobs:
softwareupdate --all --install --force softwareupdate --all --install --force
sudo xcode-select --print-path sudo xcode-select --print-path
sudo xcode-select --switch /Library/Developer/CommandLineTools sudo xcode-select --switch /Library/Developer/CommandLineTools
- uses: actions/setup-python@v3
with:
python-version: '3.9'
- name: Install Qt
uses: jurplel/install-qt-action@v3
with:
version: ${{ matrix.qt_ver }}
arch: ${{ matrix.qt_arch }}
cached: 'false'
modules: qtwebengine qtwebchannel qtpositioning qt5compat qtmultimedia qtimageformats qtspeech
setup-python: 'false'
- uses: actions/checkout@v3 - uses: actions/checkout@v3
with: with:
@ -93,9 +82,38 @@ jobs:
find /usr/local -name libicudata.72.dylib find /usr/local -name libicudata.72.dylib
- name: version-file - name: version-file
shell: bash shell: bash
env:
VAR_SUFFIX: ${{env.version-suffix}}
VAR_VERSION: ${{env.version}}
run: | run: |
previousTag=$(git tag --sort=-creatordate | sed -n 1p |cut -c 2-) current_tag=$(git rev-parse --short=8 HEAD)
echo "$previousTag">version.txt 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
- uses: actions/setup-python@v3
with:
python-version: '3.9'
- 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
setup-python: 'false'
- name: compile - name: compile
run: | run: |
qmake CONFIG+=release CONFIG+=no_macos_universal CONFIG+=zim_support CONFIG+=use_xapian qmake CONFIG+=release CONFIG+=no_macos_universal CONFIG+=zim_support CONFIG+=use_xapian
@ -108,7 +126,7 @@ jobs:
otool -L GoldenDict.app/Contents/MacOS/GoldenDict otool -L GoldenDict.app/Contents/MacOS/GoldenDict
ls -al GoldenDict.app/Contents/Frameworks ls -al GoldenDict.app/Contents/Frameworks
otool -L GoldenDict.app/Contents/Frameworks/libicu*.dylib otool -L GoldenDict.app/Contents/Frameworks/libicu*.dylib
cp /usr/local/Cellar/icu4c/72.1/lib/libicudata.72.dylib GoldenDict.app/Contents/Frameworks/libicudata.72.dylib cp -r /usr/local/Cellar/icu4c/7*/lib/libicudata.*.dylib GoldenDict.app/Contents/Frameworks
codesign --force --deep -s - GoldenDict.app codesign --force --deep -s - GoldenDict.app
@ -120,16 +138,12 @@ jobs:
- name: changelog - name: changelog
id: changelog id: changelog
run: | run: |
previousTag=$(git tag --sort=-creatordate | sed -n 2p) previousTag=$(git tag --sort=-creatordate | grep "v.*" | sed -n 2p)
echo "previousTag : $previousTag" echo "previousTag : $previousTag"
CHANGELOG="$(git log --oneline --no-decorate $previousTag..HEAD)"
CHANGELOG="${CHANGELOG//'%'/'%25'}" echo "::set-output name=prev_tag::$previousTag"
CHANGELOG="${CHANGELOG//$'\n'/'%0A'}" echo "::set-output name=curr_tag::$(git tag --sort=-creatordate | grep "v.*" | sed -n 1p)"
CHANGELOG="${CHANGELOG//$'\r'/'%0D'}"
CHANGELOG="${CHANGELOG//'\"'/'%22'}"
CHANGELOG="${CHANGELOG//"'"/ }"
echo "::set-output name=changelog::$(echo "$CHANGELOG")"
- name: Set outputs - name: Set outputs
id: vars id: vars
@ -141,41 +155,83 @@ jobs:
echo "::set-output name=release_hm::$(date +'%y%m%d')" echo "::set-output name=release_hm::$(date +'%y%m%d')"
# tag 上传Release # 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 - name: uploadRelease
uses: svenstaro/upload-release-action@v2 uses: svenstaro/upload-release-action@v2
with: with:
repo_token: ${{ secrets.GITHUB_TOKEN }} repo_token: ${{ secrets.GITHUB_TOKEN }}
file: ${{ env.targetName }}.dmg file: ${{ env.targetName }}.dmg
asset_name: ${{ matrix.qt_ver }}-${{ env.targetName }}_${{ matrix.os }}_homebrew_${{steps.vars.outputs.release_date}}.dmg asset_name: ${{ matrix.qt_ver }}-${{ env.targetName }}_${{ matrix.os }}_homebrew_${{steps.vars.outputs.release_date}}.dmg
tag: v${{env.version}}-${{env.version-suffix}}.${{ steps.vars.outputs.release_hm }}.${{ steps.vars.outputs.sha_short }}
tag: tag-${{env.version-suffix}}.${{ steps.vars.outputs.sha_short }}
overwrite: true overwrite: true
release_name: GoldenDict-ng-v${{env.version}}-${{env.version-suffix}}.${{ steps.vars.outputs.release_hm }}.${{ steps.vars.outputs.sha_short }} release_name: GoldenDict-ng-v${{env.version}}-${{env.version-suffix}}.${{ steps.vars.outputs.release_hm }}.${{ steps.vars.outputs.sha_short }}
prerelease: ${{env.prerelease}} prerelease: ${{env.prerelease}}
body: | body: |
release on date: ${{steps.vars.outputs.release_date}} time: ${{steps.vars.outputs.release_time_clock}} #### Install instructions for Windows, macOS and Linux
branch: ${{ github.ref_name }}
commit: ${{ steps.vars.outputs.sha_short }}
Qt version: Qt5.15.2, Qt6.X
Windows built with: msvc64, Visual studio 2019
## goldendict.exe can not be used alone
if you have a previous version. replace this maybe ok. if not ,download the whole bundle.
AppImage built with: Ubuntu-20.04 ,latest gcc <https://xiaoyifang.github.io/goldendict-ng/install/>.
macos built with: macos-10.15,macos-11.0,clang_64 x86_64
Qt6.X(Universal Build)
Qt5.15.2(Intel Kind)
auto built by github action. use on your on risk:-)
**recommend version**:Qt6.X (with the latest bug fixes and performance enhancements)
Filename pattern: **[Qt version]-GoldenDict-[OS]-[release-date].[ext]** #### Filename pattern (文件名模式): **[Qt version]-GoldenDict-ng-[OS]-[release-date].[ext]**
[xapian](https://xapian.org/) is enabled by default which offers 10X~20X performance
------------------------------ Qt6.X is recommended for various enhancements.
文件名的模式: **[Qt version]-GoldenDict-[OS]-[release-date].[ext]**
[xapian](https://xapian.org/) 用于全文索引的创建,提供更快的全文索引创建、搜索支持 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).
6.4.3-GoldenDict.exe_windows-2022_20230502.zip
表示基于qt6.4.3windows-2022, 于20230502日创建的版本。 Linux users can use AppImages.
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
AppImage: Ubuntu-20.04
macOS: macOS-12 and macOS-13
Windows: Visual studio 2019
CHANGES:
${{ steps.changelog.outputs.changelog }} #### Changes
${{steps.build_changelog.outputs.changelog}}

View file

@ -1,5 +1,4 @@
name: Ubuntu-6.2-xapian name: Ubuntu-6.2
# Qt官方没有linux平台的x86包
concurrency: concurrency:
group: ${{ github.workflow }}-${{ github.ref }} group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true cancel-in-progress: true
@ -15,7 +14,7 @@ on:
# - staged # - staged
paths-ignore: paths-ignore:
- 'docs/**' - 'docs/**'
- ".github/**" # - ".github/**"
- "howto/**" - "howto/**"
- "*.md" - "*.md"
- ".clang-format" - ".clang-format"
@ -26,20 +25,20 @@ jobs:
runs-on: ${{ matrix.os }} runs-on: ${{ matrix.os }}
strategy: strategy:
matrix: matrix:
os: [ubuntu-latest] os: [ubuntu-20.04]
qt_ver: [6.4.3] qt_ver: [ 6.5.1 ]
qt_arch: [gcc_64] qt_arch: [gcc_64]
env: env:
version: 23.06.01 version: 23.06.02
version-suffix: ChildrenDay version-suffix: alpha
prerelease: false prerelease: true
steps: steps:
- name: Install Qt - name: Install Qt
uses: jurplel/install-qt-action@v3 uses: jurplel/install-qt-action@v3
with: with:
version: ${{ matrix.qt_ver }} version: ${{ matrix.qt_ver }}
arch: ${{ matrix.qt_arch }} arch: ${{ matrix.qt_arch }}
cached: 'false'
#serialport linuxdeploy need serialport to work. #serialport linuxdeploy need serialport to work.
modules: qtwebengine qtwebchannel qtpositioning qt5compat qtmultimedia qtimageformats qtspeech qtserialport modules: qtwebengine qtwebchannel qtpositioning qt5compat qtmultimedia qtimageformats qtspeech qtserialport
@ -69,8 +68,8 @@ jobs:
# sudo make install # sudo make install
# cd .. # cd ..
sudo apt install libxapian-dev sudo apt install libxapian-dev
sudo apt-get install libzim-dev sudo add-apt-repository --yes --update ppa:kiwixteam/release
# sudo ls -al /usr/lib/|grep xapian sudo apt install libzim-dev
- uses: actions/checkout@v3 - uses: actions/checkout@v3
with: with:
@ -79,9 +78,15 @@ jobs:
- name: version-file - name: version-file
shell: bash shell: bash
env:
VAR_SUFFIX: ${{env.version-suffix}}
VAR_VERSION: ${{env.version}}
run: | run: |
previousTag=$(git tag --sort=-creatordate | sed -n 1p |cut -c 2-) current_tag=$(git rev-parse --short=8 HEAD)
echo "$previousTag">version.txt release_date=$(date +'%Y%m%d')
echo "$VAR_VERSION-$VAR_SUFFIX.$release_date.$current_tag">version.txt
cat version.txt
echo "$version"
- name: build goldendict - name: build goldendict
run: | run: |
@ -91,6 +96,15 @@ jobs:
ls -al appdir ls -al appdir
- name: Build AppImage - name: Build AppImage
run: | run: |
# for /usr/lib/qt6/plugins/platforminputcontexts/libfcitx5platforminputcontextplugin.so
sudo apt-get install extra-cmake-modules libxkbcommon-dev libxcb1 libxcb-cursor0
git clone --single-branch --depth 1 https://github.com/fcitx/fcitx5-qt.git
cd fcitx5-qt
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release -DENABLE_QT4=OFF -DENABLE_QT5=OFF -DENABLE_QT6=ON -DBUILD_ONLY_PLUGIN=ON
cmake --build build
sudo cmake --install ./build
cd ..
wget -c -nv "https://github.com/linuxdeploy/linuxdeploy-plugin-qt/releases/download/continuous/linuxdeploy-plugin-qt-x86_64.AppImage" wget -c -nv "https://github.com/linuxdeploy/linuxdeploy-plugin-qt/releases/download/continuous/linuxdeploy-plugin-qt-x86_64.AppImage"
chmod a+x linuxdeploy-plugin-qt-x86_64.AppImage chmod a+x linuxdeploy-plugin-qt-x86_64.AppImage
wget -c -nv "https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-x86_64.AppImage" wget -c -nv "https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-x86_64.AppImage"
@ -100,16 +114,11 @@ jobs:
- name: changelog - name: changelog
id: changelog id: changelog
run: | run: |
previousTag=$(git tag --sort=-creatordate | sed -n 2p) previousTag=$(git tag --sort=-creatordate | grep "^v" | sed -n 2p)
echo "previousTag : $previousTag" echo "previousTag : $previousTag"
CHANGELOG="$(git log --oneline --no-decorate $previousTag..HEAD)" echo "::set-output name=prev_tag::$previousTag"
CHANGELOG="${CHANGELOG//'%'/'%25'}" echo "::set-output name=curr_tag::$(git tag --sort=-creatordate | grep "^v" | sed -n 1p)"
CHANGELOG="${CHANGELOG//$'\n'/'%0A'}"
CHANGELOG="${CHANGELOG//$'\r'/'%0D'}"
CHANGELOG="${CHANGELOG//'\"'/'%22'}"
CHANGELOG="${CHANGELOG//"'"/ }"
echo "::set-output name=changelog::$(echo "$CHANGELOG")"
- name: Set outputs - name: Set outputs
id: vars id: vars
@ -121,6 +130,46 @@ jobs:
echo "::set-output name=release_hm::$(date +'%y%m%d')" echo "::set-output name=release_hm::$(date +'%y%m%d')"
echo "::set-output name=appname::$(ls *.AppImage*)" echo "::set-output name=appname::$(ls *.AppImage*)"
- 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 - name: uploadRelease
# if: startsWith(github.event.ref, 'refs/tags/') # if: startsWith(github.event.ref, 'refs/tags/')
uses: svenstaro/upload-release-action@v2 uses: svenstaro/upload-release-action@v2
@ -128,35 +177,35 @@ jobs:
repo_token: ${{ secrets.GITHUB_TOKEN }} repo_token: ${{ secrets.GITHUB_TOKEN }}
file: ${{ steps.vars.outputs.appname }} file: ${{ steps.vars.outputs.appname }}
asset_name: ${{ matrix.qt_ver }}-${{ steps.vars.outputs.appname }} asset_name: ${{ matrix.qt_ver }}-${{ steps.vars.outputs.appname }}
tag: v${{env.version}}-${{env.version-suffix}}.${{ steps.vars.outputs.release_hm }}.${{ steps.vars.outputs.sha_short }}
tag: tag-${{env.version-suffix}}.${{ steps.vars.outputs.sha_short }}
overwrite: true overwrite: true
release_name: GoldenDict-ng-v${{env.version}}-${{env.version-suffix}}.${{ steps.vars.outputs.release_hm }}.${{ steps.vars.outputs.sha_short }} release_name: GoldenDict-ng-v${{env.version}}-${{env.version-suffix}}.${{ steps.vars.outputs.release_hm }}.${{ steps.vars.outputs.sha_short }}
prerelease: ${{env.prerelease}} prerelease: ${{env.prerelease}}
body: | body: |
release on date: ${{steps.vars.outputs.release_date}} time: ${{steps.vars.outputs.release_time_clock}} #### Install instructions for Windows, macOS and Linux
branch: ${{ github.ref_name }}
commit: ${{ steps.vars.outputs.sha_short }}
Qt version: Qt5.15.2, Qt6.X
Windows built with: msvc64, Visual studio 2019
## goldendict.exe can not be used alone
if you have a previous version. replace this maybe ok. if not ,download the whole bundle.
AppImage built with: Ubuntu-20.04 ,latest gcc <https://xiaoyifang.github.io/goldendict-ng/install/>.
macos built with: macos-10.15,macos-11.0,clang_64 x86_64
Qt6.X(Universal Build)
Qt5.15.2(Intel Kind)
auto built by github action. use on your on risk:-)
**recommend version**:Qt6.X (with the latest bug fixes and performance enhancements)
Filename pattern: **[Qt version]-GoldenDict-[OS]-[release-date].[ext]** #### Filename pattern (文件名模式): **[Qt version]-GoldenDict-ng-[OS]-[release-date].[ext]**
[xapian](https://xapian.org/) is enabled by default which offers 10X~20X performance
------------------------------
文件名的模式: **[Qt version]-GoldenDict-[OS]-[release-date].[ext]**
[xapian](https://xapian.org/) 用于全文索引的创建,提供更快的全文索引创建、搜索支持
比如:
6.4.3-GoldenDict.exe_windows-2022_20230502.zip
表示基于qt6.4.3windows-2022, 于20230502日创建的版本。
Qt6.X is recommended for various enhancements.
CHANGES: Windows users can use either `****-installer.exe` (for installer) or `****.zip` (unzip and run).
${{ steps.changelog.outputs.changelog }} The `goldendict.exe` can be dropped into previous installation's folder (if dependencies aren't changed).
Linux users can use AppImages.
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
AppImage: Ubuntu-20.04
macOS: macOS-12 and macOS-13
Windows: Visual studio 2019
#### Changes
${{steps.build_changelog.outputs.changelog}}

View file

@ -26,7 +26,7 @@ jobs:
strategy: strategy:
matrix: matrix:
os: [ubuntu-latest] os: [ubuntu-latest]
qt_ver: [5.15.2,6.4.3] qt_ver: [5.15.2,6.5.1]
qt_arch: [gcc_64] qt_arch: [gcc_64]
steps: steps:
@ -35,7 +35,7 @@ jobs:
uses: jurplel/install-qt-action@v3 uses: jurplel/install-qt-action@v3
with: with:
version: ${{ matrix.qt_ver }} version: ${{ matrix.qt_ver }}
cached: 'false'
modules: qtwebengine modules: qtwebengine
- name: Install Qt - name: Install Qt
@ -44,7 +44,7 @@ jobs:
with: with:
version: ${{ matrix.qt_ver }} version: ${{ matrix.qt_ver }}
arch: ${{ matrix.qt_arch }} arch: ${{ matrix.qt_arch }}
cached: 'false'
modules: qtwebengine qtwebchannel qtpositioning qt5compat qtmultimedia qtimageformats qtspeech modules: qtwebengine qtwebchannel qtpositioning qt5compat qtmultimedia qtimageformats qtspeech
- name: ubuntu install thirdparty dependencies - name: ubuntu install thirdparty dependencies

View file

@ -15,7 +15,7 @@ on:
# - staged # - staged
paths-ignore: paths-ignore:
- 'docs/**' - 'docs/**'
- ".github/**" # - ".github/**"
- "howto/**" - "howto/**"
- "*.md" - "*.md"
- ".clang-format" - ".clang-format"
@ -26,19 +26,19 @@ jobs:
runs-on: ${{ matrix.os }} runs-on: ${{ matrix.os }}
strategy: strategy:
matrix: matrix:
os: [ubuntu-latest] os: [ubuntu-20.04]
qt_ver: [5.15.2] qt_ver: [5.15.2]
qt_arch: [gcc_64] qt_arch: [gcc_64]
env: env:
version: 23.06.01 version: 23.06.02
version-suffix: ChildrenDay version-suffix: alpha
prerelease: false prerelease: true
steps: steps:
- name: Install Qt - name: Install Qt
uses: jurplel/install-qt-action@v3 uses: jurplel/install-qt-action@v3
with: with:
version: ${{ matrix.qt_ver }} version: ${{ matrix.qt_ver }}
cached: 'false'
modules: qtwebengine modules: qtwebengine
- name: ubuntu install thirdparty dependencies - name: ubuntu install thirdparty dependencies
run: | run: |
@ -57,7 +57,8 @@ jobs:
make PREFIX=/usr -j$(nproc) make PREFIX=/usr -j$(nproc)
sudo make install sudo make install
cd .. cd ..
sudo apt-get install libzim-dev sudo add-apt-repository --yes --update ppa:kiwixteam/release
sudo apt install libzim-dev
- uses: actions/checkout@v3 - uses: actions/checkout@v3
with: with:
fetch-depth: 0 fetch-depth: 0
@ -65,9 +66,15 @@ jobs:
- name: version-file - name: version-file
shell: bash shell: bash
env:
VAR_SUFFIX: ${{env.version-suffix}}
VAR_VERSION: ${{env.version}}
run: | run: |
previousTag=$(git tag --sort=-creatordate | sed -n 1p |cut -c 2-) current_tag=$(git rev-parse --short=8 HEAD)
echo "$previousTag">version.txt release_date=$(date +'%Y%m%d')
echo "$VAR_VERSION-$VAR_SUFFIX.$release_date.$current_tag">version.txt
cat version.txt
echo "$version"
- name: build goldendict - name: build goldendict
run: | run: |
@ -81,6 +88,7 @@ jobs:
- name: Build AppImage - name: Build AppImage
run: | run: |
sudo apt install fcitx5-frontend-qt5
wget -c -nv "https://github.com/linuxdeploy/linuxdeploy-plugin-qt/releases/download/continuous/linuxdeploy-plugin-qt-x86_64.AppImage" wget -c -nv "https://github.com/linuxdeploy/linuxdeploy-plugin-qt/releases/download/continuous/linuxdeploy-plugin-qt-x86_64.AppImage"
chmod a+x linuxdeploy-plugin-qt-x86_64.AppImage chmod a+x linuxdeploy-plugin-qt-x86_64.AppImage
wget -c -nv "https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-x86_64.AppImage" wget -c -nv "https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-x86_64.AppImage"
@ -90,16 +98,11 @@ jobs:
- name: changelog - name: changelog
id: changelog id: changelog
run: | run: |
previousTag=$(git tag --sort=-creatordate | sed -n 2p) previousTag=$(git tag --sort=-creatordate | grep "^v" | sed -n 2p)
echo "previousTag : $previousTag" echo "previousTag : $previousTag"
CHANGELOG="$(git log --oneline --no-decorate $previousTag..HEAD)" echo "::set-output name=prev_tag::$previousTag"
CHANGELOG="${CHANGELOG//'%'/'%25'}" echo "::set-output name=curr_tag::$(git tag --sort=-creatordate | grep "^v" | sed -n 1p)"
CHANGELOG="${CHANGELOG//$'\n'/'%0A'}"
CHANGELOG="${CHANGELOG//$'\r'/'%0D'}"
CHANGELOG="${CHANGELOG//'\"'/'%22'}"
CHANGELOG="${CHANGELOG//"'"/ }"
echo "::set-output name=changelog::$(echo "$CHANGELOG")"
- name: Set outputs - name: Set outputs
id: vars id: vars
run: | run: |
@ -110,42 +113,82 @@ jobs:
echo "::set-output name=release_hm::$(date +'%y%m%d')" echo "::set-output name=release_hm::$(date +'%y%m%d')"
echo "::set-output name=appname::$(ls *.AppImage*)" echo "::set-output name=appname::$(ls *.AppImage*)"
- 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 - name: uploadRelease
# if: startsWith(github.event.ref, 'refs/tags/') # if: startsWith(github.event.ref, 'refs/tags/')
uses: svenstaro/upload-release-action@v2 uses: svenstaro/upload-release-action@v2
with: with:
repo_token: ${{ secrets.GITHUB_TOKEN }} repo_token: ${{ secrets.GITHUB_TOKEN }}
file: ${{ steps.vars.outputs.appname }} file: ${{ steps.vars.outputs.appname }}
asset_name: ${{ matrix.qt_ver }}-${{ env.targetName }}_${{ matrix.os }}_${{steps.vars.outputs.release_date}}.AppImage asset_name: ${{ matrix.qt_ver }}-${{ steps.vars.outputs.appname }}
tag: v${{env.version}}-${{env.version-suffix}}.${{ steps.vars.outputs.release_hm }}.${{ steps.vars.outputs.sha_short }} tag: tag-${{env.version-suffix}}.${{ steps.vars.outputs.sha_short }}
overwrite: true overwrite: true
release_name: GoldenDict-ng-v${{env.version}}-${{env.version-suffix}}.${{ steps.vars.outputs.release_hm }}.${{ steps.vars.outputs.sha_short }} release_name: GoldenDict-ng-v${{env.version}}-${{env.version-suffix}}.${{ steps.vars.outputs.release_hm }}.${{ steps.vars.outputs.sha_short }}
prerelease: ${{env.prerelease}} prerelease: ${{env.prerelease}}
body: | body: |
release on date: ${{steps.vars.outputs.release_date}} time: ${{steps.vars.outputs.release_time_clock}} #### Install instructions for Windows, macOS and Linux
branch: ${{ github.ref_name }}
commit: ${{ steps.vars.outputs.sha_short }}
Qt version: Qt5.15.2, Qt6.X
Windows built with: msvc64, Visual studio 2019
## goldendict.exe can not be used alone
if you have a previous version. replace this maybe ok. if not ,download the whole bundle.
AppImage built with: Ubuntu-20.04 ,latest gcc <https://xiaoyifang.github.io/goldendict-ng/install/>.
macos built with: macos-10.15,macos-11.0,clang_64 x86_64
Qt6.X(Universal Build)
Qt5.15.2(Intel Kind)
auto built by github action. use on your on risk:-)
**recommend version**:Qt6.X (with the latest bug fixes and performance enhancements)
Filename pattern: **[Qt version]-GoldenDict-[OS]-[release-date].[ext]** #### Filename pattern (文件名模式): **[Qt version]-GoldenDict-ng-[OS]-[release-date].[ext]**
[xapian](https://xapian.org/) is enabled by default which offers 10X~20X performance
------------------------------ Qt6.X is recommended for various enhancements.
文件名的模式: **[Qt version]-GoldenDict-[OS]-[release-date].[ext]**
[xapian](https://xapian.org/) 用于全文索引的创建,提供更快的全文索引创建、搜索支持 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).
6.4.3-GoldenDict.exe_windows-2022_20230502.zip
表示基于qt6.4.3windows-2022, 于20230502日创建的版本。 Linux users can use AppImages.
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
AppImage: Ubuntu-20.04
macOS: macOS-12 and macOS-13
Windows: Visual studio 2019
CHANGES: #### Changes
${{ steps.changelog.outputs.changelog }}
${{steps.build_changelog.outputs.changelog}}

View file

@ -1,4 +1,4 @@
name: Windows-6.x-xapian name: Windows-6.x
concurrency: concurrency:
group: ${{ github.workflow }}-${{ github.ref }} group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true cancel-in-progress: true
@ -14,7 +14,7 @@ on:
# - staged # - staged
paths-ignore: paths-ignore:
- 'docs/**' - 'docs/**'
- ".github/**" # - ".github/**"
- "howto/**" - "howto/**"
- "*.md" - "*.md"
- ".clang-format" - ".clang-format"
@ -27,13 +27,13 @@ jobs:
strategy: strategy:
matrix: matrix:
os: [windows-2019] os: [windows-2019]
qt_ver: [6.4.3] qt_ver: [6.5.1]
qt_arch: [win64_msvc2019_64] qt_arch: [win64_msvc2019_64]
env: env:
targetName: GoldenDict.exe targetName: GoldenDict.exe
version: 23.06.01 version: 23.06.02
version-suffix: ChildrenDay version-suffix: alpha
prerelease: false prerelease: true
steps: steps:
- uses: actions/setup-python@v3 - uses: actions/setup-python@v3
with: with:
@ -56,16 +56,57 @@ jobs:
id: changelog id: changelog
shell: bash shell: bash
run: | run: |
previousTag=$(git tag --sort=-creatordate | sed -n 2p) previousTag=$(git tag --sort=-creatordate | grep "^v" | sed -n 2p)
echo "previousTag : $previousTag" echo "previousTag : $previousTag"
CHANGELOG="$(git log --oneline --no-decorate $previousTag..HEAD)" echo "::set-output name=prev_tag::$previousTag"
CHANGELOG="${CHANGELOG//'%'/'%25'}" echo "::set-output name=curr_tag::$(git tag --sort=-creatordate | grep "^v" | sed -n 1p)"
CHANGELOG="${CHANGELOG//$'\n'/'%0A'}"
CHANGELOG="${CHANGELOG//$'\r'/'%0D'}" - name: "Build Changelog"
CHANGELOG="${CHANGELOG//'\"'/'%22'}" id: build_changelog
CHANGELOG="${CHANGELOG//"'"/ }" uses: mikepenz/release-changelog-builder-action@v3
echo "::set-output name=changelog::$(echo "$CHANGELOG")" 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 - name: Set outputs
id: vars id: vars
shell: bash shell: bash
@ -78,10 +119,15 @@ jobs:
- name: version-file - name: version-file
shell: bash shell: bash
env:
VAR_SUFFIX: ${{env.version-suffix}}
VAR_VERSION: ${{env.version}}
run: | run: |
previousTag=$(git tag --sort=-creatordate | sed -n 1p |cut -c 2-) current_tag=$(git rev-parse --short=8 HEAD)
echo "$previousTag">version.txt release_date=$(date +'%Y%m%d')
echo "$VAR_VERSION-$VAR_SUFFIX.$release_date.$current_tag">version.txt
cat version.txt cat version.txt
echo "$version"
- name: vcpkg install - name: vcpkg install
shell: powershell shell: powershell
@ -125,42 +171,7 @@ jobs:
$name = ${env:archiveName} $name = ${env:archiveName}
echo "::set-output name=packageName::$name" echo "::set-output name=packageName::$name"
- 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}}-xapian.zip
tag: v${{env.version}}-${{env.version-suffix}}.${{ steps.vars.outputs.release_hm }}.${{ 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: |
release on date: ${{steps.vars.outputs.release_date}} time: ${{steps.vars.outputs.release_time_clock}}
branch: ${{ github.ref_name }}
commit: ${{ steps.vars.outputs.sha_short }}
Qt version: Qt5.15.2, Qt6.X
Windows built with: msvc64, Visual studio 2019
AppImage built with: Ubuntu-20.04 ,latest gcc
macos built with: macos-10.15,macos-11.0,clang_64 x86_64
Qt6.X(Universal Build)
Qt5.15.2(Intel Kind)
auto built by github action. use on your on risk:-)
**recommend version**:Qt6.X (with the latest bug fixes and performance enhancements)
Filename pattern: **[Qt version]-GoldenDict-[OS]-[release-date].[ext]**
[xapian](https://xapian.org/) is enabled by default which offers 10X~20X performance
------------------------------
文件名的模式: **[Qt version]-GoldenDict-[OS]-[release-date].[ext]**
[xapian](https://xapian.org/) 用于全文索引的创建,提供更快的全文索引创建、搜索支持
比如:
6.4.3-GoldenDict.exe_windows-2022_20230502.zip
表示基于qt6.4.3windows-2022, 于20230502日创建的版本。
CHANGES:
${{ steps.changelog.outputs.changelog }}
- name: upload goldendict.exe only - name: upload goldendict.exe only
uses: svenstaro/upload-release-action@v2 uses: svenstaro/upload-release-action@v2
@ -168,7 +179,8 @@ jobs:
repo_token: ${{ secrets.GITHUB_TOKEN }} repo_token: ${{ secrets.GITHUB_TOKEN }}
file: release/${{ env.targetName }} file: release/${{ env.targetName }}
asset_name: ${{ matrix.qt_ver }}.${{ matrix.os }}-${{ env.targetName }} asset_name: ${{ matrix.qt_ver }}.${{ matrix.os }}-${{ env.targetName }}
tag: v${{env.version}}-${{env.version-suffix}}.${{ steps.vars.outputs.release_hm }}.${{ steps.vars.outputs.sha_short }}
tag: tag-${{env.version-suffix}}.${{ steps.vars.outputs.sha_short }}
overwrite: true overwrite: true
release_name: GoldenDict-ng-v${{env.version}}-${{env.version-suffix}}.${{ steps.vars.outputs.release_hm }}.${{ steps.vars.outputs.sha_short }} release_name: GoldenDict-ng-v${{env.version}}-${{env.version-suffix}}.${{ steps.vars.outputs.release_hm }}.${{ steps.vars.outputs.sha_short }}
prerelease: ${{env.prerelease}} prerelease: ${{env.prerelease}}
@ -179,7 +191,8 @@ jobs:
repo_token: ${{ secrets.GITHUB_TOKEN }} repo_token: ${{ secrets.GITHUB_TOKEN }}
file: release/GoldenDict.pdb file: release/GoldenDict.pdb
asset_name: ${{ matrix.qt_ver }}.${{ matrix.os }}-GoldenDict.pdb asset_name: ${{ matrix.qt_ver }}.${{ matrix.os }}-GoldenDict.pdb
tag: v${{env.version}}-${{env.version-suffix}}.${{ steps.vars.outputs.release_hm }}.${{ steps.vars.outputs.sha_short }}
tag: tag-${{env.version-suffix}}.${{ steps.vars.outputs.sha_short }}
overwrite: true overwrite: true
release_name: GoldenDict-ng-v${{env.version}}-${{env.version-suffix}}.${{ steps.vars.outputs.release_hm }}.${{ steps.vars.outputs.sha_short }} release_name: GoldenDict-ng-v${{env.version}}-${{env.version-suffix}}.${{ steps.vars.outputs.release_hm }}.${{ steps.vars.outputs.sha_short }}
prerelease: ${{env.prerelease}} prerelease: ${{env.prerelease}}
@ -198,13 +211,54 @@ jobs:
cd ${{ steps.package.outputs.packageName }} cd ${{ steps.package.outputs.packageName }}
ls *.exe ls *.exe
- name: upload goldendict installer - name: upload goldendict installer
# if: startsWith(github.event.ref, 'refs/tags/')
uses: svenstaro/upload-release-action@v2 uses: svenstaro/upload-release-action@v2
with: with:
repo_token: ${{ secrets.GITHUB_TOKEN }} repo_token: ${{ secrets.GITHUB_TOKEN }}
file: ${{ steps.package.outputs.packageName }}/GoldenDict-ng-v23-Installer.exe file: ${{ steps.package.outputs.packageName }}/GoldenDict-ng-v23-Installer.exe
asset_name: ${{ matrix.qt_ver }}-GoldenDict-ng-Installer.exe asset_name: ${{ matrix.qt_ver }}-GoldenDict-ng-Installer.exe
tag: v${{env.version}}-${{env.version-suffix}}.${{ steps.vars.outputs.release_hm }}.${{ steps.vars.outputs.sha_short }}
tag: tag-${{env.version-suffix}}.${{ steps.vars.outputs.sha_short }}
overwrite: true overwrite: true
release_name: GoldenDict-ng-v${{env.version}}-${{env.version-suffix}}.${{ steps.vars.outputs.release_hm }}.${{ steps.vars.outputs.sha_short }} release_name: GoldenDict-ng-v${{env.version}}-${{env.version-suffix}}.${{ steps.vars.outputs.release_hm }}.${{ steps.vars.outputs.sha_short }}
prerelease: ${{env.prerelease}} 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: tag-${{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 AppImages.
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
AppImage: Ubuntu-20.04
macOS: macOS-12 and macOS-13
Windows: Visual studio 2019
#### Changes
${{steps.build_changelog.outputs.changelog}}

View file

@ -27,7 +27,7 @@ jobs:
strategy: strategy:
matrix: matrix:
os: [windows-2019] os: [windows-2019]
qt_ver: [5.15.2,6.4.3] qt_ver: [5.15.2,6.5.1]
qt_arch: [win64_msvc2019_64] qt_arch: [win64_msvc2019_64]
steps: steps:
- uses: actions/setup-python@v3 - uses: actions/setup-python@v3
@ -39,7 +39,7 @@ jobs:
with: with:
version: ${{ matrix.qt_ver }} version: ${{ matrix.qt_ver }}
arch: ${{ matrix.qt_arch }} arch: ${{ matrix.qt_arch }}
cached: 'false'
modules: qtwebengine modules: qtwebengine
- name: Install Qt - name: Install Qt
if: ${{ matrix.qt_ver != '5.15.2' }} if: ${{ matrix.qt_ver != '5.15.2' }}
@ -48,7 +48,7 @@ jobs:
version: ${{ matrix.qt_ver }} version: ${{ matrix.qt_ver }}
# target: ${{ matrix.qt_target }} # target: ${{ matrix.qt_target }}
arch: ${{ matrix.qt_arch }} arch: ${{ matrix.qt_arch }}
cached: 'false'
modules: qtwebengine qtwebchannel qtpositioning qt5compat qtmultimedia qtimageformats qtspeech modules: qtwebengine qtwebchannel qtpositioning qt5compat qtmultimedia qtimageformats qtspeech
setup-python: 'false' setup-python: 'false'

View file

@ -14,7 +14,7 @@ on:
# - staged # - staged
paths-ignore: paths-ignore:
- 'docs/**' - 'docs/**'
- ".github/**" # - ".github/**"
- "howto/**" - "howto/**"
- "*.md" - "*.md"
- ".clang-format" - ".clang-format"
@ -32,9 +32,9 @@ jobs:
qt_arch: [win64_msvc2019_64] qt_arch: [win64_msvc2019_64]
env: env:
targetName: GoldenDict.exe targetName: GoldenDict.exe
version: 23.06.01 version: 23.06.02
version-suffix: ChildrenDay version-suffix: alpha
prerelease: false prerelease: true
# 步骤 # 步骤
steps: steps:
# 安装Qt # 安装Qt
@ -47,7 +47,7 @@ jobs:
# Target platform for build # Target platform for build
# target: ${{ matrix.qt_target }} # target: ${{ matrix.qt_target }}
arch: ${{ matrix.qt_arch }} arch: ${{ matrix.qt_arch }}
cached: 'false'
modules: qtwebengine modules: qtwebengine
# 拉取代码 # 拉取代码
- uses: actions/checkout@v3 - uses: actions/checkout@v3
@ -59,16 +59,12 @@ jobs:
id: changelog id: changelog
shell: bash shell: bash
run: | run: |
previousTag=$(git tag --sort=-creatordate | sed -n 2p) previousTag=$(git tag --sort=-creatordate | grep "^v" | sed -n 2p)
echo "previousTag : $previousTag" echo "previousTag : $previousTag"
CHANGELOG="$(git log --oneline --no-decorate $previousTag..HEAD)"
CHANGELOG="${CHANGELOG//'%'/'%25'}" echo "::set-output name=prev_tag::$previousTag"
CHANGELOG="${CHANGELOG//$'\n'/'%0A'}" echo "::set-output name=curr_tag::$(git tag --sort=-creatordate | grep "^v" | sed -n 1p)"
CHANGELOG="${CHANGELOG//$'\r'/'%0D'}"
CHANGELOG="${CHANGELOG//'\"'/'%22'}"
CHANGELOG="${CHANGELOG//"'"/ }"
echo "::set-output name=changelog::$(echo "$CHANGELOG")"
- name: Set outputs - name: Set outputs
id: vars id: vars
@ -82,9 +78,15 @@ jobs:
- name: version-file - name: version-file
shell: bash shell: bash
env:
VAR_SUFFIX: ${{env.version-suffix}}
VAR_VERSION: ${{env.version}}
run: | run: |
previousTag=$(git tag --sort=-creatordate | sed -n 1p |cut -c 2-) current_tag=$(git rev-parse --short=8 HEAD)
echo "$previousTag">version.txt release_date=$(date +'%Y%m%d')
echo "$VAR_VERSION-$VAR_SUFFIX.$release_date.$current_tag">version.txt
cat version.txt
echo "$version"
- uses: ilammy/msvc-dev-cmd@v1 - uses: ilammy/msvc-dev-cmd@v1
# msvc编译 # msvc编译
@ -114,44 +116,47 @@ jobs:
$name = ${env:archiveName} $name = ${env:archiveName}
echo "::set-output name=packageName::$name" echo "::set-output name=packageName::$name"
- name: uploadRelease - name: "Build Changelog"
# if: startsWith(github.event.ref, 'refs/tags/') id: build_changelog
uses: svenstaro/upload-release-action@v2 uses: mikepenz/release-changelog-builder-action@v3
with: with:
repo_token: ${{ secrets.GITHUB_TOKEN }} commitMode: false
file: ${{ steps.package.outputs.packageName }}.zip fromTag: ${{ steps.changelog.outputs.prev_tag }}
asset_name: ${{ matrix.qt_ver }}-${{ env.targetName }}_${{ matrix.os }}_${{steps.vars.outputs.release_date}}.zip toTag: "${{ steps.changelog.outputs.curr_tag }}"
tag: v${{env.version}}-${{env.version-suffix}}.${{ steps.vars.outputs.release_hm }}.${{ steps.vars.outputs.sha_short }} configurationJson: |
overwrite: true {
release_name: GoldenDict-ng-v${{env.version}}-${{env.version-suffix}}.${{ steps.vars.outputs.release_hm }}.${{ steps.vars.outputs.sha_short }} "template": "#{{CHANGELOG}}\n\n<details>\n<summary>🔴 Uncategorized</summary>\n\n#{{UNCATEGORIZED}}\n</details>",
prerelease: ${{env.prerelease}} "categories": [
body: | {
release on date: ${{steps.vars.outputs.release_date}} time: ${{steps.vars.outputs.release_time_clock}} "title": "## 🚀 Features",
branch: ${{ github.ref_name }} "labels": ["feature","feat","opt"]
commit: ${{ steps.vars.outputs.sha_short }} },
Qt version: Qt5.15.2, Qt6.X {
Windows built with: msvc64, Visual studio 2019 "title": "## 🐛 Fixes",
## goldendict.exe can not be used alone "labels": ["fix","bug"]
if you have a previous version. replace this maybe ok. if not ,download the whole bundle. }
AppImage built with: Ubuntu-20.04 ,latest gcc ,
macos built with: macos-10.15,macos-11.0,clang_64 x86_64 {
Qt6.X(Universal Build) "title": "## 🤖 Github action",
Qt5.15.2(Intel Kind) "labels": ["action"]
auto built by github action. use on your on risk:-) }
**recommend version**:Qt6.X (with the latest bug fixes and performance enhancements) ,
{
"title": "## 🧼 Clean Code",
"labels": ["clean"]
}
Filename pattern: **[Qt version]-GoldenDict-[OS]-[release-date].[ext]** ],
[xapian](https://xapian.org/) is enabled by default which offers 10X~20X performance "label_extractor": [
------------------------------ {
文件名的模式: **[Qt version]-GoldenDict-[OS]-[release-date].[ext]** "pattern": "([^:]*):.*",
[xapian](https://xapian.org/) 用于全文索引的创建,提供更快的全文索引创建、搜索支持 "target": "$1",
比如: "on_property": "title",
6.4.3-GoldenDict.exe_windows-2022_20230502.zip "flags": "gu"
表示基于qt6.4.3windows-2022, 于20230502日创建的版本。 }
]
}
CHANGES:
${{ steps.changelog.outputs.changelog }}
- name: upload goldendict.exe only - name: upload goldendict.exe only
# if: startsWith(github.event.ref, 'refs/tags/') # if: startsWith(github.event.ref, 'refs/tags/')
uses: svenstaro/upload-release-action@v2 uses: svenstaro/upload-release-action@v2
@ -159,7 +164,8 @@ jobs:
repo_token: ${{ secrets.GITHUB_TOKEN }} repo_token: ${{ secrets.GITHUB_TOKEN }}
file: release/${{ env.targetName }} file: release/${{ env.targetName }}
asset_name: ${{ matrix.qt_ver }}-${{ env.targetName }} asset_name: ${{ matrix.qt_ver }}-${{ env.targetName }}
tag: v${{env.version}}-${{env.version-suffix}}.${{ steps.vars.outputs.release_hm }}.${{ steps.vars.outputs.sha_short }}
tag: tag-${{env.version-suffix}}.${{ steps.vars.outputs.sha_short }}
overwrite: true overwrite: true
release_name: GoldenDict-ng-v${{env.version}}-${{env.version-suffix}}.${{ steps.vars.outputs.release_hm }}.${{ steps.vars.outputs.sha_short }} release_name: GoldenDict-ng-v${{env.version}}-${{env.version-suffix}}.${{ steps.vars.outputs.release_hm }}.${{ steps.vars.outputs.sha_short }}
prerelease: ${{env.prerelease}} prerelease: ${{env.prerelease}}
@ -187,8 +193,48 @@ jobs:
repo_token: ${{ secrets.GITHUB_TOKEN }} repo_token: ${{ secrets.GITHUB_TOKEN }}
file: ${{ steps.package.outputs.packageName }}/GoldenDict-ng-v23-Installer.exe file: ${{ steps.package.outputs.packageName }}/GoldenDict-ng-v23-Installer.exe
asset_name: ${{ matrix.qt_ver }}-GoldenDict-ng-Installer.exe asset_name: ${{ matrix.qt_ver }}-GoldenDict-ng-Installer.exe
tag: v${{env.version}}-${{env.version-suffix}}.${{ steps.vars.outputs.release_hm }}.${{ steps.vars.outputs.sha_short }}
tag: tag-${{env.version-suffix}}.${{ steps.vars.outputs.sha_short }}
overwrite: true overwrite: true
release_name: GoldenDict-ng-v${{env.version}}-${{env.version-suffix}}.${{ steps.vars.outputs.release_hm }}.${{ steps.vars.outputs.sha_short }} release_name: GoldenDict-ng-v${{env.version}}-${{env.version-suffix}}.${{ steps.vars.outputs.release_hm }}.${{ steps.vars.outputs.sha_short }}
prerelease: ${{env.prerelease}} prerelease: ${{env.prerelease}}
- name: uploadRelease
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: tag-${{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 AppImages.
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
AppImage: Ubuntu-20.04
macOS: macOS-12 and macOS-13
Windows: Visual studio 2019
#### Changes
${{steps.build_changelog.outputs.changelog}}

5
.gitignore vendored
View file

@ -53,3 +53,8 @@ CMakeSettings.json
goldendict.vcxproj goldendict.vcxproj
goldendict.vcxproj.filters goldendict.vcxproj.filters
GoldenDict_resource.rc GoldenDict_resource.rc
*.TMP
*.orig
node_modules

2
.prettierignore Normal file
View file

@ -0,0 +1,2 @@
**/.clang-format

1
.prettierrc.json Normal file
View file

@ -0,0 +1 @@

View file

@ -1,6 +1,5 @@
cmake_minimum_required(VERSION 3.25) # ubuntu 23.04 Fedora 36 cmake_minimum_required(VERSION 3.25) # ubuntu 23.04 Fedora 36
# Experimental Cmake build only supposed to be used by dev
# Qt6.4+ only # Qt6.4+ only
option(WITH_FFMPEG_PLAYER "Enable support for FFMPEG player" ON) option(WITH_FFMPEG_PLAYER "Enable support for FFMPEG player" ON)
@ -15,7 +14,7 @@ option(USE_SYSTEM_TOML "use system toml++ instead of bundled one" OFF)
include(FeatureSummary) include(FeatureSummary)
project(goldendict-ng project(goldendict-ng
VERSION 23.06.01 VERSION 23.06.02
LANGUAGES CXX C) LANGUAGES CXX C)
set(GOLDENDICT "goldendict") # binary/executable name set(GOLDENDICT "goldendict") # binary/executable name
@ -95,6 +94,11 @@ endif ()
# Note: used as c++ string thus need surrounding " " # Note: used as c++ string thus need surrounding " "
add_compile_definitions(PROGRAM_VERSION="${PROJECT_VERSION}") add_compile_definitions(PROGRAM_VERSION="${PROJECT_VERSION}")
if (LINUX)
# see: config.cc -> getProgramDataDir
add_compile_definitions(PROGRAM_DATA_DIR="${CMAKE_INSTALL_PREFIX}/share/goldendict")
endif ()
target_link_libraries(${GOLDENDICT} PRIVATE target_link_libraries(${GOLDENDICT} PRIVATE
Qt6::Xml Qt6::Xml
Qt6::Concurrent Qt6::Concurrent

View file

@ -40,7 +40,6 @@ pkg_check_modules(PKGCONFIG_DEPS IMPORTED_TARGET
vorbis # .ogg vorbis # .ogg
vorbisfile vorbisfile
liblzma liblzma
libzstd
) )
target_link_libraries(${GOLDENDICT} PRIVATE target_link_libraries(${GOLDENDICT} PRIVATE

View file

@ -15,16 +15,15 @@ foreach (A_WIN_LIB ${WINLIBS_FILES})
target_link_libraries(${GOLDENDICT} PRIVATE ${A_WIN_LIB}) target_link_libraries(${GOLDENDICT} PRIVATE ${A_WIN_LIB})
endforeach () endforeach ()
file(GLOB WINLIBS_FILES "${CMAKE_SOURCE_DIR}/winlibs/lib/xapian/rel/*.lib") set(THIRD_PARTY_LIBARY
foreach (A_WIN_LIB ${WINLIBS_FILES}) debug ${CMAKE_SOURCE_DIR}/winlibs/lib/dbg/lzma.lib optimized ${CMAKE_SOURCE_DIR}/winlibs/lib/lzma.lib
target_link_libraries(${GOLDENDICT} PRIVATE ${A_WIN_LIB}) debug ${CMAKE_SOURCE_DIR}/winlibs/lib/dbg/zstd.lib optimized ${CMAKE_SOURCE_DIR}/winlibs/lib/zstd.lib
endforeach () 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
# zim dependencies debug ${CMAKE_SOURCE_DIR}/winlibs/lib/dbg/zim.lib optimized ${CMAKE_SOURCE_DIR}/winlibs/lib/zim.lib
file(GLOB WINLIBS_FILES "${CMAKE_SOURCE_DIR}/winlibs/lib/*.lib") debug ${CMAKE_SOURCE_DIR}/winlibs/lib/dbg/opencc.lib optimized ${CMAKE_SOURCE_DIR}/winlibs/lib/opencc.lib
foreach (A_WIN_LIB ${WINLIBS_FILES}) )
target_link_libraries(${GOLDENDICT} PRIVATE ${A_WIN_LIB}) target_link_libraries(${GOLDENDICT} PRIVATE ${THIRD_PARTY_LIBARY})
endforeach ()
# Copy .dlls to output dir # Copy .dlls to output dir
@ -34,13 +33,11 @@ foreach (A_DLL_FILE ${DLL_FILES})
configure_file("${A_DLL_FILE}" "${CMAKE_BINARY_DIR}/${TEMP_VAR_HOLDING_DLL_FILENAME}" COPYONLY) configure_file("${A_DLL_FILE}" "${CMAKE_BINARY_DIR}/${TEMP_VAR_HOLDING_DLL_FILENAME}" COPYONLY)
endforeach () endforeach ()
file(GLOB DLL_FILES LIST_DIRECTORIES false "${CMAKE_SOURCE_DIR}/winlibs/lib/xapian/rel/*.dll") if (CMAKE_BUILD_TYPE MATCHES Debug)
foreach (A_DLL_FILE ${DLL_FILES}) file(GLOB DLL_FILES LIST_DIRECTORIES false "${CMAKE_SOURCE_DIR}/winlibs/lib/dbg/*.dll")
get_filename_component(TEMP_VAR_HOLDING_DLL_FILENAME ${A_DLL_FILE} NAME) else ()
configure_file("${A_DLL_FILE}" "${CMAKE_BINARY_DIR}/${TEMP_VAR_HOLDING_DLL_FILENAME}" COPYONLY) file(GLOB DLL_FILES LIST_DIRECTORIES false "${CMAKE_SOURCE_DIR}/winlibs/lib/*.dll")
endforeach () endif ()
file(GLOB DLL_FILES LIST_DIRECTORIES false "${CMAKE_SOURCE_DIR}/winlibs/lib/*.dll")
foreach (A_DLL_FILE ${DLL_FILES}) foreach (A_DLL_FILE ${DLL_FILES})
get_filename_component(TEMP_VAR_HOLDING_DLL_FILENAME ${A_DLL_FILE} NAME) get_filename_component(TEMP_VAR_HOLDING_DLL_FILENAME ${A_DLL_FILE} NAME)
configure_file("${A_DLL_FILE}" "${CMAKE_BINARY_DIR}/${TEMP_VAR_HOLDING_DLL_FILENAME}" COPYONLY) configure_file("${A_DLL_FILE}" "${CMAKE_BINARY_DIR}/${TEMP_VAR_HOLDING_DLL_FILENAME}" COPYONLY)
@ -49,7 +46,9 @@ endforeach ()
if (WITH_EPWING_SUPPORT) if (WITH_EPWING_SUPPORT)
add_subdirectory(thirdparty/eb EXCLUDE_FROM_ALL) add_subdirectory(thirdparty/eb EXCLUDE_FROM_ALL)
target_include_directories(${GOLDENDICT} PRIVATE target_include_directories(${GOLDENDICT} PRIVATE
thirdparty thirdparty
) )
target_link_libraries(${GOLDENDICT} PRIVATE eb) target_link_libraries(${GOLDENDICT} PRIVATE eb)
set_target_properties(eb PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR})
endif () endif ()

128
CODE_OF_CONDUCT.md Normal file
View file

@ -0,0 +1,128 @@
# Contributor Covenant Code of Conduct
## Our Pledge
We as members, contributors, and leaders pledge to make participation in our
community a harassment-free experience for everyone, regardless of age, body
size, visible or invisible disability, ethnicity, sex characteristics, gender
identity and expression, level of experience, education, socio-economic status,
nationality, personal appearance, race, religion, or sexual identity
and orientation.
We pledge to act and interact in ways that contribute to an open, welcoming,
diverse, inclusive, and healthy community.
## Our Standards
Examples of behavior that contributes to a positive environment for our
community include:
* Demonstrating empathy and kindness toward other people
* Being respectful of differing opinions, viewpoints, and experiences
* Giving and gracefully accepting constructive feedback
* Accepting responsibility and apologizing to those affected by our mistakes,
and learning from the experience
* Focusing on what is best not just for us as individuals, but for the
overall community
Examples of unacceptable behavior include:
* The use of sexualized language or imagery, and sexual attention or
advances of any kind
* Trolling, insulting or derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or email
address, without their explicit permission
* Other conduct which could reasonably be considered inappropriate in a
professional setting
## Enforcement Responsibilities
Community leaders are responsible for clarifying and enforcing our standards of
acceptable behavior and will take appropriate and fair corrective action in
response to any behavior that they deem inappropriate, threatening, offensive,
or harmful.
Community leaders have the right and responsibility to remove, edit, or reject
comments, commits, code, wiki edits, issues, and other contributions that are
not aligned to this Code of Conduct, and will communicate reasons for moderation
decisions when appropriate.
## Scope
This Code of Conduct applies within all community spaces, and also applies when
an individual is officially representing the community in public spaces.
Examples of representing our community include using an official e-mail address,
posting via an official social media account, or acting as an appointed
representative at an online or offline event.
## Enforcement
Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported to the community leaders responsible for enforcement at
.
All complaints will be reviewed and investigated promptly and fairly.
All community leaders are obligated to respect the privacy and security of the
reporter of any incident.
## Enforcement Guidelines
Community leaders will follow these Community Impact Guidelines in determining
the consequences for any action they deem in violation of this Code of Conduct:
### 1. Correction
**Community Impact**: Use of inappropriate language or other behavior deemed
unprofessional or unwelcome in the community.
**Consequence**: A private, written warning from community leaders, providing
clarity around the nature of the violation and an explanation of why the
behavior was inappropriate. A public apology may be requested.
### 2. Warning
**Community Impact**: A violation through a single incident or series
of actions.
**Consequence**: A warning with consequences for continued behavior. No
interaction with the people involved, including unsolicited interaction with
those enforcing the Code of Conduct, for a specified period of time. This
includes avoiding interactions in community spaces as well as external channels
like social media. Violating these terms may lead to a temporary or
permanent ban.
### 3. Temporary Ban
**Community Impact**: A serious violation of community standards, including
sustained inappropriate behavior.
**Consequence**: A temporary ban from any sort of interaction or public
communication with the community for a specified period of time. No public or
private interaction with the people involved, including unsolicited interaction
with those enforcing the Code of Conduct, is allowed during this period.
Violating these terms may lead to a permanent ban.
### 4. Permanent Ban
**Community Impact**: Demonstrating a pattern of violation of community
standards, including sustained inappropriate behavior, harassment of an
individual, or aggression toward or disparagement of classes of individuals.
**Consequence**: A permanent ban from any sort of public interaction within
the community.
## Attribution
This Code of Conduct is adapted from the [Contributor Covenant][homepage],
version 2.0, available at
https://www.contributor-covenant.org/version/2/0/code_of_conduct.html.
Community Impact Guidelines were inspired by [Mozilla's code of conduct
enforcement ladder](https://github.com/mozilla/diversity).
[homepage]: https://www.contributor-covenant.org
For answers to common questions about this code of conduct, see the FAQ at
https://www.contributor-covenant.org/faq. Translations are available at
https://www.contributor-covenant.org/translations.

1
CONTRIBUTING.md Normal file
View file

@ -0,0 +1 @@
https://xiaoyifang.github.io/goldendict-ng/developer/

205
README.md
View file

@ -2,9 +2,9 @@
[![Crowdin](https://badges.crowdin.net/goldendict-ng/localized.svg)](https://crowdin.com/project/goldendict-ng) [![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) [![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-xapian](https://github.com/xiaoyifang/goldendict-ng/actions/workflows/windows-6.x-xapian.yml/badge.svg)](https://github.com/xiaoyifang/goldendict-ng/actions/workflows/windows-6.x-xapian.yml) [![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-xapian](https://github.com/xiaoyifang/goldendict-ng/actions/workflows/ubuntu-6.2-xapian.yml/badge.svg)](https://github.com/xiaoyifang/goldendict-ng/actions/workflows/ubuntu-6.2-xapian.yml) [![Ubuntu-6.2](https://github.com/xiaoyifang/goldendict-ng/actions/workflows/ubuntu-6.2.yml/badge.svg?branch=staged)](https://github.com/xiaoyifang/goldendict-ng/actions/workflows/ubuntu-6.2.yml)
[![macos-homebrew-xapian](https://github.com/xiaoyifang/goldendict-ng/actions/workflows/macos-homebrew-xapian.yml/badge.svg)](https://github.com/xiaoyifang/goldendict-ng/actions/workflows/macos-homebrew-xapian.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)
The Next Generation GoldenDict. A feature-rich open-source dictionary lookup program, 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 supporting [multiple dictionary formats](https://xiaoyifang.github.io/goldendict-ng/dictformats/) and online
@ -29,36 +29,7 @@ dictionaries.
## Installation ## Installation
### Downloads <https://xiaoyifang.github.io/goldendict-ng/install/>
* [Latest stable version](https://github.com/xiaoyifang/goldendict/releases/latest)
* [Daily pre-release builds](https://github.com/xiaoyifang/goldendict/releases).
Both Qt5 and Qt6 builds are provided.
## Windows
Choose either
* `****-installer.exe ` for traditional installer experience
* `****.zip` for simply unzip and run experience
If Qt's version is not changed, you can also download a single `goldendict.exe` and drop it into previous installation's folder.
## Linux
* `.Appimage` can be used in any recent linux distros.
* [Debian packages](https://tracker.debian.org/pkg/goldendict-webengine) are available in Debian 12 or later.
* [Ubuntu packages](https://launchpad.net/ubuntu/+source/goldendict-webengine) are available in Ubuntu 23.04 or later.
* Archlinux can use [goldendict-ng-git](https://aur.archlinux.org/packages/goldendict-ng-git). Built binary is also availiable from [archlinuxcn's repo](https://github.com/archlinuxcn/repo/tree/master/archlinuxcn/goldendict-ng-git).
* [Gentoo package from PG_Overlay](https://gitlab.com/Perfect_Gentleman/PG_Overlay/-/blob/master/app-text/goldendict/goldendict-9999-r6.ebuild)
* openSUSE ships an old version of this fork.
> Help wanted to package this GoldenDict for linux distros.
## macOS
One of the `.dmg` installers.
## Help GoldenDict's Development ## Help GoldenDict's Development
@ -72,172 +43,7 @@ To start development, check out [developer guide](https://xiaoyifang.github.io/g
## Build from source ## Build from source
### Dependencies <https://xiaoyifang.github.io/goldendict-ng/howto/build_from_source/>
* C++17 compiler
* Qt 5.15 or latest QT version 6.X
* Various libraries on Linux, see below
* On Mac and Windows all the libraries are included in the repository
* Qt Creator is recommended for development
Steps below are using qt5, and you may use qt6 by replacing `5` with `6`.
#### Ubuntu
```
sudo apt-get install git pkg-config build-essential qt5-qmake \
libvorbis-dev zlib1g-dev libhunspell-dev x11proto-record-dev \
libxtst-dev liblzo2-dev libbz2-dev \
libavutil-dev libavformat-dev libeb16-dev \
libqt5svg5-dev libqt5x11extras5-dev qttools5-dev \
qttools5-dev-tools qtmultimedia5-dev libqt5multimedia5-plugins libqt5webchannel5-dev qtwebengine5-dev \
libqt5texttospeech5-dev
```
#### Fedora 35
```
sudo dnf install git pkg-config libzstd-devel opencc-devel xz-devel xz-lzma-compat\
libvorbis-devel zlib-devel hunspell-devel lzo-devel bzip2-devel \
ffmpeg-devel eb-devel qt5-qtx11extras-devel libXtst-devel \
libxkbcommon-devel qt5-qtbase qt5-qttools qt5-qtsvg-devl qt5-qtwebengine-devel qt5-qtmultimedia-devel
```
### Build steps
Clone this repository:
```
git clone https://github.com/xiaoyifang/goldendict-ng.git
```
#### Linux build
```
cd goldendict-ng && qmake-qt5 && make
```
#### macOS build
```
brew install qt # or use official offline installer
qmake CONFIG+=release CONFIG+=zim_support CONFIG+=chinese_conversion_support QMAKE_APPLE_DEVICE_ARCHS="x86_64 arm64"
make
make install
```
#### Windows build
the source code has offered precompile x64 windows libs on winlibs/lib/msvc. you can build your own version either.
To build with Visual Studio.
check this [how to build with visual studio](howto/how%20to%20build%20and%20debug%20with%20VS2019.md)
Alternatively, you might want to load `goldendict.pro` file from within Qt Creator.
### Build Configurations
**Notice**: All additional configs for `qmake` that must be combined in one of pass config options to `qmake`:
```
qmake-qt5 "CONFIG+=release" "CONFIG+=zim_support" "CONFIG+=chinese_conversion_support"
```
To ensure the changes applied, you may want to use `make clean` before `make`.
#### Building with Chinese conversion support
To add Chinese conversion support you need at first install libopencc-dev package, then pass `"CONFIG+=chinese_conversion_support"` to `qmake`.
```
sudo apt-get install libopencc-dev
```
#### Building with Zim dictionaries support
To add Zim and Slob formats support you need at first install lzma-dev and zstd-dev packages, then pass `"CONFIG+=zim_support"` to `qmake`
```
sudo apt-get install liblzma-dev libzstd-dev libzim-dev
```
**Note**: Some linux distros do not support latest zim version, so you need to compile from latest source.
On Windows, you can use vcpkg to compile the libzim
```
vcpkg install libzim:x64-windows
```
and copy the corresponding(debug/release) library to the `winlibs/lib` folder. the zim's `include` directory to the `winlibs/include` directory.
#### Building without Epwing format support
If you have problem building with libeb-dev package, you can pass
`"CONFIG+=no_epwing_support"` to `qmake` in order to disable Epwing format support
#### Building without internal audio players
If you have problem building with FFmpeg (for example, very old linux distro), you can pass
`"CONFIG+=no_ffmpeg_player"` to `qmake` in order to disable FFmpeg internal audio player back end.
If you have problem building with Qt5 Multimedia or experience GStreamer run-time errors (for example, Ubuntu 14.04), you can pass
`"CONFIG+=no_qtmultimedia_player"` to `qmake` in order to disable Qt Multimedia internal audio player back end.
#### Building with xapian
build xapian from source, download and extract the xapian-core source code.
```
./configure
make
make install
```
On Windows,follow the instructions in the xapian-core/INSTALL Visual Studio parts.**xapian does not support to use the Debug lib in Windows. have to debug in release version mode using xapian's release lib**.
A precompiled version of xapian lib has provided in winlibs
On Linux, install libxapian-dev package using package manager.
On Mac, use homebrew to install xapian `brew install xapian`
Goldendict-ng has used xapian as the default and the only one fulltext engine.
#### use iconv (recommend to enable)
use `CONFIG+=use_iconv` to enable this feature. when enabled ,iconv will be used to convert encoding other than the QTextCodec(which will be deprecated in future Qt version)
```
qmake "CONFIG+=use_iconv"
```
when enabled ,iconv should be installed on the platform at the same time.
#### use breakpad
use `CONFIG+=use_breakpad` to enable this crash dump. when enabled [breakpad](https://chromium.googlesource.com/breakpad/breakpad/+/master/docs), goldendict will generate a crash dump alongside with Goldendict in the `crash` directory.
on Windows:
`vcpkg install breakpad:x64-windows-release` and copy the installed packages into `thirdparty/breakpad` directory.
with a structure like this:
```
├─breakpad
│ ├─include
│ │ ├─client
│ │ │ └─windows
│ │ │ ├─common
│ │ │ ├─crash_generation
│ │ │ ├─handler
│ │ │ └─sender
│ │ ├─common
│ │ │ └─windows
│ │ └─google_breakpad
│ │ ├─common
│ │ └─processor
│ └─lib
```
on Mac/Linux:
[vcpkg](https://techviewleo.com/install-vcpkg-c-library-manager-on-linux-macos-windows/) can also be used or you can just install breakpad from source or use precompiled packages.
Then enable google breakpad like this with qmake:
```
qmake "CONFIG+=use_breakpad"
```
## Support ## Support
@ -245,6 +51,7 @@ Bug reporting: [GoldenDict issue tracker](https://github.com/xiaoyifang/goldendi
General discussions: [discussions](https://github.com/xiaoyifang/goldendict-ng/discussions) General discussions: [discussions](https://github.com/xiaoyifang/goldendict-ng/discussions)
## License ## License
This project is licensed under the <b>GNU GPLv3+</b> license, a copy of which can be found in the `LICENSE.txt` file. This project is licensed under the <b>GNU GPLv3+</b> license, a copy of which can be found in the `LICENSE.txt` file.

View file

@ -1,6 +1,6 @@
TEMPLATE = app TEMPLATE = app
TARGET = goldendict TARGET = goldendict
VERSION = 23.06.01-ChildrenDay VERSION = 23.06.02-alpha
# Generate version file. We do this here and in a build rule described later. # 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 # The build rule is required since qmake isn't run each time the project is
@ -19,13 +19,7 @@ system(git describe --tags --always --dirty): hasGit=1
} }
!CONFIG( verbose_build_output ) { # users can suppress verbose console compile output by add `CONFIG += silent` to qmake.
!win32|*-msvc* {
# Reduce build log verbosity except for MinGW builds (mingw-make cannot
# execute "@echo ..." commands inserted by qmake).
CONFIG += silent
}
}
CONFIG( release, debug|release ) { CONFIG( release, debug|release ) {
DEFINES += NDEBUG DEFINES += NDEBUG
@ -74,8 +68,8 @@ contains(DEFINES, MAKE_QTMULTIMEDIA_PLAYER|MAKE_FFMPEG_PLAYER) {
#xapian is the must option now. #xapian is the must option now.
win32{ win32{
Debug: LIBS+= -L$$PWD/winlibs/lib/xapian/dbg/ -lxapian Debug: LIBS+= -L$$PWD/winlibs/lib/dbg/ -lxapian
Release: LIBS+= -L$$PWD/winlibs/lib/xapian/rel/ -lxapian Release: LIBS+= -L$$PWD/winlibs/lib -lxapian
}else{ }else{
LIBS += -lxapian LIBS += -lxapian
} }
@ -83,8 +77,8 @@ win32{
CONFIG( use_breakpad ) { CONFIG( use_breakpad ) {
DEFINES += USE_BREAKPAD DEFINES += USE_BREAKPAD
win32: LIBS += -L$$PWD/thirdparty/breakpad/lib/ -llibbreakpad -llibbreakpad_client LIBS += -L$$PWD/thirdparty/breakpad/lib/ -llibbreakpad -llibbreakpad_client
else:unix: LIBS += -L$$PWD/thirdparty/breakpad/lib/ -llibbreakpa
INCLUDEPATH += $$PWD/thirdparty/breakpad/include INCLUDEPATH += $$PWD/thirdparty/breakpad/include
DEPENDPATH += $$PWD/thirdparty/breakpad/include DEPENDPATH += $$PWD/thirdparty/breakpad/include
@ -138,7 +132,7 @@ win32 {
win32-msvc* { win32-msvc* {
# VS does not recognize 22.number.alpha,cause errors during compilation under MSVC++ # VS does not recognize 22.number.alpha,cause errors during compilation under MSVC++
VERSION = 23.06.01 VERSION = 23.06.02
DEFINES += __WIN32 _CRT_SECURE_NO_WARNINGS DEFINES += __WIN32 _CRT_SECURE_NO_WARNINGS
contains(QMAKE_TARGET.arch, x86_64) { contains(QMAKE_TARGET.arch, x86_64) {
DEFINES += NOMINMAX __WIN64 DEFINES += NOMINMAX __WIN64
@ -150,9 +144,8 @@ win32 {
# QMAKE_CXXFLAGS_RELEASE += /GL # slows down the linking significantly # QMAKE_CXXFLAGS_RELEASE += /GL # slows down the linking significantly
LIBS += -lshell32 -luser32 -lsapi -lole32 LIBS += -lshell32 -luser32 -lsapi -lole32
Debug: LIBS+= -lhunspelld Debug: LIBS+= -L$$PWD/winlibs/lib/dbg/ -lhunspell-1.7
Release: LIBS+= -lhunspell Release: LIBS+= -L$$PWD/winlibs/lib/ -lhunspell-1.7
HUNSPELL_LIB = hunspell
} }
LIBS += -lwsock32 \ LIBS += -lwsock32 \
@ -291,16 +284,17 @@ HEADERS += \
src/ankiconnector.hh \ src/ankiconnector.hh \
src/article_maker.hh \ src/article_maker.hh \
src/article_netmgr.hh \ src/article_netmgr.hh \
src/common/atomic_rename.hh \
src/audiolink.hh \ src/audiolink.hh \
src/audioplayerfactory.hh \ src/audioplayerfactory.hh \
src/audioplayerinterface.hh \ src/audioplayerinterface.hh \
src/btreeidx.hh \ src/btreeidx.hh \
src/chunkedstorage.hh \ src/chunkedstorage.hh \
src/common/atomic_rename.hh \
src/common/base_type.hh \ src/common/base_type.hh \
src/common/ex.hh \ src/common/ex.hh \
src/common/file.hh \ src/common/file.hh \
src/common/filetype.hh \ src/common/filetype.hh \
src/common/folding.hh \
src/common/gddebug.hh \ src/common/gddebug.hh \
src/common/globalbroadcaster.hh \ src/common/globalbroadcaster.hh \
src/common/globalregex.hh \ src/common/globalregex.hh \
@ -359,7 +353,6 @@ HEADERS += \
src/externalviewer.hh \ src/externalviewer.hh \
src/ffmpegaudio.hh \ src/ffmpegaudio.hh \
src/ffmpegaudioplayer.hh \ src/ffmpegaudioplayer.hh \
src/common/folding.hh \
src/ftshelpers.hh \ src/ftshelpers.hh \
src/fulltextsearch.hh \ src/fulltextsearch.hh \
src/gestures.hh \ src/gestures.hh \
@ -376,6 +369,7 @@ HEADERS += \
src/metadata.hh \ src/metadata.hh \
src/multimediaaudioplayer.hh \ src/multimediaaudioplayer.hh \
src/parsecmdline.hh \ src/parsecmdline.hh \
src/pronounceengine.hh \
src/resourceschemehandler.hh \ src/resourceschemehandler.hh \
src/splitfile.hh \ src/splitfile.hh \
src/termination.hh \ src/termination.hh \
@ -407,10 +401,10 @@ HEADERS += \
src/ui/searchpanewidget.hh \ src/ui/searchpanewidget.hh \
src/ui/stylescombobox.hh \ src/ui/stylescombobox.hh \
src/ui/translatebox.hh \ src/ui/translatebox.hh \
src/version.hh \
src/webmultimediadownload.hh \ src/webmultimediadownload.hh \
src/weburlrequestinterceptor.hh \ src/weburlrequestinterceptor.hh \
src/wordfinder.hh \ src/wordfinder.hh \
src/wordlist.hh \
src/zipfile.hh \ src/zipfile.hh \
thirdparty/tomlplusplus/toml++/toml.h thirdparty/tomlplusplus/toml++/toml.h
@ -420,13 +414,14 @@ SOURCES += \
src/ankiconnector.cc \ src/ankiconnector.cc \
src/article_maker.cc \ src/article_maker.cc \
src/article_netmgr.cc \ src/article_netmgr.cc \
src/common/atomic_rename.cc \
src/audiolink.cc \ src/audiolink.cc \
src/audioplayerfactory.cc \ src/audioplayerfactory.cc \
src/btreeidx.cc \ src/btreeidx.cc \
src/chunkedstorage.cc \ src/chunkedstorage.cc \
src/common/atomic_rename.cc \
src/common/file.cc \ src/common/file.cc \
src/common/filetype.cc \ src/common/filetype.cc \
src/common/folding.cc \
src/common/gddebug.cc \ src/common/gddebug.cc \
src/common/globalbroadcaster.cc \ src/common/globalbroadcaster.cc \
src/common/globalregex.cc \ src/common/globalregex.cc \
@ -481,7 +476,6 @@ SOURCES += \
src/externalaudioplayer.cc \ src/externalaudioplayer.cc \
src/externalviewer.cc \ src/externalviewer.cc \
src/ffmpegaudio.cc \ src/ffmpegaudio.cc \
src/common/folding.cc \
src/ftshelpers.cc \ src/ftshelpers.cc \
src/fulltextsearch.cc \ src/fulltextsearch.cc \
src/gestures.cc \ src/gestures.cc \
@ -499,6 +493,7 @@ SOURCES += \
src/metadata.cc \ src/metadata.cc \
src/multimediaaudioplayer.cc \ src/multimediaaudioplayer.cc \
src/parsecmdline.cc \ src/parsecmdline.cc \
src/pronounceengine.cc \
src/resourceschemehandler.cc \ src/resourceschemehandler.cc \
src/splitfile.cc \ src/splitfile.cc \
src/termination.cc \ src/termination.cc \
@ -528,10 +523,10 @@ SOURCES += \
src/ui/searchpanel.cc \ src/ui/searchpanel.cc \
src/ui/stylescombobox.cc \ src/ui/stylescombobox.cc \
src/ui/translatebox.cc \ src/ui/translatebox.cc \
src/version.cc \
src/webmultimediadownload.cc \ src/webmultimediadownload.cc \
src/weburlrequestinterceptor.cc \ src/weburlrequestinterceptor.cc \
src/wordfinder.cc \ src/wordfinder.cc \
src/wordlist.cc \
src/zipfile.cc \ src/zipfile.cc \
thirdparty/fmt/format.cc thirdparty/fmt/format.cc
@ -559,7 +554,7 @@ SOURCES += src/common/wildcard.cc
CONFIG( zim_support ) { CONFIG( zim_support ) {
DEFINES += MAKE_ZIM_SUPPORT DEFINES += MAKE_ZIM_SUPPORT
LIBS += -llzma -lzstd -lzim LIBS += -llzma -lzim
win32{ win32{
Debug: LIBS+= -L$$PWD/winlibs/lib/dbg/ Debug: LIBS+= -L$$PWD/winlibs/lib/dbg/
@ -595,9 +590,16 @@ CONFIG( chinese_conversion_support ) {
src/ui/chineseconversion.hh src/ui/chineseconversion.hh
SOURCES += src/dict/chinese.cc \ SOURCES += src/dict/chinese.cc \
src/ui/chineseconversion.cc src/ui/chineseconversion.cc
win32{
Debug: LIBS+= -L$$PWD/winlibs/lib/dbg/ -lopencc
Release: LIBS+= -L$$PWD/winlibs/lib -lopencc
}else{
LIBS += -lopencc LIBS += -lopencc
} }
}
RESOURCES += resources.qrc \ RESOURCES += resources.qrc \
src/scripts/scripts.qrc \ src/scripts/scripts.qrc \
icons/flags.qrc \ icons/flags.qrc \

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

381
icons/lsasound.svg Normal file
View file

@ -0,0 +1,381 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
sodipodi:docname="lsasound.svg"
inkscape:version="1.2.2 (732a01da63, 2022-12-09)"
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-xdpi="96"
inkscape:export-ydpi="96"
xml:space="preserve"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/"><defs
id="defs3"><rect
x="10.606602"
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
inkscape:collect="always"
xlink:href="#linearGradient5060"
id="radialGradient6719"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(-2.774389,0,0,1.969706,112.7623,-872.8854)"
cx="605.71429"
cy="486.64789"
fx="605.71429"
fy="486.64789"
r="117.14286" /><linearGradient
inkscape:collect="always"
id="linearGradient5060"><stop
style="stop-color:black;stop-opacity:1;"
offset="0"
id="stop5062" /><stop
style="stop-color:black;stop-opacity:0;"
offset="1"
id="stop5064" /></linearGradient><radialGradient
inkscape:collect="always"
xlink:href="#linearGradient5060"
id="radialGradient6717"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(2.774389,0,0,1.969706,-1891.633,-872.8854)"
cx="605.71429"
cy="486.64789"
fx="605.71429"
fy="486.64789"
r="117.14286" /><linearGradient
id="linearGradient5048"><stop
style="stop-color:black;stop-opacity:0;"
offset="0"
id="stop5050" /><stop
id="stop5056"
offset="0.5"
style="stop-color:black;stop-opacity:1;" /><stop
style="stop-color:black;stop-opacity:0;"
offset="1"
id="stop5052" /></linearGradient><linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5048"
id="linearGradient6715"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(2.774389,0,0,1.969706,-1892.179,-872.8854)"
x1="302.85715"
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"
style="stop-color:#de9523;stop-opacity:1;" /><stop
id="stop4999"
offset="1.0000000"
style="stop-color:#a36d18;stop-opacity:1.0000000;" /></linearGradient><linearGradient
id="linearGradient4987"
inkscape:collect="always"><stop
id="stop4989"
offset="0"
style="stop-color:#a0670c;stop-opacity:1;" /><stop
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"
style="stop-color:#ffffff;stop-opacity:1;" /><stop
id="stop4226"
offset="1.0000000"
style="stop-color:#ffffff;stop-opacity:0.68639052;" /></linearGradient><linearGradient
id="linearGradient4210"><stop
id="stop4212"
offset="0.0000000"
style="stop-color:#eaba6f;stop-opacity:1.0000000;" /><stop
id="stop4214"
offset="1.0000000"
style="stop-color:#b97a1b;stop-opacity:1.0000000;" /></linearGradient><linearGradient
id="linearGradient4192"><stop
id="stop4194"
offset="0"
style="stop-color:#e9b96e;stop-opacity:1;" /><stop
id="stop4196"
offset="1.0000000"
style="stop-color:#f1d19e;stop-opacity:1.0000000;" /></linearGradient><linearGradient
id="linearGradient4182"><stop
id="stop4184"
offset="0.0000000"
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
inkscape:collect="always"
xlink:href="#linearGradient4995"
id="linearGradient2274"
gradientUnits="userSpaceOnUse"
x1="36.288929"
y1="14.661557"
x2="47.065835"
y2="15.267649" /><linearGradient
inkscape:collect="always"
xlink:href="#linearGradient4192"
id="linearGradient2277"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.000000,0.000000,0.000000,0.986355,0.000000,0.316638)"
x1="25.381256"
y1="24.720648"
x2="24.119167"
y2="16.170370" /><linearGradient
inkscape:collect="always"
xlink:href="#linearGradient4182"
id="linearGradient2280"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.000000,0.000000,0.000000,1.039184,0.000000,-4.057054e-2)"
x1="16.148972"
y1="12.636667"
x2="34.193642"
y2="12.636667" /><linearGradient
inkscape:collect="always"
xlink:href="#linearGradient4987"
id="linearGradient2282"
gradientUnits="userSpaceOnUse"
x1="21.906841"
y1="9.7577486"
x2="22.071806"
y2="16.020695" /><linearGradient
inkscape:collect="always"
xlink:href="#linearGradient4222"
id="linearGradient2285"
gradientUnits="userSpaceOnUse"
x1="18.706615"
y1="19.912336"
x2="30.014812"
y2="47.388485" /><linearGradient
inkscape:collect="always"
xlink:href="#linearGradient4210"
id="linearGradient2288"
gradientUnits="userSpaceOnUse"
x1="24.990499"
y1="34.004856"
x2="24.990499"
y2="22.585211" /><radialGradient
xlink:href="#a"
id="d"
cx="4.3920336"
cy="32.307854"
r="6.375"
fx="4.3920336"
fy="32.307854"
gradientTransform="matrix(1,0,0,0.5098,0,16.05392)"
gradientUnits="userSpaceOnUse" /><radialGradient
xlink:href="#a"
id="e"
cx="4.3920336"
cy="32.307854"
r="6.375"
fx="4.3920336"
fy="32.307854"
gradientTransform="matrix(1,0,0,0.5098,0,16.05392)"
gradientUnits="userSpaceOnUse" /><radialGradient
xlink:href="#linearGradient5060"
id="c"
cx="23.25"
cy="35.375"
r="18.5"
fx="23.25"
fy="35.375"
gradientTransform="matrix(1,0,0,0.39865,0,21.2728)"
gradientUnits="userSpaceOnUse" /><linearGradient
id="a"><stop
offset="0"
stop-color="#fff"
id="stop3397" /><stop
offset="1"
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-width="1920"
stroke="#c17d11"
fill="#e9b96e"
inkscape:showpageshadow="false"
inkscape:document-units="px"
inkscape:grid-bbox="true"
showgrid="false"
inkscape:current-layer="layer1"
inkscape:cy="80.079843"
inkscape:cx="83.615377"
inkscape:zoom="2.8284271"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
borderopacity="0.16470588"
bordercolor="#666666"
pagecolor="#ffffff"
id="base"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:window-maximized="1" /><metadata
id="metadata4"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:creator><cc:Agent><dc:title>Jakub Steiner</dc:title></cc:Agent></dc:creator><dc:source>http://jimmac.musichall.cz/</dc:source><dc:subject><rdf:Bag><rdf:li>package</rdf:li><rdf:li>archive</rdf:li><rdf:li>tarball</rdf:li><rdf:li>tar</rdf:li><rdf:li>bzip</rdf:li><rdf:li>gzip</rdf:li><rdf:li>zip</rdf:li><rdf:li>arj</rdf:li><rdf:li>tar</rdf:li><rdf:li>jar</rdf:li></rdf:Bag></dc:subject><cc:license
rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" /></cc:Work><cc:License
rdf:about="http://creativecommons.org/licenses/publicdomain/"><cc:permits
rdf:resource="http://creativecommons.org/ns#Reproduction" /><cc:permits
rdf:resource="http://creativecommons.org/ns#Distribution" /><cc:permits
rdf:resource="http://creativecommons.org/ns#DerivativeWorks" /></cc:License></rdf:RDF></metadata><g
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>

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

241
icons/programdict.svg Normal file
View file

@ -0,0 +1,241 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="48px"
height="48px"
id="svg1256"
sodipodi:version="0.32"
inkscape:version="1.2.2 (732a01da63, 2022-12-09)"
sodipodi:docname="programdict.svg"
inkscape:output_extension="org.inkscape.output.svg.inkscape"
version="1.1"
xml:space="preserve"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/"><defs
id="defs3"><linearGradient
id="linearGradient12512"><stop
style="stop-color:#ffffff;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop12513" /><stop
style="stop-color:#fff520;stop-opacity:0.89108908;"
offset="0.50000000"
id="stop12517" /><stop
style="stop-color:#fff300;stop-opacity:0.0000000;"
offset="1.0000000"
id="stop12514" /></linearGradient><radialGradient
inkscape:collect="always"
xlink:href="#linearGradient12512"
id="radialGradient278"
gradientUnits="userSpaceOnUse"
cx="55.000000"
cy="125.00000"
fx="55.000000"
fy="125.00000"
r="14.375000" /><linearGradient
inkscape:collect="always"
id="linearGradient21644"><stop
style="stop-color:#000000;stop-opacity:1;"
offset="0"
id="stop21646" /><stop
style="stop-color:#000000;stop-opacity:0;"
offset="1"
id="stop21648" /></linearGradient><linearGradient
inkscape:collect="always"
id="linearGradient2116"><stop
style="stop-color:#ffffff;stop-opacity:1;"
offset="0"
id="stop2118" /><stop
style="stop-color:#ffffff;stop-opacity:0;"
offset="1"
id="stop2120" /></linearGradient><linearGradient
id="linearGradient2094"><stop
style="stop-color:#d6e3f0;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop2096" /><stop
style="stop-color:#95b1cf;stop-opacity:1.0000000;"
offset="1.0000000"
id="stop2098" /></linearGradient><linearGradient
id="linearGradient2803"><stop
id="stop2805"
offset="0"
style="stop-color:#ffffff;stop-opacity:1;" /><stop
id="stop2807"
offset="1.0000000"
style="stop-color:#cbcbcb;stop-opacity:1.0000000;" /></linearGradient><linearGradient
id="linearGradient2795"><stop
id="stop2797"
offset="0.0000000"
style="stop-color:#000000;stop-opacity:0.068627454;" /><stop
id="stop2799"
offset="1.0000000"
style="stop-color:#ffffff;stop-opacity:1.0000000;" /></linearGradient><linearGradient
gradientUnits="userSpaceOnUse"
y2="4.9530048"
x2="41.219128"
y1="4.9530050"
x1="35.433035"
gradientTransform="matrix(0.254000,0.000000,1.822151e-16,3.759813,0.788629,0.148567)"
id="linearGradient2801"
xlink:href="#linearGradient2795"
inkscape:collect="always" /><linearGradient
gradientUnits="userSpaceOnUse"
y2="84.287079"
x2="10.219901"
y1="93.338043"
x1="10.496115"
gradientTransform="matrix(2.262742,0.000000,0.000000,0.441942,1.000000,-0.875000)"
id="linearGradient2813"
xlink:href="#linearGradient2803"
inkscape:collect="always" /><linearGradient
inkscape:collect="always"
xlink:href="#linearGradient2094"
id="linearGradient2100"
gradientTransform="matrix(0.957750,0.000000,0.000000,1.027989,1.000000,-0.571911)"
x1="6.5871811"
y1="22.132999"
x2="14.511404"
y2="22.132999"
gradientUnits="userSpaceOnUse" /><linearGradient
inkscape:collect="always"
xlink:href="#linearGradient2116"
id="linearGradient2112"
gradientTransform="matrix(1.025428,0.000000,0.000000,0.957303,0.000000,-0.806758)"
x1="73.361984"
y1="26.652197"
x2="-2.7582901"
y2="21.270376"
gradientUnits="userSpaceOnUse" /><radialGradient
inkscape:collect="always"
xlink:href="#linearGradient21644"
id="radialGradient21650"
cx="25.125"
cy="36.75"
fx="25.125"
fy="36.75"
r="15.75"
gradientTransform="matrix(1.000000,0.000000,0.000000,0.595238,-6.245005e-16,14.87500)"
gradientUnits="userSpaceOnUse" /><linearGradient
id="linearGradient3264"><stop
id="stop3266"
offset="0"
style="stop-color:#c9c9c9;stop-opacity:1;" /><stop
style="stop-color:#f8f8f8;stop-opacity:1;"
offset="0.25"
id="stop3276" /><stop
style="stop-color:#e2e2e2;stop-opacity:1;"
offset="0.5"
id="stop3272" /><stop
id="stop3274"
offset="0.75"
style="stop-color:#b0b0b0;stop-opacity:1;" /><stop
id="stop3268"
offset="1"
style="stop-color:#c9c9c9;stop-opacity:1;" /></linearGradient><radialGradient
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,0.315315,0,26.81305)"
r="19.622213"
fy="39.161163"
fx="25.455845"
cy="39.161163"
cx="25.455845"
id="radialGradient3262"
xlink:href="#linearGradient21644" /><linearGradient
gradientTransform="matrix(1.241935,0,0,1.241935,-5.027508,-7.208988)"
y2="39.684914"
x2="34.534348"
y1="12.284524"
x1="14.462892"
gradientUnits="userSpaceOnUse"
id="linearGradient3281"
xlink:href="#linearGradient3264" /></defs><sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="0.27843137"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="5.6568542"
inkscape:cx="20.948039"
inkscape:cy="24.483573"
inkscape:current-layer="layer1"
showgrid="false"
inkscape:grid-bbox="true"
inkscape:document-units="px"
inkscape:window-width="1920"
inkscape:window-height="991"
inkscape:window-x="-9"
inkscape:window-y="-9"
fill="#ef2929"
stroke="#cc0000"
inkscape:showpageshadow="false"
inkscape:window-maximized="1"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1" /><metadata
id="metadata4"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:date /><dc:creator><cc:Agent><dc:title>Jakub Steiner</dc:title></cc:Agent></dc:creator><dc:source>http://jimmac.musichall.cz</dc:source><dc:subject><rdf:Bag><rdf:li>address</rdf:li><rdf:li>contact</rdf:li><rdf:li>book</rdf:li><rdf:li>office</rdf:li></rdf:Bag></dc:subject><cc:license
rdf:resource="http://creativecommons.org/licenses/by-sa/2.0/" /></cc:Work><cc:License
rdf:about="http://creativecommons.org/licenses/by-sa/2.0/"><cc:permits
rdf:resource="http://web.resource.org/cc/Reproduction" /><cc:permits
rdf:resource="http://web.resource.org/cc/Distribution" /><cc:requires
rdf:resource="http://web.resource.org/cc/Notice" /><cc:requires
rdf:resource="http://web.resource.org/cc/Attribution" /><cc:permits
rdf:resource="http://web.resource.org/cc/DerivativeWorks" /><cc:requires
rdf:resource="http://web.resource.org/cc/ShareAlike" /></cc:License></rdf:RDF></metadata><g
id="layer1"
inkscape:label="Layer 1"
inkscape:groupmode="layer"><path
sodipodi:type="arc"
style="opacity:1;color:#000000;fill:url(#radialGradient21650);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;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="path21642"
sodipodi:cx="25.125"
sodipodi:cy="36.75"
sodipodi:rx="15.75"
sodipodi:ry="9.375"
d="M 40.875 36.75 A 15.75 9.375 0 1 1 9.375,36.75 A 15.75 9.375 0 1 1 40.875 36.75 z"
transform="matrix(1.150794,0.000000,0.000000,1.000000,-4.913690,0.625000)" /><path
style="color:#000000;fill:#5b6b94;fill-opacity:1;fill-rule:nonzero;stroke:#364878;stroke-width:1.00000012;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
d="M 6.3643222,5.5185897 C 6.4551049,3.6036003 7.3719758,2.5542814 9.0788784,2.549044 L 38.405776,2.4590577 C 38.652361,2.4583011 38.974317,2.6592071 38.999012,2.9089888 L 42.257491,35.867228 L 40.942189,35.923862 L 41.571429,42.369516 C 41.632441,42.994499 41.390059,43.52882 40.5,43.533035 L 9.7893046,43.678474 C 7.25676,43.690468 4.6538454,41.59976 4.7759337,39.024403 L 6.3643222,5.5185897 z "
id="rect1408"
sodipodi:nodetypes="csssccsssss" /><path
id="path2489"
d="M 40.125,34.875 L 10.9375,35 C 9.3809819,35.177868 8.125,36.39612 8.125,38 C 8.125,39.60388 9.3809819,40.822132 10.9375,41 L 40.125,41.125 L 40.125,41.0625 C 38.469378,40.984348 37.125,39.674851 37.125,38 C 37.125,36.325149 38.469378,35.015652 40.125,34.9375 L 40.125,34.875 z "
style="color:#000000;fill:url(#linearGradient2813);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" /><path
sodipodi:nodetypes="ccccccssc"
id="path2784"
d="M 9.6875,2.8125 C 7.9805897,2.8125 7.050103,3.8215062 6.96875,5.6738658 L 5.3125,37.825772 C 5.22054,40.904199 7.1393732,42.654485 9.125,43.15625 C 4.875,41.525579 5.4375,34.164455 10.75,34.195222 L 41.648286,34.195222 L 38.335786,3.2432432 C 38.310025,3.0025304 37.987878,2.8125 37.742036,2.8125 L 9.6875,2.8125 z "
style="color:#000000;fill:url(#linearGradient2100);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" /><rect
y="3.968539"
x="9.7886267"
height="29.604792"
width="2"
id="rect2793"
style="opacity:0.48044691;color:#000000;fill:url(#linearGradient2801);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:0.60818715;visibility:visible;display:inline;overflow:visible"
transform="matrix(1.000000,0.000000,-3.582731e-2,0.999358,0.000000,0.000000)" /><path
style="color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient2112);stroke-width:1.00000012;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:20;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
d="M 9.8751008,3.3336831 C 8.1912014,3.3336831 7.5384236,4.0658459 7.4581673,5.887831 L 6.1592633,35.777198 C 7.0925916,34.170451 8.5988591,33.594437 11.011665,33.594437 L 40.963081,33.594437 L 38.137179,3.7573631 C 38.114727,3.5203092 37.793961,3.3336831 37.551434,3.3336831 L 9.8751008,3.3336831 z "
id="path2104"
sodipodi:nodetypes="cccscssc" /><g
id="layer1-6"
transform="matrix(0.53009019,0,0,0.4975302,20.296504,20.285242)"><path
transform="translate(-0.883885,2.474874)"
d="m 45.078058,39.161163 a 19.622213,6.187185 0 1 1 -39.2444265,0 19.622213,6.187185 0 1 1 39.2444265,0 z"
id="path3254"
style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:0.409091;fill:url(#radialGradient3262);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none" /><path
id="path3243"
d="M 23.25,0.46875 C 22.784561,0.50059628 22.332166,0.57268469 21.875,0.625 H 21.84375 L 20.75,6.59375 C 18.967275,6.9997399 17.290091,7.6887415 15.78125,8.625 L 10.875,5.09375 C 9.5487118,6.1234406 8.3418016,7.3243453 7.28125,8.625 l 3.40625,4.96875 c -1.0342329,1.580515 -1.8119683,3.385224 -2.25,5.28125 -7.5e-5,0.009 -6.09e-5,0.02969 0,0.03125 L 2.5,19.84375 c -0.1085533,0.886633 -0.15625,1.802939 -0.15625,2.71875 10e-8,0.7493 0.020689,1.488589 0.09375,2.21875 l 5.9375,1.0625 c 0.422279,2.061892 1.2244587,3.987512 2.34375,5.6875 L 7.1875,36.375 c 1.0113261,1.255518 2.1788917,2.398616 3.4375,3.40625 l 5,-3.4375 c 1.747433,1.114717 3.698083,1.896374 5.8125,2.28125 l 0.9375,5.90625 c 0.666183,0.06064 1.349349,0.0625 2.03125,0.0625 0.962685,-10e-7 1.882237,-0.03648 2.8125,-0.15625 l 1.125,-6.03125 C 30.351311,37.906649 32.237219,37.03996 33.875,35.875 l 4.8125,3.5 c 1.248028,-1.061797 2.389277,-2.282256 3.375,-3.59375 l -3.5,-5.0625 c 0.947853,-1.63699 1.604629,-3.443141 1.9375,-5.375 l 5.90625,-0.9375 c 0.05179,-0.616346 0.0625,-1.214087 0.0625,-1.84375 0,-1.094214 -0.127182,-2.167084 -0.28125,-3.21875 l -6,-1.09375 C 39.717306,16.513776 38.945824,14.893898 37.96875,13.4375 L 41.5,8.59375 C 40.405427,7.2551429 39.156822,6.0185688 37.78125,4.96875 l -5.09375,3.5 C 31.223504,7.6029126 29.648037,6.9385679 27.9375,6.5625 L 27,0.625 C 26.146701,0.52462461 25.286379,0.46875 24.40625,0.46875 c -0.237872,10e-9 -0.482684,-0.007485 -0.71875,0 -0.115083,0.003649 -0.228966,-0.006695 -0.34375,0 -0.03109,0.001813 -0.06272,-0.002123 -0.09375,0 z m 0.8125,15.1875 c 0.114166,-0.0058 0.228152,0 0.34375,0 3.699127,0 6.71875,3.019624 6.71875,6.71875 1e-6,3.699126 -3.019624,6.6875 -6.71875,6.6875 -3.699125,1e-6 -6.6875,-2.988374 -6.6875,-6.6875 1e-6,-3.583527 2.8046,-6.539158 6.34375,-6.71875 z"
style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:url(#linearGradient3281);fill-opacity:1;fill-rule:nonzero;stroke:#808080;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none" /><path
transform="matrix(0.606518,0,0,0.606518,10.15021,7.936835)"
d="m 36.239223,23.781593 a 12.727922,12.727922 0 1 1 -25.455844,0 12.727922,12.727922 0 1 1 25.455844,0 z"
id="path3283"
style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:0.647727;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:1.64876;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none" /><path
style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:0.346591;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none"
d="M 22.557788,1.6501132 21.679599,7.4291233 C 20.008601,7.8096689 16.934874,8.9735344 15.520595,9.8511162 L 10.848562,6.3639293 C 9.6053938,7.3290873 9.5201391,7.3945394 8.5260544,8.6136804 l 3.3780526,5.0099536 c -0.969415,1.481461 -2.1338039,4.121495 -2.5518734,6.008088 0,0 -5.9194088,0.997841 -5.9194088,0.997841 -0.1017499,0.831066 -0.05285,2.609798 0.015632,3.294198 l 5.6542436,1.018588 c 0.395814,1.932669 1.8770306,5.043588 2.9261736,6.637034 l -3.575576,4.724044 c 0.9479445,1.176832 1.1376642,1.284521 2.317393,2.229005 l 4.781168,-3.50282 c 1.637918,1.044855 4.889033,2.315886 6.870935,2.676641 l 0.784687,5.706254 c 0.624432,0.05684 2.349481,0.216281 3.221443,0.10402 l 0.878188,-5.940154 c 1.881743,-0.468289 5.13316,-1.80296 6.668298,-2.89491 l 4.776055,3.450808 c 1.169811,-0.995251 1.180292,-1.145216 2.104238,-2.374516 l -3.539198,-5.030701 c 0.888449,-1.534398 2.037228,-4.535223 2.349237,-6.346009 l 5.794642,-0.961463 c 0.04855,-0.577719 0.05091,-2.188789 -0.0935,-3.174545 L 39.463105,19.226449 C 39.022378,17.599038 37.509894,14.666467 36.594056,13.301345 L 40.346408,8.5773019 C 39.320436,7.3225876 38.938964,7.150431 37.649602,6.1664065 L 32.707289,9.7056032 C 31.335043,8.8940304 28.598675,7.6568558 26.995341,7.3043568 L 26.122266,1.6501132 c -0.799821,-0.094085 -3.107395,-0.052306 -3.564478,0 z"
id="path3285" /></g></g></svg>

After

Width:  |  Height:  |  Size: 17 KiB

192
icons/sounddir.svg Normal file
View file

@ -0,0 +1,192 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
version="1.0"
width="48"
height="48"
id="svg97"
sodipodi:docname="sounddir.svg"
xml:space="preserve"
inkscape:version="1.2.2 (732a01da63, 2022-12-09)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"><sodipodi:namedview
id="namedview26"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
showgrid="false"
inkscape:zoom="5.9514821"
inkscape:cx="-9.1573829"
inkscape:cy="61.749325"
inkscape:window-width="1920"
inkscape:window-height="991"
inkscape:window-x="-9"
inkscape:window-y="-9"
inkscape:window-maximized="1"
inkscape:current-layer="svg97" /><defs
id="defs3"><radialGradient
cx="605.71429"
cy="486.64789"
r="117.14286"
fx="605.71429"
fy="486.64789"
id="radialGradient6719"
xlink:href="#linearGradient5060"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(-2.774389,0,0,1.969706,112.7623,-872.8854)" /><linearGradient
id="linearGradient5060"><stop
id="stop5062"
style="stop-color:#000000;stop-opacity:1"
offset="0" /><stop
id="stop5064"
style="stop-color:#000000;stop-opacity:0"
offset="1" /></linearGradient><radialGradient
cx="605.71429"
cy="486.64789"
r="117.14286"
fx="605.71429"
fy="486.64789"
id="radialGradient6717"
xlink:href="#linearGradient5060"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(2.774389,0,0,1.969706,-1891.633,-872.8854)" /><linearGradient
id="linearGradient5048"><stop
id="stop5050"
style="stop-color:#000000;stop-opacity:0"
offset="0" /><stop
id="stop5056"
style="stop-color:#000000;stop-opacity:1"
offset="0.5" /><stop
id="stop5052"
style="stop-color:#000000;stop-opacity:0"
offset="1" /></linearGradient><linearGradient
x1="302.85715"
y1="366.64789"
x2="302.85715"
y2="609.50507"
id="linearGradient6715"
xlink:href="#linearGradient5048"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(2.774389,0,0,1.969706,-1892.179,-872.8854)" /><linearGradient
id="linearGradient4970"><stop
id="stop4972"
style="stop-color:#ffffff;stop-opacity:1"
offset="0" /><stop
id="stop4974"
style="stop-color:#b9b9b9;stop-opacity:1"
offset="1" /></linearGradient><linearGradient
x1="23.150063"
y1="36.103832"
x2="23.150063"
y2="8.6947012"
id="linearGradient4976"
xlink:href="#linearGradient4970"
gradientUnits="userSpaceOnUse" /><radialGradient
xlink:href="#a"
id="d"
cx="4.3920336"
cy="32.307854"
r="6.375"
fx="4.3920336"
fy="32.307854"
gradientTransform="matrix(1,0,0,0.5098,0,16.05392)"
gradientUnits="userSpaceOnUse" /><radialGradient
xlink:href="#a"
id="e"
cx="4.3920336"
cy="32.307854"
r="6.375"
fx="4.3920336"
fy="32.307854"
gradientTransform="matrix(1,0,0,0.5098,0,16.05392)"
gradientUnits="userSpaceOnUse" /><radialGradient
xlink:href="#linearGradient5060"
id="c"
cx="23.25"
cy="35.375"
r="18.5"
fx="23.25"
fy="35.375"
gradientTransform="matrix(1,0,0,0.39865,0,21.2728)"
gradientUnits="userSpaceOnUse" /><linearGradient
id="a"><stop
offset="0"
stop-color="#fff"
id="stop325" /><stop
offset="1"
stop-color="#fff"
stop-opacity="0"
id="stop327" /></linearGradient></defs><g
id="layer1" /><g
id="layer3"><g
transform="matrix(2.262383e-2,0,0,2.086758e-2,43.38343,36.36962)"
id="g6707"
style="display:inline"
inkscape:label="g6707"><rect
width="1339.6335"
height="478.35718"
x="-1559.2523"
y="-150.69685"
id="rect6709"
style="opacity:0.40206185;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" /><path
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"
style="opacity:0.40206185;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" /><path
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"
id="path6713"
style="opacity:0.40206185;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><path
d="M 2.3125,5.4375 C 1.8987305,5.4375 1.551942,5.8362304 1.59375,6.25 L 4.625,38.75 C 4.666808,39.163769 5.1174803,39.5625 5.53125,39.5625 L 6.25,39.5625 C 6.3134628,39.584176 6.330441,39.65625 6.40625,39.65625 L 39.71875,39.65625 C 39.925644,39.65625 40.21924,39.541309 40.40625,39.40625 C 40.936652,39.023186 41.074578,38.790769 41.3125,38.4375 C 43.760628,34.80244 47.125,18.96875 47.125,18.96875 C 47.228443,18.761866 46.997826,18.53125 46.6875,18.53125 L 35.4375,18.53125 L 34.71875,11.4375 C 34.676942,11.02373 34.226269,10.59375 33.8125,10.59375 L 21.09375,10.59375 C 20.503204,10.59375 19.881278,10.2278 19.6875,9.65625 L 18.5625,6.15625 C 18.393248,5.6570373 18.017323,5.4375 17.25,5.4375 L 2.3125,5.4375 z"
transform="matrix(0.987714,0,0,0.993607,-7.07861e-2,9.727255e-2)"
id="path2375"
style="fill:url(#linearGradient4976);fill-opacity:1;fill-rule:nonzero;stroke:#5a5a5a;stroke-width:1.00943172;stroke-linecap:round;stroke-linejoin:round;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><g
id="layer2" /><g
color="#000000"
id="g342"
transform="matrix(0.54899486,0,0,0.56569663,7.467974,12.963828)"><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="path332" /><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="path334" /><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="path336" /><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="path338" /><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="path340" /></g></svg>

After

Width:  |  Height:  |  Size: 9.3 KiB

BIN
icons/splash.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 356 KiB

367
icons/zipsound.svg Normal file
View file

@ -0,0 +1,367 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
sodipodi:docname="zipsound.svg"
inkscape:version="1.2.2 (732a01da63, 2022-12-09)"
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-xdpi="96"
inkscape:export-ydpi="96"
xml:space="preserve"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/"><defs
id="defs3"><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
inkscape:collect="always"
xlink:href="#linearGradient5060"
id="radialGradient6719"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(-2.774389,0,0,1.969706,112.7623,-872.8854)"
cx="605.71429"
cy="486.64789"
fx="605.71429"
fy="486.64789"
r="117.14286" /><linearGradient
inkscape:collect="always"
id="linearGradient5060"><stop
style="stop-color:black;stop-opacity:1;"
offset="0"
id="stop5062" /><stop
style="stop-color:black;stop-opacity:0;"
offset="1"
id="stop5064" /></linearGradient><radialGradient
inkscape:collect="always"
xlink:href="#linearGradient5060"
id="radialGradient6717"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(2.774389,0,0,1.969706,-1891.633,-872.8854)"
cx="605.71429"
cy="486.64789"
fx="605.71429"
fy="486.64789"
r="117.14286" /><linearGradient
id="linearGradient5048"><stop
style="stop-color:black;stop-opacity:0;"
offset="0"
id="stop5050" /><stop
id="stop5056"
offset="0.5"
style="stop-color:black;stop-opacity:1;" /><stop
style="stop-color:black;stop-opacity:0;"
offset="1"
id="stop5052" /></linearGradient><linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5048"
id="linearGradient6715"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(2.774389,0,0,1.969706,-1892.179,-872.8854)"
x1="302.85715"
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"
style="stop-color:#de9523;stop-opacity:1;" /><stop
id="stop4999"
offset="1.0000000"
style="stop-color:#a36d18;stop-opacity:1.0000000;" /></linearGradient><linearGradient
id="linearGradient4987"
inkscape:collect="always"><stop
id="stop4989"
offset="0"
style="stop-color:#a0670c;stop-opacity:1;" /><stop
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"
style="stop-color:#ffffff;stop-opacity:1;" /><stop
id="stop4226"
offset="1.0000000"
style="stop-color:#ffffff;stop-opacity:0.68639052;" /></linearGradient><linearGradient
id="linearGradient4210"><stop
id="stop4212"
offset="0.0000000"
style="stop-color:#eaba6f;stop-opacity:1.0000000;" /><stop
id="stop4214"
offset="1.0000000"
style="stop-color:#b97a1b;stop-opacity:1.0000000;" /></linearGradient><linearGradient
id="linearGradient4192"><stop
id="stop4194"
offset="0"
style="stop-color:#e9b96e;stop-opacity:1;" /><stop
id="stop4196"
offset="1.0000000"
style="stop-color:#f1d19e;stop-opacity:1.0000000;" /></linearGradient><linearGradient
id="linearGradient4182"><stop
id="stop4184"
offset="0.0000000"
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
inkscape:collect="always"
xlink:href="#linearGradient4995"
id="linearGradient2274"
gradientUnits="userSpaceOnUse"
x1="36.288929"
y1="14.661557"
x2="47.065835"
y2="15.267649" /><linearGradient
inkscape:collect="always"
xlink:href="#linearGradient4192"
id="linearGradient2277"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.000000,0.000000,0.000000,0.986355,0.000000,0.316638)"
x1="25.381256"
y1="24.720648"
x2="24.119167"
y2="16.170370" /><linearGradient
inkscape:collect="always"
xlink:href="#linearGradient4182"
id="linearGradient2280"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.000000,0.000000,0.000000,1.039184,0.000000,-4.057054e-2)"
x1="16.148972"
y1="12.636667"
x2="34.193642"
y2="12.636667" /><linearGradient
inkscape:collect="always"
xlink:href="#linearGradient4987"
id="linearGradient2282"
gradientUnits="userSpaceOnUse"
x1="21.906841"
y1="9.7577486"
x2="22.071806"
y2="16.020695" /><linearGradient
inkscape:collect="always"
xlink:href="#linearGradient4222"
id="linearGradient2285"
gradientUnits="userSpaceOnUse"
x1="18.706615"
y1="19.912336"
x2="30.014812"
y2="47.388485" /><linearGradient
inkscape:collect="always"
xlink:href="#linearGradient4210"
id="linearGradient2288"
gradientUnits="userSpaceOnUse"
x1="24.990499"
y1="34.004856"
x2="24.990499"
y2="22.585211" /><radialGradient
xlink:href="#a"
id="d"
cx="4.3920336"
cy="32.307854"
r="6.375"
fx="4.3920336"
fy="32.307854"
gradientTransform="matrix(1,0,0,0.5098,0,16.05392)"
gradientUnits="userSpaceOnUse" /><radialGradient
xlink:href="#a"
id="e"
cx="4.3920336"
cy="32.307854"
r="6.375"
fx="4.3920336"
fy="32.307854"
gradientTransform="matrix(1,0,0,0.5098,0,16.05392)"
gradientUnits="userSpaceOnUse" /><radialGradient
xlink:href="#linearGradient5060"
id="c"
cx="23.25"
cy="35.375"
r="18.5"
fx="23.25"
fy="35.375"
gradientTransform="matrix(1,0,0,0.39865,0,21.2728)"
gradientUnits="userSpaceOnUse" /><linearGradient
id="a"><stop
offset="0"
stop-color="#fff"
id="stop3397" /><stop
offset="1"
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-width="1920"
stroke="#c17d11"
fill="#e9b96e"
inkscape:showpageshadow="false"
inkscape:document-units="px"
inkscape:grid-bbox="true"
showgrid="false"
inkscape:current-layer="layer1"
inkscape:cy="80.079843"
inkscape:cx="83.615377"
inkscape:zoom="2.8284271"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
borderopacity="0.16470588"
bordercolor="#666666"
pagecolor="#ffffff"
id="base"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:window-maximized="1" /><metadata
id="metadata4"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:creator><cc:Agent><dc:title>Jakub Steiner</dc:title></cc:Agent></dc:creator><dc:source>http://jimmac.musichall.cz/</dc:source><dc:subject><rdf:Bag><rdf:li>package</rdf:li><rdf:li>archive</rdf:li><rdf:li>tarball</rdf:li><rdf:li>tar</rdf:li><rdf:li>bzip</rdf:li><rdf:li>gzip</rdf:li><rdf:li>zip</rdf:li><rdf:li>arj</rdf:li><rdf:li>tar</rdf:li><rdf:li>jar</rdf:li></rdf:Bag></dc:subject><cc:license
rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" /></cc:Work><cc:License
rdf:about="http://creativecommons.org/licenses/publicdomain/"><cc:permits
rdf:resource="http://creativecommons.org/ns#Reproduction" /><cc:permits
rdf:resource="http://creativecommons.org/ns#Distribution" /><cc:permits
rdf:resource="http://creativecommons.org/ns#DerivativeWorks" /></cc:License></rdf:RDF></metadata><g
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,9.3965414,4.9348444)"><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></g></svg>

After

Width:  |  Height:  |  Size: 18 KiB

4
locale/.clang-format Normal file
View file

@ -0,0 +1,4 @@
---
DisableFormat: true
SortIncludes: Never
...

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

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.

View file

@ -1,5 +1,5 @@
{ {
"name": "Traditional Chinese (Hong Kong standard) to Simplified Chinese", "name": "Traditional Chinese (Hong Kong variant) to Simplified Chinese",
"segmentation": { "segmentation": {
"type": "mmseg", "type": "mmseg",
"dict": { "dict": {

22
opencc/hk2t.json Normal file
View file

@ -0,0 +1,22 @@
{
"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"
}]
}
}]
}

View file

@ -1,5 +1,5 @@
{ {
"name": "Simplified Chinese to Traditional Chinese (Hong Kong standard)", "name": "Simplified Chinese to Traditional Chinese (Hong Kong variant)",
"segmentation": { "segmentation": {
"type": "mmseg", "type": "mmseg",
"dict": { "dict": {
@ -20,14 +20,8 @@
} }
}, { }, {
"dict": { "dict": {
"type": "group", "type": "ocd2",
"dicts": [{ "file": "HKVariants.ocd2"
"type": "ocd2",
"file": "HKVariantsPhrases.ocd2"
}, {
"type": "ocd2",
"file": "HKVariants.ocd2"
}]
} }
}] }]
} }

View file

@ -1,22 +1,16 @@
{ {
"name": "Traditional Chinese to Traditional Chinese (Hong Kong standard)", "name": "Traditional Chinese to Traditional Chinese (Hong Kong variant)",
"segmentation": { "segmentation": {
"type": "mmseg", "type": "mmseg",
"dict": { "dict": {
"type": "ocd2", "type": "ocd2",
"file": "HKVariantsPhrases.ocd2" "file": "HKVariants.ocd2"
} }
}, },
"conversion_chain": [{ "conversion_chain": [{
"dict": { "dict": {
"type": "group", "type": "ocd2",
"dicts": [{ "file": "HKVariants.ocd2"
"type": "ocd2",
"file": "HKVariantsPhrases.ocd2"
}, {
"type": "ocd2",
"file": "HKVariants.ocd2"
}]
} }
}] }]
} }

22
opencc/tw2t.json Normal file
View file

@ -0,0 +1,22 @@
{
"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