QGIS API Documentation  3.26.3-Buenos Aires (65e4edfdad)
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 "qgspathresolver.h"
22 #include "qgis.h"
23 #include "qgsprojecttranslator.h"
25 
27 
34 class CORE_EXPORT QgsReadWriteContext
35 {
36  public:
37 
43  {
45  ReadWriteMessage( const QString &message = QString(), Qgis::MessageLevel level = Qgis::MessageLevel::Warning, const QStringList &categories = QStringList() )
46  : mMessage( message )
47  , mLevel( level )
48  , mCategories( categories )
49  {}
50 
52  QString message() const {return mMessage;}
53 
55  Qgis::MessageLevel level() const {return mLevel;}
56 
58  QStringList categories() const {return mCategories;}
59 
60  // TODO c++20 - replace with = default
61 
63  {
64  return mMessage == other.mMessage && mLevel == other.mLevel && mCategories == other.mCategories;
65  }
66 
68  {
69  return !( *this == other );
70  }
71 
72 #ifdef SIP_RUN
73  SIP_PYOBJECT __repr__();
74  % MethodCode
75  QString str = QStringLiteral( "<QgsReadWriteContext.ReadWriteMessage: %1>" ).arg( sipCpp->message() );
76  sipRes = PyUnicode_FromString( str.toUtf8().constData() );
77  % End
78 #endif
79 
80  private:
81  QString mMessage;
82  Qgis::MessageLevel mLevel;
83  QStringList mCategories;
84  };
85 
90 
92 
94  const QgsPathResolver &pathResolver() const;
95 
97  void setPathResolver( const QgsPathResolver &resolver );
98 
103  void pushMessage( const QString &message, Qgis::MessageLevel level = Qgis::MessageLevel::Warning ) const;
104 
116  MAYBE_UNUSED NODISCARD QgsReadWriteContextCategoryPopper enterCategory( const QString &category, const QString &details = QString() ) const SIP_PYNAME( _enterCategory );
117 
122  QList<QgsReadWriteContext::ReadWriteMessage> takeMessages();
123 
128  const QgsProjectTranslator *projectTranslator( ) const { return mProjectTranslator; }
129 
136  void setProjectTranslator( QgsProjectTranslator *projectTranslator );
137 
145  QgsCoordinateTransformContext transformContext() const;
146 
154  void setTransformContext( const QgsCoordinateTransformContext &transformContext );
155 
156  private:
157 
159  void leaveCategory() const;
160 
161  QgsPathResolver mPathResolver;
162  mutable QList<ReadWriteMessage> mMessages;
163  mutable QStringList mCategories = QStringList();
164  QgsProjectTranslator *mProjectTranslator = nullptr;
166  QgsCoordinateTransformContext mCoordinateTransformContext = QgsCoordinateTransformContext();
167 };
168 
169 
179 {
180  public:
182  QgsReadWriteContextCategoryPopper( const QgsReadWriteContext &context ) : mContext( context ) {}
183  ~QgsReadWriteContextCategoryPopper() {mContext.leaveCategory();}
184  private:
185 #ifdef SIP_RUN
187 #endif
188 
189  const QgsReadWriteContext &mContext;
190 };
191 
192 #endif // QGSREADWRITECONTEXT_H
SIP_PYNAME
#define SIP_PYNAME(name)
Definition: qgis_sip.h:81
QgsReadWriteContext::ReadWriteMessage::message
QString message() const
Returns the message string.
Definition: qgsreadwritecontext.h:52
QgsCoordinateTransformContext
Contains information about the context in which a coordinate transform is executed.
Definition: qgscoordinatetransformcontext.h:57
QgsReadWriteContextCategoryPopper::~QgsReadWriteContextCategoryPopper
~QgsReadWriteContextCategoryPopper()
Definition: qgsreadwritecontext.h:183
QgsReadWriteContextCategoryPopper::QgsReadWriteContextCategoryPopper
QgsReadWriteContextCategoryPopper(const QgsReadWriteContext &context)
Creates a popper.
Definition: qgsreadwritecontext.h:182
QgsReadWriteContext::ReadWriteMessage::categories
QStringList categories() const
Returns the stack of categories of the message.
Definition: qgsreadwritecontext.h:58
QgsReadWriteContext
The class is used as a container of context for various read/write operations on other objects.
Definition: qgsreadwritecontext.h:34
QgsReadWriteContext::ReadWriteMessage::operator!=
bool operator!=(const QgsReadWriteContext::ReadWriteMessage &other) const
Definition: qgsreadwritecontext.h:67
qgscoordinatetransformcontext.h
QgsReadWriteContext::ReadWriteMessage
Struct for QgsReadWriteContext error or warning messages.
Definition: qgsreadwritecontext.h:42
qgspathresolver.h
qgis.h
QgsReadWriteContext::ReadWriteMessage::operator==
bool operator==(const QgsReadWriteContext::ReadWriteMessage &other) const
Definition: qgsreadwritecontext.h:62
qgsprojecttranslator.h
QgsReadWriteContextCategoryPopper
Allows entering a context category and takes care of leaving this category on deletion of the class....
Definition: qgsreadwritecontext.h:178
MAYBE_UNUSED
#define MAYBE_UNUSED
Definition: qgis.h:2882
QgsReadWriteContext::ReadWriteMessage::ReadWriteMessage
ReadWriteMessage(const QString &message=QString(), Qgis::MessageLevel level=Qgis::MessageLevel::Warning, const QStringList &categories=QStringList())
Construct a container for QgsReadWriteContext error or warning messages.
Definition: qgsreadwritecontext.h:45
QgsReadWriteContext::ReadWriteMessage::level
Qgis::MessageLevel level() const
Returns the message level.
Definition: qgsreadwritecontext.h:55
QgsProjectTranslator
Wherever an object of this class is available, the derived translate function can be called from.
Definition: qgsprojecttranslator.h:30
Qgis::MessageLevel
MessageLevel
Level for messages This will be used both for message log and message bar in application.
Definition: qgis.h:114
str
#define str(x)
Definition: qgis.cpp:37
NODISCARD
#define NODISCARD
Definition: qgis.h:2866
QgsPathResolver
Resolves relative paths into absolute paths and vice versa. Used for writing.
Definition: qgspathresolver.h:31