Compare commits
4
Commits
e01718928c
...
40d82e757e
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
40d82e757e | ||
|
|
da190a22c1 | ||
|
|
2995f06d49 | ||
|
|
ff6a9ebfae |
@@ -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
|
||||||
|
|||||||
@@ -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
@@ -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)
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -78,11 +78,16 @@ MainWindow::MainWindow(QWidget *parent)
|
|||||||
// Binding graphics and navigator views signals
|
// Binding graphics and navigator views signals
|
||||||
connect(ui->m_gv, &GraphicsView::navigatorViewRequired,
|
connect(ui->m_gv, &GraphicsView::navigatorViewRequired,
|
||||||
this, [this](bool required, const QTransform & tf){
|
this, [this](bool required, const QTransform & tf){
|
||||||
|
if (Settings::instance()->showNavigatorView()){
|
||||||
ui->m_nav->setTransform(GraphicsView::resetScale(tf));
|
ui->m_nav->setTransform(GraphicsView::resetScale(tf));
|
||||||
ui->m_nav->fitInView(ui->m_nav->sceneRect(), Qt::KeepAspectRatio);
|
ui->m_nav->fitInView(ui->m_nav->sceneRect(), Qt::KeepAspectRatio);
|
||||||
ui->m_nav->setVisible(required);
|
ui->m_nav->setVisible(required);
|
||||||
ui->m_navPH->setVisible(required);
|
ui->m_navPH->setVisible(required);
|
||||||
ui->m_nav->updateMainViewportRegion();
|
ui->m_nav->updateMainViewportRegion();
|
||||||
|
} else {
|
||||||
|
ui->m_nav->setVisible(false);
|
||||||
|
ui->m_navPH->setVisible(false);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
connect(ui->m_gv, &GraphicsView::viewportRectChanged,
|
connect(ui->m_gv, &GraphicsView::viewportRectChanged,
|
||||||
ui->m_nav, &NavigatorView::updateMainViewportRegion);
|
ui->m_nav, &NavigatorView::updateMainViewportRegion);
|
||||||
|
|||||||
@@ -42,6 +42,11 @@ namespace QEnumHelper
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool Settings::showNavigatorView() const
|
||||||
|
{
|
||||||
|
return m_qsettings->value("show_navigator_view", true).toBool();
|
||||||
|
}
|
||||||
|
|
||||||
bool Settings::useLightCheckerboard() const
|
bool Settings::useLightCheckerboard() const
|
||||||
{
|
{
|
||||||
return m_qsettings->value("use_light_checkerboard", false).toBool();
|
return m_qsettings->value("use_light_checkerboard", false).toBool();
|
||||||
@@ -83,6 +88,12 @@ Qt::HighDpiScaleFactorRoundingPolicy Settings::hiDpiScaleFactorBehavior() const
|
|||||||
return QEnumHelper::fromString<Qt::HighDpiScaleFactorRoundingPolicy>(result, Qt::HighDpiScaleFactorRoundingPolicy::PassThrough);
|
return QEnumHelper::fromString<Qt::HighDpiScaleFactorRoundingPolicy>(result, Qt::HighDpiScaleFactorRoundingPolicy::PassThrough);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Settings::setShowNavigatorView(bool on)
|
||||||
|
{
|
||||||
|
m_qsettings->setValue("show_navigator_view", on);
|
||||||
|
m_qsettings->sync();
|
||||||
|
}
|
||||||
|
|
||||||
void Settings::setUseLightCheckerboard(bool light)
|
void Settings::setUseLightCheckerboard(bool light)
|
||||||
{
|
{
|
||||||
m_qsettings->setValue("use_light_checkerboard", light);
|
m_qsettings->setValue("use_light_checkerboard", light);
|
||||||
|
|||||||
@@ -25,6 +25,7 @@ public:
|
|||||||
|
|
||||||
static Settings *instance();
|
static Settings *instance();
|
||||||
|
|
||||||
|
bool showNavigatorView() const;
|
||||||
bool useLightCheckerboard() const;
|
bool useLightCheckerboard() const;
|
||||||
bool loopGallery() const;
|
bool loopGallery() const;
|
||||||
bool svgTiny12Only() const;
|
bool svgTiny12Only() const;
|
||||||
@@ -32,6 +33,7 @@ public:
|
|||||||
WindowSizeBehavior initWindowSizeBehavior() const;
|
WindowSizeBehavior initWindowSizeBehavior() const;
|
||||||
Qt::HighDpiScaleFactorRoundingPolicy hiDpiScaleFactorBehavior() const;
|
Qt::HighDpiScaleFactorRoundingPolicy hiDpiScaleFactorBehavior() const;
|
||||||
|
|
||||||
|
void setShowNavigatorView(bool on);
|
||||||
void setUseLightCheckerboard(bool light);
|
void setUseLightCheckerboard(bool light);
|
||||||
void setLoopGallery(bool on);
|
void setLoopGallery(bool on);
|
||||||
void setSvgTiny12Only(bool on);
|
void setSvgTiny12Only(bool on);
|
||||||
|
|||||||
@@ -79,6 +79,7 @@ SettingsDialog::SettingsDialog(QWidget *parent)
|
|||||||
setWindowFlag(Qt::WindowContextHelpButtonHint, false);
|
setWindowFlag(Qt::WindowContextHelpButtonHint, false);
|
||||||
|
|
||||||
auto* settings = Settings::instance();
|
auto* settings = Settings::instance();
|
||||||
|
ui->m_showNavigatorView->setChecked(Settings::instance()->showNavigatorView());
|
||||||
ui->m_useLightCheckerboard->setChecked(settings->useLightCheckerboard());
|
ui->m_useLightCheckerboard->setChecked(settings->useLightCheckerboard());
|
||||||
ui->m_loopGallery->setChecked(settings->loopGallery());
|
ui->m_loopGallery->setChecked(settings->loopGallery());
|
||||||
ui->m_svgTiny12Only->setChecked(settings->svgTiny12Only());
|
ui->m_svgTiny12Only->setChecked(settings->svgTiny12Only());
|
||||||
@@ -100,6 +101,10 @@ SettingsDialog::SettingsDialog(QWidget *parent)
|
|||||||
# define QT_CHECKSTATE int
|
# define QT_CHECKSTATE int
|
||||||
#endif // QT_VERSION >= QT_VERSION_CHECK(6, 7, 0)
|
#endif // QT_VERSION >= QT_VERSION_CHECK(6, 7, 0)
|
||||||
|
|
||||||
|
connect(ui->m_showNavigatorView, &QCHECKBOX_CHECKSTATECHANGED, this, [ = ](QT_CHECKSTATE state){
|
||||||
|
Settings::instance()->setShowNavigatorView(state == Qt::Checked);
|
||||||
|
});
|
||||||
|
|
||||||
connect(ui->m_useLightCheckerboard, &QCHECKBOX_CHECKSTATECHANGED, this, [ = ](QT_CHECKSTATE state){
|
connect(ui->m_useLightCheckerboard, &QCHECKBOX_CHECKSTATECHANGED, this, [ = ](QT_CHECKSTATE state){
|
||||||
Settings::instance()->setUseLightCheckerboard(state == Qt::Checked);
|
Settings::instance()->setUseLightCheckerboard(state == Qt::Checked);
|
||||||
});
|
});
|
||||||
|
|||||||
+15
-8
@@ -20,54 +20,61 @@
|
|||||||
</attribute>
|
</attribute>
|
||||||
<layout class="QFormLayout" name="settingsForm">
|
<layout class="QFormLayout" name="settingsForm">
|
||||||
<item row="0" column="0" colspan="2">
|
<item row="0" column="0" colspan="2">
|
||||||
|
<widget class="QCheckBox" name="m_showNavigatorView">
|
||||||
|
<property name="text">
|
||||||
|
<string>Show navigation view</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="0" colspan="2">
|
||||||
<widget class="QCheckBox" name="m_useLightCheckerboard">
|
<widget class="QCheckBox" name="m_useLightCheckerboard">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Use light-color checkerboard</string>
|
<string>Use light-color checkerboard</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="1" column="0" colspan="2">
|
<item row="2" column="0" colspan="2">
|
||||||
<widget class="QCheckBox" name="m_loopGallery">
|
<widget class="QCheckBox" name="m_loopGallery">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Loop the loaded gallery</string>
|
<string>Loop the loaded gallery</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="2" column="0" colspan="2">
|
<item row="3" column="0" colspan="2">
|
||||||
<widget class="QCheckBox" name="m_svgTiny12Only">
|
<widget class="QCheckBox" name="m_svgTiny12Only">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Limit SVG support to SVG Tiny 1.2</string>
|
<string>Limit SVG support to SVG Tiny 1.2</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="3" column="0">
|
<item row="4" column="0">
|
||||||
<widget class="QLabel" name="m_mouseWheelBehaviorLabel">
|
<widget class="QLabel" name="m_mouseWheelBehaviorLabel">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Mouse wheel behavior</string>
|
<string>Mouse wheel behavior</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="3" column="1">
|
<item row="4" column="1">
|
||||||
<widget class="QComboBox" name="m_mouseWheelBehavior"/>
|
<widget class="QComboBox" name="m_mouseWheelBehavior"/>
|
||||||
</item>
|
</item>
|
||||||
<item row="4" column="0">
|
<item row="5" column="0">
|
||||||
<widget class="QLabel" name="m_initWindowSizeBehaviorLabel">
|
<widget class="QLabel" name="m_initWindowSizeBehaviorLabel">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Default window size</string>
|
<string>Default window size</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="4" column="1">
|
<item row="5" column="1">
|
||||||
<widget class="QComboBox" name="m_initWindowSizeBehavior"/>
|
<widget class="QComboBox" name="m_initWindowSizeBehavior"/>
|
||||||
</item>
|
</item>
|
||||||
<item row="5" column="0">
|
<item row="6" column="0">
|
||||||
<widget class="QLabel" name="m_hiDpiRoundingPolicyBehaviorLabel">
|
<widget class="QLabel" name="m_hiDpiRoundingPolicyBehaviorLabel">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>HiDPI scale factor rounding policy</string>
|
<string>HiDPI scale factor rounding policy</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="5" column="1">
|
<item row="6" column="1">
|
||||||
<widget class="QComboBox" name="m_hiDpiRoundingPolicyBehavior"/>
|
<widget class="QComboBox" name="m_hiDpiRoundingPolicyBehavior"/>
|
||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
+1
@@ -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;
|
||||||
|
|||||||
Reference in New Issue
Block a user