support QgsSettingsEntryEnumFlag in sipify (#42888)

This commit is contained in:
Denis Rouzaud 2021-04-22 13:47:21 +02:00 committed by GitHub
parent c259a408a4
commit 642deb194d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 49 additions and 6 deletions

View File

@ -95,16 +95,24 @@ sub read_line {
}
sub write_output {
my ($dbg_code, $out) = @_;
my ($dbg_code, $out, $prepend) = @_;
$prepend //= "no";
if ($debug == 1){
$dbg_code = sprintf("%d %-4s :: ", $LINE_IDX, $dbg_code);
}
else{
$dbg_code = '';
}
push @OUTPUT, "%If ($IF_FEATURE_CONDITION)\n" if $IF_FEATURE_CONDITION ne '';
push @OUTPUT, $dbg_code.$out;
push @OUTPUT, "%End\n" if $IF_FEATURE_CONDITION ne '';
if ($prepend eq "prepend")
{
unshift @OUTPUT, $dbg_code . $out;
}
else
{
push @OUTPUT, "%If ($IF_FEATURE_CONDITION)\n" if $IF_FEATURE_CONDITION ne '';
push @OUTPUT, $dbg_code . $out;
push @OUTPUT, "%End\n" if $IF_FEATURE_CONDITION ne '';
}
$IF_FEATURE_CONDITION = '';
}
@ -1261,9 +1269,28 @@ while ($LINE_IDX < $LINE_COUNT){
# fix astyle placing space after % character
$LINE =~ s/\/\s+GetWrapper\s+\//\/GetWrapper\//;
# handle enum/flags QgsSettingsEntryEnumFlag
if ( $LINE =~ m/^(\s*)const QgsSettingsEntryEnumFlag<(.*)> (.+);$/ ) {
my $prep_line = "class QgsSettingsEntryEnumFlag_$3
{
%TypeHeaderCode
#include \"" .basename($headerfile) . "\"
#include \"qgssettingsentry.h\"
typedef QgsSettingsEntryEnumFlag<$2> QgsSettingsEntryEnumFlag_$3;
%End
public:
QgsSettingsEntryEnumFlag_$3( const QString &key, QgsSettings::Section section, const $2 &defaultValue, const QString &description = QString() );
QString key( const QString &dynamicKeyPart = QString() ) const;
$2 value( const QString &dynamicKeyPart = QString(), bool useDefaultValueOverride = false, const $2 &defaultValueOverride = $2() ) const;
};";
$LINE = "$1const QgsSettingsEntryEnumFlag_$3 $3;";
$COMMENT = '';
write_output("ENF", "$prep_line\n", "prepend");
}
write_output("NOR", "$LINE\n");
if ($PYTHON_SIGNATURE ne ''){
write_output("PSI", "$PYTHON_SIGNATURE\n");
if ($PYTHON_SIGNATURE ne '') {
write_output("PSI", "$PYTHON_SIGNATURE\n");
}
# multiline definition (parenthesis left open)

View File

@ -5,6 +5,18 @@
* *
* Do not edit manually ! Edit header and run scripts/sipify.pl again *
************************************************************************/
class QgsSettingsEntryEnumFlag_settingsDigitizingDefaultSnapType
{
%TypeHeaderCode
#include "sipifyheader.h"
#include "qgssettingsentry.h"
typedef QgsSettingsEntryEnumFlag<QgsSnappingConfig::SnappingTypes> QgsSettingsEntryEnumFlag_settingsDigitizingDefaultSnapType;
%End
public:
QgsSettingsEntryEnumFlag_settingsDigitizingDefaultSnapType( const QString &key, QgsSettings::Section section, const QgsSnappingConfig::SnappingTypes &defaultValue, const QString &description = QString() );
QString key( const QString &dynamicKeyPart = QString() ) const;
QgsSnappingConfig::SnappingTypes value( const QString &dynamicKeyPart = QString(), bool useDefaultValueOverride = false, const QgsSnappingConfig::SnappingTypes &defaultValueOverride = QgsSnappingConfig::SnappingTypes() ) const;
};
@ -86,6 +98,8 @@ typedef QtClass<QVariant> QtClassQVariantBase;
enum OneLiner { Success, NoSuccess };
const QgsSettingsEntryEnumFlag_settingsDigitizingDefaultSnapType settingsDigitizingDefaultSnapType;
struct Data
{
Data( QgsMapLayer *layer, Qstring name );

View File

@ -120,6 +120,8 @@ class CORE_EXPORT QgsSipifyHeader : public QtClass<QVariant>, private Ui::QgsBas
enum OneLiner { Success, NoSuccess };
static const inline QgsSettingsEntryEnumFlag<QgsSnappingConfig::SnappingTypes> settingsDigitizingDefaultSnapType = QgsSettingsEntryEnumFlag<QgsSnappingConfig::SnappingTypes>( QStringLiteral( "/qgis/digitizing/default_snap_type" ), QgsSettings::NoSection, QgsSnappingConfig::VertexFlag );
/**
* Docstring headers for structs are not supported by sip (as of 4.18) and
* therefore this docstring must not to be copied to the sipfile.