Adds QGIS 4 / Qt6 compatibility. The plugin previously crashed immediately
on QGIS 4 (PyQt6); it now runs on both QGIS 3.x (PyQt5) and QGIS 4.x (PyQt6).
Added
- FFmpeg detection status shown in the Output Options group, so it's clear
up front whether Movie (MP4) export is available. - A hint next to the Run/Close/Cancel button row ("Set your output path on
the output tab to run") shown whenever the output path isn't set and Run
is disabled.
Changed
- Restructured the Output tab: Output Format, Output Resolution, and Output
Options were a group box nested inside another group box; they are now
peer group boxes.
Fixed
- Declare QGIS 4.x compatibility (
qgisMaximumVersion=4.99) in both
metadata.txtandconfig.json, so the plugin is no longer blocked from
loading on QGIS 4. (The release packaging regeneratesmetadata.txtfrom
config.json, so both needed the fix.) - Fix
AttributeErrorcrashes from PyQt5-style unscoped enum access, which
PyQt6 removed (e.g.QEasingCurve.Linear->QEasingCurve.Type.Linear,
Qt.AlignCenter->Qt.AlignmentFlag.AlignCenter, and the same pattern
acrossQDialogButtonBox,QMessageBox,QStyle,QSizePolicy,
QPalette,QProcess, andQt.WA_DeleteOnClose). - Fix
TypeErrorcrash from passing a rawinttosetToolButtonStyle,
which PyQt6 requires as a real enum value. - Port the embedded video player to Qt6's
QtMultimediaAPI:QMediaContent
was removed (replaced byQMediaPlayer.setSource), and the
stateChanged/errorsignals were renamed to
playbackStateChanged/errorOccurred. Qt5 (QGIS 3.x) behaviour is
preserved via a runtime Qt-version check. - Replace
PyQt5-hardcoded imports with the canonicalqgis.PyQtshim
(which resolves to whichever Qt binding QGIS itself uses) in the video
player and the test suite's mockqgis_interface. - Fix invisible media-list add/remove buttons: their
.ui-defined emoji
glyphs (➕/➖) have no glyph in the available font stack and rendered
as blank "tofu" boxes; replaced with plain+/-text. - Fix invisible spin-box up/down arrows: styling
QSpinBox/QDoubleSpinBox
with custom QSS switches Qt off its native paint path for the whole
compound control, so the arrow sub-controls (left unstyled) rendered as
blank blocks. Spin boxes are now excluded from the shared input-styling
rule and keep their native, fully visible arrows.