/** \class QgsMapThemeCollection \ingroup core \brief Container class that allows storage of map themes consisting of visible map layers and layer styles. \note Added in QGIS 2.12, renamed for QGIS 3.0 */ class QgsMapThemeCollection : QObject { %TypeHeaderCode #include %End public: /** \ingroup core * Individual map theme record of visible layers and styles. */ class MapThemeRecord { public: bool operator==( const QgsMapThemeCollection::MapThemeRecord& other ) const; bool operator!=( const QgsMapThemeCollection::MapThemeRecord& other ) const; /** * Ordered list of visible layers */ QStringList visibleLayerIds() const; /** * Ordered list of visible layers */ void setVisibleLayerIds( const QStringList& visibleLayerIds ); /** * Lists which legend symbols are checked for layers which support this and where * not all symbols are checked. * @note not available in Python bindings */ // QMap > perLayerCheckedLegendSymbols() const; /** * Lists which legend symbols are checked for layers which support this and where * not all symbols are checked. * @note not available in Python bindings */ // void setPerLayerCheckedLegendSymbols(const QMap >& perLayerCheckedLegendSymbols); /** * The currently used style name for layers with multiple styles. * The map has layer ids as keys and style names as values. */ QMap perLayerCurrentStyle() const; /** * The currently used style name for layers with multiple styles. * The map has layer ids as keys and style names as values. */ void setPerLayerCurrentStyle(const QMap& perLayerCurrentStyle); }; QgsMapThemeCollection(); /** * Returns whether a map theme with a matching name exists. */ bool hasMapTheme( const QString& name ) const; /** * Inserts a new map theme to the collection. * @see update() */ void insert( const QString& name, const MapThemeRecord& state ); /** * Updates a map theme within the collection. * @param name name of map theme to update * @param state map theme record to replace existing map theme * @see insert() */ void update( const QString& name, const MapThemeRecord& state ); /** * Remove an existing map theme from collection. */ void removeMapTheme( const QString& name ); //! Remove all map themes from the collection. void clear(); //! Returns a list of existing map theme names. QStringList mapThemes() const; /** * Returns the recorded state of a map theme. */ MapThemeRecord mapThemeState( const QString& name ) const; /** * Returns the list of layer IDs that are visible for the specified map theme. * * @note The order of the returned list is not guaranteed to reflect the order of layers * in the canvas. */ QStringList mapThemeVisibleLayers( const QString& name ) const; /** * Apply check states of legend nodes of a given layer as defined in the map theme. */ void applyMapThemeCheckedLegendNodesToLayer( const QString& name, const QString& layerID ); /** * Get layer style overrides (for QgsMapSettings) of the visible layers for given map theme. */ QMap mapThemeStyleOverrides( const QString& name ); /** * Reads the map theme collection state from XML * @param doc DOM document * @see writeXml */ void readXml( const QDomDocument& doc ); /** Writes the map theme collection state to XML. * @param doc DOM document * @see readXml */ void writeXml( QDomDocument& doc ); /** * Static method for adding visible layers from a layer tree group to a map theme * record. * @param parent layer tree group parent * @param rec map theme record to amend */ static void addVisibleLayersToMapTheme( QgsLayerTreeGroup* parent, MapThemeRecord& rec ); signals: /** Emitted when map themes within the collection are changed. */ void mapThemesChanged(); };