1
0
Fork 0
mirror of synced 2024-05-20 04:12:28 +12:00
This commit is contained in:
Rafał Mikrut 2022-01-05 23:46:20 +01:00
parent 47f130b2d0
commit 240031530a
25 changed files with 123 additions and 4546 deletions

3
.github/FUNDING.yml vendored
View file

@ -1,3 +0,0 @@
# These are supported funding model platforms
github: qarmin # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]

View file

@ -1,239 +0,0 @@
name: 🐧 Linux
on:
push:
pull_request:
schedule:
- cron: '0 0 * * 2'
env:
CARGO_TERM_COLOR: always
jobs:
linux-cli:
strategy:
matrix:
toolchain: [ stable ]
type: [ release ]
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v2
- uses: actions-rs/toolchain@v1
with:
toolchain: ${{ matrix.toolchain }}
override: true
- uses: actions/cache@v2
with:
path: |
target
key: linux-cli-${{github.ref}}-${{github.sha}}
restore-keys: |
linux-cli-${{github.ref}}-${{github.sha}}
- name: Install basic libraries
run: sudo apt-get update; sudo apt install libgtk-3-dev libasound2-dev -y
- name: Build CLI Debug
run: cargo build --bin czkawka_cli
env:
CARGO_INCREMENTAL: 0
RUSTFLAGS: "-C debuginfo=0 -D warnings"
if: ${{ matrix.type == 'debug'}}
- name: Build CLI Release
run: cargo build --release --bin czkawka_cli
env:
CARGO_INCREMENTAL: 0
RUSTFLAGS: "-C debuginfo=0 -D warnings"
if: ${{ matrix.type == 'release'}}
- name: Store Linux CLI
uses: actions/upload-artifact@v2
with:
name: czkawka_cli-${{ runner.os }}-${{ matrix.toolchain }}
path: target/release/czkawka_cli
if: ${{ matrix.type == 'release' }}
# Duplicate finder checks included and excluded directories
# Others are just check delete files number
- name: Linux Regression Test
run: |
wget https://github.com/qarmin/czkawka/releases/download/1.1.0/TestSuite.zip
unzip TestSuite.zip -d TestSuite
python3 misc/check_results.py TestSuite 15 8
target/release/czkawka_cli dup -d "$(pwd)/TestSuite" -D aen -m 1024
python3 misc/check_results.py TestSuite 7 8
rm -rf TestSuite
unzip TestSuite.zip -d TestSuite
target/release/czkawka_cli dup -d "$(pwd)/TestSuite" -D aen -m 1024
python3 misc/check_results.py TestSuite 7 8
rm -rf TestSuite
unzip TestSuite.zip -d TestSuite
target/release/czkawka_cli dup -d "$(pwd)/TestSuite" -x TEXT -D aeo -m 1024
python3 misc/check_results.py TestSuite 14 8
rm -rf TestSuite
unzip TestSuite.zip -d TestSuite
target/release/czkawka_cli dup -d "$(pwd)/TestSuite" -e "$(pwd)/TestSuite/SubFolder" -D aeo -m 1024
python3 misc/check_results.py TestSuite 13 8
rm -rf TestSuite
unzip TestSuite.zip -d TestSuite
target/release/czkawka_cli dup -d "$(pwd)/TestSuite" -m 1500 -D aeo
python3 misc/check_results.py TestSuite 8 8
rm -rf TestSuite
unzip TestSuite.zip -d TestSuite
target/release/czkawka_cli dup -d "$(pwd)/TestSuite" -R -m 1024
python3 misc/check_results.py TestSuite 15 8
target/release/czkawka_cli dup -d "$(pwd)/TestSuite" -R -D aeo -m 1024
python3 misc/check_results.py TestSuite 13 8
target/release/czkawka_cli big -d "$(pwd)/TestSuite"
rm -rf TestSuite
unzip TestSuite.zip -d TestSuite
target/release/czkawka_cli empty-files -d "$(pwd)/TestSuite"
python3 misc/check_results.py TestSuite 15 8
target/release/czkawka_cli empty-files -d "$(pwd)/TestSuite" -D
python3 misc/check_results.py TestSuite 13 8
rm -rf TestSuite
unzip TestSuite.zip -d TestSuite
target/release/czkawka_cli empty-folders -d "$(pwd)/TestSuite"
python3 misc/check_results.py TestSuite 15 8
target/release/czkawka_cli empty-folders -d "$(pwd)/TestSuite" -D
python3 misc/check_results.py TestSuite 15 2
rm -rf TestSuite
unzip TestSuite.zip -d TestSuite
target/release/czkawka_cli temp -d "$(pwd)/TestSuite"
python3 misc/check_results.py TestSuite 15 8
target/release/czkawka_cli temp -d "$(pwd)/TestSuite" -D
python3 misc/check_results.py TestSuite 14 8
if: ${{ matrix.type == 'release' }}
linux-gui:
strategy:
matrix:
toolchain: [ stable, 1.53.0 ]
type: [ release ]
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v2
- uses: actions-rs/toolchain@v1
with:
toolchain: ${{ matrix.toolchain }}
override: true
- uses: actions/cache@v2
with:
path: |
target
key: linux-gui-${{github.ref}}-${{github.sha}}
restore-keys: |
linux-gui-${{github.ref}}-${{github.sha}}
- name: Install Gtk, Mingw, unzip, zip and wget
run: sudo apt-get update; sudo apt install libgtk-3-dev libasound2-dev -y
- name: Build GUI Debug
run: cargo build --bin czkawka_gui
env:
CARGO_INCREMENTAL: 0
RUSTFLAGS: "-C debuginfo=0 -D warnings"
if: ${{ matrix.type == 'debug'}}
- name: Build GUI Release
run: cargo build --release --bin czkawka_gui
env:
CARGO_INCREMENTAL: 0
RUSTFLAGS: "-C debuginfo=0 -D warnings"
if: ${{ matrix.type == 'release'}}
- name: Store Linux GUI
uses: actions/upload-artifact@v2
with:
name: czkawka_gui-${{ runner.os }}-${{ matrix.toolchain }}
path: target/release/czkawka_gui
if: ${{ matrix.type == 'release' }}
- name: Minimal AppImage
run: |
pwd
rm -rf czkawka_gui
cp target/release/czkawka_gui .
strip czkawka_gui
wget https://github.com/AppImage/pkg2appimage/releases/download/continuous/pkg2appimage-1807-x86_64.AppImage
chmod +x pkg2appimage-1807-x86_64.AppImage
./pkg2appimage-1807-x86_64.AppImage misc/czkawka-appimage-recipe.yml
mv out/Czkawka*.AppImage out/czkawka_gui-minimal.AppImage
- name: Minimal Appimage Upload
uses: actions/upload-artifact@v2
with:
name: czkawka_gui-${{ matrix.toolchain }}_minimal_AppImage
path: out/*.AppImage
linux-appimage-gui:
strategy:
matrix:
toolchain: [ stable ]
type: [ release ]
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v2
- uses: actions-rs/toolchain@v1
with:
toolchain: ${{ matrix.toolchain }}
override: true
- uses: actions/cache@v2
with:
path: |
target
key: linux-appimage-gui-${{github.ref}}-${{github.sha}}
restore-keys: |
linux-appimage-gui-${{github.ref}}-${{github.sha}}
- name: Install Gtk,
run: sudo apt-get update; sudo apt install libgtk-3-dev libasound2-dev librsvg2-dev wget -y
- name: Build GUI Release
run: cargo build --release --bin czkawka_gui
env:
CARGO_INCREMENTAL: 0
RUSTFLAGS: "-C debuginfo=0 -D warnings"
- name: Download appimage dependiences
run: |
wget -c "https://raw.githubusercontent.com/linuxdeploy/linuxdeploy-plugin-gtk/master/linuxdeploy-plugin-gtk.sh"
wget -c "https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-x86_64.AppImage"
chmod +x linuxdeploy-plugin-gtk.sh
chmod +x linuxdeploy-x86_64.AppImage
mkdir -p AppDir/usr/bin
cp target/release/czkawka_gui AppDir/usr/bin
./linuxdeploy-x86_64.AppImage --appdir AppDir --plugin gtk --output appimage --icon-file data/icons/com.github.qarmin.czkawka.svg --desktop-file data/com.github.qarmin.czkawka.desktop
- name: Store Linux Appimage GUI
uses: actions/upload-artifact@v2
with:
name: czkawka_gui-appimage-${{ runner.os }}-${{ matrix.toolchain }}
path: Czkawka*.AppImage

View file

@ -1,97 +0,0 @@
name: 🍎 MacOS
on:
push:
pull_request:
schedule:
- cron: '0 0 * * 2'
env:
CARGO_TERM_COLOR: always
jobs:
macos-cli:
strategy:
matrix:
toolchain: [ stable ]
type: [ release ]
runs-on: macos-10.15
steps:
- uses: actions/checkout@v2
- uses: actions-rs/toolchain@v1
with:
toolchain: ${{ matrix.toolchain }}
override: true
- uses: actions/cache@v2
with:
path: |
target
key: mac-cli-${{github.ref}}-${{github.sha}}
restore-keys: |
mac-cli-${{github.ref}}-${{github.sha}}
- name: Build CLI Debug
run: cargo build --bin czkawka_cli
env:
CARGO_INCREMENTAL: 0
RUSTFLAGS: "-C debuginfo=0 -D warnings"
if: ${{ matrix.type == 'debug'}}
- name: Build CLI Release
run: cargo build --release --bin czkawka_cli
env:
CARGO_INCREMENTAL: 0
RUSTFLAGS: "-C debuginfo=0 -D warnings"
if: ${{ matrix.type == 'release'}}
- name: Store MacOS CLI
uses: actions/upload-artifact@v2
with:
name: czkawka_cli-${{ runner.os }}-${{ matrix.toolchain }}
path: target/release/czkawka_cli
if: ${{ matrix.type == 'release' }}
macos-gui:
strategy:
matrix:
toolchain: [ stable ]
type: [ release ]
runs-on: macos-10.15
steps:
- uses: actions/checkout@v2
- uses: actions-rs/toolchain@v1
with:
toolchain: ${{ matrix.toolchain }}
override: true
- name: Install Homebrew
run: /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
- name: Override link[WORKAROUND] # Looks that this is a bug with current homebrew or Github CI
run: rm '/usr/local/bin/2to3'
- name: Install GTK3
run: brew install rust gtk+3
- name: Build GUI Debug
run: cargo build --bin czkawka_gui
env:
CARGO_INCREMENTAL: 0
RUSTFLAGS: "-C debuginfo=0 -D warnings"
if: ${{ matrix.type == 'debug'}}
- name: Build GUI Release
run: cargo build --release --bin czkawka_gui
env:
CARGO_INCREMENTAL: 0
RUSTFLAGS: "-C debuginfo=0 -D warnings"
if: ${{ matrix.type == 'release'}}
- name: Store MacOS GUI
uses: actions/upload-artifact@v2
with:
name: czkawka_gui-${{ runner.os }}-${{ matrix.toolchain }}
path: target/release/czkawka_gui
if: ${{ matrix.type == 'release' }}

View file

@ -1,44 +0,0 @@
name: Quality
on:
push:
pull_request:
schedule:
- cron: '0 0 * * 2'
env:
CARGO_TERM_COLOR: always
jobs:
quality:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/cache@v2
with:
path: |
target
key: quality-${{github.ref}}-${{github.sha}}
restore-keys: |
quality-cli-${{github.ref}}-${{github.sha}}
- uses: actions-rs/toolchain@v1
with:
toolchain: stable
components: rustfmt, clippy
override: true
- name: Install Gtk
run: sudo apt-get update; sudo apt install -y libgtk-3-dev libasound2-dev
- name: Check the format
run: cargo fmt --all -- --check
# type complexity must be ignored because we use huge templates for queries
- name: Run clippy
run: >
cargo clippy
--all-targets
--all-features
--
-D warnings

View file

@ -148,7 +148,7 @@ jobs:
python misc/check_results.py TestSuite 14 8
if: ${{ matrix.type == 'release' }}
windows-gui:
windows-release-gui:
strategy:
matrix:
toolchain: [ stable ]
@ -173,7 +173,7 @@ jobs:
- name: Install Gtk, Mingw, unzip, zip and wget
run: sudo apt-get update; sudo apt install mingw-w64 libgtk-3-dev unzip wget zip -y
- name: Build GUI Release Cross Compile
- name: Release normal(gui)
run: |
rustup target add x86_64-pc-windows-gnu
@ -181,74 +181,19 @@ jobs:
echo "linker = \"x86_64-w64-mingw32-gcc\"" >> ~/.cargo/config
echo "ar = \"x86_64-w64-mingw32-gcc-ar\"" >> ~/.cargo/config
GTK_LIBRARY="$(pwd)/gtk_library"
GTK_APP="$(pwd)/gtk_app"
GTK_THEME="$(pwd)/gtk_theme"
wget https://github.com/qarmin/gtk_library_store/releases/download/3.24.0/mingw64.zip
unzip mingw64.zip -d $GTK_LIBRARY
GTK_LIBRARY="$GTK_LIBRARY/mingw64"
wget https://github.com/nrhodes91/AdMin/archive/master.zip
unzip master.zip -d $GTK_THEME
PKG_CONFIG_ALLOW_CROSS=1 PKG_CONFIG_PATH="$GTK_LIBRARY/lib/pkgconfig" RUSTFLAGS="-L $GTK_LIBRARY/lib" cargo build --target=x86_64-pc-windows-gnu --bin czkawka_gui --release
strip target/x86_64-pc-windows-gnu/release/czkawka_gui.exe
mkdir $GTK_APP
cp target/x86_64-pc-windows-gnu/release/czkawka_gui.exe $GTK_APP
cp $GTK_LIBRARY/bin/*.dll $GTK_APP
mkdir -p $GTK_APP/share/glib-2.0/schemas
mkdir $GTK_APP/share/icons
cp $GTK_LIBRARY/share/glib-2.0/schemas/* $GTK_APP/share/glib-2.0/schemas
cp -r $GTK_LIBRARY/share/icons/* $GTK_APP/share/icons
mkdir $GTK_APP/lib
cp -r $GTK_LIBRARY/lib/gdk-pixbuf-2.0 $GTK_APP/lib
mkdir -p $GTK_APP/share/themes
mkdir -p $GTK_APP/share/gtk-3.0
echo "[Settings]" > $GTK_APP/share/gtk-3.0/settings.ini
echo "gtk-theme-name = admin-gtk3-dark-osx" >> $GTK_APP/share/gtk-3.0/settings.ini
echo "gtk-font-name = Segoe UI 10" >> $GTK_APP/share/gtk-3.0/settings.ini
echo "gtk-xft-rgba = rgb" >> $GTK_APP/share/gtk-3.0/settings.ini
cp $GTK_THEME/AdMin-master/admin-gtk3-dark-osx $GTK_APP/share/themes -r -L
# This part is only unique for Czkawka
# This code allows to check which icons are used in Czkawka
# cd czkawka/ui
# rg icon-name
rm -rf $GTK_APP/share/icons/Adwaita/16x16
rm -rf $GTK_APP/share/icons/Adwaita/22x22
rm -rf $GTK_APP/share/icons/Adwaita/24x24
rm -rf $GTK_APP/share/icons/Adwaita/256x256
rm -rf $GTK_APP/share/icons/Adwaita/32x32
rm -rf $GTK_APP/share/icons/Adwaita/48x48
rm -rf $GTK_APP/share/icons/Adwaita/512x512
rm -rf $GTK_APP/share/icons/Adwaita/64x64
rm -rf $GTK_APP/share/icons/Adwaita/8x8
rm -rf $GTK_APP/share/icons/Adwaita/96x96
rm -rf $GTK_APP/share/icons/Adwaita/cursors
rm -rf $GTK_APP/share/icons/Adwaita/scalable
rm -rf $GTK_APP/share/icons/Adwaita/scalable-up-to-32
rm -rf $GTK_APP/share/icons/hicolor
wget https://github.com/qarmin/gtk_library_store/releases/download/3.24.0/czkawka_icons.zip
unzip czkawka_icons.zip -d $GTK_APP/share/icons/Adwaita
zip -r gtk_app.zip $GTK_APP
PKG_CONFIG_ALLOW_CROSS=1 cargo build --target=x86_64-pc-windows-gnu --bin czkawka_gui --release
env:
CARGO_INCREMENTAL: 0
RUSTFLAGS: "-C debuginfo=0 -D warnings"
if: ${{ matrix.type == 'release'}}
- name: Store Windows GUI CrossComplile
uses: actions/upload-artifact@v2
with:
name: czkawka_gui-Windows-${{ matrix.toolchain }}
path: gtk_app.zip
if: ${{ matrix.type == 'release' }}
name: czkawka_gui-Windows-release-normal-${{ matrix.toolchain }}
path: target/release/czkawka_gui.exe
windows-gui-relase-console:
windows-debug-gui:
strategy:
matrix:
toolchain: [ stable ]
@ -273,83 +218,73 @@ jobs:
- name: Install Gtk, Mingw, unzip, zip and wget
run: sudo apt-get update; sudo apt install mingw-w64 libgtk-3-dev unzip wget zip -y
- name: Build GUI Release Cross Compile
- name: Release debug(gui)
run: |
sed -i 's/windows_subsystem = "windows"/windows_subsystem = "console"/' czkawka_gui/src/main.rs
rustup target add x86_64-pc-windows-gnu
echo "[target.x86_64-pc-windows-gnu]" > ~/.cargo/config
echo "linker = \"x86_64-w64-mingw32-gcc\"" >> ~/.cargo/config
echo "ar = \"x86_64-w64-mingw32-gcc-ar\"" >> ~/.cargo/config
GTK_LIBRARY="$(pwd)/gtk_library"
GTK_APP="$(pwd)/gtk_app"
GTK_THEME="$(pwd)/gtk_theme"
wget https://github.com/qarmin/gtk_library_store/releases/download/3.24.0/mingw64.zip
unzip mingw64.zip -d $GTK_LIBRARY
GTK_LIBRARY="$GTK_LIBRARY/mingw64"
wget https://github.com/nrhodes91/AdMin/archive/master.zip
unzip master.zip -d $GTK_THEME
PKG_CONFIG_ALLOW_CROSS=1 PKG_CONFIG_PATH="$GTK_LIBRARY/lib/pkgconfig" RUSTFLAGS="-L $GTK_LIBRARY/lib" cargo build --target=x86_64-pc-windows-gnu --bin czkawka_gui --release
strip target/x86_64-pc-windows-gnu/release/czkawka_gui.exe
mkdir $GTK_APP
cp target/x86_64-pc-windows-gnu/release/czkawka_gui.exe $GTK_APP
cp $GTK_LIBRARY/bin/*.dll $GTK_APP
mkdir -p $GTK_APP/share/glib-2.0/schemas
mkdir $GTK_APP/share/icons
cp $GTK_LIBRARY/share/glib-2.0/schemas/* $GTK_APP/share/glib-2.0/schemas
cp -r $GTK_LIBRARY/share/icons/* $GTK_APP/share/icons
mkdir $GTK_APP/lib
cp -r $GTK_LIBRARY/lib/gdk-pixbuf-2.0 $GTK_APP/lib
mkdir -p $GTK_APP/share/themes
mkdir -p $GTK_APP/share/gtk-3.0
echo "[Settings]" > $GTK_APP/share/gtk-3.0/settings.ini
echo "gtk-theme-name = admin-gtk3-dark-osx" >> $GTK_APP/share/gtk-3.0/settings.ini
echo "gtk-font-name = Segoe UI 10" >> $GTK_APP/share/gtk-3.0/settings.ini
echo "gtk-xft-rgba = rgb" >> $GTK_APP/share/gtk-3.0/settings.ini
cp $GTK_THEME/AdMin-master/admin-gtk3-dark-osx $GTK_APP/share/themes -r -L
# This part is only unique for Czkawka
# This code allows to check which icons are used in Czkawka
# cd czkawka/ui
# rg icon-name
rm -rf $GTK_APP/share/icons/Adwaita/16x16
rm -rf $GTK_APP/share/icons/Adwaita/22x22
rm -rf $GTK_APP/share/icons/Adwaita/24x24
rm -rf $GTK_APP/share/icons/Adwaita/256x256
rm -rf $GTK_APP/share/icons/Adwaita/32x32
rm -rf $GTK_APP/share/icons/Adwaita/48x48
rm -rf $GTK_APP/share/icons/Adwaita/512x512
rm -rf $GTK_APP/share/icons/Adwaita/64x64
rm -rf $GTK_APP/share/icons/Adwaita/8x8
rm -rf $GTK_APP/share/icons/Adwaita/96x96
rm -rf $GTK_APP/share/icons/Adwaita/cursors
rm -rf $GTK_APP/share/icons/Adwaita/scalable
rm -rf $GTK_APP/share/icons/Adwaita/scalable-up-to-32
rm -rf $GTK_APP/share/icons/hicolor
wget https://github.com/qarmin/gtk_library_store/releases/download/3.24.0/czkawka_icons.zip
unzip czkawka_icons.zip -d $GTK_APP/share/icons/Adwaita
zip -r gtk_app.zip $GTK_APP
PKG_CONFIG_ALLOW_CROSS=1 cargo build --target=x86_64-pc-windows-gnu --bin czkawka_gui
env:
CARGO_INCREMENTAL: 0
RUSTFLAGS: "-C debuginfo=0 -D warnings"
if: ${{ matrix.type == 'release'}}
- name: Store Windows GUI CrossComplile
uses: actions/upload-artifact@v2
with:
name: czkawka_gui-Windows-release-normal-${{ matrix.toolchain }}
path: target/debug/czkawka_gui.exe
windows-release-console:
strategy:
matrix:
toolchain: [ stable ]
type: [ release ]
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v2
- uses: actions-rs/toolchain@v1
with:
toolchain: ${{ matrix.toolchain }}
override: true
- uses: actions/cache@v2
with:
path: |
target
key: windows-gui-${{github.ref}}-${{github.sha}}
restore-keys: |
windows-gui-${{github.ref}}-${{github.sha}}
- name: Install Gtk, Mingw, unzip, zip and wget
run: sudo apt-get update; sudo apt install mingw-w64 libgtk-3-dev unzip wget zip -y
- name: Release normal(gui)
run: |
sed -i 's/windows_subsystem = "windows"/windows_subsystem = "console"/' src/main.rs
rustup target add x86_64-pc-windows-gnu
echo "[target.x86_64-pc-windows-gnu]" > ~/.cargo/config
echo "linker = \"x86_64-w64-mingw32-gcc\"" >> ~/.cargo/config
echo "ar = \"x86_64-w64-mingw32-gcc-ar\"" >> ~/.cargo/config
PKG_CONFIG_ALLOW_CROSS=1 cargo build --target=x86_64-pc-windows-gnu --bin czkawka_gui --release
env:
CARGO_INCREMENTAL: 0
RUSTFLAGS: "-C debuginfo=0 -D warnings"
- name: F
uses: actions/upload-artifact@v2
with:
name: czkawka_gui-Windows-release-console-${{ matrix.toolchain }}
path: gtk_app.zip
if: ${{ matrix.type == 'release' }}
path: target/release/czkawka_gui.exe
windows-gui-windows:
windows-debug-console:
strategy:
matrix:
toolchain: [ stable ]
@ -374,179 +309,23 @@ jobs:
- name: Install Gtk, Mingw, unzip, zip and wget
run: sudo apt-get update; sudo apt install mingw-w64 libgtk-3-dev unzip wget zip -y
- name: Build GUI Debug Cross Compile
- name: Release debug(gui)
run: |
sed -i 's/windows_subsystem = "windows"/windows_subsystem = "console"/' src/main.rs
rustup target add x86_64-pc-windows-gnu
echo "[target.x86_64-pc-windows-gnu]" > ~/.cargo/config
echo "linker = \"x86_64-w64-mingw32-gcc\"" >> ~/.cargo/config
echo "ar = \"x86_64-w64-mingw32-gcc-ar\"" >> ~/.cargo/config
GTK_LIBRARY="$(pwd)/gtk_library"
GTK_APP="$(pwd)/gtk_app"
GTK_THEME="$(pwd)/gtk_theme"
wget https://github.com/qarmin/gtk_library_store/releases/download/3.24.0/mingw64.zip
unzip mingw64.zip -d $GTK_LIBRARY
GTK_LIBRARY="$GTK_LIBRARY/mingw64"
wget https://github.com/nrhodes91/AdMin/archive/master.zip
unzip master.zip -d $GTK_THEME
PKG_CONFIG_ALLOW_CROSS=1 PKG_CONFIG_PATH="$GTK_LIBRARY/lib/pkgconfig" RUSTFLAGS="-L $GTK_LIBRARY/lib" cargo build --target=x86_64-pc-windows-gnu --bin czkawka_gui
strip target/x86_64-pc-windows-gnu/debug/czkawka_gui.exe
mkdir $GTK_APP
cp target/x86_64-pc-windows-gnu/debug/czkawka_gui.exe $GTK_APP
cp $GTK_LIBRARY/bin/*.dll $GTK_APP
mkdir -p $GTK_APP/share/glib-2.0/schemas
mkdir $GTK_APP/share/icons
cp $GTK_LIBRARY/share/glib-2.0/schemas/* $GTK_APP/share/glib-2.0/schemas
cp -r $GTK_LIBRARY/share/icons/* $GTK_APP/share/icons
mkdir $GTK_APP/lib
cp -r $GTK_LIBRARY/lib/gdk-pixbuf-2.0 $GTK_APP/lib
mkdir -p $GTK_APP/share/themes
mkdir -p $GTK_APP/share/gtk-3.0
echo "[Settings]" > $GTK_APP/share/gtk-3.0/settings.ini
echo "gtk-theme-name = admin-gtk3-dark-osx" >> $GTK_APP/share/gtk-3.0/settings.ini
echo "gtk-font-name = Segoe UI 10" >> $GTK_APP/share/gtk-3.0/settings.ini
echo "gtk-xft-rgba = rgb" >> $GTK_APP/share/gtk-3.0/settings.ini
cp $GTK_THEME/AdMin-master/admin-gtk3-dark-osx $GTK_APP/share/themes -r -L
# This part is only unique for Czkawka
# This code allows to check which icons are used in Czkawka
# cd czkawka/ui
# rg icon-name
rm -rf $GTK_APP/share/icons/Adwaita/16x16
rm -rf $GTK_APP/share/icons/Adwaita/22x22
rm -rf $GTK_APP/share/icons/Adwaita/24x24
rm -rf $GTK_APP/share/icons/Adwaita/256x256
rm -rf $GTK_APP/share/icons/Adwaita/32x32
rm -rf $GTK_APP/share/icons/Adwaita/48x48
rm -rf $GTK_APP/share/icons/Adwaita/512x512
rm -rf $GTK_APP/share/icons/Adwaita/64x64
rm -rf $GTK_APP/share/icons/Adwaita/8x8
rm -rf $GTK_APP/share/icons/Adwaita/96x96
rm -rf $GTK_APP/share/icons/Adwaita/cursors
rm -rf $GTK_APP/share/icons/Adwaita/scalable
rm -rf $GTK_APP/share/icons/Adwaita/scalable-up-to-32
rm -rf $GTK_APP/share/icons/hicolor
wget https://github.com/qarmin/gtk_library_store/releases/download/3.24.0/czkawka_icons.zip
unzip czkawka_icons.zip -d $GTK_APP/share/icons/Adwaita
zip -r gtk_app.zip $GTK_APP
PKG_CONFIG_ALLOW_CROSS=1 cargo build --target=x86_64-pc-windows-gnu --bin czkawka_gui
env:
CARGO_INCREMENTAL: 0
RUSTFLAGS: "-C debuginfo=0 -D warnings"
if: ${{ matrix.type == 'release'}}
- name: Store Windows GUI CrossComplile
uses: actions/upload-artifact@v2
with:
name: czkawka_gui-Windows-windows-${{ matrix.toolchain }}
path: gtk_app.zip
if: ${{ matrix.type == 'release' }}
windows-gui-console:
strategy:
matrix:
toolchain: [ stable ]
type: [ release ]
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v2
- uses: actions-rs/toolchain@v1
with:
toolchain: ${{ matrix.toolchain }}
override: true
- uses: actions/cache@v2
with:
path: |
target
key: windows-gui-${{github.ref}}-${{github.sha}}
restore-keys: |
windows-gui-${{github.ref}}-${{github.sha}}
- name: Install Gtk, Mingw, unzip, zip and wget
run: sudo apt-get update; sudo apt install mingw-w64 libgtk-3-dev unzip wget zip -y
- name: Build GUI Debug Cross Compile
run: |
sed -i 's/windows_subsystem = "windows"/windows_subsystem = "console"/' czkawka_gui/src/main.rs
rustup target add x86_64-pc-windows-gnu
echo "[target.x86_64-pc-windows-gnu]" > ~/.cargo/config
echo "linker = \"x86_64-w64-mingw32-gcc\"" >> ~/.cargo/config
echo "ar = \"x86_64-w64-mingw32-gcc-ar\"" >> ~/.cargo/config
GTK_LIBRARY="$(pwd)/gtk_library"
GTK_APP="$(pwd)/gtk_app"
GTK_THEME="$(pwd)/gtk_theme"
wget https://github.com/qarmin/gtk_library_store/releases/download/3.24.0/mingw64.zip
unzip mingw64.zip -d $GTK_LIBRARY
GTK_LIBRARY="$GTK_LIBRARY/mingw64"
wget https://github.com/nrhodes91/AdMin/archive/master.zip
unzip master.zip -d $GTK_THEME
PKG_CONFIG_ALLOW_CROSS=1 PKG_CONFIG_PATH="$GTK_LIBRARY/lib/pkgconfig" RUSTFLAGS="-L $GTK_LIBRARY/lib" cargo build --target=x86_64-pc-windows-gnu --bin czkawka_gui
strip target/x86_64-pc-windows-gnu/debug/czkawka_gui.exe
mkdir $GTK_APP
cp target/x86_64-pc-windows-gnu/debug/czkawka_gui.exe $GTK_APP
cp $GTK_LIBRARY/bin/*.dll $GTK_APP
mkdir -p $GTK_APP/share/glib-2.0/schemas
mkdir $GTK_APP/share/icons
cp $GTK_LIBRARY/share/glib-2.0/schemas/* $GTK_APP/share/glib-2.0/schemas
cp -r $GTK_LIBRARY/share/icons/* $GTK_APP/share/icons
mkdir $GTK_APP/lib
cp -r $GTK_LIBRARY/lib/gdk-pixbuf-2.0 $GTK_APP/lib
mkdir -p $GTK_APP/share/themes
mkdir -p $GTK_APP/share/gtk-3.0
echo "[Settings]" > $GTK_APP/share/gtk-3.0/settings.ini
echo "gtk-theme-name = admin-gtk3-dark-osx" >> $GTK_APP/share/gtk-3.0/settings.ini
echo "gtk-font-name = Segoe UI 10" >> $GTK_APP/share/gtk-3.0/settings.ini
echo "gtk-xft-rgba = rgb" >> $GTK_APP/share/gtk-3.0/settings.ini
cp $GTK_THEME/AdMin-master/admin-gtk3-dark-osx $GTK_APP/share/themes -r -L
# This part is only unique for Czkawka
# This code allows to check which icons are used in Czkawka
# cd czkawka/ui
# rg icon-name
rm -rf $GTK_APP/share/icons/Adwaita/16x16
rm -rf $GTK_APP/share/icons/Adwaita/22x22
rm -rf $GTK_APP/share/icons/Adwaita/24x24
rm -rf $GTK_APP/share/icons/Adwaita/256x256
rm -rf $GTK_APP/share/icons/Adwaita/32x32
rm -rf $GTK_APP/share/icons/Adwaita/48x48
rm -rf $GTK_APP/share/icons/Adwaita/512x512
rm -rf $GTK_APP/share/icons/Adwaita/64x64
rm -rf $GTK_APP/share/icons/Adwaita/8x8
rm -rf $GTK_APP/share/icons/Adwaita/96x96
rm -rf $GTK_APP/share/icons/Adwaita/cursors
rm -rf $GTK_APP/share/icons/Adwaita/scalable
rm -rf $GTK_APP/share/icons/Adwaita/scalable-up-to-32
rm -rf $GTK_APP/share/icons/hicolor
wget https://github.com/qarmin/gtk_library_store/releases/download/3.24.0/czkawka_icons.zip
unzip czkawka_icons.zip -d $GTK_APP/share/icons/Adwaita
zip -r gtk_app.zip $GTK_APP
env:
CARGO_INCREMENTAL: 0
RUSTFLAGS: "-C debuginfo=0 -D warnings"
if: ${{ matrix.type == 'release'}}
- name: Store Windows GUI CrossComplile
uses: actions/upload-artifact@v2
with:
name: czkawka_gui-Windows-console-${{ matrix.toolchain }}
path: gtk_app.zip
if: ${{ matrix.type == 'release' }}
name: czkawka_gui-Windows-debug-console-${{ matrix.toolchain }}
path: target/debug/czkawka_gui.exe

11
Cargo.lock generated
View file

@ -57,17 +57,6 @@ dependencies = [
"rust-embed",
]
[[package]]
name = "czkawka_gui"
version = "3.3.1"
dependencies = [
"czkawka_core",
"i18n-embed",
"i18n-embed-fl",
"once_cell",
"rust-embed",
]
[[package]]
name = "dashmap"
version = "4.0.2"

View file

@ -1,12 +1,17 @@
[workspace]
members = [
"czkawka_core",
"czkawka_gui",
]
[profile.release]
# Panic = "abort" will crash entire app when processing invalid image file.
# Since crash happens in external library, this is only way to handle this(I think).
panic = "unwind"
[package]
name = "czkawka_core"
version = "3.3.1"
authors = ["Rafał Mikrut <mikrutrafal@protonmail.com>"]
edition = "2018"
description = "Core of Czkawka app"
license = "MIT"
homepage = "https://github.com/qarmin/czkawka"
repository = "https://github.com/qarmin/czkawka"
# LTO setting is disabled by default, because release mode is usually needed to develop app and compilation with LTO would take a lot of time
#lto = "fat"
[dependencies]
# Language
i18n-embed = { version = "0.13", features = ["fluent-system", "desktop-requester"] }
i18n-embed-fl = "0.6"
rust-embed = "6.2.0"
once_cell = "1.8.0"

View file

@ -1,17 +0,0 @@
[package]
name = "czkawka_core"
version = "3.3.1"
authors = ["Rafał Mikrut <mikrutrafal@protonmail.com>"]
edition = "2018"
description = "Core of Czkawka app"
license = "MIT"
homepage = "https://github.com/qarmin/czkawka"
repository = "https://github.com/qarmin/czkawka"
[dependencies]
# Language
i18n-embed = { version = "0.13", features = ["fluent-system", "desktop-requester"] }
i18n-embed-fl = "0.6.1"
rust-embed = "6.3.0"
once_cell = "1.9.0"

View file

@ -1,13 +0,0 @@
# (Required) The language identifier of the language used in the
# source code for gettext system, and the primary fallback language
# (for which all strings must be present) when using the fluent
# system.
fallback_language = "en"
# Use the fluent localization system.
[fluent]
# (Required) The path to the assets directory.
# The paths inside the assets directory should be structured like so:
# `assets_dir/{language}/{domain}.ftl`
assets_dir = "../i18n"

View file

@ -1,3 +0,0 @@
pub mod localizer;
pub const CZKAWKA_VERSION: &str = env!("CARGO_PKG_VERSION");

View file

@ -1,44 +0,0 @@
use std::collections::HashMap;
use i18n_embed::{
fluent::{fluent_language_loader, FluentLanguageLoader},
DefaultLocalizer, LanguageLoader, Localizer,
};
use once_cell::sync::Lazy;
use rust_embed::RustEmbed;
#[derive(RustEmbed)]
#[folder = "../i18n/"]
struct Localizations;
pub static LANGUAGE_LOADER: Lazy<FluentLanguageLoader> = Lazy::new(|| {
let loader: FluentLanguageLoader = fluent_language_loader!();
loader.load_fallback_language(&Localizations).expect("Error while loading fallback language");
loader
});
#[macro_export]
macro_rules! fl {
($message_id:literal) => {{
i18n_embed_fl::fl!($crate::localizer::LANGUAGE_LOADER, $message_id)
}};
($message_id:literal, $($args:expr),*) => {{
i18n_embed_fl::fl!($crate::localizer::LANGUAGE_LOADER, $message_id, $($args), *)
}};
}
// Get the `Localizer` to be used for localizing this library.
pub fn localizer() -> Box<dyn Localizer> {
Box::from(DefaultLocalizer::new(&*LANGUAGE_LOADER, &Localizations))
}
pub fn generate_translation_hashmap(vec: Vec<(&'static str, String)>) -> HashMap<&'static str, String> {
let mut hashmap: HashMap<&'static str, String> = Default::default();
for (key, value) in vec {
hashmap.insert(key, value);
}
hashmap
}

View file

@ -1,20 +0,0 @@
[package]
name = "czkawka_gui"
version = "3.3.1"
authors = ["Rafał Mikrut <mikrutrafal@protonmail.com>"]
edition = "2018"
description = "GTK frontend of Czkawka"
license = "MIT"
homepage = "https://github.com/qarmin/czkawka"
repository = "https://github.com/qarmin/czkawka"
[dependencies]
czkawka_core = { path = "../czkawka_core", version = "3.3.1"}
# Language
i18n-embed = { version = "0.13", features = ["fluent-system", "desktop-requester"] }
i18n-embed-fl = "0.6.1"
rust-embed = "6.3.0"
once_cell = "1.9.0"

View file

@ -1,13 +0,0 @@
# (Required) The language identifier of the language used in the
# source code for gettext system, and the primary fallback language
# (for which all strings must be present) when using the fluent
# system.
fallback_language = "en"
# Use the fluent localization system.
[fluent]
# (Required) The path to the assets directory.
# The paths inside the assets directory should be structured like so:
# `assets_dir/{language}/{domain}.ftl`
assets_dir = "../i18n"

View file

@ -1,137 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.39.0
The MIT License (MIT)
Copyright (c)
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
Author: Rafał Mikrut
-->
<interface>
<requires lib="gtk+" version="3.24"/>
<!-- interface-license-type mit -->
<!-- interface-name Czkawka -->
<!-- interface-description Czkawka is simple and fast app to find duplicates, empty folders, similar images etc. -->
<!-- interface-authors Rafa\305\202 Mikrut -->
<object class="GtkAboutDialog" id="about_dialog">
<property name="can-focus">False</property>
<property name="window-position">center</property>
<property name="type-hint">dialog</property>
<property name="program-name">Czkawka</property>
<property name="version">3.3.1</property>
<property name="comments" translatable="yes">2020 - 2021 Rafał Mikrut(qarmin)
This program is free to use and will always be.
</property>
<property name="authors">Rafał Mikrut(qarmin)</property>
<property name="logo-icon-name">system-search</property>
<property name="license-type">mit-x11</property>
<child internal-child="vbox">
<object class="GtkBox">
<property name="can-focus">False</property>
<property name="orientation">vertical</property>
<property name="spacing">2</property>
<child internal-child="action_area">
<object class="GtkButtonBox">
<property name="can-focus">False</property>
<property name="layout-style">end</property>
<child>
<placeholder/>
</child>
<child>
<placeholder/>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="margin-bottom">3</property>
<child>
<object class="GtkButton" id="button_repository">
<property name="label" translatable="yes">Repository</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">False</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkButton" id="button_instruction">
<property name="label" translatable="yes">Instruction</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">False</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkButton" id="button_donation">
<property name="label" translatable="yes">Donation</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">False</property>
<property name="position">2</property>
</packing>
</child>
<child>
<object class="GtkButton" id="button_translation">
<property name="label" translatable="yes">Translation</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">False</property>
<property name="position">3</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">3</property>
</packing>
</child>
</object>
</child>
</object>
</interface>

File diff suppressed because it is too large Load diff

View file

@ -1,72 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.38.2
The MIT License (MIT)
Copyright (c)
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
Author: Rafał Mikrut
-->
<interface>
<requires lib="gtk+" version="3.24"/>
<!-- interface-license-type mit -->
<!-- interface-name Czkawka -->
<!-- interface-description Czkawka is simple and fast app to find duplicates, empty folders, similar images etc. -->
<!-- interface-authors Rafa\305\202 Mikrut -->
<object class="GtkPopover" id="popover_right_click">
<property name="can-focus">False</property>
<property name="position">left</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkButton" id="buttons_popover_right_click_open_file">
<property name="label" translatable="yes">Open File</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkButton" id="buttons_popover_right_click_open_folder">
<property name="label" translatable="yes">Open Folder</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
</child>
</object>
</interface>

View file

@ -1,232 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.38.2
The MIT License (MIT)
Copyright (c)
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
Author: Rafał Mikrut
-->
<interface>
<requires lib="gtk+" version="3.24"/>
<!-- interface-license-type mit -->
<!-- interface-name Czkawka -->
<!-- interface-description Czkawka is simple and fast app to find duplicates, empty folders, similar images etc. -->
<!-- interface-authors Rafa\305\202 Mikrut -->
<object class="GtkPopover" id="popover_select">
<property name="can-focus">False</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkButton" id="buttons_popover_select_custom">
<property name="label" translatable="yes">Select custom</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkButton" id="buttons_popover_unselect_custom">
<property name="label" translatable="yes">Unselect custom</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkSeparator" id="separator_select_custom">
<property name="visible">True</property>
<property name="can-focus">False</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
<child>
<object class="GtkButton" id="buttons_popover_select_all_images_except_biggest">
<property name="label" translatable="yes">Select all except biggest</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">3</property>
</packing>
</child>
<child>
<object class="GtkButton" id="buttons_popover_select_all_images_except_smallest">
<property name="label" translatable="yes">Select all except smallest</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">4</property>
</packing>
</child>
<child>
<object class="GtkSeparator" id="separator_select_image_size">
<property name="visible">True</property>
<property name="can-focus">False</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">5</property>
</packing>
</child>
<child>
<object class="GtkButton" id="buttons_popover_select_all_except_oldest">
<property name="label" translatable="yes">Select all except oldest</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">6</property>
</packing>
</child>
<child>
<object class="GtkButton" id="buttons_popover_select_all_except_newest">
<property name="label" translatable="yes">Select all except newest</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">7</property>
</packing>
</child>
<child>
<object class="GtkButton" id="buttons_popover_select_one_oldest">
<property name="label" translatable="yes">Select one oldest</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">8</property>
</packing>
</child>
<child>
<object class="GtkButton" id="buttons_popover_select_one_newest">
<property name="label" translatable="yes">Select one newest</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">9</property>
</packing>
</child>
<child>
<object class="GtkSeparator" id="separator_select_date">
<property name="visible">True</property>
<property name="can-focus">False</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">10</property>
</packing>
</child>
<child>
<object class="GtkButton" id="buttons_popover_reverse">
<property name="label" translatable="yes">Reverse Selection</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">11</property>
</packing>
</child>
<child>
<object class="GtkSeparator" id="separator_select_reverse">
<property name="visible">True</property>
<property name="can-focus">False</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">12</property>
</packing>
</child>
<child>
<object class="GtkButton" id="buttons_popover_select_all">
<property name="label" translatable="yes">Select All</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">13</property>
</packing>
</child>
<child>
<object class="GtkButton" id="buttons_popover_unselect_all">
<property name="label" translatable="yes">Unselect All</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">14</property>
</packing>
</child>
</object>
</child>
</object>
</interface>

View file

@ -1,202 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.39.0
The MIT License (MIT)
Copyright (c)
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
Author: Rafał Mikrut
-->
<interface>
<requires lib="gtk+" version="3.24"/>
<!-- interface-license-type mit -->
<!-- interface-name Czkawka -->
<!-- interface-description Czkawka is simple and fast app to find duplicates, empty folders, similar images etc. -->
<!-- interface-authors Rafa\305\202 Mikrut -->
<object class="GtkDialog" id="window_progress">
<property name="can-focus">False</property>
<property name="type-hint">dialog</property>
<property name="gravity">center</property>
<child internal-child="vbox">
<object class="GtkBox">
<property name="can-focus">False</property>
<property name="orientation">vertical</property>
<property name="spacing">2</property>
<child internal-child="action_area">
<object class="GtkButtonBox">
<property name="can-focus">False</property>
<property name="layout-style">end</property>
<child>
<placeholder/>
</child>
<child>
<placeholder/>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="margin-start">10</property>
<property name="margin-end">10</property>
<property name="margin-top">10</property>
<property name="margin-bottom">10</property>
<property name="orientation">vertical</property>
<property name="spacing">10</property>
<child>
<!-- n-columns=2 n-rows=2 -->
<object class="GtkGrid" id="grid_progress_stages">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="valign">center</property>
<property name="margin-start">2</property>
<property name="margin-end">2</property>
<property name="margin-top">2</property>
<child>
<object class="GtkLabel" id="label_progress_all_stages">
<property name="name">label_progress_all_stages</property>
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">All stages: </property>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">1</property>
</packing>
</child>
<child>
<object class="GtkProgressBar" id="progress_bar_all_stages">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="hexpand">True</property>
<property name="pulse-step">0.099999999776482579</property>
<property name="show-text">True</property>
</object>
<packing>
<property name="left-attach">1</property>
<property name="top-attach">1</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="label_progress_current_stage">
<property name="name">label_progress_current_stage</property>
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Current stage: </property>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">0</property>
</packing>
</child>
<child>
<object class="GtkProgressBar" id="progress_bar_current_stage">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="show-text">True</property>
</object>
<packing>
<property name="left-attach">1</property>
<property name="top-attach">0</property>
</packing>
</child>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="label_stage">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Stage 1/2</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkButton" id="button_stop_in_dialog">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="halign">end</property>
<property name="margin-end">2</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<child>
<object class="GtkImage">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="icon-name">dialog-cancel</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Stop</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="pack-type">end</property>
<property name="position">2</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
</child>
</object>
</interface>

View file

@ -1,681 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.39.0
The MIT License (MIT)
Copyright (c)
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
Author: Rafał Mikrut
-->
<interface>
<requires lib="gtk+" version="3.24"/>
<!-- interface-license-type mit -->
<!-- interface-name Czkawka -->
<!-- interface-description Czkawka is simple and fast app to find duplicates, empty folders, similar images etc. -->
<!-- interface-authors Rafa\305\202 Mikrut -->
<object class="GtkDialog" id="window_settings">
<property name="can-focus">False</property>
<property name="title" translatable="yes">Czkawka Options</property>
<property name="modal">True</property>
<property name="type-hint">dialog</property>
<child internal-child="vbox">
<object class="GtkBox">
<property name="can-focus">False</property>
<property name="orientation">vertical</property>
<property name="spacing">2</property>
<child internal-child="action_area">
<object class="GtkButtonBox">
<property name="can-focus">False</property>
<property name="layout-style">end</property>
<child>
<placeholder/>
</child>
<child>
<placeholder/>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkComboBoxText">
<property name="visible">True</property>
<property name="can-focus">False</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">0</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkNotebook" id="notebook_settings">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="tab-pos">left</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<child>
<object class="GtkLabel" id="label_settings_general_language">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="margin-start">5</property>
<property name="margin-end">10</property>
<property name="label" translatable="yes">Language</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkComboBoxText" id="combo_box_settings_language">
<property name="visible">True</property>
<property name="can-focus">False</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkCheckButton" id="check_button_settings_load_at_start">
<property name="label" translatable="yes">Load configuration at start</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">False</property>
<property name="active">True</property>
<property name="draw-indicator">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkCheckButton" id="check_button_settings_save_at_exit">
<property name="label" translatable="yes">Save configuration at exit</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">False</property>
<property name="active">True</property>
<property name="draw-indicator">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
<child>
<object class="GtkCheckButton" id="check_button_settings_confirm_deletion">
<property name="label" translatable="yes">Show confirm dialog when deleting any files</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">False</property>
<property name="active">True</property>
<property name="draw-indicator">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">3</property>
</packing>
</child>
<child>
<object class="GtkCheckButton" id="check_button_settings_confirm_link">
<property name="label" translatable="yes">Show confirm dialog when hard/symlinks any files</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">False</property>
<property name="active">True</property>
<property name="draw-indicator">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">4</property>
</packing>
</child>
<child>
<object class="GtkCheckButton" id="check_button_settings_confirm_group_deletion">
<property name="label" translatable="yes">Show confirm dialog when deleting all files in group</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">False</property>
<property name="active">True</property>
<property name="draw-indicator">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">5</property>
</packing>
</child>
<child>
<object class="GtkCheckButton" id="check_button_settings_show_text_view">
<property name="label" translatable="yes">Show bottom text panel</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">False</property>
<property name="active">True</property>
<property name="draw-indicator">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">6</property>
</packing>
</child>
<child>
<object class="GtkCheckButton" id="check_button_settings_use_cache">
<property name="label" translatable="yes">Use cache</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">False</property>
<property name="active">True</property>
<property name="draw-indicator">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">7</property>
</packing>
</child>
<child>
<object class="GtkCheckButton" id="check_button_settings_use_trash">
<property name="label" translatable="yes">Move deleted files to trash</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">False</property>
<property name="active">True</property>
<property name="draw-indicator">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">8</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<child>
<object class="GtkButton" id="button_settings_open_cache_folder">
<property name="label" translatable="yes">Open cache folder</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkButton" id="button_settings_open_settings_folder">
<property name="label" translatable="yes">Open settings folder</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="pack-type">end</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="pack-type">end</property>
<property name="position">1</property>
</packing>
</child>
</object>
</child>
<child type="tab">
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">General</property>
</object>
<packing>
<property name="tab-fill">False</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkCheckButton" id="check_button_settings_hide_hard_links">
<property name="label" translatable="yes">Hide hard links(only Linux and MacOS)</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">False</property>
<property name="active">True</property>
<property name="draw-indicator">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkCheckButton" id="check_button_settings_show_preview_duplicates">
<property name="label" translatable="yes">Show image preview</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">False</property>
<property name="active">True</property>
<property name="draw-indicator">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkCheckButton" id="check_button_settings_duplicates_delete_outdated_cache">
<property name="label" translatable="yes">Delete outdated cache entries automatically</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">False</property>
<property name="active">True</property>
<property name="draw-indicator">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="margin-start">4</property>
<property name="margin-end">4</property>
<child>
<object class="GtkLabel" id="label_settings_duplicate_minimal_size_cache">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Minimal size of files in bytes saved to cache</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkEntry" id="entry_settings_cache_file_minimal_size">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="max-length">15</property>
<property name="text" translatable="yes">257144</property>
<property name="caps-lock-warning">False</property>
<property name="input-purpose">number</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="pack-type">end</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">3</property>
</packing>
</child>
<child>
<object class="GtkCheckButton" id="check_button_duplicates_use_prehash_cache">
<property name="label" translatable="yes">Use prehash cache</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">False</property>
<property name="draw-indicator">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">4</property>
</packing>
</child>
<child>
<object class="GtkButton" id="button_settings_duplicates_clear_cache">
<property name="label" translatable="yes">Remove outdated results from duplicates cache</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="pack-type">end</property>
<property name="position">5</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="margin-start">4</property>
<property name="margin-end">4</property>
<child>
<object class="GtkLabel" id="label_settings_duplicate_minimal_size_cache_prehash">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Minimal size of files in bytes saved to prehash cache</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkEntry" id="entry_settings_prehash_cache_file_minimal_size">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="max-length">15</property>
<property name="text" translatable="yes">1</property>
<property name="caps-lock-warning">False</property>
<property name="input-purpose">number</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="pack-type">end</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">6</property>
</packing>
</child>
</object>
<packing>
<property name="position">1</property>
</packing>
</child>
<child type="tab">
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Duplicate Finder</property>
</object>
<packing>
<property name="position">1</property>
<property name="tab-fill">False</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkCheckButton" id="check_button_settings_show_preview_similar_images">
<property name="label" translatable="yes">Show image preview</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">False</property>
<property name="active">True</property>
<property name="draw-indicator">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkCheckButton" id="check_button_settings_similar_images_delete_outdated_cache">
<property name="label" translatable="yes">Delete outdated cache entries automatically</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">False</property>
<property name="active">True</property>
<property name="draw-indicator">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkButton" id="button_settings_similar_images_clear_cache">
<property name="label" translatable="yes">Remove outdated results from images cache</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="pack-type">end</property>
<property name="position">2</property>
</packing>
</child>
</object>
<packing>
<property name="position">2</property>
</packing>
</child>
<child type="tab">
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Similar Images</property>
</object>
<packing>
<property name="position">2</property>
<property name="tab-fill">False</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkButton" id="button_settings_similar_videos_clear_cache">
<property name="label" translatable="yes">Remove outdated results from videos cache</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="pack-type">end</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkCheckButton" id="check_button_settings_similar_videos_delete_outdated_cache">
<property name="label" translatable="yes">Delete outdated cache entries automatically</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">False</property>
<property name="draw-indicator">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="position">3</property>
</packing>
</child>
<child type="tab">
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Similar Videos</property>
</object>
<packing>
<property name="position">3</property>
<property name="tab-fill">False</property>
</packing>
</child>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="margin-start">3</property>
<property name="margin-end">3</property>
<property name="spacing">3</property>
<child>
<object class="GtkButton" id="button_settings_load_configuration">
<property name="label" translatable="yes">Load configuration</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkButton" id="button_settings_reset_configuration">
<property name="label" translatable="yes">Reset configuration</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">False</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkButton" id="button_settings_save_configuration">
<property name="label" translatable="yes">Save configuration</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="pack-type">end</property>
<property name="position">2</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="padding">3</property>
<property name="position">2</property>
</packing>
</child>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
</child>
</object>
</interface>

View file

@ -1,12 +0,0 @@
[Desktop Entry]
Type=Application
Terminal=false
Exec=czkawka_gui
Name=Czkawka
Name[it]=Singhiozzo
Comment=Multi functional app to clean OS which allow to find duplicates, empty folders, similar files etc.
Comment[it]=Programma multifunzionale per pulire il sistema, che permette di trovare file duplicati, cartelle vuote, file simili, ecc...
Icon=com.github.qarmin.czkawka
Categories=System;
StartupWMClass=czkawka_gui
TryExec=czkawka_gui

View file

@ -1,30 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<component type="desktop-application">
<id>com.github.qarmin.czkawka</id>
<name>Czkawka</name>
<summary>Multi functional app to find duplicates, empty folders, similar images, broken files etc.</summary>
<metadata_license>CC0-1.0</metadata_license>
<project_license>MIT</project_license>
<description>
<p>
Czkawka is simple, fast and easy to use app to remove unnecessary files from your computer.
</p>
</description>
<launchable type="desktop-id">com.github.qarmin.czkawka.desktop</launchable>
<screenshots>
<screenshot type="default">
<image>https://user-images.githubusercontent.com/41945903/147875238-7f82fa27-c6dd-47e7-87ed-e253fb2cbc3e.png</image>
<image>https://user-images.githubusercontent.com/41945903/147875239-bcf9776c-885d-45ac-ba82-5a426d8e1647.png</image>
<image>https://user-images.githubusercontent.com/41945903/147875243-e654e683-37f7-46fa-8321-119a4c5775e7.png</image>
</screenshot>
</screenshots>
<releases>
<release version="3.3.1" date="2021-11-22"/>
</releases>
<content_rating type="oars-1.0"/>
<developer_name>Rafał Mikrut</developer_name>
<url type="homepage">https://github.com/qarmin/czkawka</url>
<url type="bugtracker">https://github.com/qarmin/czkawka/issues</url>
<url type="donation">https://github.com/sponsors/qarmin</url>
<url type="translation">https://crowdin.com/project/czkawka</url>
</component>

View file

@ -1,60 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg height="16px" viewBox="0 0 16 16" width="16px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<filter id="a" height="100%" width="100%" x="0%" y="0%">
<feColorMatrix in="SourceGraphic" type="matrix" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0"/>
</filter>
<mask id="b">
<g filter="url(#a)">
<rect fill-opacity="0.104" height="16" width="16"/>
</g>
</mask>
<linearGradient id="c" gradientUnits="userSpaceOnUse">
<stop offset="0"/>
<stop offset="1" stop-opacity="0"/>
</linearGradient>
<radialGradient id="d" cx="448.010223" cy="51.543747" gradientTransform="matrix(0.112144 0.00038317 -0.00021629 0.0633011 26.761475 154.313576)" r="224" xlink:href="#c"/>
<clipPath id="e">
<rect height="152" width="192"/>
</clipPath>
<mask id="f">
<g filter="url(#a)">
<rect fill-opacity="0.4" height="16" width="16"/>
</g>
</mask>
<mask id="g">
<g filter="url(#a)">
<rect fill-opacity="0.104" height="16" width="16"/>
</g>
</mask>
<radialGradient id="h" cx="70" cy="295.183136" gradientTransform="matrix(1.312499 -0.0312501 0.00967013 0.406135 -16.729404 5.303345)" r="32.000004" xlink:href="#c"/>
<clipPath id="i">
<rect height="152" width="192"/>
</clipPath>
<mask id="j">
<g filter="url(#a)">
<rect fill-opacity="0.104" height="16" width="16"/>
</g>
</mask>
<radialGradient id="k" cx="70" cy="295.183136" gradientTransform="matrix(1.312499 -0.0312501 0.00967013 0.406135 -16.729404 9.303345)" r="32.000004" xlink:href="#c"/>
<clipPath id="l">
<rect height="152" width="192"/>
</clipPath>
<g clip-path="url(#e)" mask="url(#b)" transform="matrix(1 0 0 1 -168 -16)">
<path d="m -29 150 v 2 c 0 4.433594 3.566406 8 8 8 h 96 c 4.433594 0 8 -3.566406 8 -8 v -2 c 0 4.433594 -3.566406 8 -8 8 h -96 c -4.433594 0 -8 -3.566406 -8 -8 z m 0 4 v 2 c 0 4.433594 3.566406 8 8 8 h 96 c 4.433594 0 8 -3.566406 8 -8 v -2 c 0 4.433594 -3.566406 8 -8 8 h -96 c -4.433594 0 -8 -3.566406 -8 -8 z m 0 4 v 2 c 0 4.433594 3.566406 8 8 8 h 96 c 4.433594 0 8 -3.566406 8 -8 v -2 c 0 4.433594 -3.566406 8 -8 8 h -96 c -4.433594 0 -8 -3.566406 -8 -8 z m 0 4 v 2 c 0 4.433594 3.566406 8 8 8 h 96 c 4.433594 0 8 -3.566406 8 -8 v -2 c 0 4.433594 -3.566406 8 -8 8 h -96 c -4.433594 0 -8 -3.566406 -8 -8 z m 0 4 v 2 c 0 4.433594 3.566406 8 8 8 h 96 c 4.433594 0 8 -3.566406 8 -8 v -2 c 0 4.433594 -3.566406 8 -8 8 h -96 c -4.433594 0 -8 -3.566406 -8 -8 z m 0 0" fill="url(#d)"/>
</g>
<image height="152" mask="url(#f)" transform="matrix(1 0 0 1 -168 -16)" width="192" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMAAAACYCAYAAACyAeadAAAABmJLR0QA/wD/AP+gvaeTAAAAiElEQVR4nO3BMQEAAADCoPVP7WsIoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAPIpwABWLk4FQAAAABJRU5ErkJggg=="/>
<g fill="#474747" fill-rule="evenodd">
<path d="m 3 0 c -0.550781 0 -1 0.449219 -1 1 v 7 h 2 v -6 h 5.085938 l 2.914062 2.914062 v 3.085938 h 2 v -3.5 c 0 -0.265625 -0.105469 -0.519531 -0.292969 -0.707031 l -3.5 -3.5 c -0.1875 -0.1875 -0.441406 -0.292969 -0.707031 -0.292969 z m 0 0"/>
<path d="m 9 1 v 4 h 4 z m 0 0"/>
<path d="m 2 10 h 2 v 6 h -2 z m 0 0"/>
<path d="m 6 10 h 2 v 4 h -2 z m 0 0"/>
<path d="m 12 10 h 2 v 6 h -2 z m 0 0"/>
<path d="m 8 10 h 2 v 6 h -2 z m 0 0"/>
</g>
<g clip-path="url(#i)" mask="url(#g)" transform="matrix(1 0 0 1 -168 -16)">
<path d="m 27.398438 123.054688 c -1.988282 -0.410157 -4.296876 -0.3125 -4.859376 -2.179688 c -0.175781 -0.589844 -0.539062 -1.238281 -0.539062 -4.105469 l 0.003906 -1.300781 l 0.714844 2.339844 c 0.402344 1.324218 2.058594 2.28125 3.480469 2.664062 c 1.449219 0.390625 54.734375 0.378906 55.902343 -0.011718 c 1.371094 -0.460938 2.375 -1.363282 3.089844 -2.773438 l 0.808594 -3.6875 v 5 c -0.636719 2.582031 -1.746094 3.355469 -3.476562 4.160156 l -27.125 0.035156 c -14.410157 0.019532 -26.660157 -0.039062 -27.90625 -0.132812 c -0.046876 -0.003906 -0.074219 -0.007812 -0.09375 -0.007812 z m 0 0" fill="url(#h)"/>
</g>
<g clip-path="url(#l)" mask="url(#j)" transform="matrix(1 0 0 1 -168 -16)">
<path d="m 27.398438 127.054688 c -1.988282 -0.410157 -4.296876 -0.3125 -4.859376 -2.179688 c -0.175781 -0.589844 -0.539062 -1.238281 -0.539062 -4.105469 l 0.003906 -1.300781 l 0.714844 2.339844 c 0.402344 1.324218 2.058594 2.28125 3.480469 2.664062 c 1.449219 0.390625 53.574219 0.632813 54.800781 0.527344 c 1.855469 -0.15625 3.730469 -1.214844 4.191406 -3.3125 l 0.808594 -3.6875 v 5 c -0.636719 2.582031 -1.746094 3.355469 -3.476562 4.160156 l -27.125 0.035156 c -14.410157 0.019532 -26.660157 -0.039062 -27.90625 -0.132812 c -0.046876 -0.003906 -0.074219 -0.007812 -0.09375 -0.007812 z m 0 0" fill="url(#k)"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 4.9 KiB

View file

@ -1,211 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg height="128px" viewBox="0 0 128 128" width="128px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<defs>
<filter id="a" height="100%" width="100%" x="0%" y="0%">
<feColorMatrix in="SourceGraphic" type="matrix" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0"/>
</filter>
<mask id="b">
<g filter="url(#a)">
<rect fill-opacity="0.104" height="128" width="128"/>
</g>
</mask>
<mask id="c">
<g filter="url(#a)">
<rect fill-opacity="0.4" height="128" width="128"/>
</g>
</mask>
<linearGradient id="d" gradientTransform="matrix(0.183804 0 0 0.183435 95.760605 92.654816)" gradientUnits="userSpaceOnUse" x1="-91.187302" x2="-450.265167" y1="100.009354" y2="100.009354">
<stop offset="0" stop-color="#9a9996"/>
<stop offset="0.0357143" stop-color="#f6f5f4"/>
<stop offset="0.106061" stop-color="#c0bfbc"/>
<stop offset="0.893939" stop-color="#c0bfbc"/>
<stop offset="0.939394" stop-color="#deddda"/>
<stop offset="1" stop-color="#9a9996"/>
</linearGradient>
<linearGradient id="e" gradientUnits="userSpaceOnUse">
<stop offset="0" stop-color="#c0bfbc"/>
<stop offset="0.895452" stop-color="#c0bfbc"/>
<stop offset="0.941856" stop-color="#deddda"/>
<stop offset="1" stop-color="#9a9996"/>
</linearGradient>
<linearGradient id="f" gradientTransform="matrix(0.183804 0 0 0.183435 95.760605 92.654816)" x1="-444.824585" x2="-96.627876" xlink:href="#e" y1="-126.472778" y2="-126.472778"/>
<linearGradient id="g" gradientTransform="matrix(0.183804 0 0 -0.183435 95.760605 92.654816)" x1="-444.824585" x2="-96.627876" xlink:href="#e" y1="-126.472778" y2="-126.472778"/>
<mask id="h">
<g filter="url(#a)">
<rect fill-opacity="0.104" height="128" width="128"/>
</g>
</mask>
<linearGradient id="i" gradientUnits="userSpaceOnUse">
<stop offset="0"/>
<stop offset="1" stop-opacity="0"/>
</linearGradient>
<linearGradient id="j" gradientTransform="matrix(0.183804 0 0 0.183435 95.760605 92.654816)" x1="-444.824585" x2="-96.627876" xlink:href="#i" y1="-126.472794" y2="-126.472794"/>
<linearGradient id="k" gradientTransform="matrix(0.183804 0 0 -0.183435 95.760605 92.654816)" x1="-444.824585" x2="-96.627876" xlink:href="#i" y1="-126.472794" y2="-126.472794"/>
<linearGradient id="l" gradientUnits="userSpaceOnUse" x1="24" x2="44" y1="48" y2="62">
<stop offset="0" stop-color="#9141ac"/>
<stop offset="1" stop-color="#1c71d8"/>
</linearGradient>
<mask id="m">
<g filter="url(#a)">
<rect fill-opacity="0.104" height="128" width="128"/>
</g>
</mask>
<linearGradient id="n" gradientUnits="userSpaceOnUse" x1="55.999998" x2="75.999998" y1="35.999996" y2="49.999996">
<stop offset="0" stop-color="#c061cb"/>
<stop offset="1" stop-color="#3584e4"/>
</linearGradient>
<mask id="o">
<g filter="url(#a)">
<rect fill-opacity="0.104" height="128" width="128"/>
</g>
</mask>
<radialGradient id="p" cx="448.010223" cy="51.543747" gradientTransform="matrix(0.112144 0.00038317 -0.00021629 0.0633011 26.761475 154.313576)" r="224" xlink:href="#i"/>
<clipPath id="q">
<rect height="152" width="192"/>
</clipPath>
<g id="r" clip-path="url(#q)">
<path d="m -29 150 v 2 c 0 4.433594 3.566406 8 8 8 h 96 c 4.433594 0 8 -3.566406 8 -8 v -2 c 0 4.433594 -3.566406 8 -8 8 h -96 c -4.433594 0 -8 -3.566406 -8 -8 z m 0 4 v 2 c 0 4.433594 3.566406 8 8 8 h 96 c 4.433594 0 8 -3.566406 8 -8 v -2 c 0 4.433594 -3.566406 8 -8 8 h -96 c -4.433594 0 -8 -3.566406 -8 -8 z m 0 4 v 2 c 0 4.433594 3.566406 8 8 8 h 96 c 4.433594 0 8 -3.566406 8 -8 v -2 c 0 4.433594 -3.566406 8 -8 8 h -96 c -4.433594 0 -8 -3.566406 -8 -8 z m 0 4 v 2 c 0 4.433594 3.566406 8 8 8 h 96 c 4.433594 0 8 -3.566406 8 -8 v -2 c 0 4.433594 -3.566406 8 -8 8 h -96 c -4.433594 0 -8 -3.566406 -8 -8 z m 0 4 v 2 c 0 4.433594 3.566406 8 8 8 h 96 c 4.433594 0 8 -3.566406 8 -8 v -2 c 0 4.433594 -3.566406 8 -8 8 h -96 c -4.433594 0 -8 -3.566406 -8 -8 z m 0 0" fill="url(#p)"/>
</g>
<mask id="s">
<g filter="url(#a)">
<rect fill-opacity="0.4" height="128" width="128"/>
</g>
</mask>
<image id="t" height="152" width="192" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMAAAACYCAYAAACyAeadAAAABmJLR0QA/wD/AP+gvaeTAAAAiElEQVR4nO3BMQEAAADCoPVP7WsIoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAPIpwABWLk4FQAAAABJRU5ErkJggg=="/>
<mask id="u">
<g filter="url(#a)">
<rect fill-opacity="0.104" height="128" width="128"/>
</g>
</mask>
<radialGradient id="v" cx="70" cy="295.183136" gradientTransform="matrix(1.312499 -0.0312501 0.00967013 0.406135 -16.729404 5.303345)" r="32.000004" xlink:href="#i"/>
<clipPath id="w">
<rect height="152" width="192"/>
</clipPath>
<g id="x" clip-path="url(#w)">
<path d="m 27.398438 123.054688 c -1.988282 -0.410157 -4.296876 -0.3125 -4.859376 -2.179688 c -0.175781 -0.589844 -0.539062 -1.238281 -0.539062 -4.105469 l 0.003906 -1.300781 l 0.714844 2.339844 c 0.402344 1.324218 2.058594 2.28125 3.480469 2.664062 c 1.449219 0.390625 54.734375 0.378906 55.902343 -0.011718 c 1.371094 -0.460938 2.375 -1.363282 3.089844 -2.773438 l 0.808594 -3.6875 v 5 c -0.636719 2.582031 -1.746094 3.355469 -3.476562 4.160156 l -27.125 0.035156 c -14.410157 0.019532 -26.660157 -0.039062 -27.90625 -0.132812 c -0.046876 -0.003906 -0.074219 -0.007812 -0.09375 -0.007812 z m 0 0" fill="url(#v)"/>
</g>
<mask id="y">
<g filter="url(#a)">
<rect fill-opacity="0.104" height="128" width="128"/>
</g>
</mask>
<radialGradient id="z" cx="70" cy="295.183136" gradientTransform="matrix(1.312499 -0.0312501 0.00967013 0.406135 -16.729404 9.303345)" r="32.000004" xlink:href="#i"/>
<clipPath id="A">
<rect height="152" width="192"/>
</clipPath>
<g id="B" clip-path="url(#A)">
<path d="m 27.398438 127.054688 c -1.988282 -0.410157 -4.296876 -0.3125 -4.859376 -2.179688 c -0.175781 -0.589844 -0.539062 -1.238281 -0.539062 -4.105469 l 0.003906 -1.300781 l 0.714844 2.339844 c 0.402344 1.324218 2.058594 2.28125 3.480469 2.664062 c 1.449219 0.390625 53.574219 0.632813 54.800781 0.527344 c 1.855469 -0.15625 3.730469 -1.214844 4.191406 -3.3125 l 0.808594 -3.6875 v 5 c -0.636719 2.582031 -1.746094 3.355469 -3.476562 4.160156 l -27.125 0.035156 c -14.410157 0.019532 -26.660157 -0.039062 -27.90625 -0.132812 c -0.046876 -0.003906 -0.074219 -0.007812 -0.09375 -0.007812 z m 0 0" fill="url(#z)"/>
</g>
<clipPath id="C">
<rect height="128" width="128"/>
</clipPath>
<clipPath id="D">
<rect height="128" width="128"/>
</clipPath>
<mask id="E">
<g clip-path="url(#D)" filter="url(#a)">
<g clip-path="url(#C)">
<path d="m 52 64 h 8 v 32 h -8 z m 0 0" fill="#f6f5f4"/>
<use mask="url(#o)" transform="matrix(1 0 0 1 -8 -16)" xlink:href="#r"/>
<use mask="url(#s)" transform="matrix(1 0 0 1 -8 -16)" xlink:href="#t"/>
<path d="m 19.882812 28.496094 l 36.675782 -5.585938 l 21.441406 22.089844 v 65 c 0 3.460938 -1.925781 6 -5.183594 6 h -52.933594 c -3.257812 0 -5.882812 -2.789062 -5.882812 -6.25 v -75.003906 c 0 -3.460938 2.625 -6.25 5.882812 -6.25 z m 0 0" fill="url(#d)"/>
<path d="m 58.679688 76.75 h 10.292968 v 2.9375 h -10.292968 z m 0 -7.335938 h 10.292968 v 2.933594 h -10.292968 z m 0 -7.335937 h 10.292968 v 2.933594 h -10.292968 z m 0 -7.339844 h 10.292968 v 2.9375 h -10.292968 z m 0 -7.335937 h 10.292968 v 2.933594 h -10.292968 z m -33.820313 -7.335938 h 44.113281 v 2.933594 h -44.113281 z m 0 -7.339844 h 27.9375 v 2.9375 h -27.9375 z m 0 -7.335937 h 27.9375 v 2.933594 h -27.9375 z m 0 0" fill="url(#f)"/>
<path d="m 24.859375 84.089844 h 30.878906 v -36.710938 h -30.878906 z m 0 0" fill="url(#g)"/>
<path d="m 24.859375 84.089844 h 30.878906 v -36.710938 h -30.878906 z m 0 0" fill="url(#g)"/>
<use mask="url(#u)" transform="matrix(1 0 0 1 -8 -16)" xlink:href="#x"/>
<path d="m 58.679688 76.75 h 10.292968 v 2.9375 h -10.292968 z m 0 -7.335938 h 10.292968 v 2.933594 h -10.292968 z m 0 -7.335937 h 10.292968 v 2.933594 h -10.292968 z m 0 -7.339844 h 10.292968 v 2.9375 h -10.292968 z m 0 -7.335937 h 10.292968 v 2.933594 h -10.292968 z m -33.820313 -7.335938 h 44.113281 v 2.933594 h -44.113281 z m 0 -7.339844 h 27.9375 v 2.9375 h -27.9375 z m 0 -7.335937 h 27.9375 v 2.933594 h -27.9375 z m 0 0" fill="url(#j)"/>
<path d="m 24.859375 84.089844 h 30.878906 v -36.710938 h -30.878906 z m 0 0" fill="url(#k)"/>
<path d="m 24.859375 84.089844 h 30.878906 v -36.710938 h -30.878906 z m 0 0" fill="url(#k)"/>
<path d="m 56.558594 22.910156 v 16.144532 c 0 3.25 2.648437 5.8125 5.898437 5.8125 l 16.144531 -0.003907 z m 0 0" fill="#deddda"/>
<path d="m 19.871094 22.910156 h 36.6875 l 21.441406 22.089844 v 54 c 0 3.25 -2.050781 6.089844 -5.300781 6.089844 h -52.828125 c -3.253906 0 -5.871094 -2.617188 -5.871094 -5.871094 v -70.4375 c 0 -3.253906 2.617188 -5.871094 5.871094 -5.871094 z m 0 0" fill="#deddda"/>
<path d="m 24 90 h 22 v 4 h -22 z m 0 0" fill="#c0bfbc"/>
<path d="m 24 82 h 48 v 4 h -48 z m 0 0" fill="#c0bfbc"/>
<path d="m 24 74 h 48 v 4 h -48 z m 0 0" fill="#c0bfbc"/>
<path d="m 48 52 h 16 v 4 h -16 z m 0 0" fill="#9a9996"/>
<path d="m 24 32 h 22 v 4 h -22 z m 0 0" fill="#c0bfbc"/>
<path d="m 24 40 h 24 v 4 h -24 z m 0 0" fill="#c0bfbc"/>
<path d="m 48 60 h 22 v 4 h -22 z m 0 0" fill="#9a9996"/>
<path d="m 53.3125 13 c -3.25 0 -5.3125 2.75 -5.3125 6 v 77 h 6 v -32 h 6 v 24 h 6 v -24 h 6 v 12 h 6 v -12 h 5 v 32 h 6 v -32 h 5 v 38 h 6 v -38 h 6 v 32 h 6 v -32 l 0.042969 -29.050781 l -22.042969 -21.949219 z m 0 0" fill="#f6f5f4"/>
<path d="m 90 13 v 16.140625 c 0 3.253906 2.648438 5.816406 5.902344 5.816406 l 16.140625 -0.003906 z m 0 0" fill="#deddda"/>
<path d="m 94 64 h 6 v 32 h -6 z m 0 0" fill="#f6f5f4"/>
<path d="m 24 48 h 20 v 14 h -20 z m 0 0" fill="url(#l)"/>
<path d="m 56 20 h 22 v 4 h -22 z m 0 0" fill="#c0bfbc"/>
<path d="m 56 28 h 26 v 4 h -26 z m 0 0" fill="#c0bfbc"/>
<path d="m 80 46 h 24 v 4 h -24 z m 0 0" fill="#c0bfbc"/>
<path d="m 80 38 h 16 v 4 h -16 z m 0 0" fill="#c0bfbc"/>
<path d="m 24 66 h 24 v 4 h -24 z m 0 0" fill="#c0bfbc"/>
<path d="m 56 54 h 48 v 4 h -48 z m 0 0" fill="#c0bfbc"/>
<use mask="url(#y)" transform="matrix(1 0 0 1 -8 -16)" xlink:href="#B"/>
<path d="m 94 98 h 6 v 4 h -6 z m 0 0" fill="#c0bfbc"/>
<path d="m 106 92 h 6 v 4 h -6 z m 0 0" fill="#c0bfbc"/>
<path d="m 83 92 h 6 v 4 h -6 z m 0 0" fill="#c0bfbc"/>
<path d="m 72 72 h 6 v 4 h -6 z m 0 0" fill="#c0bfbc"/>
<path d="m 60 84 h 6 v 4 h -6 z m 0 0" fill="#c0bfbc"/>
<path d="m 48 92 h 6 v 4 h -6 z m 0 0" fill="#c0bfbc"/>
<path d="m 56 36 h 20 v 14 h -20 z m 0 0" fill="url(#n)"/>
</g>
</g>
</mask>
<mask id="F">
<g filter="url(#a)">
<rect fill-opacity="0.8" height="128" width="128"/>
</g>
</mask>
<linearGradient id="G" gradientTransform="matrix(0 0.37 -0.98462 0 295.38501 -30.360001)" gradientUnits="userSpaceOnUse" x1="300" x2="428" y1="235" y2="235">
<stop offset="0" stop-color="#f9f06b"/>
<stop offset="1" stop-color="#f5c211"/>
</linearGradient>
<clipPath id="H">
<rect height="128" width="128"/>
</clipPath>
<clipPath id="I">
<rect height="128" width="128"/>
</clipPath>
</defs>
<path d="m 52 64 h 8 v 32 h -8 z m 0 0" fill="#f6f5f4"/>
<use mask="url(#b)" transform="matrix(1 0 0 1 -8 -16)" xlink:href="#r"/>
<use mask="url(#c)" transform="matrix(1 0 0 1 -8 -16)" xlink:href="#t"/>
<path d="m 19.882812 28.496094 l 36.675782 -5.585938 l 21.441406 22.089844 v 65 c 0 3.460938 -1.925781 6 -5.183594 6 h -52.933594 c -3.257812 0 -5.882812 -2.789062 -5.882812 -6.25 v -75.003906 c 0 -3.460938 2.625 -6.25 5.882812 -6.25 z m 0 0" fill="url(#d)"/>
<path d="m 58.679688 76.75 h 10.292968 v 2.9375 h -10.292968 z m 0 -7.335938 h 10.292968 v 2.933594 h -10.292968 z m 0 -7.335937 h 10.292968 v 2.933594 h -10.292968 z m 0 -7.339844 h 10.292968 v 2.9375 h -10.292968 z m 0 -7.335937 h 10.292968 v 2.933594 h -10.292968 z m -33.820313 -7.335938 h 44.113281 v 2.933594 h -44.113281 z m 0 -7.339844 h 27.9375 v 2.9375 h -27.9375 z m 0 -7.335937 h 27.9375 v 2.933594 h -27.9375 z m 0 0" fill="url(#f)"/>
<path d="m 24.859375 84.089844 h 30.878906 v -36.710938 h -30.878906 z m 0 0" fill="url(#g)"/>
<path d="m 24.859375 84.089844 h 30.878906 v -36.710938 h -30.878906 z m 0 0" fill="url(#g)"/>
<use mask="url(#h)" transform="matrix(1 0 0 1 -8 -16)" xlink:href="#x"/>
<path d="m 58.679688 76.75 h 10.292968 v 2.9375 h -10.292968 z m 0 -7.335938 h 10.292968 v 2.933594 h -10.292968 z m 0 -7.335937 h 10.292968 v 2.933594 h -10.292968 z m 0 -7.339844 h 10.292968 v 2.9375 h -10.292968 z m 0 -7.335937 h 10.292968 v 2.933594 h -10.292968 z m -33.820313 -7.335938 h 44.113281 v 2.933594 h -44.113281 z m 0 -7.339844 h 27.9375 v 2.9375 h -27.9375 z m 0 -7.335937 h 27.9375 v 2.933594 h -27.9375 z m 0 0" fill="url(#j)"/>
<path d="m 24.859375 84.089844 h 30.878906 v -36.710938 h -30.878906 z m 0 0" fill="url(#k)"/>
<path d="m 24.859375 84.089844 h 30.878906 v -36.710938 h -30.878906 z m 0 0" fill="url(#k)"/>
<path d="m 56.558594 22.910156 v 16.144532 c 0 3.25 2.648437 5.8125 5.898437 5.8125 l 16.144531 -0.003907 z m 0 0" fill="#deddda"/>
<path d="m 19.871094 22.910156 h 36.6875 l 21.441406 22.089844 v 54 c 0 3.25 -2.050781 6.089844 -5.300781 6.089844 h -52.828125 c -3.253906 0 -5.871094 -2.617188 -5.871094 -5.871094 v -70.4375 c 0 -3.253906 2.617188 -5.871094 5.871094 -5.871094 z m 0 0" fill="#deddda"/>
<path d="m 24 90 h 22 v 4 h -22 z m 0 0" fill="#c0bfbc"/>
<path d="m 24 82 h 48 v 4 h -48 z m 0 0" fill="#c0bfbc"/>
<path d="m 24 74 h 48 v 4 h -48 z m 0 0" fill="#c0bfbc"/>
<path d="m 48 52 h 16 v 4 h -16 z m 0 0" fill="#9a9996"/>
<path d="m 24 32 h 22 v 4 h -22 z m 0 0" fill="#c0bfbc"/>
<path d="m 24 40 h 24 v 4 h -24 z m 0 0" fill="#c0bfbc"/>
<path d="m 48 60 h 22 v 4 h -22 z m 0 0" fill="#9a9996"/>
<path d="m 53.3125 13 c -3.25 0 -5.3125 2.75 -5.3125 6 v 77 h 6 v -32 h 6 v 24 h 6 v -24 h 6 v 12 h 6 v -12 h 5 v 32 h 6 v -32 h 5 v 38 h 6 v -38 h 6 v 32 h 6 v -32 l 0.042969 -29.050781 l -22.042969 -21.949219 z m 0 0" fill="#f6f5f4"/>
<path d="m 90 13 v 16.140625 c 0 3.253906 2.648438 5.816406 5.902344 5.816406 l 16.140625 -0.003906 z m 0 0" fill="#deddda"/>
<path d="m 94 64 h 6 v 32 h -6 z m 0 0" fill="#f6f5f4"/>
<path d="m 24 48 h 20 v 14 h -20 z m 0 0" fill="url(#l)"/>
<g fill="#c0bfbc">
<path d="m 56 20 h 22 v 4 h -22 z m 0 0"/>
<path d="m 56 28 h 26 v 4 h -26 z m 0 0"/>
<path d="m 80 46 h 24 v 4 h -24 z m 0 0"/>
<path d="m 80 38 h 16 v 4 h -16 z m 0 0"/>
<path d="m 24 66 h 24 v 4 h -24 z m 0 0"/>
<path d="m 56 54 h 48 v 4 h -48 z m 0 0"/>
</g>
<use mask="url(#m)" transform="matrix(1 0 0 1 -8 -16)" xlink:href="#B"/>
<path d="m 94 98 h 6 v 4 h -6 z m 0 0" fill="#c0bfbc"/>
<path d="m 106 92 h 6 v 4 h -6 z m 0 0" fill="#c0bfbc"/>
<path d="m 83 92 h 6 v 4 h -6 z m 0 0" fill="#c0bfbc"/>
<path d="m 72 72 h 6 v 4 h -6 z m 0 0" fill="#c0bfbc"/>
<path d="m 60 84 h 6 v 4 h -6 z m 0 0" fill="#c0bfbc"/>
<path d="m 48 92 h 6 v 4 h -6 z m 0 0" fill="#c0bfbc"/>
<path d="m 56 36 h 20 v 14 h -20 z m 0 0" fill="url(#n)"/>
<g clip-path="url(#I)" mask="url(#E)">
<g clip-path="url(#H)" mask="url(#F)">
<path d="m 128 80.640625 v 47.359375 h -128 v -47.359375 z m 0 0" fill="url(#G)"/>
<path d="m 13.308594 80.640625 l 47.355468 47.359375 h 21.214844 l -47.359375 -47.359375 z m 42.421875 0 l 47.363281 47.359375 h 21.214844 l -47.363282 -47.359375 z m 42.429687 0 l 29.839844 29.839844 v -21.210938 l -8.628906 -8.628906 z m -98.160156 7.90625 v 21.214844 l 18.238281 18.238281 h 21.214844 z m 0 0"/>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 17 KiB

View file

@ -1,114 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg height="128px" viewBox="0 0 128 128" width="128px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<filter id="a" height="100%" width="100%" x="0%" y="0%">
<feColorMatrix in="SourceGraphic" type="matrix" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0"/>
</filter>
<mask id="b">
<g filter="url(#a)">
<rect fill-opacity="0.104" height="128" width="128"/>
</g>
</mask>
<linearGradient id="c" gradientUnits="userSpaceOnUse">
<stop offset="0"/>
<stop offset="1" stop-opacity="0"/>
</linearGradient>
<radialGradient id="d" cx="448.010223" cy="51.543747" gradientTransform="matrix(0.112144 0.00038317 -0.00021629 0.0633011 26.761475 154.313576)" r="224" xlink:href="#c"/>
<clipPath id="e">
<rect height="152" width="192"/>
</clipPath>
<mask id="f">
<g filter="url(#a)">
<rect fill-opacity="0.4" height="128" width="128"/>
</g>
</mask>
<linearGradient id="g" gradientTransform="matrix(0.183804 0 0 0.183435 95.760605 92.654816)" gradientUnits="userSpaceOnUse" x1="-91.187302" x2="-450.265167" y1="100.009354" y2="100.009354">
<stop offset="0" stop-color="#9a9996"/>
<stop offset="0.0357143" stop-color="#f6f5f4"/>
<stop offset="0.106061" stop-color="#c0bfbc"/>
<stop offset="0.893939" stop-color="#c0bfbc"/>
<stop offset="0.939394" stop-color="#deddda"/>
<stop offset="1" stop-color="#9a9996"/>
</linearGradient>
<linearGradient id="h" gradientUnits="userSpaceOnUse">
<stop offset="0" stop-color="#c0bfbc"/>
<stop offset="0.895452" stop-color="#c0bfbc"/>
<stop offset="0.941856" stop-color="#deddda"/>
<stop offset="1" stop-color="#9a9996"/>
</linearGradient>
<linearGradient id="i" gradientTransform="matrix(0.183804 0 0 0.183435 95.760605 92.654816)" x1="-444.824585" x2="-96.627876" xlink:href="#h" y1="-126.472778" y2="-126.472778"/>
<linearGradient id="j" gradientTransform="matrix(0.183804 0 0 -0.183435 95.760605 92.654816)" x1="-444.824585" x2="-96.627876" xlink:href="#h" y1="-126.472778" y2="-126.472778"/>
<mask id="k">
<g filter="url(#a)">
<rect fill-opacity="0.104" height="128" width="128"/>
</g>
</mask>
<radialGradient id="l" cx="70" cy="295.183136" gradientTransform="matrix(1.312499 -0.0312501 0.00967013 0.406135 -16.729404 5.303345)" r="32.000004" xlink:href="#c"/>
<clipPath id="m">
<rect height="152" width="192"/>
</clipPath>
<linearGradient id="n" gradientTransform="matrix(0.183804 0 0 0.183435 95.760605 92.654816)" x1="-444.824585" x2="-96.627876" xlink:href="#c" y1="-126.472794" y2="-126.472794"/>
<linearGradient id="o" gradientTransform="matrix(0.183804 0 0 -0.183435 95.760605 92.654816)" x1="-444.824585" x2="-96.627876" xlink:href="#c" y1="-126.472794" y2="-126.472794"/>
<linearGradient id="p" gradientUnits="userSpaceOnUse" x1="24" x2="44" y1="48" y2="62">
<stop offset="0" stop-color="#9141ac"/>
<stop offset="1" stop-color="#1c71d8"/>
</linearGradient>
<mask id="q">
<g filter="url(#a)">
<rect fill-opacity="0.104" height="128" width="128"/>
</g>
</mask>
<radialGradient id="r" cx="70" cy="295.183136" gradientTransform="matrix(1.312499 -0.0312501 0.00967013 0.406135 -16.729404 9.303345)" r="32.000004" xlink:href="#c"/>
<clipPath id="s">
<rect height="152" width="192"/>
</clipPath>
<linearGradient id="t" gradientUnits="userSpaceOnUse" x1="55.999998" x2="75.999998" y1="35.999996" y2="49.999996">
<stop offset="0" stop-color="#c061cb"/>
<stop offset="1" stop-color="#3584e4"/>
</linearGradient>
<path d="m 52 64 h 8 v 32 h -8 z m 0 0" fill="#f6f5f4"/>
<g clip-path="url(#e)" mask="url(#b)" transform="matrix(1 0 0 1 -8 -16)">
<path d="m -29 150 v 2 c 0 4.433594 3.566406 8 8 8 h 96 c 4.433594 0 8 -3.566406 8 -8 v -2 c 0 4.433594 -3.566406 8 -8 8 h -96 c -4.433594 0 -8 -3.566406 -8 -8 z m 0 4 v 2 c 0 4.433594 3.566406 8 8 8 h 96 c 4.433594 0 8 -3.566406 8 -8 v -2 c 0 4.433594 -3.566406 8 -8 8 h -96 c -4.433594 0 -8 -3.566406 -8 -8 z m 0 4 v 2 c 0 4.433594 3.566406 8 8 8 h 96 c 4.433594 0 8 -3.566406 8 -8 v -2 c 0 4.433594 -3.566406 8 -8 8 h -96 c -4.433594 0 -8 -3.566406 -8 -8 z m 0 4 v 2 c 0 4.433594 3.566406 8 8 8 h 96 c 4.433594 0 8 -3.566406 8 -8 v -2 c 0 4.433594 -3.566406 8 -8 8 h -96 c -4.433594 0 -8 -3.566406 -8 -8 z m 0 4 v 2 c 0 4.433594 3.566406 8 8 8 h 96 c 4.433594 0 8 -3.566406 8 -8 v -2 c 0 4.433594 -3.566406 8 -8 8 h -96 c -4.433594 0 -8 -3.566406 -8 -8 z m 0 0" fill="url(#d)"/>
</g>
<image height="152" mask="url(#f)" transform="matrix(1 0 0 1 -8 -16)" width="192" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMAAAACYCAYAAACyAeadAAAABmJLR0QA/wD/AP+gvaeTAAAAiElEQVR4nO3BMQEAAADCoPVP7WsIoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAPIpwABWLk4FQAAAABJRU5ErkJggg=="/>
<path d="m 19.882812 28.496094 l 36.675782 -5.585938 l 21.441406 22.089844 v 65 c 0 3.460938 -1.925781 6 -5.183594 6 h -52.933594 c -3.257812 0 -5.882812 -2.789062 -5.882812 -6.25 v -75.003906 c 0 -3.460938 2.625 -6.25 5.882812 -6.25 z m 0 0" fill="url(#g)"/>
<path d="m 58.679688 76.75 h 10.292968 v 2.9375 h -10.292968 z m 0 -7.335938 h 10.292968 v 2.933594 h -10.292968 z m 0 -7.335937 h 10.292968 v 2.933594 h -10.292968 z m 0 -7.339844 h 10.292968 v 2.9375 h -10.292968 z m 0 -7.335937 h 10.292968 v 2.933594 h -10.292968 z m -33.820313 -7.335938 h 44.113281 v 2.933594 h -44.113281 z m 0 -7.339844 h 27.9375 v 2.9375 h -27.9375 z m 0 -7.335937 h 27.9375 v 2.933594 h -27.9375 z m 0 0" fill="url(#i)"/>
<path d="m 24.859375 84.089844 h 30.878906 v -36.710938 h -30.878906 z m 0 0" fill="url(#j)"/>
<path d="m 24.859375 84.089844 h 30.878906 v -36.710938 h -30.878906 z m 0 0" fill="url(#j)"/>
<g clip-path="url(#m)" mask="url(#k)" transform="matrix(1 0 0 1 -8 -16)">
<path d="m 27.398438 123.054688 c -1.988282 -0.410157 -4.296876 -0.3125 -4.859376 -2.179688 c -0.175781 -0.589844 -0.539062 -1.238281 -0.539062 -4.105469 l 0.003906 -1.300781 l 0.714844 2.339844 c 0.402344 1.324218 2.058594 2.28125 3.480469 2.664062 c 1.449219 0.390625 54.734375 0.378906 55.902343 -0.011718 c 1.371094 -0.460938 2.375 -1.363282 3.089844 -2.773438 l 0.808594 -3.6875 v 5 c -0.636719 2.582031 -1.746094 3.355469 -3.476562 4.160156 l -27.125 0.035156 c -14.410157 0.019532 -26.660157 -0.039062 -27.90625 -0.132812 c -0.046876 -0.003906 -0.074219 -0.007812 -0.09375 -0.007812 z m 0 0" fill="url(#l)"/>
</g>
<path d="m 58.679688 76.75 h 10.292968 v 2.9375 h -10.292968 z m 0 -7.335938 h 10.292968 v 2.933594 h -10.292968 z m 0 -7.335937 h 10.292968 v 2.933594 h -10.292968 z m 0 -7.339844 h 10.292968 v 2.9375 h -10.292968 z m 0 -7.335937 h 10.292968 v 2.933594 h -10.292968 z m -33.820313 -7.335938 h 44.113281 v 2.933594 h -44.113281 z m 0 -7.339844 h 27.9375 v 2.9375 h -27.9375 z m 0 -7.335937 h 27.9375 v 2.933594 h -27.9375 z m 0 0" fill="url(#n)"/>
<path d="m 24.859375 84.089844 h 30.878906 v -36.710938 h -30.878906 z m 0 0" fill="url(#o)"/>
<path d="m 24.859375 84.089844 h 30.878906 v -36.710938 h -30.878906 z m 0 0" fill="url(#o)"/>
<path d="m 56.558594 22.910156 v 16.144532 c 0 3.25 2.648437 5.8125 5.898437 5.8125 l 16.144531 -0.003907 z m 0 0" fill="#deddda"/>
<path d="m 19.871094 22.910156 h 36.6875 l 21.441406 22.089844 v 54 c 0 3.25 -2.050781 6.089844 -5.300781 6.089844 h -52.828125 c -3.253906 0 -5.871094 -2.617188 -5.871094 -5.871094 v -70.4375 c 0 -3.253906 2.617188 -5.871094 5.871094 -5.871094 z m 0 0" fill="#deddda"/>
<path d="m 24 90 h 22 v 4 h -22 z m 0 0" fill="#c0bfbc"/>
<path d="m 24 82 h 48 v 4 h -48 z m 0 0" fill="#c0bfbc"/>
<path d="m 24 74 h 48 v 4 h -48 z m 0 0" fill="#c0bfbc"/>
<path d="m 48 52 h 16 v 4 h -16 z m 0 0" fill="#9a9996"/>
<path d="m 24 32 h 22 v 4 h -22 z m 0 0" fill="#c0bfbc"/>
<path d="m 24 40 h 24 v 4 h -24 z m 0 0" fill="#c0bfbc"/>
<path d="m 48 60 h 22 v 4 h -22 z m 0 0" fill="#9a9996"/>
<path d="m 53.3125 13 c -3.25 0 -5.3125 2.75 -5.3125 6 v 77 h 6 v -32 h 6 v 24 h 6 v -24 h 6 v 12 h 6 v -12 h 5 v 32 h 6 v -32 h 5 v 38 h 6 v -38 h 6 v 32 h 6 v -32 l 0.042969 -29.050781 l -22.042969 -21.949219 z m 0 0" fill="#f6f5f4"/>
<path d="m 90 13 v 16.140625 c 0 3.253906 2.648438 5.816406 5.902344 5.816406 l 16.140625 -0.003906 z m 0 0" fill="#deddda"/>
<path d="m 94 64 h 6 v 32 h -6 z m 0 0" fill="#f6f5f4"/>
<path d="m 24 48 h 20 v 14 h -20 z m 0 0" fill="url(#p)"/>
<g fill="#c0bfbc">
<path d="m 56 20 h 22 v 4 h -22 z m 0 0"/>
<path d="m 56 28 h 26 v 4 h -26 z m 0 0"/>
<path d="m 80 46 h 24 v 4 h -24 z m 0 0"/>
<path d="m 80 38 h 16 v 4 h -16 z m 0 0"/>
<path d="m 24 66 h 24 v 4 h -24 z m 0 0"/>
<path d="m 56 54 h 48 v 4 h -48 z m 0 0"/>
</g>
<g clip-path="url(#s)" mask="url(#q)" transform="matrix(1 0 0 1 -8 -16)">
<path d="m 27.398438 127.054688 c -1.988282 -0.410157 -4.296876 -0.3125 -4.859376 -2.179688 c -0.175781 -0.589844 -0.539062 -1.238281 -0.539062 -4.105469 l 0.003906 -1.300781 l 0.714844 2.339844 c 0.402344 1.324218 2.058594 2.28125 3.480469 2.664062 c 1.449219 0.390625 53.574219 0.632813 54.800781 0.527344 c 1.855469 -0.15625 3.730469 -1.214844 4.191406 -3.3125 l 0.808594 -3.6875 v 5 c -0.636719 2.582031 -1.746094 3.355469 -3.476562 4.160156 l -27.125 0.035156 c -14.410157 0.019532 -26.660157 -0.039062 -27.90625 -0.132812 c -0.046876 -0.003906 -0.074219 -0.007812 -0.09375 -0.007812 z m 0 0" fill="url(#r)"/>
</g>
<path d="m 94 98 h 6 v 4 h -6 z m 0 0" fill="#c0bfbc"/>
<path d="m 106 92 h 6 v 4 h -6 z m 0 0" fill="#c0bfbc"/>
<path d="m 83 92 h 6 v 4 h -6 z m 0 0" fill="#c0bfbc"/>
<path d="m 72 72 h 6 v 4 h -6 z m 0 0" fill="#c0bfbc"/>
<path d="m 60 84 h 6 v 4 h -6 z m 0 0" fill="#c0bfbc"/>
<path d="m 48 92 h 6 v 4 h -6 z m 0 0" fill="#c0bfbc"/>
<path d="m 56 36 h 20 v 14 h -20 z m 0 0" fill="url(#t)"/>
</svg>

Before

Width:  |  Height:  |  Size: 10 KiB

View file

@ -4,6 +4,15 @@
use i18n_embed::unic_langid::LanguageIdentifier;
use i18n_embed::DesktopLanguageRequester;
use std::collections::HashMap;
use i18n_embed::{
fluent::{fluent_language_loader, FluentLanguageLoader},
DefaultLocalizer, LanguageLoader, Localizer,
};
use once_cell::sync::Lazy;
use rust_embed::RustEmbed;
fn main() {
load_system_language(); // Check for default system language, must be loaded after initializing GUI and before loading settings from file
connect_change_language();
@ -14,7 +23,7 @@ pub fn connect_change_language() {
fn change_language() {
println!("Change language");
let localizers = vec![("czkawka_gui", czkawka_core::localizer::localizer())];
let localizers = vec![("czkawka_gui", localizer())];
let lang_identifier = vec![LanguageIdentifier::from_bytes("en".as_bytes()).unwrap()];
for (lib, localizer) in localizers {
@ -43,3 +52,39 @@ pub fn load_system_language() {
}
}
}
#[derive(RustEmbed)]
#[folder = "i18n/"]
struct Localizations;
pub static LANGUAGE_LOADER: Lazy<FluentLanguageLoader> = Lazy::new(|| {
let loader: FluentLanguageLoader = fluent_language_loader!();
loader.load_fallback_language(&Localizations).expect("Error while loading fallback language");
loader
});
#[macro_export]
macro_rules! fl {
($message_id:literal) => {{
i18n_embed_fl::fl!($crate::localizer::LANGUAGE_LOADER, $message_id)
}};
($message_id:literal, $($args:expr),*) => {{
i18n_embed_fl::fl!($crate::localizer::LANGUAGE_LOADER, $message_id, $($args), *)
}};
}
// Get the `Localizer` to be used for localizing this library.
pub fn localizer() -> Box<dyn Localizer> {
Box::from(DefaultLocalizer::new(&*LANGUAGE_LOADER, &Localizations))
}
pub fn generate_translation_hashmap(vec: Vec<(&'static str, String)>) -> HashMap<&'static str, String> {
let mut hashmap: HashMap<&'static str, String> = Default::default();
for (key, value) in vec {
hashmap.insert(key, value);
}
hashmap
}