Merge remote-tracking branch 'remotes/origin/branches/issue189_REBASED'
|
@ -1,4 +1,4 @@
|
|||
name: LinuxInstall
|
||||
name: Linux_AppImage
|
||||
|
||||
on:
|
||||
create:
|
||||
|
@ -17,7 +17,43 @@ jobs:
|
|||
sudo apt-get update
|
||||
sudo apt-get install -y libxcb-cursor0
|
||||
sudo apt-get install -y libspeechd2
|
||||
|
||||
sudo apt-get install -y gnupg2 wget
|
||||
wget -c "https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-x86_64.AppImage"
|
||||
chmod +x appimagetool-x86_64.AppImage
|
||||
sudo mv appimagetool-x86_64.AppImage /usr/local/bin/appimagetool
|
||||
|
||||
- name: Configure GPG
|
||||
run: |
|
||||
mkdir -p ~/.gnupg
|
||||
echo "use-agent" >> ~/.gnupg/gpg.conf
|
||||
echo "pinentry-mode loopback" >> ~/.gnupg/gpg.conf
|
||||
echo "allow-loopback-pinentry" >> ~/.gnupg/gpg-agent.conf
|
||||
echo "allow-preset-passphrase" >> ~/.gnupg/gpg-agent.conf
|
||||
gpgconf --kill gpg-agent
|
||||
echo "GPG configuration complete."
|
||||
chmod 700 ~/.gnupg
|
||||
|
||||
- name: Import PGP private key
|
||||
run: |
|
||||
echo "${{ secrets.PGP_PRIVATE_KEY }}" | gpg --batch --import
|
||||
for keygrip in $(gpg --list-secret-keys --with-keygrip "${{ secrets.PGP_KEY_ID }}" | grep Keygrip | awk '{print $3}'); do
|
||||
echo "${{ secrets.PGP_PASSPHRASE }}" | "$(gpgconf --list-dirs libexecdir)"/gpg-preset-passphrase --preset $keygrip
|
||||
done
|
||||
env:
|
||||
GNUPGHOME: /home/runner/.gnupg
|
||||
|
||||
- name: Create Test signature
|
||||
run: |
|
||||
echo "TEST" >> ~/test_with_passphrase.txt
|
||||
echo "TEST" >> ~/test_without_passphrase.txt
|
||||
gpg --batch --yes --verbose --passphrase "${{ secrets.PGP_PASSPHRASE }}" --pinentry-mode loopback --detach-sign --local-user "${{ secrets.PGP_KEY_ID }}" --output ~/test_with_passphrase.txt.sig ~/test_with_passphrase.txt
|
||||
gpg --batch --yes --verbose --pinentry-mode loopback --detach-sign --local-user "${{ secrets.PGP_KEY_ID }}" --output ~/test_without_passphrase.txt.sig ~/test_without_passphrase.txt
|
||||
|
||||
- name: Verify Test signature
|
||||
run: |
|
||||
gpg --batch --yes --verbose --verify ~/test_with_passphrase.txt.sig ~/test_with_passphrase.txt
|
||||
gpg --batch --yes --verbose --verify ~/test_without_passphrase.txt.sig ~/test_without_passphrase.txt
|
||||
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
|
@ -37,7 +73,7 @@ jobs:
|
|||
./vcpkg integrate install
|
||||
|
||||
- name: 'VCPKG: Cache vcpkg dependencies'
|
||||
uses: actions/cache@v3
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: |
|
||||
./vcpkg/downloads
|
||||
|
@ -46,60 +82,65 @@ jobs:
|
|||
restore-keys: |
|
||||
${{ runner.os }}-vcpkg-v2-
|
||||
|
||||
- name: 'VCPKG: Install project dependencies'
|
||||
- name: 'VCPKG: Install Project Dependencies'
|
||||
run: |
|
||||
./vcpkg install tbb openssl lcms zlib openjpeg freetype ijg-libjpeg libpng blend2d
|
||||
./vcpkg install tbb openssl lcms zlib openjpeg freetype ijg-libjpeg libpng blend2d brotli bzip2 --triplet x64-linux-release
|
||||
working-directory: vcpkg
|
||||
|
||||
- name: Install Qt
|
||||
uses: jurplel/install-qt-action@v3
|
||||
with:
|
||||
version: '6.6.0'
|
||||
version: '6.7.2'
|
||||
host: 'linux'
|
||||
target: 'desktop'
|
||||
dir: '${{ github.workspace }}/qt/'
|
||||
install-deps: 'true'
|
||||
modules: 'qtspeech qtmultimedia'
|
||||
cache: 'true'
|
||||
cache-key-prefix: ${{ runner.os }}-qt-660
|
||||
cache-key-prefix: ${{ runner.os }}-qt-672
|
||||
|
||||
- name: Build project
|
||||
- name: Build Project
|
||||
working-directory: pdf4qt
|
||||
run: |
|
||||
cmake -B build -S . -DPDF4QT_INSTALL_QT_DEPENDENCIES=0 -DCMAKE_TOOLCHAIN_FILE=../vcpkg/scripts/buildsystems/vcpkg.cmake -DCMAKE_BUILD_TYPE=Release -DVCPKG_OVERLAY_PORTS=vcpkg/overlays -DPDF4QT_INSTALL_TO_USR=ON
|
||||
cmake -B build -S . -DPDF4QT_INSTALL_QT_DEPENDENCIES=0 -DCMAKE_TOOLCHAIN_FILE=../vcpkg/scripts/buildsystems/vcpkg.cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_VCPKG_BUILD_TYPE=Release -DVCPKG_OVERLAY_PORTS=vcpkg/overlays -DPDF4QT_INSTALL_TO_USR=ON
|
||||
cmake --build build -j6
|
||||
cmake --install build
|
||||
cp -rp build/install build/install_appimage
|
||||
|
||||
- name: 'Linux Deploy Qt'
|
||||
working-directory: pdf4qt/build
|
||||
run: |
|
||||
cp install/usr/share/icons/hicolor/scalable/apps/io.github.JakubMelka.Pdf4qt.svg install/io.github.JakubMelka.Pdf4qt.svg
|
||||
wget -O deploy.AppImage https://github.com/probonopd/linuxdeployqt/releases/download/continuous/linuxdeployqt-continuous-x86_64.AppImage
|
||||
chmod +x deploy.AppImage
|
||||
./deploy.AppImage install/usr/share/applications/io.github.JakubMelka.Pdf4qt.desktop -executable-dir=install/usr/bin -extra-plugins=iconengines,imageformats,texttospeech
|
||||
|
||||
- name: Sign and Repack AppImage
|
||||
working-directory: pdf4qt/build
|
||||
run: |
|
||||
export GPG_TTY=$(tty)
|
||||
echo "${{ secrets.PGP_PASSPHRASE }}" | appimagetool -s --sign-key "${{ secrets.PGP_KEY_ID }}" install/ io.github.JakubMelka.Pdf4qt.AppImage
|
||||
|
||||
- name: Manual signature
|
||||
run: |
|
||||
gpg --batch --yes --verbose --pinentry-mode loopback --detach-sign --passphrase "${{ secrets.PGP_PASSPHRASE }}" --local-user "${{ secrets.PGP_KEY_ID }}" --output pdf4qt/build/io.github.JakubMelka.Pdf4qt.AppImage.sig pdf4qt/build/io.github.JakubMelka.Pdf4qt.AppImage
|
||||
|
||||
- name: Make DEB package
|
||||
working-directory: pdf4qt/build
|
||||
- name: Verify AppImage Detached Signature
|
||||
run: |
|
||||
sh make-package.sh
|
||||
|
||||
- name: Upload DEB package
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: ubuntu-deb-package
|
||||
path: ./pdf4qt/build/*.deb
|
||||
retention-days: 30
|
||||
|
||||
- name: 'Make AppImage'
|
||||
working-directory: pdf4qt/build
|
||||
run: |
|
||||
cp install_appimage/usr/share/icons/hicolor/scalable/apps/io.github.JakubMelka.Pdf4qt.svg install_appimage/io.github.JakubMelka.Pdf4qt.svg
|
||||
./deploy.AppImage install_appimage/usr/share/applications/io.github.JakubMelka.Pdf4qt.desktop -appimage -executable-dir=install_appimage/usr/bin -always-overwrite -extra-plugins=iconengines,imageformats,texttospeech
|
||||
|
||||
- name: Upload AppImage package
|
||||
uses: actions/upload-artifact@v3
|
||||
echo "${{ secrets.PGP_PUBLIC_KEY }}" | gpg --batch --import
|
||||
gpg --verify pdf4qt/build/io.github.JakubMelka.Pdf4qt.AppImage.sig pdf4qt/build/io.github.JakubMelka.Pdf4qt.AppImage
|
||||
|
||||
- name: Upload AppImage Package
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: ubuntu-appimage
|
||||
path: ./pdf4qt/build/*.AppImage
|
||||
path: ./pdf4qt/build/io.github.JakubMelka.Pdf4qt.AppImage
|
||||
retention-days: 30
|
||||
|
||||
|
||||
- name: Upload AppImage Signature File
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: ubuntu-appimage-sig
|
||||
path: ./pdf4qt/build/io.github.JakubMelka.Pdf4qt.AppImage.sig
|
||||
retention-days: 30
|
||||
if-no-files-found: warn
|
||||
compression-level: 0
|
||||
|
|
|
@ -25,7 +25,7 @@ jobs:
|
|||
./vcpkg integrate install
|
||||
|
||||
- name: 'VCPKG: Cache vcpkg dependencies'
|
||||
uses: actions/cache@v3
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: |
|
||||
./vcpkg/downloads
|
||||
|
@ -42,19 +42,19 @@ jobs:
|
|||
- name: Install Qt
|
||||
uses: jurplel/install-qt-action@v3
|
||||
with:
|
||||
version: '6.6.0'
|
||||
version: '6.7.2'
|
||||
host: 'linux'
|
||||
target: 'desktop'
|
||||
dir: '${{ github.workspace }}/qt/'
|
||||
install-deps: 'true'
|
||||
modules: 'qtspeech qtmultimedia'
|
||||
cache: 'true'
|
||||
cache-key-prefix: ${{ runner.os }}-qt-660
|
||||
cache-key-prefix: ${{ runner.os }}-qt-672
|
||||
|
||||
- name: Build project
|
||||
working-directory: pdf4qt
|
||||
run: |
|
||||
cmake -B build -S . -DPDF4QT_INSTALL_QT_DEPENDENCIES=0 -DCMAKE_TOOLCHAIN_FILE=../vcpkg/scripts/buildsystems/vcpkg.cmake -DCMAKE_BUILD_TYPE=Release
|
||||
cmake -B build -S . -DPDF4QT_INSTALL_QT_DEPENDENCIES=0 -DCMAKE_TOOLCHAIN_FILE=../vcpkg/scripts/buildsystems/vcpkg.cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_VCPKG_BUILD_TYPE=Release
|
||||
cmake --build build -j6
|
||||
cmake --install build
|
||||
|
||||
|
@ -64,7 +64,7 @@ jobs:
|
|||
sh make-package.sh
|
||||
|
||||
- name: Upload DEB package
|
||||
uses: actions/upload-artifact@v3
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: ubuntu-deb-package
|
||||
path: ./pdf4qt/build/*.deb
|
||||
|
@ -89,7 +89,7 @@ jobs:
|
|||
set "VCPKG_BINARY_SOURCES=clear;files,${env:GITHUB_WORKSPACE}\vcpkg\archives,readwrite"
|
||||
|
||||
- name: 'VCPKG: Cache vcpkg dependencies'
|
||||
uses: actions/cache@v3
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: |
|
||||
./vcpkg/downloads
|
||||
|
@ -107,25 +107,25 @@ jobs:
|
|||
- name: Install Qt
|
||||
uses: jurplel/install-qt-action@v3
|
||||
with:
|
||||
version: '6.6.0'
|
||||
version: '6.7.2'
|
||||
host: 'windows'
|
||||
target: 'desktop'
|
||||
dir: '${{ github.workspace }}/qt/'
|
||||
install-deps: 'true'
|
||||
modules: 'qtspeech qtmultimedia'
|
||||
cache: 'true'
|
||||
cache-key-prefix: ${{ runner.os }}-qt-660
|
||||
cache-key-prefix: ${{ runner.os }}-qt-672
|
||||
|
||||
- name: Build project
|
||||
working-directory: pdf4qt
|
||||
shell: pwsh
|
||||
run: |
|
||||
cmake -B build -S . -DCMAKE_BUILD_TYPE=Release -DPDF4QT_INSTALL_QT_DEPENDENCIES=ON -DPDF4QT_INSTALL_DEPENDENCIES=ON -DCMAKE_TOOLCHAIN_FILE="${env:GITHUB_WORKSPACE}\vcpkg\scripts\buildsystems\vcpkg.cmake" -DPDF4QT_QT_ROOT="${env:Qt6_DIR}" -DPDF4QT_INSTALL_MSVC_REDISTRIBUTABLE=ON -DPDF4QT_INSTALL_PREPARE_WIX_INSTALLER=ON -DPDF4QT_INSTALL_TO_USR=ON
|
||||
cmake -B build -S . -DCMAKE_BUILD_TYPE=Release -DCMAKE_VCPKG_BUILD_TYPE=Release -DPDF4QT_INSTALL_QT_DEPENDENCIES=ON -DPDF4QT_INSTALL_DEPENDENCIES=ON -DCMAKE_TOOLCHAIN_FILE="${env:GITHUB_WORKSPACE}\vcpkg\scripts\buildsystems\vcpkg.cmake" -DPDF4QT_QT_ROOT="${env:Qt6_DIR}" -DPDF4QT_INSTALL_MSVC_REDISTRIBUTABLE=ON -DPDF4QT_INSTALL_PREPARE_WIX_INSTALLER=ON -DPDF4QT_INSTALL_TO_USR=ON
|
||||
cmake --build build --config Release -j6
|
||||
cmake --install build
|
||||
|
||||
- name: Upload Windows package
|
||||
uses: actions/upload-artifact@v3
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: 'pdf4qt-${{ runner.os }}.zip'
|
||||
path: .\pdf4qt\build\install\usr\bin
|
||||
|
|
|
@ -0,0 +1,61 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Package xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10" xmlns:mp="http://schemas.microsoft.com/appx/2014/phone/manifest" xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10" IgnorableNamespaces="uap mp">
|
||||
<Identity Name="io.github.JakubMelka.PDF4QT" Publisher="CN=JakubMelka" Version="${PDF4QT_VERSION}.0" />
|
||||
<Properties>
|
||||
<DisplayName>PDF4QT</DisplayName>
|
||||
<PublisherDisplayName>Jakub Melka</PublisherDisplayName>
|
||||
<Logo>assets\logo.png</Logo>
|
||||
<Description>Discover the power and versatility of PDF4QTs suite of applications. These tools are designed to transform the way you interact with PDF documents, offering a comprehensive set of features for viewing, editing, manipulating, and comparing PDFs.</Description>
|
||||
</Properties>
|
||||
<Resources>
|
||||
<Resource Language="en-us" />
|
||||
</Resources>
|
||||
<Applications>
|
||||
<Application Id="Pdf4QtEditor" Executable="Pdf4QtEditor.exe" EntryPoint="windows.fullTrustApplication">
|
||||
<uap:VisualElements DisplayName="PDF4QT Editor"
|
||||
Description="This program enhances PDF interactions with encryption, document reading, digital signatures, annotation editing, regex text search, PDF editing, page-to-image conversion, and plugins."
|
||||
BackgroundColor="transparent"
|
||||
Square150x150Logo="assets\150x150\io.github.JakubMelka.Pdf4qt.Pdf4QtEditor.png"
|
||||
Square44x44Logo="assets\44x44\io.github.JakubMelka.Pdf4qt.Pdf4QtEditor.png">
|
||||
</uap:VisualElements>
|
||||
<Extensions>
|
||||
<uap:Extension Category="windows.fileTypeAssociation">
|
||||
<uap:FileTypeAssociation Name=".pdf">
|
||||
<uap:SupportedFileTypes>
|
||||
<uap:FileType>.pdf</uap:FileType>
|
||||
</uap:SupportedFileTypes>
|
||||
<uap:Logo>assets\logo.png</uap:Logo>
|
||||
</uap:FileTypeAssociation>
|
||||
</uap:Extension>
|
||||
</Extensions>
|
||||
</Application>
|
||||
<Application Id="Pdf4QtViewer" Executable="Pdf4QtViewer.exe" EntryPoint="windows.fullTrustApplication">
|
||||
<uap:VisualElements DisplayName="PDF4QT Viewer"
|
||||
Description="Simplify your viewing experience. This lightweight viewer offers essential viewing functions in a clean, user-friendly interface."
|
||||
BackgroundColor="transparent"
|
||||
Square150x150Logo="assets\150x150\io.github.JakubMelka.Pdf4qt.Pdf4QtViewer.png"
|
||||
Square44x44Logo="assets\44x44\io.github.JakubMelka.Pdf4qt.Pdf4QtViewer.png">
|
||||
</uap:VisualElements>
|
||||
</Application>
|
||||
<Application Id="Pdf4QtPageMaster" Executable="Pdf4QtPageMaster.exe" EntryPoint="windows.fullTrustApplication">
|
||||
<uap:VisualElements DisplayName="PDF4QT PageMaster"
|
||||
Description="Take control of your documents. Manage whole documents or individual pages with ease. Merge documents into a single file, or split them into multiple ones. You can also move, clone, or add pages with a few clicks, all within an intuitive user interface."
|
||||
BackgroundColor="transparent"
|
||||
Square150x150Logo="assets\150x150\io.github.JakubMelka.Pdf4qt.Pdf4QtPageMaster.png"
|
||||
Square44x44Logo="assets\44x44\io.github.JakubMelka.Pdf4qt.Pdf4QtPageMaster.png">
|
||||
</uap:VisualElements>
|
||||
</Application>
|
||||
<Application Id="Pdf4QtDiff" Executable="Pdf4QtDiff.exe" EntryPoint="windows.fullTrustApplication">
|
||||
<uap:VisualElements DisplayName="PDF4QT PageMaster"
|
||||
Description="Spot differences effortlessly. This tool allows users to open two documents and receive a detailed list of differences. View these differences in a page-to-page window where they are clearly marked."
|
||||
BackgroundColor="transparent"
|
||||
Square150x150Logo="assets\150x150\io.github.JakubMelka.Pdf4qt.Pdf4QtDiff.png"
|
||||
Square44x44Logo="assets\44x44\io.github.JakubMelka.Pdf4qt.Pdf4QtDiff.png">
|
||||
</uap:VisualElements>
|
||||
</Application>
|
||||
</Applications>
|
||||
|
||||
<Dependencies>
|
||||
<TargetDeviceFamily Name="Windows.Desktop" MinVersion="10.0.17763.0" MaxVersionTested="10.0.19045.0" />
|
||||
</Dependencies>
|
||||
</Package>
|
|
@ -17,7 +17,7 @@
|
|||
|
||||
cmake_minimum_required(VERSION 3.16)
|
||||
|
||||
set(PDF4QT_VERSION 1.3.7)
|
||||
set(PDF4QT_VERSION 1.4.0)
|
||||
message(STATUS "Build type - CMAKE_BUILD_TYPE: ${CMAKE_BUILD_TYPE}")
|
||||
|
||||
project(PDF4QT VERSION ${PDF4QT_VERSION} LANGUAGES CXX)
|
||||
|
@ -144,27 +144,44 @@ message("CMAKE_PREFIX_PATH = " ${CMAKE_PREFIX_PATH})
|
|||
message("CMAKE_TOOLCHAIN_FILE = " ${CMAKE_TOOLCHAIN_FILE})
|
||||
|
||||
if(NOT PDF4QT_BUILD_ONLY_CORE_LIBRARY)
|
||||
install(FILES Desktop/io.github.JakubMelka.Pdf4qt.Pdf4QtDiff.desktop
|
||||
Desktop/io.github.JakubMelka.Pdf4qt.Pdf4QtPageMaster.desktop
|
||||
Desktop/io.github.JakubMelka.Pdf4qt.Pdf4QtViewer.desktop
|
||||
Desktop/io.github.JakubMelka.Pdf4qt.Pdf4QtEditor.desktop
|
||||
Desktop/io.github.JakubMelka.Pdf4qt.desktop
|
||||
DESTINATION ${PDF4QT_INSTALL_SHARE_DIR}/applications)
|
||||
install(FILES Desktop/io.github.JakubMelka.Pdf4qt.Pdf4QtDiff.svg
|
||||
Desktop/io.github.JakubMelka.Pdf4qt.Pdf4QtPageMaster.svg
|
||||
Desktop/io.github.JakubMelka.Pdf4qt.Pdf4QtViewer.svg
|
||||
Desktop/io.github.JakubMelka.Pdf4qt.Pdf4QtEditor.svg
|
||||
Desktop/io.github.JakubMelka.Pdf4qt.svg
|
||||
DESTINATION ${PDF4QT_INSTALL_SHARE_DIR}/icons/hicolor/scalable/apps)
|
||||
install(FILES Desktop/io.github.JakubMelka.Pdf4qt.appdata.xml DESTINATION ${PDF4QT_INSTALL_SHARE_DIR}/metainfo)
|
||||
install(FILES Desktop/128x128/io.github.JakubMelka.Pdf4qt.Pdf4QtDiff.png
|
||||
Desktop/128x128/io.github.JakubMelka.Pdf4qt.Pdf4QtPageMaster.png
|
||||
Desktop/128x128/io.github.JakubMelka.Pdf4qt.Pdf4QtViewer.png
|
||||
Desktop/128x128/io.github.JakubMelka.Pdf4qt.Pdf4QtEditor.png
|
||||
Desktop/128x128/io.github.JakubMelka.Pdf4qt.png
|
||||
DESTINATION ${PDF4QT_INSTALL_SHARE_DIR}/icons/hicolor/128x128/apps)
|
||||
if(WIN32)
|
||||
install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/Desktop/44x44/
|
||||
RUNTIME DESTINATION ${PDF4QT_INSTALL_BIN_DIR}/assets/44x44
|
||||
FILES_MATCHING
|
||||
PATTERN *.png)
|
||||
|
||||
install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/Desktop/150x150/
|
||||
RUNTIME DESTINATION ${PDF4QT_INSTALL_BIN_DIR}/assets/150x150
|
||||
FILES_MATCHING
|
||||
PATTERN *.png)
|
||||
|
||||
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/AppxManifest.xml.in ${CMAKE_CURRENT_BINARY_DIR}/AppxManifest.xml)
|
||||
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/AppxManifest.xml DESTINATION ${PDF4QT_INSTALL_BIN_DIR})
|
||||
install(FILES assets/logo.png DESTINATION ${PDF4QT_INSTALL_BIN_DIR}/assets)
|
||||
else()
|
||||
configure_file(make-package.sh.in make-package.sh)
|
||||
|
||||
install(FILES Desktop/io.github.JakubMelka.Pdf4qt.Pdf4QtDiff.desktop
|
||||
Desktop/io.github.JakubMelka.Pdf4qt.Pdf4QtPageMaster.desktop
|
||||
Desktop/io.github.JakubMelka.Pdf4qt.Pdf4QtViewer.desktop
|
||||
Desktop/io.github.JakubMelka.Pdf4qt.Pdf4QtEditor.desktop
|
||||
Desktop/io.github.JakubMelka.Pdf4qt.desktop
|
||||
DESTINATION ${PDF4QT_INSTALL_SHARE_DIR}/applications)
|
||||
install(FILES Desktop/io.github.JakubMelka.Pdf4qt.Pdf4QtDiff.svg
|
||||
Desktop/io.github.JakubMelka.Pdf4qt.Pdf4QtPageMaster.svg
|
||||
Desktop/io.github.JakubMelka.Pdf4qt.Pdf4QtViewer.svg
|
||||
Desktop/io.github.JakubMelka.Pdf4qt.Pdf4QtEditor.svg
|
||||
Desktop/io.github.JakubMelka.Pdf4qt.svg
|
||||
DESTINATION ${PDF4QT_INSTALL_SHARE_DIR}/icons/hicolor/scalable/apps)
|
||||
install(FILES Desktop/io.github.JakubMelka.Pdf4qt.appdata.xml DESTINATION ${PDF4QT_INSTALL_SHARE_DIR}/metainfo)
|
||||
install(FILES Desktop/128x128/io.github.JakubMelka.Pdf4qt.Pdf4QtDiff.png
|
||||
Desktop/128x128/io.github.JakubMelka.Pdf4qt.Pdf4QtPageMaster.png
|
||||
Desktop/128x128/io.github.JakubMelka.Pdf4qt.Pdf4QtViewer.png
|
||||
Desktop/128x128/io.github.JakubMelka.Pdf4qt.Pdf4QtEditor.png
|
||||
Desktop/128x128/io.github.JakubMelka.Pdf4qt.png
|
||||
DESTINATION ${PDF4QT_INSTALL_SHARE_DIR}/icons/hicolor/128x128/apps)
|
||||
endif()
|
||||
|
||||
configure_file(make-package.sh.in make-package.sh)
|
||||
endif()
|
||||
|
||||
if(PDF4QT_INSTALL_DEPENDENCIES AND NOT PDF4QT_BUILD_ONLY_CORE_LIBRARY)
|
||||
|
@ -186,6 +203,7 @@ if(PDF4QT_INSTALL_DEPENDENCIES AND NOT PDF4QT_BUILD_ONLY_CORE_LIBRARY)
|
|||
FILES_MATCHING
|
||||
REGEX "(Qt6Core|Qt6Gui|Qt6PrintSupport|Qt6Svg|Qt6TextToSpeech|Qt6Widgets|Qt6Xml|Qt6Multimedia|Qt6Network)\\..*"
|
||||
PATTERN "Debug" EXCLUDE
|
||||
PATTERN "*.pdb" EXCLUDE
|
||||
)
|
||||
|
||||
install(DIRECTORY ${PDF4QT_QT_ROOT}/plugins/platforms/
|
||||
|
@ -194,12 +212,14 @@ if(PDF4QT_INSTALL_DEPENDENCIES AND NOT PDF4QT_BUILD_ONLY_CORE_LIBRARY)
|
|||
PATTERN "qwindows.dll"
|
||||
PATTERN "*.so"
|
||||
PATTERN "*.dylib"
|
||||
PATTERN "*.pdb" EXCLUDE
|
||||
)
|
||||
|
||||
install(DIRECTORY ${PDF4QT_QT_ROOT}/plugins/iconengines/
|
||||
RUNTIME DESTINATION ${PDF4QT_INSTALL_LIB_DIR}/iconengines/
|
||||
FILES_MATCHING
|
||||
REGEX "qsvgicon\\..*"
|
||||
PATTERN "*.pdb" EXCLUDE
|
||||
)
|
||||
|
||||
install(DIRECTORY ${PDF4QT_QT_ROOT}/plugins/imageformats/
|
||||
|
@ -209,6 +229,7 @@ if(PDF4QT_INSTALL_DEPENDENCIES AND NOT PDF4QT_BUILD_ONLY_CORE_LIBRARY)
|
|||
PATTERN "*.so"
|
||||
PATTERN "*.dylib"
|
||||
REGEX "d\\..*" EXCLUDE
|
||||
PATTERN "*.pdb" EXCLUDE
|
||||
)
|
||||
|
||||
install(DIRECTORY ${PDF4QT_QT_ROOT}/plugins/styles/
|
||||
|
@ -218,6 +239,7 @@ if(PDF4QT_INSTALL_DEPENDENCIES AND NOT PDF4QT_BUILD_ONLY_CORE_LIBRARY)
|
|||
PATTERN "*.so"
|
||||
PATTERN "*.dylib"
|
||||
REGEX "d\\..*" EXCLUDE
|
||||
PATTERN "*.pdb" EXCLUDE
|
||||
)
|
||||
|
||||
install(DIRECTORY ${PDF4QT_QT_ROOT}/plugins/texttospeech/
|
||||
|
@ -227,6 +249,7 @@ if(PDF4QT_INSTALL_DEPENDENCIES AND NOT PDF4QT_BUILD_ONLY_CORE_LIBRARY)
|
|||
PATTERN "*.so"
|
||||
PATTERN "*.dylib"
|
||||
REGEX "d\\..*" EXCLUDE
|
||||
PATTERN "*.pdb" EXCLUDE
|
||||
)
|
||||
endif()
|
||||
|
||||
|
|
After Width: | Height: | Size: 2.2 KiB |
After Width: | Height: | Size: 5.7 KiB |
After Width: | Height: | Size: 1.9 KiB |
After Width: | Height: | Size: 4.7 KiB |
After Width: | Height: | Size: 868 B |
After Width: | Height: | Size: 1.5 KiB |
After Width: | Height: | Size: 981 B |
After Width: | Height: | Size: 1.3 KiB |
|
@ -652,8 +652,11 @@ void MainWindow::setViewDocument(pdf::PDFDocument* document, bool updateCustomPa
|
|||
{
|
||||
if (document != m_pdfWidget->getDrawWidgetProxy()->getDocument())
|
||||
{
|
||||
m_optionalContentActivity->deleteLater();
|
||||
m_optionalContentActivity = nullptr;
|
||||
if (m_optionalContentActivity)
|
||||
{
|
||||
m_optionalContentActivity->deleteLater();
|
||||
m_optionalContentActivity = nullptr;
|
||||
}
|
||||
|
||||
if (document)
|
||||
{
|
||||
|
|
|
@ -49,8 +49,6 @@ EditorPlugin::EditorPlugin() :
|
|||
m_scene.setIsPageContentDrawSuppressed(true);
|
||||
}
|
||||
|
||||
// TODO: When text is edited, old text remains
|
||||
|
||||
void EditorPlugin::setWidget(pdf::PDFWidget* widget)
|
||||
{
|
||||
Q_ASSERT(!m_widget);
|
||||
|
@ -185,7 +183,7 @@ std::vector<QAction*> EditorPlugin::getActions() const
|
|||
|
||||
QString EditorPlugin::getPluginMenuName() const
|
||||
{
|
||||
return tr("Edi&tor");
|
||||
return tr("Ed&itor");
|
||||
}
|
||||
|
||||
bool EditorPlugin::updatePageContent(pdf::PDFInteger pageIndex,
|
||||
|
|
|
@ -80,7 +80,7 @@ std::vector<QAction*> ObjectInspectorPlugin::getActions() const
|
|||
|
||||
QString ObjectInspectorPlugin::getPluginMenuName() const
|
||||
{
|
||||
return tr("Object &Inspector");
|
||||
return tr("O&bject Inspector");
|
||||
}
|
||||
|
||||
void ObjectInspectorPlugin::onObjectInspectorTriggered()
|
||||
|
|
|
@ -84,7 +84,7 @@ public:
|
|||
virtual QMenu* addToolMenu(QString name) override;
|
||||
virtual void setStatusBarMessage(QString message, int time) override;
|
||||
virtual void setDocument(const pdf::PDFModifiedDocument& document) override;
|
||||
virtual void adjustToolbar(QToolBar* toolbar) override;
|
||||
virtual void adjustToolbar(QToolBar* toolbar) override final;
|
||||
virtual pdf::PDFTextSelection getSelectedText() const override;
|
||||
|
||||
protected:
|
||||
|
|
|
@ -373,7 +373,8 @@ PDFProgramController::PDFProgramController(QObject* parent) :
|
|||
m_actionComboBox(nullptr),
|
||||
m_isBusy(false),
|
||||
m_isFactorySettingsBeingRestored(false),
|
||||
m_progress(nullptr)
|
||||
m_progress(nullptr),
|
||||
m_loadAllPlugins(false)
|
||||
{
|
||||
connect(&m_fileWatcher, &QFileSystemWatcher::fileChanged, this, &PDFProgramController::onFileChanged);
|
||||
}
|
||||
|
@ -1616,6 +1617,7 @@ void PDFProgramController::readSettings(Settings settingsFlags)
|
|||
{
|
||||
// Load allowed plugins
|
||||
settings.beginGroup("Plugins");
|
||||
m_loadAllPlugins = !settings.contains("EnabledPlugins");
|
||||
m_enabledPlugins = settings.value("EnabledPlugins").toStringList();
|
||||
settings.endGroup();
|
||||
}
|
||||
|
@ -2190,12 +2192,18 @@ void PDFProgramController::loadPlugins()
|
|||
m_plugins.back().pluginFile = availablePlugin;
|
||||
m_plugins.back().pluginFileWithPath = pluginFileName;
|
||||
|
||||
if (!m_enabledPlugins.contains(m_plugins.back().name))
|
||||
QString pluginName = m_plugins.back().name;
|
||||
if (!m_enabledPlugins.contains(pluginName) && !m_loadAllPlugins)
|
||||
{
|
||||
loader.unload();
|
||||
continue;
|
||||
}
|
||||
|
||||
if (m_loadAllPlugins)
|
||||
{
|
||||
m_enabledPlugins << pluginName;
|
||||
}
|
||||
|
||||
pdf::PDFPlugin* plugin = qobject_cast<pdf::PDFPlugin*>(loader.instance());
|
||||
if (plugin)
|
||||
{
|
||||
|
@ -2203,6 +2211,7 @@ void PDFProgramController::loadPlugins()
|
|||
}
|
||||
}
|
||||
}
|
||||
m_loadAllPlugins = false;
|
||||
|
||||
auto comparator = [](const std::pair<pdf::PDFPluginInfo, pdf::PDFPlugin*>& l, const std::pair<pdf::PDFPluginInfo, pdf::PDFPlugin*>& r)
|
||||
{
|
||||
|
|
|
@ -452,6 +452,7 @@ private:
|
|||
pdf::PDFProgress* m_progress;
|
||||
|
||||
QStringList m_enabledPlugins;
|
||||
bool m_loadAllPlugins;
|
||||
pdf::PDFPluginInfos m_plugins;
|
||||
std::vector<std::pair<pdf::PDFPluginInfo, pdf::PDFPlugin*>> m_loadedPlugins;
|
||||
};
|
||||
|
|
|
@ -64,6 +64,9 @@
|
|||
</property>
|
||||
<item>
|
||||
<layout class="QVBoxLayout" name="verticalLayout">
|
||||
<property name="spacing">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QToolButton" name="outlineButton">
|
||||
<property name="minimumSize">
|
||||
|
|
|
@ -258,6 +258,11 @@ void PDFWidgetUtils::checkMenuAccessibility(QMenu* menu)
|
|||
QString text = action->text();
|
||||
int i = text.indexOf(QChar('&'));
|
||||
|
||||
if (text.isEmpty())
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if (i == -1)
|
||||
{
|
||||
actionsWithNoAmpersands << text;
|
||||
|
|
After Width: | Height: | Size: 18 KiB |
|
@ -0,0 +1,23 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg version="1.1" id="Vrstva_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
width="127.5px" height="106.974px" viewBox="0 0 127.5 106.974" enable-background="new 0 0 127.5 106.974" xml:space="preserve">
|
||||
<g>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" fill="#C53620" d="M99.071,34.455V0H55.248v56.362h-8.969
|
||||
c-3.525,0-3.525,6.206,0,6.206h10.621c1.922,0,2.859,1.518,2.902,3.033c0.087,1.565-0.937,3.168-2.902,3.168H31.374
|
||||
c-3.569,0-3.569,6.207,0,6.207h15.262c3.971,0,3.971,6.201,0,6.201h-27.49c-3.883,0-3.883,6.202,0,6.202h34.32
|
||||
c1.203,0.043,2.009,0.671,2.454,1.516c0.671,1.294,0.444,3.038-0.671,4.019c-0.445,0.4-1.025,0.623-1.783,0.672h-16.6
|
||||
c-3.975,0-3.975,6.202,0,6.202h18.383v7.186H127.5V34.455H99.071z M91.397,90.949c-11.157,0-20.217-9.105-20.217-20.262
|
||||
s9.06-20.256,20.217-20.256c3.569,0,6.873,1.024,9.771,2.633l-2.541,2.989c-2.188-1.072-4.598-1.743-7.23-1.743
|
||||
c-9.018,0-16.377,7.322-16.377,16.377c0,9.017,7.36,16.426,16.377,16.426c9.06,0,16.42-7.409,16.42-16.426
|
||||
c0-2.454-0.623-4.729-1.603-6.825L91.083,81.578l-11.2-9.417l3.168-3.478l7.543,6.293l12.896-15.311l2.497-2.945
|
||||
c3.482,3.617,5.67,8.524,5.67,13.967C111.657,81.844,102.554,90.949,91.397,90.949z"/>
|
||||
<g>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" fill="#C53620" d="M38.342,56.358h-8.255c-4.148,0-4.148,6.206,0,6.206h8.255
|
||||
C42.447,62.564,42.447,56.358,38.342,56.358z M21.791,68.762H2.771c-3.695,0-3.695,6.205,0,6.205h19.019
|
||||
C25.939,74.967,25.939,68.762,21.791,68.762z"/>
|
||||
</g>
|
||||
<polygon fill-rule="evenodd" clip-rule="evenodd" fill="#6CBE45" points="102.763,0.018 102.763,30.76 127.5,30.76 "/>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 1.8 KiB |