QGIS API Documentation 3.99.0-Master (d270888f95f)
Loading...
Searching...
No Matches
qgsreadwritecontext.h
Go to the documentation of this file.
1/***************************************************************************
2 qgsreadwritecontext.h
3 ----------------------
4 begin : May 2017
5 copyright : (C) 2017 by Martin Dobias
6 email : wonder dot sk at gmail dot com
7 ***************************************************************************/
8
9/***************************************************************************
10 * *
11 * This program is free software; you can redistribute it and/or modify *
12 * it under the terms of the GNU General Public License as published by *
13 * the Free Software Foundation; either version 2 of the License, or *
14 * (at your option) any later version. *
15 * *
16 ***************************************************************************/
17
18#ifndef QGSREADWRITECONTEXT_H
19#define QGSREADWRITECONTEXT_H
20
21#include "qgis.h"
23#include "qgspathresolver.h"
25
26#include <QString>
27
28using namespace Qt::StringLiterals;
29
31
37class CORE_EXPORT QgsReadWriteContext
38{
39 public:
40
46 {
48 ReadWriteMessage( const QString &message = QString(), Qgis::MessageLevel level = Qgis::MessageLevel::Warning, const QStringList &categories = QStringList() )
49 : mMessage( message )
50 , mLevel( level )
51 , mCategories( categories )
52 {}
53
55 QString message() const {return mMessage;}
56
58 Qgis::MessageLevel level() const {return mLevel;}
59
61 QStringList categories() const {return mCategories;}
62
63 // TODO c++20 - replace with = default
64
66 {
67 return mMessage == other.mMessage && mLevel == other.mLevel && mCategories == other.mCategories;
68 }
69
71 {
72 return !( *this == other );
73 }
74
75#ifdef SIP_RUN
76 SIP_PYOBJECT __repr__();
77 % MethodCode
78 QString str = u"<QgsReadWriteContext.ReadWriteMessage: %1>"_s.arg( sipCpp->message() );
79 sipRes = PyUnicode_FromString( str.toUtf8().constData() );
80 % End
81#endif
82
83 private:
84 QString mMessage;
85 Qgis::MessageLevel mLevel;
86 QStringList mCategories;
87 };
88
93
95
97 const QgsPathResolver &pathResolver() const;
98
100 void setPathResolver( const QgsPathResolver &resolver );
101
106 void pushMessage( const QString &message, Qgis::MessageLevel level = Qgis::MessageLevel::Warning ) const;
107
119 [[maybe_unused]] [[nodiscard]] QgsReadWriteContextCategoryPopper enterCategory( const QString &category, const QString &details = QString() ) const SIP_PYNAME( _enterCategory );
120
121
126 QList<QgsReadWriteContext::ReadWriteMessage> takeMessages();
127
132 const QgsProjectTranslator *projectTranslator( ) const { return mProjectTranslator; }
133
140 void setProjectTranslator( QgsProjectTranslator *projectTranslator );
141
149 QgsCoordinateTransformContext transformContext() const;
150
158 void setTransformContext( const QgsCoordinateTransformContext &transformContext );
159
164 const QString currentLayerId() const { return mCurrentLayerId; }
165
172 void setCurrentLayerId( const QString &layerId ) {mCurrentLayerId = layerId;}
173
174 private:
175
177 void leaveCategory() const;
178
179 QgsPathResolver mPathResolver;
180 mutable QList<ReadWriteMessage> mMessages;
181 mutable QStringList mCategories = QStringList();
182 QgsProjectTranslator *mProjectTranslator = nullptr;
184 QgsCoordinateTransformContext mCoordinateTransformContext = QgsCoordinateTransformContext();
185 QString mCurrentLayerId;
186};
187
188
199{
200 public:
202 QgsReadWriteContextCategoryPopper( const QgsReadWriteContext &context ) : mContext( context ) {}
203 ~QgsReadWriteContextCategoryPopper() {mContext.leaveCategory();}
204 private:
205#ifdef SIP_RUN
207#endif
208
209 const QgsReadWriteContext &mContext;
210};
211
212#endif // QGSREADWRITECONTEXT_H
MessageLevel
Level for messages This will be used both for message log and message bar in application.
Definition qgis.h:159
@ Warning
Warning message.
Definition qgis.h:161
Contains information about the context in which a coordinate transform is executed.
Resolves relative paths into absolute paths and vice versa.
An interface for objects which can translate project strings.
Allows entering a context category and takes care of leaving this category on deletion of the class.
QgsReadWriteContextCategoryPopper(const QgsReadWriteContext &context)
Creates a popper.
A container for the context for various read/write operations on objects.
const QgsProjectTranslator * projectTranslator() const
Returns the project translator.
void setCurrentLayerId(const QString &layerId)
Sets the current layer id.
QgsReadWriteContext()
Constructor for QgsReadWriteContext.
const QString currentLayerId() const
Returns the currently used layer id as string.
friend class QgsReadWriteContextCategoryPopper
#define SIP_PYNAME(name)
Definition qgis_sip.h:89
Struct for QgsReadWriteContext error or warning messages.
Qgis::MessageLevel level() const
Returns the message level.
ReadWriteMessage(const QString &message=QString(), Qgis::MessageLevel level=Qgis::MessageLevel::Warning, const QStringList &categories=QStringList())
Construct a container for QgsReadWriteContext error or warning messages.
QString message() const
Returns the message string.
bool operator!=(const QgsReadWriteContext::ReadWriteMessage &other) const
bool operator==(const QgsReadWriteContext::ReadWriteMessage &other) const
QStringList categories() const
Returns the stack of categories of the message.