Compare commits

...
7 Commits
Author SHA1 Message Date
blumia ec2f2b326c chore: update release info to 1.6.0 2026-08-20 22:45:28 +08:00
blumia a31054b9d0 fix(CI): should use 6.11.2 for both Windows and macOS build 2026-08-19 20:21:57 +08:00
blumia 44e4a709c3 chore: allow drag to move window when maximized when Qt >= 6.11.2
Resolve: https://github.com/BLumia/pineapple-pictures/issues/184

Also use git version of aqtinstall for Qt 6.11.0+ for Windows
miurahr/aqtinstall#1007
2026-08-19 19:06:44 +08:00
715b3d3ebc i18n: Translations update from Hosted Weblate
Co-authored-by: Heimen Stoffels <vistausss@fastmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Oğuz Ersen <oguz@ersen.moe>
Co-authored-by: Tech-Tac <ahmad.tech.tac@gmail.com>
Co-authored-by: VenusGirl <VenusGirl@outlook.com>
Translate-URL: https://hosted.weblate.org/projects/pineapple-pictures/application/ar/
Translate-URL: https://hosted.weblate.org/projects/pineapple-pictures/application/ko/
Translate-URL: https://hosted.weblate.org/projects/pineapple-pictures/application/nl/
Translate-URL: https://hosted.weblate.org/projects/pineapple-pictures/application/tr/
Translate-URL: https://hosted.weblate.org/projects/pineapple-pictures/appstream-metadata/tr/
Translation: pineapple-pictures/AppStream Metadata
Translation: pineapple-pictures/Application
2026-08-19 12:35:07 +08:00
Tech-Tac 7ffb7086ac fix: close button without titlebar position in RTL (#186) 2026-08-06 23:15:06 +08:00
Tech-Tac ed5a3c397b feat(i18n): make titlebar respect RTL (#182) 2026-08-06 00:09:07 +08:00
blumia dc383c2923 fix(i18n): add missing ar l10n config and resource 2026-07-26 14:22:34 +08:00
15 changed files with 173 additions and 100 deletions

No files matched your search

+1 -1
View File
@@ -12,7 +12,7 @@ jobs:
- name: Install Qt - name: Install Qt
uses: jurplel/install-qt-action@v4 uses: jurplel/install-qt-action@v4
with: with:
version: '6.10.3' version: '6.11.2'
modules: 'qtimageformats' modules: 'qtimageformats'
cache: true cache: true
- name: Install Conan and Dependencies - name: Install Conan and Dependencies
+6 -2
View File
@@ -8,7 +8,7 @@ jobs:
strategy: strategy:
matrix: matrix:
include: include:
- qt_ver: '6.10.3' - qt_ver: '6.11.2'
vs: '2022' vs: '2022'
aqt_arch: 'win64_msvc2022_64' aqt_arch: 'win64_msvc2022_64'
msvc_arch: 'x64' msvc_arch: 'x64'
@@ -24,6 +24,8 @@ jobs:
version: ${{ matrix.qt_ver }} version: ${{ matrix.qt_ver }}
modules: 'qtimageformats' modules: 'qtimageformats'
cache: true cache: true
# we need this until miurahr/aqtinstall#1007 ships 3.3.1 for Qt >= 6.11.0 for Windows.
aqtsource: 'aqtinstall @ git+https://github.com/miurahr/aqtinstall@16db45a70b5905ad596941b223469bc86a56901e'
- name: Build - name: Build
shell: cmd shell: cmd
run: | run: |
@@ -45,7 +47,7 @@ jobs:
strategy: strategy:
matrix: matrix:
include: include:
- qt_ver: '6.10.3' - qt_ver: '6.11.2'
vs: '2022' vs: '2022'
aqt_arch: 'win64_msvc2022_64' aqt_arch: 'win64_msvc2022_64'
msvc_arch: 'x64' msvc_arch: 'x64'
@@ -61,6 +63,8 @@ jobs:
version: ${{ matrix.qt_ver }} version: ${{ matrix.qt_ver }}
modules: 'qtimageformats' modules: 'qtimageformats'
cache: true cache: true
# we need this until miurahr/aqtinstall#1007 ships 3.3.1 for Qt >= 6.11.0 for Windows.
aqtsource: 'aqtinstall @ git+https://github.com/miurahr/aqtinstall@16db45a70b5905ad596941b223469bc86a56901e'
- name: Build - name: Build
shell: cmd shell: cmd
run: | run: |
+1 -1
View File
@@ -4,7 +4,7 @@
cmake_minimum_required(VERSION 3.16) cmake_minimum_required(VERSION 3.16)
project(pineapple-pictures VERSION 1.5.0) # don't forget to update NEWS file and AppStream metadata. project(pineapple-pictures VERSION 1.6.0) # don't forget to update NEWS file and AppStream metadata.
include(GNUInstallDirs) include(GNUInstallDirs)
include(FeatureSummary) include(FeatureSummary)
+20
View File
@@ -1,3 +1,23 @@
Version 1.6.0
~~~~~~~~~~~~~
Released: 2026-08-22
Features:
* Allow dragging window from titlebar to move window when maximized
* Add an option to show/hide bird-eye view
Bugfixes:
* Maximize the window when the image size matches the screen size
* Fix window might stuck when drag move on some ill-formed window manager
* Make titlebar respect RTL layout
Miscellaneous:
* Update translations
* Update Qt version to 6.11.2 for Windows and macOS pre-built binaries
Contributors:
Tech-Tac, Heimen Stoffels (vistaus), VenusGirl, Oğuz Ersen
Version 1.5.0 Version 1.5.0
~~~~~~~~~~~~~ ~~~~~~~~~~~~~
Released: 2026-07-04 Released: 2026-07-04
+2 -2
View File
@@ -357,7 +357,7 @@ void MainWindow::leaveEvent(QEvent *event)
void MainWindow::mousePressEvent(QMouseEvent *event) void MainWindow::mousePressEvent(QMouseEvent *event)
{ {
#if defined(Q_OS_WIN) #if defined(Q_OS_WIN) and QT_VERSION < QT_VERSION_CHECK(6, 11, 2)
const bool shouldAcceptDrag = !isMaximized() && !isFullScreen(); const bool shouldAcceptDrag = !isMaximized() && !isFullScreen();
#else #else
const bool shouldAcceptDrag = !isFullScreen(); const bool shouldAcceptDrag = !isFullScreen();
@@ -630,7 +630,7 @@ void MainWindow::updateWidgetsPosition()
{ {
if (m_titleBar->closeButtonOnly()) { if (m_titleBar->closeButtonOnly()) {
const int bw = m_titleBar->closeButtonWidth(); const int bw = m_titleBar->closeButtonWidth();
m_titleBar->setGeometry(width() - bw, 0, bw, m_titleBar->height()); m_titleBar->setGeometry(isRightToLeft() ? 0 : width() - bw, 0, bw, m_titleBar->height());
} else { } else {
m_titleBar->setGeometry(0, 0, width(), m_titleBar->height()); m_titleBar->setGeometry(0, 0, width(), m_titleBar->height());
} }
+14 -6
View File
@@ -55,7 +55,8 @@ void TitleBar::setCloseButtonOnly(bool only)
QRect TitleBar::closeButtonRect() const QRect TitleBar::closeButtonRect() const
{ {
const int btnWidth = closeButtonWidth(); const int btnWidth = closeButtonWidth();
return QRect(width() - btnWidth, 0, btnWidth, height());
return QRect(isRightToLeft() ? 0 : width() - btnWidth, 0, btnWidth, height());
} }
void TitleBar::paintEvent(QPaintEvent *event) void TitleBar::paintEvent(QPaintEvent *event)
@@ -72,14 +73,21 @@ void TitleBar::paintEvent(QPaintEvent *event)
const QRect closeRect = closeButtonRect(); const QRect closeRect = closeButtonRect();
// Title text (leave room for the close button). // Title text (leave room for the close button).
QRect labelRect = rect().adjusted(8, 0, 0, 0); QRect labelRect = rect();
if (m_closeButtonVisible) if (isRightToLeft()) {
labelRect.setRight(closeRect.left() - 2); labelRect.adjust(0, 0, -8, 0);
if (m_closeButtonVisible)
labelRect.setLeft(closeRect.right() + 2);
} else {
labelRect.adjust(8, 0, 0, 0);
if (m_closeButtonVisible)
labelRect.setRight(closeRect.left() - 2);
}
const QString title = window() ? window()->windowTitle() : QString(); const QString title = window() ? window()->windowTitle() : QString();
if (!m_closeButtonOnly && !title.isEmpty()) { if (!m_closeButtonOnly && !title.isEmpty()) {
const QString elided = painter.fontMetrics().elidedText(title, Qt::ElideRight, labelRect.width()); const QString elided = painter.fontMetrics().elidedText(title, Qt::ElideRight, labelRect.width());
const int flags = Qt::AlignLeft | Qt::AlignVCenter | Qt::TextSingleLine; const int flags = Qt::AlignLeading | Qt::AlignVCenter | Qt::TextSingleLine;
painter.setPen(Qt::black); painter.setPen(Qt::black);
painter.drawText(labelRect.adjusted(1, 1, 1, 1), flags, elided); painter.drawText(labelRect.adjusted(1, 1, 1, 1), flags, elided);
painter.setPen(Qt::white); painter.setPen(Qt::white);
@@ -128,7 +136,7 @@ void TitleBar::mouseMoveEvent(QMouseEvent *event)
} }
} }
#if defined(Q_OS_WIN) #if defined(Q_OS_WIN) and QT_VERSION < QT_VERSION_CHECK(6, 11, 2)
const bool shouldAcceptDrag = !window()->isMaximized() && !window()->isFullScreen(); const bool shouldAcceptDrag = !window()->isMaximized() && !window()->isFullScreen();
#else #else
const bool shouldAcceptDrag = !window()->isFullScreen(); const bool shouldAcceptDrag = !window()->isFullScreen();
+74 -69
View File
@@ -11,7 +11,7 @@
<message> <message>
<location filename="../aboutdialog.cpp" line="32"/> <location filename="../aboutdialog.cpp" line="32"/>
<source>Launch application with image file path as argument to load the file.</source> <source>Launch application with image file path as argument to load the file.</source>
<translation>إطلاق التطبيق مع استخدام مسار ملف الصورة كمُعامل لتحميل الملف.</translation> <translation>أطلق التطبيق مع استخدام مسار ملف صورة كمُعامل لفتح الملف.</translation>
</message> </message>
<message> <message>
<location filename="../aboutdialog.cpp" line="33"/> <location filename="../aboutdialog.cpp" line="33"/>
@@ -113,22 +113,22 @@
<location filename="../aboutdialog.cpp" line="63"/> <location filename="../aboutdialog.cpp" line="63"/>
<source>Copyright (c) %1 %2</source> <source>Copyright (c) %1 %2</source>
<comment>%1 is year, %2 is the name of copyright holder(s)</comment> <comment>%1 is year, %2 is the name of copyright holder(s)</comment>
<translation>حقوق النسخ مملوكة لصالح %1 لعام %2</translation> <translation>حقوق النسخ مملوكة لصالح %2 لعام %1</translation>
</message> </message>
<message> <message>
<location filename="../aboutdialog.cpp" line="95"/> <location filename="../aboutdialog.cpp" line="95"/>
<source>%1 is released under the MIT License.</source> <source>%1 is released under the MIT License.</source>
<translation>%1 منشور تحت رخصة MIT.</translation> <translation>تم إصدار %1 بموجب ترخيص MIT.</translation>
</message> </message>
<message> <message>
<location filename="../aboutdialog.cpp" line="96"/> <location filename="../aboutdialog.cpp" line="96"/>
<source>This license grants people a number of freedoms:</source> <source>This license grants people a number of freedoms:</source>
<translation>هذه الرخصة تمنح المستخدم عدة حقوق وحريات:</translation> <translation>هذه الرخصة تمنح المستخدم عدة حريات:</translation>
</message> </message>
<message> <message>
<location filename="../aboutdialog.cpp" line="97"/> <location filename="../aboutdialog.cpp" line="97"/>
<source>You are free to use %1, for any purpose</source> <source>You are free to use %1, for any purpose</source>
<translation>يحق لك استخدام %1 لأي غرض</translation> <translation>لك الحرية في استخدام %1 لأي غرض كان</translation>
</message> </message>
<message> <message>
<location filename="../aboutdialog.cpp" line="98"/> <location filename="../aboutdialog.cpp" line="98"/>
@@ -138,7 +138,7 @@
<message> <message>
<location filename="../aboutdialog.cpp" line="99"/> <location filename="../aboutdialog.cpp" line="99"/>
<source>You can study how %1 works and change it</source> <source>You can study how %1 works and change it</source>
<translation>يمكنك دراسة طريقة عمل %1 وتعديلها</translation> <translation>يمكنك دراسة طريقة عمل %1 وتعديله</translation>
</message> </message>
<message> <message>
<location filename="../aboutdialog.cpp" line="100"/> <location filename="../aboutdialog.cpp" line="100"/>
@@ -148,12 +148,12 @@
<message> <message>
<location filename="../aboutdialog.cpp" line="102"/> <location filename="../aboutdialog.cpp" line="102"/>
<source>The MIT license guarantees you this freedom. Nobody is ever permitted to take it away.</source> <source>The MIT license guarantees you this freedom. Nobody is ever permitted to take it away.</source>
<translation>رخصة MIT تضمن لك تلك الحقوق. لا أحد له الحق في سلبهم منك.</translation> <translation>رخصة MIT تضمن لك تلك الحريات. لا أحد له الحق في سلبهم منك.</translation>
</message> </message>
<message> <message>
<location filename="../aboutdialog.cpp" line="130"/> <location filename="../aboutdialog.cpp" line="130"/>
<source>Third-party Libraries used by %1</source> <source>Third-party Libraries used by %1</source>
<translation>المكتبات الخارجية المستخدمة من قِبَل %1</translation> <translation>المكتبات الخارجية المستخدمة في %1</translation>
</message> </message>
<message> <message>
<location filename="../aboutdialog.cpp" line="153"/> <location filename="../aboutdialog.cpp" line="153"/>
@@ -174,7 +174,7 @@
<context> <context>
<name>GraphicsScene</name> <name>GraphicsScene</name>
<message> <message>
<location filename="../mainwindow.cpp" line="294"/> <location filename="../mainwindow.cpp" line="305"/>
<location filename="../graphicsscene.cpp" line="102"/> <location filename="../graphicsscene.cpp" line="102"/>
<source>Drag image here</source> <source>Drag image here</source>
<translation>اسحب صورة هنا</translation> <translation>اسحب صورة هنا</translation>
@@ -198,71 +198,71 @@
<context> <context>
<name>MainWindow</name> <name>MainWindow</name>
<message> <message>
<location filename="../mainwindow.cpp" line="192"/> <location filename="../mainwindow.cpp" line="196"/>
<location filename="../mainwindow.cpp" line="569"/> <location filename="../mainwindow.cpp" line="584"/>
<source>File url list is empty</source> <source>File url list is empty</source>
<translation>قائمة عناوين الملفات فارغة</translation> <translation>قائمة عناوين الملفات فارغة</translation>
</message> </message>
<message> <message>
<location filename="../mainwindow.cpp" line="463"/> <location filename="../mainwindow.cpp" line="478"/>
<source>&amp;Copy</source> <source>&amp;Copy</source>
<translation>&amp;نسخ</translation> <translation>&amp;نسخ</translation>
</message> </message>
<message> <message>
<location filename="../mainwindow.cpp" line="577"/> <location filename="../mainwindow.cpp" line="592"/>
<source>Image data is invalid</source> <source>Image data is invalid</source>
<translation>بيانات الصورة غير صالحة</translation> <translation>بيانات الصورة غير صالحة</translation>
</message> </message>
<message> <message>
<location filename="../mainwindow.cpp" line="584"/> <location filename="../mainwindow.cpp" line="599"/>
<source>Not supported mimedata: %1</source> <source>Not supported mimedata: %1</source>
<translation>بيانات نوع الوسيط غير مدعومة: %1</translation> <translation>بيانات نوع الوسيط غير مدعومة: %1</translation>
</message> </message>
<message> <message>
<location filename="../mainwindow.cpp" line="716"/> <location filename="../mainwindow.cpp" line="731"/>
<location filename="../mainwindow.cpp" line="733"/> <location filename="../mainwindow.cpp" line="748"/>
<location filename="../mainwindow.cpp" line="740"/> <location filename="../mainwindow.cpp" line="755"/>
<location filename="../mainwindow.cpp" line="770"/> <location filename="../mainwindow.cpp" line="785"/>
<source>Save As</source> <source>Save As</source>
<translation>حفظ كـ</translation> <translation>حفظ كـ</translation>
</message> </message>
<message> <message>
<location filename="../mainwindow.cpp" line="716"/> <location filename="../mainwindow.cpp" line="731"/>
<source>No image is currently open.</source> <source>No image is currently open.</source>
<translation>لا صورة مفتوحة حاليًا.</translation> <translation>لا صورة مفتوحة حاليًا.</translation>
</message> </message>
<message> <message>
<location filename="../mainwindow.cpp" line="728"/> <location filename="../mainwindow.cpp" line="743"/>
<source>%1 Image (*.%2)</source> <source>%1 Image (*.%2)</source>
<translation>صورة %1 (*.%2)</translation> <translation>صورة %1 (*.%2)</translation>
</message> </message>
<message> <message>
<location filename="../mainwindow.cpp" line="734"/> <location filename="../mainwindow.cpp" line="749"/>
<source>No supported image formats are available.</source> <source>No supported image formats are available.</source>
<translation>لا تنسيقات صور مدعومة متوفرة.</translation> <translation>لا تنسيقات صور مدعومة متوفرة.</translation>
</message> </message>
<message> <message>
<location filename="../mainwindow.cpp" line="771"/> <location filename="../mainwindow.cpp" line="786"/>
<source>Failed to save image: %1</source> <source>Failed to save image: %1</source>
<translation>فشل في حفظ الصورة: %1</translation> <translation>فشل حفظ الصورة: %1</translation>
</message> </message>
<message> <message>
<location filename="../mainwindow.cpp" line="860"/> <location filename="../mainwindow.cpp" line="875"/>
<source>Image From Clipboard</source> <source>Image From Clipboard</source>
<translation>صورة من الحافظة</translation> <translation>صورة من الحافظة</translation>
</message> </message>
<message> <message>
<location filename="../mainwindow.cpp" line="878"/> <location filename="../mainwindow.cpp" line="893"/>
<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>هل أنت متأكد أنك تريد نقل &quot;%1&quot; إلى سلة المهملات؟</translation> <translation>هل أنت متأكد أنك تريد نقل &quot;%1&quot; إلى سلة المهملات؟</translation>
</message> </message>
<message> <message>
<location filename="../mainwindow.cpp" line="882"/> <location filename="../mainwindow.cpp" line="897"/>
<source>Failed to move file to trash</source> <source>Failed to move file to trash</source>
<translation>فشل النقل إلى سلة المهملات</translation> <translation>فشل نقل الملف إلى سلة المهملات</translation>
</message> </message>
<message> <message>
<location filename="../mainwindow.cpp" line="883"/> <location filename="../mainwindow.cpp" line="898"/>
<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>فشل النقل إلى سلة المهملات، قد يكون هذا بسبب مشكلة في أذونات الملف، قيود في نظام الملفات، أو قيود في نظام التشغيل.</translation> <translation>فشل النقل إلى سلة المهملات، قد يكون هذا بسبب مشكلة في أذونات الملف، قيود في نظام الملفات، أو قيود في نظام التشغيل.</translation>
</message> </message>
@@ -298,7 +298,7 @@
<location filename="../aboutdialog.cpp" line="47"/> <location filename="../aboutdialog.cpp" line="47"/>
<source>Keep transformation</source> <source>Keep transformation</source>
<comment>The &apos;transformation&apos; means the flip/rotation status that currently applied to the image view</comment> <comment>The &apos;transformation&apos; means the flip/rotation status that currently applied to the image view</comment>
<translation>إبقاء التحويل</translation> <translation>الحفاظ على التحويلات</translation>
</message> </message>
<message> <message>
<location filename="../actionmanager.cpp" line="92"/> <location filename="../actionmanager.cpp" line="92"/>
@@ -391,7 +391,7 @@
<translation>الصورة التالية</translation> <translation>الصورة التالية</translation>
</message> </message>
<message> <message>
<location filename="../mainwindow.cpp" line="877"/> <location filename="../mainwindow.cpp" line="892"/>
<location filename="../actionmanager.cpp" line="111"/> <location filename="../actionmanager.cpp" line="111"/>
<source>Move to Trash</source> <source>Move to Trash</source>
<translation>النقل إلى سلة المهملات</translation> <translation>النقل إلى سلة المهملات</translation>
@@ -503,7 +503,7 @@
<message> <message>
<location filename="../metadatamodel.cpp" line="64"/> <location filename="../metadatamodel.cpp" line="64"/>
<source>Item type</source> <source>Item type</source>
<translation>نوع العنصر</translation> <translation>نوع الملف</translation>
</message> </message>
<message> <message>
<location filename="../metadatamodel.cpp" line="66"/> <location filename="../metadatamodel.cpp" line="66"/>
@@ -749,156 +749,161 @@
<context> <context>
<name>SettingsDialog</name> <name>SettingsDialog</name>
<message> <message>
<location filename="../settingsdialog.cpp" line="34"/> <location filename="../settingsdialog.cpp" line="35"/>
<source>Settings</source> <source>Settings</source>
<translation>الإعدادات</translation> <translation>الإعدادات</translation>
</message> </message>
<message> <message>
<location filename="../settingsdialog.cpp" line="42"/> <location filename="../settingsdialog.cpp" line="43"/>
<source>Options</source> <source>Options</source>
<translation>الخيارات</translation> <translation>الخيارات</translation>
</message> </message>
<message> <message>
<location filename="../settingsdialog.cpp" line="54"/> <location filename="../settingsdialog.cpp" line="55"/>
<source>Shortcuts</source> <source>Shortcuts</source>
<translation>الاختصارات</translation> <translation>الاختصارات</translation>
</message> </message>
<message> <message>
<location filename="../settingsdialog.cpp" line="64"/> <location filename="../settingsdialog.cpp" line="65"/>
<source>Editing shortcuts for action &quot;%1&quot;:</source> <source>Editing shortcuts for action &quot;%1&quot;:</source>
<translation>تعديل الاختصارات للإجراء &quot;%1&quot;:</translation> <translation>تعديل الاختصارات للإجراء &quot;%1&quot;:</translation>
</message> </message>
<message> <message>
<location filename="../settingsdialog.cpp" line="73"/> <location filename="../settingsdialog.cpp" line="74"/>
<source>Failed to set shortcuts</source> <source>Failed to set shortcuts</source>
<translation>فشل تعيين الاختصارات</translation> <translation>فشل تعيين الاختصارات</translation>
</message> </message>
<message> <message>
<location filename="../settingsdialog.cpp" line="74"/> <location filename="../settingsdialog.cpp" line="75"/>
<source>Please check if shortcuts are duplicated with existing shortcuts.</source> <source>Please check if shortcuts are duplicated with existing shortcuts.</source>
<translation>الرجاء التأكد من أن الاختصارات ليست مكررة بالفعل.</translation> <translation>الرجاء التأكد من أن الاختصارات ليست مكررة بالفعل.</translation>
</message> </message>
<message> <message>
<location filename="../settingsdialog.cpp" line="81"/> <location filename="../settingsdialog.cpp" line="82"/>
<source>Do nothing</source> <source>Do nothing</source>
<translation>فعل لاشيء</translation> <translation>فعل لاشيء</translation>
</message> </message>
<message> <message>
<location filename="../settingsdialog.cpp" line="82"/> <location filename="../settingsdialog.cpp" line="83"/>
<source>Close the window</source> <source>Close the window</source>
<translation>إغلاق النافذة</translation> <translation>إغلاق النافذة</translation>
</message> </message>
<message> <message>
<location filename="../settingsdialog.cpp" line="83"/> <location filename="../settingsdialog.cpp" line="84"/>
<source>Toggle maximize</source> <source>Toggle maximize</source>
<translation>تبديل تكبير النافذة</translation> <translation>تبديل تكبير النافذة</translation>
</message> </message>
<message> <message>
<location filename="../settingsdialog.cpp" line="84"/> <location filename="../settingsdialog.cpp" line="85"/>
<source>Toggle fullscreen</source> <source>Toggle fullscreen</source>
<translation>تبديل ملء الشاشة</translation> <translation>تبديل ملء الشاشة</translation>
</message> </message>
<message> <message>
<location filename="../settingsdialog.cpp" line="88"/> <location filename="../settingsdialog.cpp" line="89"/>
<source>Zoom in and out</source> <source>Zoom in and out</source>
<translation>التكبير والتصغير</translation> <translation>التكبير والتصغير</translation>
</message> </message>
<message> <message>
<location filename="../settingsdialog.cpp" line="89"/> <location filename="../settingsdialog.cpp" line="90"/>
<source>View next or previous item</source> <source>View next or previous item</source>
<translation>عرض العنصر الآتي أو السابق</translation> <translation>عرض العنصر الآتي أو السابق</translation>
</message> </message>
<message> <message>
<location filename="../settingsdialog.cpp" line="93"/> <location filename="../settingsdialog.cpp" line="94"/>
<source>Auto size</source> <source>Auto size</source>
<translation>حجم تلقائي</translation> <translation>حجم تلقائي</translation>
</message> </message>
<message> <message>
<location filename="../settingsdialog.cpp" line="94"/> <location filename="../settingsdialog.cpp" line="95"/>
<source>Maximized</source> <source>Maximized</source>
<translation>مكبر</translation> <translation>مكبر</translation>
</message> </message>
<message> <message>
<location filename="../settingsdialog.cpp" line="95"/> <location filename="../settingsdialog.cpp" line="96"/>
<source>Windowed</source> <source>Windowed</source>
<translation>في نافذة</translation> <translation>في نافذة</translation>
</message> </message>
<message> <message>
<location filename="../settingsdialog.cpp" line="99"/> <location filename="../settingsdialog.cpp" line="100"/>
<source>Round (Integer scaling)</source> <source>Round (Integer scaling)</source>
<comment>This option means round up for .5 and above</comment> <comment>This option means round up for .5 and above</comment>
<translation>تقريب (تحجيم صحيح)</translation> <translation>تقريب (تحجيم صحيح)</translation>
</message> </message>
<message> <message>
<location filename="../settingsdialog.cpp" line="100"/> <location filename="../settingsdialog.cpp" line="101"/>
<source>Ceil (Integer scaling)</source> <source>Ceil (Integer scaling)</source>
<comment>This option means always round up</comment> <comment>This option means always round up</comment>
<translation>تقريب للأعلى (تحجيم صحيح)</translation> <translation>تقريب للأعلى (تحجيم صحيح)</translation>
</message> </message>
<message> <message>
<location filename="../settingsdialog.cpp" line="101"/> <location filename="../settingsdialog.cpp" line="102"/>
<source>Floor (Integer scaling)</source> <source>Floor (Integer scaling)</source>
<comment>This option means always round down</comment> <comment>This option means always round down</comment>
<translation>تقريب للأسفل (تحجيم صحيح)</translation> <translation>تقريب للأسفل (تحجيم صحيح)</translation>
</message> </message>
<message> <message>
<location filename="../settingsdialog.cpp" line="102"/> <location filename="../settingsdialog.cpp" line="103"/>
<source>Follow system (Fractional scaling)</source> <source>Follow system (Fractional scaling)</source>
<comment>This option means don&apos;t round</comment> <comment>This option means don&apos;t round</comment>
<translation>إتباع النظام (تحجيم كسري)</translation> <translation>إتباع النظام (تحجيم كسري)</translation>
</message> </message>
<message> <message>
<location filename="../settingsdialog.cpp" line="125"/> <location filename="../settingsdialog.cpp" line="126"/>
<source>Stay on top when start-up</source> <source>Stay on top when start-up</source>
<translation>البقاء فوق جميع النوافذ عند البدء</translation> <translation>البقاء فوق جميع النوافذ عند البدء</translation>
</message> </message>
<message> <message>
<location filename="../settingsdialog.cpp" line="126"/> <location filename="../settingsdialog.cpp" line="127"/>
<source>Use built-in close window animation</source> <source>Use built-in close window animation</source>
<translation>استخدام تأثير غلق النافذة الخاص</translation> <translation>استخدام تأثير غلق النافذة الخاص</translation>
</message> </message>
<message> <message>
<location filename="../settingsdialog.cpp" line="127"/> <location filename="../settingsdialog.cpp" line="128"/>
<source>Show title bar</source> <source>Show title bar</source>
<translation>إظهار شريط العنوان</translation> <translation>إظهار شريط العنوان</translation>
</message> </message>
<message> <message>
<location filename="../settingsdialog.cpp" line="128"/> <location filename="../settingsdialog.cpp" line="129"/>
<source>Show bird&apos;s-eye view</source>
<translation>إظهار إطار مصغر عند التكبير</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="130"/>
<source>Use light-color checkerboard</source> <source>Use light-color checkerboard</source>
<translation>استخدام شبكة فاتحة</translation> <translation>استخدام شبكة فاتحة</translation>
</message> </message>
<message> <message>
<location filename="../settingsdialog.cpp" line="129"/> <location filename="../settingsdialog.cpp" line="131"/>
<source>Loop the loaded gallery</source> <source>Loop the loaded gallery</source>
<translation>تكرار القائمة المحملة</translation> <translation>تكرار القائمة المحملة</translation>
</message> </message>
<message>
<location filename="../settingsdialog.cpp" line="130"/>
<source>Auto long image mode</source>
<translation>وضع الصور الطويلة تلقائيًا</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="131"/>
<source>Limit SVG support to SVG Tiny 1.2</source>
<translation>حد دعم تنسيق SVG إلي نسخة Tiny 1.2</translation>
</message>
<message> <message>
<location filename="../settingsdialog.cpp" line="132"/> <location filename="../settingsdialog.cpp" line="132"/>
<source>Auto long image mode</source>
<translation>ملائمة الصور الطويلة تلقائيًا</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="133"/>
<source>Limit SVG support to SVG Tiny 1.2</source>
<translation>حد دعم تنسيق SVG إلي مواصفة SVG Tiny 1.2</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="134"/>
<source>Double-click behavior</source> <source>Double-click behavior</source>
<translation>السلوك عند النقر مرتين</translation> <translation>السلوك عند النقر مرتين</translation>
</message> </message>
<message> <message>
<location filename="../settingsdialog.cpp" line="133"/> <location filename="../settingsdialog.cpp" line="135"/>
<source>Mouse wheel behavior</source> <source>Mouse wheel behavior</source>
<translation>السلوك عند تحريك عجلة الفأرة</translation> <translation>السلوك عند تمرير عجلة الفأرة</translation>
</message> </message>
<message> <message>
<location filename="../settingsdialog.cpp" line="134"/> <location filename="../settingsdialog.cpp" line="136"/>
<source>Default window size</source> <source>Default window size</source>
<translation>حجم النافذة الافتراضي</translation> <translation>حجم النافذة الافتراضي</translation>
</message> </message>
<message> <message>
<location filename="../settingsdialog.cpp" line="135"/> <location filename="../settingsdialog.cpp" line="137"/>
<source>HiDPI scale factor rounding policy</source> <source>HiDPI scale factor rounding policy</source>
<translation>سياسة تقريب معامل حجم الدقة العالية</translation> <translation>سياسة تقريب معامل حجم الدقة العالية</translation>
</message> </message>
+2 -2
View File
@@ -872,12 +872,12 @@
<message> <message>
<location filename="../settingsdialog.cpp" line="128"/> <location filename="../settingsdialog.cpp" line="128"/>
<source>Show title bar</source> <source>Show title bar</source>
<translation type="unfinished"></translation> <translation>제목 표시줄 표시</translation>
</message> </message>
<message> <message>
<location filename="../settingsdialog.cpp" line="129"/> <location filename="../settingsdialog.cpp" line="129"/>
<source>Show bird&apos;s-eye view</source> <source>Show bird&apos;s-eye view</source>
<translation type="unfinished"></translation> <translation>조감도 보기 표시</translation>
</message> </message>
<message> <message>
<location filename="../settingsdialog.cpp" line="130"/> <location filename="../settingsdialog.cpp" line="130"/>
+1 -1
View File
@@ -881,7 +881,7 @@
<message> <message>
<location filename="../settingsdialog.cpp" line="129"/> <location filename="../settingsdialog.cpp" line="129"/>
<source>Show bird&apos;s-eye view</source> <source>Show bird&apos;s-eye view</source>
<translation type="unfinished"></translation> <translation>Vogelvluchtweergave</translation>
</message> </message>
<message> <message>
<location filename="../settingsdialog.cpp" line="130"/> <location filename="../settingsdialog.cpp" line="130"/>
+8 -8
View File
@@ -240,27 +240,27 @@
<location filename="../mainwindow.cpp" line="755"/> <location filename="../mainwindow.cpp" line="755"/>
<location filename="../mainwindow.cpp" line="785"/> <location filename="../mainwindow.cpp" line="785"/>
<source>Save As</source> <source>Save As</source>
<translation type="unfinished"></translation> <translation>Farklı Kaydet</translation>
</message> </message>
<message> <message>
<location filename="../mainwindow.cpp" line="731"/> <location filename="../mainwindow.cpp" line="731"/>
<source>No image is currently open.</source> <source>No image is currently open.</source>
<translation type="unfinished"></translation> <translation>Şu anda açık bir resim yok.</translation>
</message> </message>
<message> <message>
<location filename="../mainwindow.cpp" line="743"/> <location filename="../mainwindow.cpp" line="743"/>
<source>%1 Image (*.%2)</source> <source>%1 Image (*.%2)</source>
<translation type="unfinished"></translation> <translation>%1 Resim (*.%2)</translation>
</message> </message>
<message> <message>
<location filename="../mainwindow.cpp" line="749"/> <location filename="../mainwindow.cpp" line="749"/>
<source>No supported image formats are available.</source> <source>No supported image formats are available.</source>
<translation type="unfinished"></translation> <translation>Desteklenen resim biçimi yok.</translation>
</message> </message>
<message> <message>
<location filename="../mainwindow.cpp" line="786"/> <location filename="../mainwindow.cpp" line="786"/>
<source>Failed to save image: %1</source> <source>Failed to save image: %1</source>
<translation type="unfinished"></translation> <translation>Resim kaydedilemedi: %1</translation>
</message> </message>
<message> <message>
<location filename="../mainwindow.cpp" line="875"/> <location filename="../mainwindow.cpp" line="875"/>
@@ -324,7 +324,7 @@
<message> <message>
<location filename="../actionmanager.cpp" line="88"/> <location filename="../actionmanager.cpp" line="88"/>
<source>Save &amp;As...</source> <source>Save &amp;As...</source>
<translation type="unfinished"></translation> <translation>Farklı &amp;Kaydet...</translation>
</message> </message>
<message> <message>
<location filename="../actionmanager.cpp" line="93"/> <location filename="../actionmanager.cpp" line="93"/>
@@ -876,12 +876,12 @@
<message> <message>
<location filename="../settingsdialog.cpp" line="128"/> <location filename="../settingsdialog.cpp" line="128"/>
<source>Show title bar</source> <source>Show title bar</source>
<translation type="unfinished"></translation> <translation>Başlık çubuğunu göster</translation>
</message> </message>
<message> <message>
<location filename="../settingsdialog.cpp" line="129"/> <location filename="../settingsdialog.cpp" line="129"/>
<source>Show bird&apos;s-eye view</source> <source>Show bird&apos;s-eye view</source>
<translation type="unfinished"></translation> <translation>Kuş bakışı görünümünü göster</translation>
</message> </message>
<message> <message>
<location filename="../settingsdialog.cpp" line="130"/> <location filename="../settingsdialog.cpp" line="130"/>
+1
View File
@@ -34,6 +34,7 @@
<key>CFBundleLocalizations</key> <key>CFBundleLocalizations</key>
<array> <array>
<string>en</string> <string>en</string>
<string>ar</string>
<string>ca</string> <string>ca</string>
<string>de</string> <string>de</string>
<string>es</string> <string>es</string>
@@ -102,6 +102,28 @@
</screenshot> </screenshot>
</screenshots> </screenshots>
<releases> <releases>
<release type="stable" version="1.6.0" date="2026-08-22T00:00:00Z">
<description>
<p>This release adds the following features:</p>
<ul>
<li>Allow dragging window from titlebar to move window when maximized</li>
<li>Add an option to show/hide bird-eye view</li>
</ul>
<p>This release fixes the following bugs:</p>
<ul>
<li>Maximize the window when the image size matches the screen size</li>
<li>Fix window might stuck when drag move on some ill-formed window manager</li>
<li>Make titlebar respect RTL layout</li>
</ul>
<p>This release includes the following changes:</p>
<ul>
<li>Update translations</li>
<li>Update Qt version to 6.11.2 for Windows and macOS pre-built binaries</li>
</ul>
<p>With contributions from:</p>
<p>Tech-Tac, Heimen Stoffels (vistaus), VenusGirl, Oğuz Ersen</p>
</description>
</release>
<release type="stable" version="1.5.0" date="2026-07-04T00:00:00Z"> <release type="stable" version="1.5.0" date="2026-07-04T00:00:00Z">
<description> <description>
<p>This release adds the following features:</p> <p>This release adds the following features:</p>
@@ -2,8 +2,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: 2023-08-22 18:49中国标准时间\n" "POT-Creation-Date: 2023-08-22 18:49中国标准时间\n"
"PO-Revision-Date: 2025-12-20 20:00+0000\n" "PO-Revision-Date: 2026-07-29 10:01+0000\n"
"Last-Translator: Sabri Ünal <yakushabb@gmail.com>\n" "Last-Translator: Oğuz Ersen <oguz@ersen.moe>\n"
"Language-Team: Turkish <https://hosted.weblate.org/projects/pineapple-" "Language-Team: Turkish <https://hosted.weblate.org/projects/pineapple-"
"pictures/appstream-metadata/tr/>\n" "pictures/appstream-metadata/tr/>\n"
"Language: tr\n" "Language: tr\n"
@@ -11,7 +11,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n" "Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 5.15.1\n" "X-Generator: Weblate 2026.8.dev0\n"
#. (itstool) path: component/name #. (itstool) path: component/name
#: net.blumia.pineapple-pictures.metainfo.xml:7 #: net.blumia.pineapple-pictures.metainfo.xml:7
@@ -27,23 +27,26 @@ msgstr "Resim Görüntüleyici"
#: net.blumia.pineapple-pictures.metainfo.xml:12 #: 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." 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 "" msgstr ""
"Pineapple Resimler, yakınlaştırma yapıldığında kullanışlı bir gezinme küçük "
"resmi sunan, hafif ve kullanımı kolay bir resim görüntüleyicidir, herhangi "
"bir resim yönetimi desteği içermez."
#. (itstool) path: screenshot/caption #. (itstool) path: screenshot/caption
#: net.blumia.pineapple-pictures.metainfo.xml:17 #: net.blumia.pineapple-pictures.metainfo.xml:17
msgid "Main window when an image file is loaded" msgid "Main window when an image file is loaded"
msgstr "" msgstr "Bir resim dosyası yüklendiğinde ana pencere"
#. (itstool) path: screenshot/caption #. (itstool) path: screenshot/caption
#: net.blumia.pineapple-pictures.metainfo.xml:22 #: net.blumia.pineapple-pictures.metainfo.xml:22
msgid "Zooming in a raster image" msgid "Zooming in a raster image"
msgstr "" msgstr "Raster resimde yakınlaştırma"
#. (itstool) path: screenshot/caption #. (itstool) path: screenshot/caption
#: net.blumia.pineapple-pictures.metainfo.xml:27 #: net.blumia.pineapple-pictures.metainfo.xml:27
msgid "Zooming in a vector image" msgid "Zooming in a vector image"
msgstr "" msgstr "Vektör resimde yakınlaştırma"
#. (itstool) path: component/developer_name #. (itstool) path: component/developer_name
#: net.blumia.pineapple-pictures.metainfo.xml:34 #: net.blumia.pineapple-pictures.metainfo.xml:34
msgid "Gary (BLumia) Wang et al." msgid "Gary (BLumia) Wang et al."
msgstr "Gary (BLumia) Wang et al." msgstr "Gary (BLumia) Wang ve diğerleri"
+1
View File
@@ -5,6 +5,7 @@ Comment[zh_CN]=菠萝看图是一个轻量级的图像查看器
Exec=ppic %F Exec=ppic %F
GenericName=Image Viewer GenericName=Image Viewer
GenericName[zh_CN]=图像查看器 GenericName[zh_CN]=图像查看器
GenericName[ja]=画像ビューアー
Icon=net.blumia.pineapple-pictures Icon=net.blumia.pineapple-pictures
Keywords=Picture;Image;Viewer;Jpg;Jpeg;Png; Keywords=Picture;Image;Viewer;Jpg;Jpeg;Png;
MimeType=image/bmp;image/bmp24;image/jpg;image/jpe;image/jpeg;image/jpeg24;image/jng;image/pcd;image/pcx;image/png;image/tif;image/tiff;image/tiff24;image/dds;image/gif;image/sgi;image/j2k;image/jp2;image/pct;image/wdp;image/arw;image/icb;image/dng;image/vda;image/vst;image/svg;image/ptif;image/mef;image/xbm;image/svg+xml; MimeType=image/bmp;image/bmp24;image/jpg;image/jpe;image/jpeg;image/jpeg24;image/jng;image/pcd;image/pcx;image/png;image/tif;image/tiff;image/tiff24;image/dds;image/gif;image/sgi;image/j2k;image/jp2;image/pct;image/wdp;image/arw;image/icb;image/dng;image/vda;image/vst;image/svg;image/ptif;image/mef;image/xbm;image/svg+xml;
+10 -1
View File
@@ -71,14 +71,23 @@ HEADERS += \
TRANSLATIONS = \ TRANSLATIONS = \
app/translations/PineapplePictures_en.ts \ app/translations/PineapplePictures_en.ts \
app/translations/PineapplePictures_zh_CN.ts \ app/translations/PineapplePictures_zh_CN.ts \
app/translations/PineapplePictures_ar.ts \
app/translations/PineapplePictures_de.ts \ app/translations/PineapplePictures_de.ts \
app/translations/PineapplePictures_es.ts \ app/translations/PineapplePictures_es.ts \
app/translations/PineapplePictures_fr.ts \ app/translations/PineapplePictures_fr.ts \
app/translations/PineapplePictures_id.ts \
app/translations/PineapplePictures_it.ts \
app/translations/PineapplePictures_ja.ts \
app/translations/PineapplePictures_ko.ts \
app/translations/PineapplePictures_nb_NO.ts \ app/translations/PineapplePictures_nb_NO.ts \
app/translations/PineapplePictures_nl.ts \ app/translations/PineapplePictures_nl.ts \
app/translations/PineapplePictures_ru.ts \ app/translations/PineapplePictures_ru.ts \
app/translations/PineapplePictures_si.ts \ app/translations/PineapplePictures_si.ts \
app/translations/PineapplePictures_id.ts app/translations/PineapplePictures_sl.ts \
app/translations/PineapplePictures_ta.ts \
app/translations/PineapplePictures_tr.ts \
app/translations/PineapplePictures_uk.ts \
app/translations/PineapplePictures_vi.ts
# Default rules for deployment. # Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin qnx: target.path = /tmp/$${TARGET}/bin