Compare commits

...

12 Commits

Author SHA1 Message Date
0436dfab39
chore: add FUNDING.yml 2024-07-07 13:43:28 +08:00
Weblate (bot)
87ed730891
chore: Make transifex CI happy
Since the actual translation content didn't change at all.
2024-07-07 13:39:54 +08:00
85d6762828
chore: remove vendored FindLibExiv2.cmake 2024-07-06 18:46:08 +08:00
a6360d5e66
CI(msvc): clean before deploy and use newer qt 2024-07-06 16:38:45 +08:00
a217ce9ee8
CI(msvc): switch to Qt 6 and CMake 2024-07-06 15:23:33 +08:00
9fe3aca774
chore: release 0.8.0 2024-06-29 14:33:26 +08:00
c636b14af8
chore: temporary limit svg support to Tiny 1.2-only 2024-06-28 18:40:50 +08:00
f8587020d7 chore(CMake): make use of qt_add_translations 2024-06-28 18:39:16 +08:00
495ff31518
fix(CI): cinst no longer available, also use Qt 6.7 2024-06-28 12:38:49 +08:00
Weblate (bot)
2671b6061d
i18n: Translations update from Hosted Weblate (#116)
* Translated using Weblate (Turkish)

Currently translated at 100.0% (147 of 147 strings)

Translation: pineapple-pictures/Application
Translate-URL: https://hosted.weblate.org/projects/pineapple-pictures/application/tr/

* Translated using Weblate (Italian)

Currently translated at 100.0% (147 of 147 strings)

Translation: pineapple-pictures/Application
Translate-URL: https://hosted.weblate.org/projects/pineapple-pictures/application/it/

* Translated using Weblate (Spanish)

Currently translated at 100.0% (147 of 147 strings)

Translation: pineapple-pictures/Application
Translate-URL: https://hosted.weblate.org/projects/pineapple-pictures/application/es/

* Added translation using Weblate (Spanish)

* Translated using Weblate (Spanish)

Currently translated at 100.0% (7 of 7 strings)

Translation: pineapple-pictures/AppStream Metadata
Translate-URL: https://hosted.weblate.org/projects/pineapple-pictures/appstream-metadata/es/

---------

Co-authored-by: Oğuz Ersen <oguz@ersen.moe>
Co-authored-by: albanobattistella <albano_battistella@hotmail.com>
Co-authored-by: gallegonovato <fran-carro@hotmail.es>
2024-06-28 12:33:14 +08:00
d52f22c0de chore(CI): add ubuntu 24.04 build 2024-05-18 00:22:55 +08:00
471f6b9f32
chore: update README and project file tweaks 2024-04-28 00:12:44 +08:00
18 changed files with 195 additions and 148 deletions

2
.github/FUNDING.yml vendored Normal file
View File

@ -0,0 +1,2 @@
ko_fi: blumia
custom: ["https://blumia.itch.io/pineapple-pictures"]

View File

@ -4,9 +4,7 @@ on: [push, pull_request]
jobs: jobs:
ubuntu-22-04-build: ubuntu-22-04-build:
runs-on: ubuntu-22.04 runs-on: ubuntu-22.04
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
- name: Get build dept. - name: Get build dept.
@ -28,3 +26,27 @@ jobs:
with: with:
name: ubuntu-22.04-deb-package name: ubuntu-22.04-deb-package
path: build/*.deb path: build/*.deb
ubuntu-24-04-build:
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v4
- name: Get build dept.
run: |
sudo apt update
sudo apt install cmake qt6-base-dev qt6-svg-dev qt6-tools-dev libexiv2-dev
- name: Build it
run: |
mkdir build
cd build
cmake ../ -DPREFER_QT_5=OFF
make
cpack -G DEB
- name: Try install it
run: |
cd build
sudo apt install ./*.deb
- uses: actions/upload-artifact@v4
with:
name: ubuntu-24.04-deb-package
path: build/*.deb

View File

@ -3,14 +3,14 @@ name: Windows CI
on: [push, pull_request] on: [push, pull_request]
jobs: jobs:
msvc-build: msvc-qmake-build:
strategy: strategy:
matrix: matrix:
vs: ['2019'] vs: ['2022']
msvc_arch: ['x64'] msvc_arch: ['x64']
runs-on: windows-2019 runs-on: windows-2022
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
@ -18,7 +18,7 @@ jobs:
uses: jurplel/install-qt-action@v3 uses: jurplel/install-qt-action@v3
with: with:
arch: 'win64_msvc2019_64' arch: 'win64_msvc2019_64'
version: '5.15.2' version: '6.7.2'
- name: Build - name: Build
shell: cmd shell: cmd
run: | run: |
@ -28,3 +28,42 @@ jobs:
call %VCVARS% ${{ matrix.msvc_arch }} call %VCVARS% ${{ matrix.msvc_arch }}
qmake pineapple-pictures.pro qmake pineapple-pictures.pro
nmake nmake
nmake clean
windeployqt --verbose=2 --no-quick-import --no-translations --no-opengl-sw --no-system-d3d-compiler --skip-plugin-types tls,networkinformation release\ppic.exe
- uses: actions/upload-artifact@v4
with:
name: windows-msvc2022-qt6.7.2-qmake-package
path: release/*
msvc-cmake-build:
strategy:
matrix:
vs: ['2022']
msvc_arch: ['x64']
runs-on: windows-2022
steps:
- uses: actions/checkout@v4
- name: Install Qt
uses: jurplel/install-qt-action@v3
with:
arch: 'win64_msvc2019_64'
version: '6.5.3'
- name: Build
shell: cmd
run: |
set PWD=%cd%
set VS=${{ matrix.vs }}
set VCVARS="C:\Program Files (x86)\Microsoft Visual Studio\%VS%\Enterprise\VC\Auxiliary\Build\vcvarsall.bat"
if not exist %VCVARS% set VCVARS="C:\Program Files\Microsoft Visual Studio\%VS%\Enterprise\VC\Auxiliary\Build\vcvarsall.bat"
call %VCVARS% ${{ matrix.msvc_arch }}
cmake -Bbuild . -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="%PWD%\build\"
cmake --build build --config Release
cmake --build build --config Release --target=install
windeployqt --verbose=2 --no-quick-import --no-translations --no-opengl-sw --no-system-d3d-compiler --skip-plugin-types tls,networkinformation build\bin\ppic.exe
- uses: actions/upload-artifact@v4
with:
name: windows-msvc2022-qt6.5.3-cmake-package
path: build/bin/*

View File

@ -6,8 +6,6 @@ cmake_minimum_required (VERSION 3.9.5)
project (pineapple-pictures) project (pineapple-pictures)
list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR}/cmake)
include (GNUInstallDirs) include (GNUInstallDirs)
include (FeatureSummary) include (FeatureSummary)
@ -41,8 +39,8 @@ if (${QT_VERSION_MAJOR} EQUAL "6")
endif () endif ()
if (EXIV2_METADATA_SUPPORT) if (EXIV2_METADATA_SUPPORT)
find_package(LibExiv2) find_package(Exiv2)
set_package_properties(LibExiv2 PROPERTIES set_package_properties(Exiv2 PROPERTIES
URL "https://www.exiv2.org" URL "https://www.exiv2.org"
DESCRIPTION "image metadata support" DESCRIPTION "image metadata support"
TYPE OPTIONAL TYPE OPTIONAL
@ -50,7 +48,6 @@ if (EXIV2_METADATA_SUPPORT)
) )
endif () endif ()
#LibExiv2_FOUND
set (PPIC_CPP_FILES set (PPIC_CPP_FILES
app/main.cpp app/main.cpp
app/framelesswindow.cpp app/framelesswindow.cpp
@ -115,7 +112,11 @@ add_executable (${EXE_NAME} WIN32
${PPIC_RC_FILES} ${PPIC_RC_FILES}
) )
qt_create_translation(PPIC_QM_FILES ${PPIC_CPP_FILES_FOR_I18N} ${PPIC_TS_FILES}) if (${QT_VERSION_MAJOR} EQUAL "6")
qt_add_translations(${EXE_NAME} TS_FILES ${PPIC_TS_FILES} QM_FILES_OUTPUT_VARIABLE PPIC_QM_FILES)
else()
qt_create_translation(PPIC_QM_FILES ${PPIC_CPP_FILES_FOR_I18N} ${PPIC_TS_FILES})
endif()
target_sources(${EXE_NAME} PRIVATE ${PPIC_QM_FILES}) target_sources(${EXE_NAME} PRIVATE ${PPIC_QM_FILES})
@ -124,17 +125,16 @@ if (${QT_VERSION_MAJOR} EQUAL "6")
target_link_libraries (${EXE_NAME} Qt::SvgWidgets) target_link_libraries (${EXE_NAME} Qt::SvgWidgets)
endif () endif ()
if (LibExiv2_FOUND) if (Exiv2_FOUND)
message(INFO ${LibExiv2_INCLUDE_DIRS}) if(NOT TARGET Exiv2::exiv2lib AND TARGET exiv2lib)
target_include_directories(${EXE_NAME} # for exiv2 0.27.x
PRIVATE add_library(Exiv2::exiv2lib ALIAS exiv2lib)
${LibExiv2_INCLUDE_DIRS} endif()
)
target_link_libraries (${EXE_NAME} target_link_libraries (${EXE_NAME}
LibExiv2::LibExiv2 Exiv2::exiv2lib
) )
target_compile_definitions(${EXE_NAME} PRIVATE target_compile_definitions(${EXE_NAME} PRIVATE
HAVE_EXIV2_VERSION="${LibExiv2_VERSION}" HAVE_EXIV2_VERSION="${Exiv2_VERSION}"
) )
endif () endif ()
@ -264,7 +264,7 @@ elseif (APPLE)
# ... # ...
elseif (UNIX) elseif (UNIX)
set (CPACK_SYSTEM_NAME "${CMAKE_SYSTEM_NAME}-${CMAKE_SYSTEM_PROCESSOR}") set (CPACK_SYSTEM_NAME "${CMAKE_SYSTEM_NAME}-${CMAKE_SYSTEM_PROCESSOR}")
set (CPACK_DEBIAN_PACKAGE_SHILIBDEPS ON) set (CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON)
set (CPACK_DEBIAN_PACKAGE_RECOMMENDS "kimageformat-plugins") set (CPACK_DEBIAN_PACKAGE_RECOMMENDS "kimageformat-plugins")
endif() endif()

View File

@ -1,11 +0,0 @@
Copyright (c) <year> <owner>.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

10
NEWS
View File

@ -1,3 +1,13 @@
Version 0.8.0
~~~~~~~~~~~~~
Released: 2024-06-29
Features:
* Support move image file to trash
Contributors:
albanobattistella, mmahhi, gallegonovato, Oğuz Ersen
Version 0.7.4 Version 0.7.4
~~~~~~~~~~~~~ ~~~~~~~~~~~~~
Released: 2024-04-04 Released: 2024-04-04

View File

@ -35,7 +35,7 @@ Pineapple Pictures is a lightweight image viewer that allows you view JPEG, PNG,
Current state, we need: Current state, we need:
- `cmake`: as the build system. - `cmake`: as the build system.
- `qt5` with `qt5-svg` and `qt5-tools`: since the app is using Qt. - `qt6` with `qt6-svg` and `qt6-tools`: since the app is using Qt.
- `libexiv2`: able to display more image metadata. (optional, but recommended) - `libexiv2`: able to display more image metadata. (optional, but recommended)
Then we can build it with any proper c++ compiler like g++ or msvc. Then we can build it with any proper c++ compiler like g++ or msvc.

View File

@ -36,7 +36,7 @@
当前状态,我们需要先确保如下依赖可用: 当前状态,我们需要先确保如下依赖可用:
- `cmake`: 我们所使用的构建系统 - `cmake`: 我们所使用的构建系统
- 包含 `qt5-svg` 与 `qt5-tools` 组件的 `qt5`: 此应用基于 Qt - 包含 `qt6-svg` 与 `qt6-tools` 组件的 `qt6`: 此应用基于 Qt
- `libexiv2`: 用以获取和显示更多的图像元信息(可选,推荐) - `libexiv2`: 用以获取和显示更多的图像元信息(可选,推荐)
然后我们就可以使用任何常规的 c++ 编译器如 g++ 或 msvc 来进行构建了 然后我们就可以使用任何常规的 c++ 编译器如 g++ 或 msvc 来进行构建了

View File

@ -66,7 +66,7 @@ AboutDialog::AboutDialog(QWidget *parent)
QFile translaterHtml(":/plain/translators.html"); QFile translaterHtml(":/plain/translators.html");
bool canOpenFile = translaterHtml.open(QIODevice::ReadOnly); bool canOpenFile = translaterHtml.open(QIODevice::ReadOnly);
const QByteArray & translatorList = canOpenFile ? translaterHtml.readAll() : ""; const QByteArray & translatorList = canOpenFile ? translaterHtml.readAll() : QByteArrayLiteral("");
const QStringList specialThanksStr { const QStringList specialThanksStr {
QStringLiteral("<h1 align='center'>%1</h1><a href='%2'>%3</a><p>%4</p>").arg( QStringLiteral("<h1 align='center'>%1</h1><a href='%2'>%3</a><p>%4</p>").arg(

View File

@ -10,6 +10,7 @@
#include <QGraphicsItem> #include <QGraphicsItem>
#include <QUrl> #include <QUrl>
#include <QGraphicsSvgItem> #include <QGraphicsSvgItem>
#include <QSvgRenderer>
#include <QMovie> #include <QMovie>
#include <QPainter> #include <QPainter>
@ -116,7 +117,16 @@ void GraphicsScene::showText(const QString &text)
void GraphicsScene::showSvg(const QString &filepath) void GraphicsScene::showSvg(const QString &filepath)
{ {
this->clear(); this->clear();
QGraphicsSvgItem * svgItem = new QGraphicsSvgItem(filepath); QGraphicsSvgItem * svgItem = new QGraphicsSvgItem();
QSvgRenderer * render = new QSvgRenderer(svgItem);
#if QT_VERSION >= QT_VERSION_CHECK(6, 7, 0)
// Qt 6.7.0's SVG support is terrible caused by huge memory usage, see QTBUG-124287
// Qt 6.7.1's is somewhat better, memory issue seems fixed, but still laggy when zoom in
// Anyway let's disable it for now.
render->setOptions(QtSvg::Tiny12FeaturesOnly);
#endif // QT_VERSION >= QT_VERSION_CHECK(6, 7, 0)
render->load(filepath);
svgItem->setSharedRenderer(render);
this->addItem(svgItem); this->addItem(svgItem);
m_theThing = svgItem; m_theThing = svgItem;
this->setSceneRect(m_theThing->boundingRect()); this->setSceneRect(m_theThing->boundingRect());

View File

@ -228,12 +228,12 @@
<message> <message>
<location filename="../mainwindow.cpp" line="737"/> <location filename="../mainwindow.cpp" line="737"/>
<source>Are you sure you want to move &quot;%1&quot; to recycle bin?</source> <source>Are you sure you want to move &quot;%1&quot; to recycle bin?</source>
<translation type="unfinished"></translation> <translation>¿Estás seguro de que quieres mover &quot;%1&quot; a la papelera de reciclaje?</translation>
</message> </message>
<message> <message>
<location filename="../mainwindow.cpp" line="742"/> <location filename="../mainwindow.cpp" line="742"/>
<source>Move to trash failed, it might caused by file permission issue, file system limitation, or platform limitation.</source> <source>Move to trash failed, it might caused by file permission issue, file system limitation, or platform limitation.</source>
<translation type="unfinished"></translation> <translation>Mover a la papelera ha fallado, puede deberse a un problema con los permisos de los archivos, una limitación del sistema de archivos o una limitación de la plataforma.</translation>
</message> </message>
<message> <message>
<location filename="../actionmanager.cpp" line="106"/> <location filename="../actionmanager.cpp" line="106"/>
@ -328,7 +328,7 @@
<location filename="../actionmanager.cpp" line="109"/> <location filename="../actionmanager.cpp" line="109"/>
<location filename="../mainwindow.cpp" line="736"/> <location filename="../mainwindow.cpp" line="736"/>
<source>Move to Trash</source> <source>Move to Trash</source>
<translation type="unfinished"></translation> <translation>Mover a la papelera</translation>
</message> </message>
<message> <message>
<location filename="../actionmanager.cpp" line="113"/> <location filename="../actionmanager.cpp" line="113"/>

View File

@ -224,12 +224,12 @@
<message> <message>
<location filename="../mainwindow.cpp" line="737"/> <location filename="../mainwindow.cpp" line="737"/>
<source>Are you sure you want to move &quot;%1&quot; to recycle bin?</source> <source>Are you sure you want to move &quot;%1&quot; to recycle bin?</source>
<translation type="unfinished"></translation> <translation>Sei sicuro di voler spostare &quot;%1&quot; nel cestino?</translation>
</message> </message>
<message> <message>
<location filename="../mainwindow.cpp" line="742"/> <location filename="../mainwindow.cpp" line="742"/>
<source>Move to trash failed, it might caused by file permission issue, file system limitation, or platform limitation.</source> <source>Move to trash failed, it might caused by file permission issue, file system limitation, or platform limitation.</source>
<translation type="unfinished"></translation> <translation>Lo spostamento nel cestino non è riuscito, potrebbe essere causato da un problema di autorizzazione del file, da una limitazione del file system o da una limitazione della piattaforma.</translation>
</message> </message>
<message> <message>
<location filename="../actionmanager.cpp" line="106"/> <location filename="../actionmanager.cpp" line="106"/>
@ -324,7 +324,7 @@
<location filename="../actionmanager.cpp" line="109"/> <location filename="../actionmanager.cpp" line="109"/>
<location filename="../mainwindow.cpp" line="736"/> <location filename="../mainwindow.cpp" line="736"/>
<source>Move to Trash</source> <source>Move to Trash</source>
<translation type="unfinished"></translation> <translation>Sposta nel cestino</translation>
</message> </message>
<message> <message>
<location filename="../actionmanager.cpp" line="113"/> <location filename="../actionmanager.cpp" line="113"/>

View File

@ -228,12 +228,12 @@
<message> <message>
<location filename="../mainwindow.cpp" line="737"/> <location filename="../mainwindow.cpp" line="737"/>
<source>Are you sure you want to move &quot;%1&quot; to recycle bin?</source> <source>Are you sure you want to move &quot;%1&quot; to recycle bin?</source>
<translation type="unfinished"></translation> <translation>&quot;%1&quot; ögesini geri dönüşüm kutusuna taşımak istediğinizden emin misiniz?</translation>
</message> </message>
<message> <message>
<location filename="../mainwindow.cpp" line="742"/> <location filename="../mainwindow.cpp" line="742"/>
<source>Move to trash failed, it might caused by file permission issue, file system limitation, or platform limitation.</source> <source>Move to trash failed, it might caused by file permission issue, file system limitation, or platform limitation.</source>
<translation type="unfinished"></translation> <translation>Çöp kutusuna taşıma başarısız oldu, dosya izin sorunu, dosya sistemi sınırlaması veya platform sınırlamasından kaynaklanıyor olabilir.</translation>
</message> </message>
<message> <message>
<location filename="../actionmanager.cpp" line="106"/> <location filename="../actionmanager.cpp" line="106"/>
@ -328,7 +328,7 @@
<location filename="../actionmanager.cpp" line="109"/> <location filename="../actionmanager.cpp" line="109"/>
<location filename="../mainwindow.cpp" line="736"/> <location filename="../mainwindow.cpp" line="736"/>
<source>Move to Trash</source> <source>Move to Trash</source>
<translation type="unfinished"></translation> <translation>Çöp Kutusuna Taşı</translation>
</message> </message>
<message> <message>
<location filename="../actionmanager.cpp" line="113"/> <location filename="../actionmanager.cpp" line="113"/>

View File

@ -8,8 +8,8 @@ environment:
LIBEXIV2: C:\projects\exiv2 LIBEXIV2: C:\projects\exiv2
PPKG: C:\projects\ppkg PPKG: C:\projects\ppkg
matrix: matrix:
- job_name: mingw_64_qt6_5 - job_name: mingw_64_qt6_7
QTDIR: C:\Qt\6.5\mingw_64 QTDIR: C:\Qt\6.7\mingw_64
MINGW64: C:\Qt\Tools\mingw1120_64 MINGW64: C:\Qt\Tools\mingw1120_64
KF_BRANCH: master KF_BRANCH: master
EXIV2_VERSION: "0.28.2" EXIV2_VERSION: "0.28.2"
@ -41,7 +41,7 @@ install:
build_script: build_script:
# prepare # prepare
- mkdir 3rdparty - mkdir 3rdparty
- cinst ninja - choco install ninja
- cd %PPKG% - cd %PPKG%
- curl -fsSL -o ppkg.exe https://github.com/BLumia/pineapple-package-manager/releases/latest/download/ppkg.exe - curl -fsSL -o ppkg.exe https://github.com/BLumia/pineapple-package-manager/releases/latest/download/ppkg.exe
- cd %APPVEYOR_BUILD_FOLDER% - cd %APPVEYOR_BUILD_FOLDER%
@ -132,7 +132,7 @@ build_script:
# finally... # finally...
- mkdir build - mkdir build
- cd build - cd build
- cmake .. -G "Ninja" %PPIC_CMAKE_OPTIONS% -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX='%cd%' - cmake .. -G "Ninja" %PPIC_CMAKE_OPTIONS% -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH=%CMAKE_INSTALL_PREFIX% -DCMAKE_INSTALL_PREFIX='%cd%'
- cmake --build . --config Release - cmake --build . --config Release
- cmake --build . --config Release --target install/strip - cmake --build . --config Release --target install/strip
# fixme: I don't know how to NOT make the binary installed to the ./bin/ folder... # fixme: I don't know how to NOT make the binary installed to the ./bin/ folder...

View File

@ -1,96 +0,0 @@
#.rst:
# FindLibExiv2
# ------------
#
# Try to find the Exiv2 library.
#
# This will define the following variables:
#
# ``LibExiv2_FOUND``
# True if (the requested version of) Exiv2 is available
#
# ``LibExiv2_VERSION``
# The version of Exiv2
#
# ``LibExiv2_INCLUDE_DIRS``
# The include dirs of Exiv2 for use with target_include_directories()
#
# ``LibExiv2_LIBRARIES``
# The Exiv2 library for use with target_link_libraries().
# This can be passed to target_link_libraries() instead of
# the ``LibExiv2::LibExiv2`` target
#
# If ``LibExiv2_FOUND`` is TRUE, it will also define the following imported
# target:
#
# ``LibExiv2::LibExiv2``
# The Exiv2 library
#
# In general we recommend using the imported target, as it is easier to use.
# Bear in mind, however, that if the target is in the link interface of an
# exported library, it must be made available by the package config file.
#
# Since 5.53.0.
#
#=============================================================================
# SPDX-FileCopyrightText: 2018 Christophe Giboudeaux <christophe@krop.fr>
# SPDX-FileCopyrightText: 2010 Alexander Neundorf <neundorf@kde.org>
# SPDX-FileCopyrightText: 2008 Gilles Caulier <caulier.gilles@gmail.com>
#
# SPDX-License-Identifier: BSD-3-Clause
#=============================================================================
find_package(PkgConfig QUIET)
pkg_check_modules(PC_EXIV2 QUIET exiv2)
find_path(LibExiv2_INCLUDE_DIRS NAMES exiv2/exif.hpp
HINTS ${PC_EXIV2_INCLUDEDIR}
)
find_library(LibExiv2_LIBRARIES NAMES exiv2 libexiv2
HINTS ${PC_EXIV2_LIBRARY_DIRS}
)
set(LibExiv2_VERSION ${PC_EXIV2_VERSION})
if(NOT LibExiv2_VERSION AND DEFINED LibExiv2_INCLUDE_DIRS)
# With exiv >= 0.27, the version #defines are in exv_conf.h instead of version.hpp
foreach(_exiv2_version_file "version.hpp" "exv_conf.h")
if(EXISTS "${LibExiv2_INCLUDE_DIRS}/exiv2/${_exiv2_version_file}")
file(READ "${LibExiv2_INCLUDE_DIRS}/exiv2/${_exiv2_version_file}" _exiv_version_file_content)
string(REGEX MATCH "#define EXIV2_MAJOR_VERSION[ ]+\\([0-9]+\\)" EXIV2_MAJOR_VERSION_MATCH ${_exiv_version_file_content})
string(REGEX MATCH "#define EXIV2_MINOR_VERSION[ ]+\\([0-9]+\\)" EXIV2_MINOR_VERSION_MATCH ${_exiv_version_file_content})
string(REGEX MATCH "#define EXIV2_PATCH_VERSION[ ]+\\([0-9]+\\)" EXIV2_PATCH_VERSION_MATCH ${_exiv_version_file_content})
if(EXIV2_MAJOR_VERSION_MATCH)
string(REGEX REPLACE ".*_MAJOR_VERSION[ ]+\\((.*)\\)" "\\1" EXIV2_MAJOR_VERSION ${EXIV2_MAJOR_VERSION_MATCH})
string(REGEX REPLACE ".*_MINOR_VERSION[ ]+\\((.*)\\)" "\\1" EXIV2_MINOR_VERSION ${EXIV2_MINOR_VERSION_MATCH})
string(REGEX REPLACE ".*_PATCH_VERSION[ ]+\\((.*)\\)" "\\1" EXIV2_PATCH_VERSION ${EXIV2_PATCH_VERSION_MATCH})
endif()
endif()
endforeach()
set(LibExiv2_VERSION "${EXIV2_MAJOR_VERSION}.${EXIV2_MINOR_VERSION}.${EXIV2_PATCH_VERSION}")
endif()
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(LibExiv2
FOUND_VAR LibExiv2_FOUND
REQUIRED_VARS LibExiv2_LIBRARIES LibExiv2_INCLUDE_DIRS
VERSION_VAR LibExiv2_VERSION
)
mark_as_advanced(LibExiv2_INCLUDE_DIRS LibExiv2_LIBRARIES)
if(LibExiv2_FOUND AND NOT TARGET LibExiv2::LibExiv2)
add_library(LibExiv2::LibExiv2 UNKNOWN IMPORTED)
set_target_properties(LibExiv2::LibExiv2 PROPERTIES
IMPORTED_LOCATION "${LibExiv2_LIBRARIES}"
INTERFACE_INCLUDE_DIRECTORIES "${LibExiv2_INCLUDE_DIRS}"
)
endif()
include(FeatureSummary)
set_package_properties(LibExiv2 PROPERTIES
URL "https://www.exiv2.org"
DESCRIPTION "Image metadata support"
)

View File

@ -2,12 +2,14 @@
<component type="desktop-application"> <component type="desktop-application">
<id>net.blumia.pineapple-pictures</id> <id>net.blumia.pineapple-pictures</id>
<name>Pineapple Pictures</name> <name>Pineapple Pictures</name>
<name xml:lang="es">Pineapple Pictures</name>
<name xml:lang="ja">Pineapple Pictures</name> <name xml:lang="ja">Pineapple Pictures</name>
<name xml:lang="nl">Pineapple Afbeeldingen</name> <name xml:lang="nl">Pineapple Afbeeldingen</name>
<name xml:lang="ru">Pineapple Pictures</name> <name xml:lang="ru">Pineapple Pictures</name>
<name xml:lang="uk">Pineapple Pictures</name> <name xml:lang="uk">Pineapple Pictures</name>
<name xml:lang="zh-CN">菠萝看图</name> <name xml:lang="zh-CN">菠萝看图</name>
<summary>Image Viewer</summary> <summary>Image Viewer</summary>
<summary xml:lang="es">Visor de imágenes</summary>
<summary xml:lang="ja">画像ビューアー</summary> <summary xml:lang="ja">画像ビューアー</summary>
<summary xml:lang="nl">Afbeeldingsweergave</summary> <summary xml:lang="nl">Afbeeldingsweergave</summary>
<summary xml:lang="ru">Просмотр изображений</summary> <summary xml:lang="ru">Просмотр изображений</summary>
@ -17,6 +19,7 @@
<project_license>MIT</project_license> <project_license>MIT</project_license>
<description> <description>
<p>Pineapple Pictures is a lightweight and easy-to-use image viewer that comes with a handy navigation thumbnail when zoom-in, and doesn't contain any image management support.</p> <p>Pineapple Pictures is a lightweight and easy-to-use image viewer that comes with a handy navigation thumbnail when zoom-in, and doesn't contain any image management support.</p>
<p xml:lang="es">Pineapple Pictures es un visor de imágenes ligero y fácil de usar que viene con una práctica miniatura de navegación al hacer zoom, y no contiene ningún soporte de gestión de imágenes.</p>
<p xml:lang="ja">Pineapple Picturesは、ズームイン時に便利なナビゲーションサムネイルを備えた軽量で使いやすい画像ビューアです。画像管理のサポートは含まれていません。</p> <p xml:lang="ja">Pineapple Picturesは、ズームイン時に便利なナビゲーションサムネイルを備えた軽量で使いやすい画像ビューアです。画像管理のサポートは含まれていません。</p>
<p xml:lang="nl">Pineapple Afbeeldingen is een licht en eenvoudig te gebruiken afbeeldingsweergaveprogramma met miniatuurnavigatie na inzoomen. Het programma heeft echter geen fotobeheermogelijkheid.</p> <p xml:lang="nl">Pineapple Afbeeldingen is een licht en eenvoudig te gebruiken afbeeldingsweergaveprogramma met miniatuurnavigatie na inzoomen. Het programma heeft echter geen fotobeheermogelijkheid.</p>
<p xml:lang="ru">Pineapple Pictures - это легкий и простой в использовании просмотрщик изображений, оснащенный удобной навигацией по миниатюрам при увеличении масштаба и не содержащий никакой поддержки управления изображениями.</p> <p xml:lang="ru">Pineapple Pictures - это легкий и простой в использовании просмотрщик изображений, оснащенный удобной навигацией по миниатюрам при увеличении масштаба и не содержащий никакой поддержки управления изображениями.</p>
@ -41,6 +44,7 @@
<screenshots> <screenshots>
<screenshot type="default"> <screenshot type="default">
<caption>Main window when an image file is loaded</caption> <caption>Main window when an image file is loaded</caption>
<caption xml:lang="es">Ventana principal cuando se carga un archivo de imagen</caption>
<caption xml:lang="ja">画像ファイル読み込み時のメインウィンドウ</caption> <caption xml:lang="ja">画像ファイル読み込み時のメインウィンドウ</caption>
<caption xml:lang="nl">Hoofdvenster na het laden van een afbeelding</caption> <caption xml:lang="nl">Hoofdvenster na het laden van een afbeelding</caption>
<caption xml:lang="ru">Основное окно после загрузки файла изображения</caption> <caption xml:lang="ru">Основное окно после загрузки файла изображения</caption>
@ -50,6 +54,7 @@
</screenshot> </screenshot>
<screenshot> <screenshot>
<caption>Zooming in a raster image</caption> <caption>Zooming in a raster image</caption>
<caption xml:lang="es">Ampliar una imagen rasterizada</caption>
<caption xml:lang="ja">ラスター画像の拡大</caption> <caption xml:lang="ja">ラスター画像の拡大</caption>
<caption xml:lang="nl">Inzoomen op een roosterafbeelding</caption> <caption xml:lang="nl">Inzoomen op een roosterafbeelding</caption>
<caption xml:lang="ru">Масштабирование растрового изображения</caption> <caption xml:lang="ru">Масштабирование растрового изображения</caption>
@ -59,6 +64,7 @@
</screenshot> </screenshot>
<screenshot> <screenshot>
<caption>Zooming in a vector image</caption> <caption>Zooming in a vector image</caption>
<caption xml:lang="es">Ampliar una imagen vectorial</caption>
<caption xml:lang="ja">ベクター画像の拡大</caption> <caption xml:lang="ja">ベクター画像の拡大</caption>
<caption xml:lang="nl">Inzoomen op een vectorafbeelding</caption> <caption xml:lang="nl">Inzoomen op een vectorafbeelding</caption>
<caption xml:lang="ru">Масштабирование векторного изображения</caption> <caption xml:lang="ru">Масштабирование векторного изображения</caption>
@ -68,6 +74,16 @@
</screenshot> </screenshot>
</screenshots> </screenshots>
<releases> <releases>
<release type="stable" version="0.8.0" date="2024-06-29T00:00:00Z">
<description>
<p>This release adds the following feature:</p>
<ul>
<li>Support move image file to trash</li>
</ul>
<p>With contributions from:</p>
<p>albanobattistella, mmahhi, gallegonovato, Oğuz Ersen</p>
</description>
</release>
<release type="stable" version="0.7.4" date="2024-04-04T00:00:00Z"> <release type="stable" version="0.7.4" date="2024-04-04T00:00:00Z">
<description> <description>
<p>This release adds the following feature:</p> <p>This release adds the following feature:</p>

View File

@ -0,0 +1,55 @@
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: 2023-08-22 18:49中国标准时间\n"
"PO-Revision-Date: 2024-04-19 17:07+0000\n"
"Last-Translator: gallegonovato <fran-carro@hotmail.es>\n"
"Language-Team: Spanish <https://hosted.weblate.org/projects/pineapple-"
"pictures/appstream-metadata/es/>\n"
"Language: es\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 5.5-dev\n"
#. (itstool) path: component/name
#: net.blumia.pineapple-pictures.metainfo.xml:7
msgid "Pineapple Pictures"
msgstr "Pineapple Pictures"
#. (itstool) path: component/summary
#: net.blumia.pineapple-pictures.metainfo.xml:9
msgid "Image Viewer"
msgstr "Visor de imágenes"
#. (itstool) path: description/p
#: net.blumia.pineapple-pictures.metainfo.xml:12
msgid ""
"Pineapple Pictures is a lightweight and easy-to-use image viewer that comes "
"with a handy navigation thumbnail when zoom-in, and doesn't contain any "
"image management support."
msgstr ""
"Pineapple Pictures es un visor de imágenes ligero y fácil de usar que viene "
"con una práctica miniatura de navegación al hacer zoom, y no contiene ningún "
"soporte de gestión de imágenes."
#. (itstool) path: screenshot/caption
#: net.blumia.pineapple-pictures.metainfo.xml:17
msgid "Main window when an image file is loaded"
msgstr "Ventana principal cuando se carga un archivo de imagen"
#. (itstool) path: screenshot/caption
#: net.blumia.pineapple-pictures.metainfo.xml:22
msgid "Zooming in a raster image"
msgstr "Ampliar una imagen rasterizada"
#. (itstool) path: screenshot/caption
#: net.blumia.pineapple-pictures.metainfo.xml:27
msgid "Zooming in a vector image"
msgstr "Ampliar una imagen vectorial"
#. (itstool) path: component/developer_name
#: net.blumia.pineapple-pictures.metainfo.xml:34
msgid "Gary (BLumia) Wang et al."
msgstr "Gary (BLumia) Wang et al."

View File

@ -1,4 +1,4 @@
# SPDX-FileCopyrightText: 2022 Gary Wang <wzc782970009@gmail.com> # SPDX-FileCopyrightText: 2024 Gary Wang <git@blumia.net>
# #
# SPDX-License-Identifier: MIT # SPDX-License-Identifier: MIT
@ -19,7 +19,7 @@ DEFINES += QT_DEPRECATED_WARNINGS
# You can also select to disable deprecated APIs only up to a certain version of Qt. # You can also select to disable deprecated APIs only up to a certain version of Qt.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0 #DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0
CONFIG += c++11 lrelease embed_translations CONFIG += c++17 lrelease embed_translations
SOURCES += \ SOURCES += \
app/aboutdialog.cpp \ app/aboutdialog.cpp \
@ -85,7 +85,7 @@ RC_ICONS = assets/icons/app-icon.ico
# Windows only, for rc file (we're not going to use the .rc file in this repo) # Windows only, for rc file (we're not going to use the .rc file in this repo)
QMAKE_TARGET_PRODUCT = Pineapple Pictures QMAKE_TARGET_PRODUCT = Pineapple Pictures
QMAKE_TARGET_DESCRIPTION = Pineapple Pictures - Image Viewer QMAKE_TARGET_DESCRIPTION = Pineapple Pictures - Image Viewer
QMAKE_TARGET_COPYRIGHT = MIT/Expat License - Copyright (C) 2020 Gary Wang QMAKE_TARGET_COPYRIGHT = MIT/Expat License - Copyright (C) 2024 Gary Wang
# MSVC only, since QMake doesn't have a CMAKE_CXX_STANDARD_LIBRARIES or cpp_winlibs similar thing # MSVC only, since QMake doesn't have a CMAKE_CXX_STANDARD_LIBRARIES or cpp_winlibs similar thing
win32-msvc* { win32-msvc* {