18#include "moc_qgslayoutitemguiregistry.cpp"
63 qDeleteAll( mMetadata );
68 return mMetadata.value( metadataId );
73 for (
auto it = mMetadata.constBegin(); it != mMetadata.constEnd(); ++it )
75 if ( it.value()->type() == type )
86 const int id = mMetadata.count();
87 mMetadata[id] = metadata;
94 if ( mItemGroups.contains( group.
id ) )
97 mItemGroups.insert( group.
id, group );
103 return mItemGroups[id];
108 if ( !mMetadata.contains( metadataId ) )
111 std::unique_ptr<QgsLayoutItem> item( mMetadata.value( metadataId )->createItem( layout ) );
113 return item.release();
115 const int type = mMetadata.value( metadataId )->type();
121 if ( !mMetadata.contains( metadataId ) )
126 metadata->newItemAddedToLayout( item, properties );
130 mMetadata.value( metadataId )->newItemAddedToLayout( item );
139 int type = item->
type();
144 type = multiFrame->
type();
146 for (
auto it = mMetadata.constBegin(); it != mMetadata.constEnd(); ++it )
148 if ( it.value()->type() == type )
149 return it.value()->createItemWidget( item );
157 if ( !mMetadata.contains( metadataId ) )
160 return mMetadata[metadataId]->createRubberBand( view );
165 if ( !mMetadata.contains( metadataId ) )
168 return mMetadata[metadataId]->createNodeRubberBand( view );
173 return mMetadata.keys();
MouseHandlesAction
Action to be performed by the mouse handles.
static QgsLayoutItemRegistry * layoutItemRegistry()
Returns the application's layout item registry, used for layout item types.
Stores GUI metadata about a group of layout item classes.
QString id
Unique (untranslated) group ID string.
QgsLayoutItemBaseWidget * createItemWidget(QgsLayoutItem *item) const
Creates a new instance of a layout item configuration widget for the specified item.
void newItemAddedToLayout(int metadataId, QgsLayoutItem *item, const QVariantMap &properties=QVariantMap())
Called when a newly created item of the associated metadata metadataId has been added to a layout.
bool addItemGroup(const QgsLayoutItemGuiGroup &group)
Registers a new item group with the registry.
~QgsLayoutItemGuiRegistry() override
const QgsLayoutItemGuiGroup & itemGroup(const QString &id)
Returns a reference to the item group with matching id.
int metadataIdForItemType(int type) const
Returns the GUI item metadata ID which corresponds to the specified layout item type.
QgsLayoutItemGuiRegistry(QObject *parent=nullptr)
Creates a new empty item GUI registry.
QList< int > itemMetadataIds() const
Returns a list of available item metadata ids handled by the registry.
bool addLayoutItemGuiMetadata(QgsLayoutItemAbstractGuiMetadata *metadata)
Registers the gui metadata for a new layout item type.
QgsLayoutViewRubberBand * createItemRubberBand(int metadataId, QgsLayoutView *view) const
Creates a new rubber band item for the specified item metadataId and destination view.
QGraphicsItem * createNodeItemRubberBand(int metadataId, QgsLayoutView *view)
Creates a rubber band for the specified item metadataId and destination view.
QgsLayoutItem * createItem(int metadataId, QgsLayout *layout) const
Creates a new instance of a layout item given the item metadata metadataId, target layout.
QgsLayoutItemAbstractGuiMetadata * itemMetadata(int metadataId) const
Returns the metadata for the specified item metadataId.
void typeAdded(int metadataId)
Emitted whenever a new item type is added to the registry, with the specified metadataId.
@ LayoutFrame
Frame item, part of a QgsLayoutMultiFrame object.
QgsLayoutItem * createItem(int type, QgsLayout *layout) const
Creates a new instance of a layout item given the item type, and target layout.
Base class for graphical items within a QgsLayout.
int type() const override
Returns a unique graphics item type identifier.
Abstract base class for layout items with the ability to distribute the content to several frames (Qg...
virtual int type() const =0
Returns unique multiframe type id.
QgsLayoutViewRectangularRubberBand is rectangular rubber band for use within QgsLayoutView widgets.
QgsLayoutViewRubberBand is an abstract base class for temporary rubber band items in various shapes,...
A graphical widget to display and interact with QgsLayouts.
Base class for layouts, which can contain items such as maps, labels, scalebars, etc.