Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions python/plugins/MetaSearch/plugin.py
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@ def initGui(self):

run_icon = QIcon("{}/{}".format(self.context.ppath, "images/MetaSearch.svg"))
self.action_run = QAction(run_icon, "MetaSearch", self.iface.mainWindow())
self.action_run.setObjectName("action_run")
self.action_run.setWhatsThis(
QCoreApplication.translate("MetaSearch", "MetaSearch plugin")
)
Expand All @@ -69,6 +70,7 @@ def initGui(self):
# help
help_icon = QgsApplication.getThemeIcon("/mActionHelpContents.svg")
self.action_help = QAction(help_icon, "Help", self.iface.mainWindow())
self.action_help.setObjectName("action_help")
self.action_help.setWhatsThis(
QCoreApplication.translate("MetaSearch", "MetaSearch plugin help")
)
Expand Down
2 changes: 2 additions & 0 deletions python/plugins/processing/gui/ProcessingToolbox.py
Original file line number Diff line number Diff line change
Expand Up @@ -168,9 +168,11 @@ def addProviderActions(self, provider):

actions = ProviderActions.actions[provider.id()]
menu = QMenu(provider.name(), self)
menu.setObjectName(provider.name() + "_menu")
for action in actions:
action.setData(self)
act = QAction(action.name, menu)
act.setObjectName(action.name)
act.triggered.connect(action.execute)
menu.addAction(act)
toolbarButton.setMenu(menu)
Expand Down
5 changes: 4 additions & 1 deletion python/plugins/processing/gui/menus.py
Original file line number Diff line number Diff line change
Expand Up @@ -188,6 +188,7 @@ def initMenusAndToolbars():
toolButton = QToolButton(toolbar)
toolButton.setPopupMode(QToolButton.ToolButtonPopupMode.MenuButtonPopup)
toolButtonAction = toolbar.addWidget(toolButton)
toolButtonAction.setObjectName("selectByToolButton")


if iface is not None:
Expand Down Expand Up @@ -369,7 +370,9 @@ def getMenu(name, parent):
if menus:
return menus[0]
else:
return parent.addMenu(name)
menu = parent.addMenu(name)
menu.setObjectName(name)
return menu


def findAction(actions, alg):
Expand Down
10 changes: 9 additions & 1 deletion src/app/gps/qgsgpstoolbar.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,7 @@ QgsGpsToolBar::QgsGpsToolBar( QgsAppGpsConnection *connection, QgsMapCanvas *can
mConnectAction->setToolTip( tr( "Connect to GPS" ) );
mConnectAction->setIcon( QgsApplication::getThemeIcon( u"/gpsicons/mIconGpsConnect.svg"_s ) );
mConnectAction->setCheckable( true );
mConnectAction->setObjectName( u"mConnectAction"_s );
addAction( mConnectAction );

connect( mConnectAction, &QAction::toggled, this, [this]( bool connect ) {
Expand All @@ -66,6 +67,7 @@ QgsGpsToolBar::QgsGpsToolBar( QgsAppGpsConnection *connection, QgsMapCanvas *can
} );

mRecenterAction = new QAction( tr( "Recenter" ), this );
mRecenterAction->setObjectName( u"mRecenterAction"_s );
mRecenterAction->setToolTip( tr( "Recenter map on GPS location" ) );
mRecenterAction->setIcon( QgsApplication::getThemeIcon( u"/gpsicons/mActionRecenter.svg"_s ) );
mRecenterAction->setEnabled( false );
Expand Down Expand Up @@ -102,22 +104,26 @@ QgsGpsToolBar::QgsGpsToolBar( QgsAppGpsConnection *connection, QgsMapCanvas *can
mDestinationLayerButton->setMenu( mDestinationLayerMenu );
mDestinationLayerButton->setPopupMode( QToolButton::InstantPopup );
mDestinationLayerButton->setIcon( QgsApplication::getThemeIcon( u"/gpsicons/mIconGpsDestinationLayer.svg"_s ) );
addWidget( mDestinationLayerButton );
QAction *action = addWidget( mDestinationLayerButton );
action->setObjectName( u"mDestinationLayerButtonAction"_s );

mAddTrackVertexAction = new QAction( tr( "Add Track Vertex" ), this );
mAddTrackVertexAction->setToolTip( tr( "Add vertex to GPS track using current GPS location" ) );
mAddTrackVertexAction->setEnabled( false );
mAddTrackVertexAction->setIcon( QgsApplication::getThemeIcon( u"/gpsicons/mActionAddTrackPoint.svg"_s ) );
mAddTrackVertexAction->setObjectName( u"mAddTrackVertexAction"_s );
connect( mAddTrackVertexAction, &QAction::triggered, this, &QgsGpsToolBar::addVertexClicked );
addAction( mAddTrackVertexAction );

mCreateFeatureAction = new QAction( tr( "Create Feature from Track" ), this );
mCreateFeatureAction->setIcon( QgsApplication::getThemeIcon( u"mActionCaptureLine.svg"_s ) );
mCreateFeatureAction->setObjectName( u"mCreateFeatureAction"_s );
connect( mCreateFeatureAction, &QAction::triggered, this, &QgsGpsToolBar::addFeatureClicked );
addAction( mCreateFeatureAction );

mResetFeatureAction = new QAction( tr( "Reset Track" ), this );
mResetFeatureAction->setIcon( QgsApplication::getThemeIcon( u"/gpsicons/mActionReset.svg"_s ) );
mResetFeatureAction->setObjectName( u"mResetFeatureAction"_s );
connect( mResetFeatureAction, &QAction::triggered, this, &QgsGpsToolBar::resetFeatureClicked );
addAction( mResetFeatureAction );

Expand All @@ -127,6 +133,7 @@ QgsGpsToolBar::QgsGpsToolBar( QgsAppGpsConnection *connection, QgsMapCanvas *can
mShowInfoAction->setIcon( QgsApplication::getThemeIcon( u"mActionPropertiesWidget.svg"_s ) );
mShowInfoAction->setToolTip( tr( "Show GPS Information Panel" ) );
mShowInfoAction->setCheckable( true );
mShowInfoAction->setObjectName( u"mShowInfoAction"_s );
addAction( mShowInfoAction );

connect( mConnection, &QgsAppGpsConnection::positionChanged, this, &QgsGpsToolBar::updateLocationLabel );
Expand All @@ -140,6 +147,7 @@ QgsGpsToolBar::QgsGpsToolBar( QgsAppGpsConnection *connection, QgsMapCanvas *can
settingsButton->setPopupMode( QToolButton::InstantPopup );
settingsButton->setIcon( QgsApplication::getThemeIcon( u"/mActionOptions.svg"_s ) );
mSettingsMenuAction = addWidget( settingsButton );
mSettingsMenuAction->setObjectName( u"mSettingsMenuAction"_s );

mRecenterAction->setEnabled( false );
mCreateFeatureAction->setEnabled( false );
Expand Down
6 changes: 4 additions & 2 deletions src/app/maptools/qgsmaptoolsdigitizingtechniquemanager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,8 @@ void QgsMapToolsDigitizingTechniqueManager::setupToolBars()

updateDigitizeModeButton( settingsDigitizingTechnique->value() );

QgisApp::instance()->mDigitizeToolBar->insertWidget( QgisApp::instance()->mDigitizeToolBar->actions().at( 3 ), mDigitizeModeToolButton );
QAction *action = QgisApp::instance()->mDigitizeToolBar->insertWidget( QgisApp::instance()->mDigitizeToolBar->actions().at( 3 ), mDigitizeModeToolButton );
action->setObjectName( u"mDigitizeModeToolButton"_s );

// Digitizing shape tools
const QList<QgsMapToolShapeMetadata *> mapTools = QgsGui::mapToolShapeRegistry()->mapToolMetadatas();
Expand All @@ -109,7 +110,8 @@ void QgsMapToolsDigitizingTechniqueManager::setupToolBars()
shapeButton->setPopupMode( QToolButton::MenuButtonPopup );
shapeButton->setMenu( new QMenu() );

QgisApp::instance()->mShapeDigitizeToolBar->addWidget( shapeButton );
QAction *action = QgisApp::instance()->mShapeDigitizeToolBar->addWidget( shapeButton );
action->setObjectName( u"shapeButtonAction"_s );
QObject::connect( shapeButton, &QToolButton::triggered, this, [this]( QAction *action ) { setShapeTool( action->data().toString() ); } );

mShapeCategoryButtons.insert( metadata->category(), shapeButton );
Expand Down
14 changes: 14 additions & 0 deletions src/app/mesh/qgsmaptooleditmeshframe.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -286,6 +286,7 @@ QgsMapToolEditMeshFrame::QgsMapToolEditMeshFrame( QgsMapCanvas *canvas )
, mSnapIndicator( new QgsSnapIndicator( canvas ) )
{
mActionDigitizing = new QAction( QgsApplication::getThemeIcon( u"/mActionMeshDigitizing.svg"_s ), tr( "Digitize Mesh Elements" ), this );
mActionDigitizing->setObjectName( u"mActionDigitizing"_s );
mActionDigitizing->setCheckable( true );

mActionSelectByPolygon = new QAction( QgsApplication::getThemeIcon( u"/mActionMeshSelectPolygon.svg"_s ), tr( "Select Mesh Elements by Polygon" ), this );
Expand All @@ -297,32 +298,45 @@ QgsMapToolEditMeshFrame::QgsMapToolEditMeshFrame( QgsMapCanvas *canvas )
mSelectionHandler = std::make_unique<QgsMapToolSelectionHandler>( canvas, QgsMapToolSelectionHandler::SelectPolygon );

mActionSelectIsolatedVertices = new QAction( QgsApplication::getThemeIcon( u"/mActionMeshSelectIsolatedVertices.svg"_s ), tr( "Select Isolated Vertices" ), this );
mActionSelectIsolatedVertices->setObjectName( u"mActionSelectIsolatedVertices"_s );
mActionSelectAllVertices = new QAction( QgsApplication::getThemeIcon( u"/mActionMeshSelectAll.svg"_s ), tr( "Select All Vertices" ), this );
mActionSelectAllVertices->setObjectName( u"mActionSelectAllVertices"_s );

mSelectActions << mActionSelectByPolygon
<< mActionSelectByExpression
<< mActionSelectIsolatedVertices
<< mActionSelectAllVertices;

mActionTransformCoordinates = new QAction( QgsApplication::getThemeIcon( u"/mActionMeshTransformByExpression.svg"_s ), tr( "Transform Vertices Coordinates" ), this );
mActionTransformCoordinates->setObjectName( u"mActionTransformCoordinates"_s );
mActionTransformCoordinates->setCheckable( true );

mActionForceByLines = new QAction( QgsApplication::getThemeIcon( u"/mActionMeshEditForceByVectorLines.svg"_s ), tr( "Force by Selected Geometries" ), this );
mActionForceByLines->setObjectName( u"mActionForceByLines"_s );
mActionForceByLines->setCheckable( true );

mWidgetActionForceByLine = new QgsMeshEditForceByLineAction( this );
mWidgetActionForceByLine->setObjectName( u"mWidgetActionForceByLine"_s );
mWidgetActionForceByLine->setMapCanvas( canvas );

mWidgetActionDigitizing = new QgsMeshEditDigitizingAction( this );
mWidgetActionDigitizing->setObjectName( u"mWidgetActionDigitizing"_s );

mActionReindexMesh = new QAction( QgsApplication::getThemeIcon( u"/mActionMeshReindex.svg"_s ), tr( "Reindex Faces and Vertices" ), this );
mActionReindexMesh->setObjectName( u"mActionReindexMesh"_s );

mActionRemoveVerticesFillingHole = new QAction( this );
mActionRemoveVerticesFillingHole->setObjectName( u"mActionRemoveVerticesFillingHole"_s );
mActionDelaunayTriangulation = new QAction( tr( "Delaunay Triangulation with Selected Vertices" ), this );
mActionDelaunayTriangulation->setObjectName( u"mActionDelaunayTriangulation"_s );
mActionFacesRefinement = new QAction( tr( "Refine Current Face" ), this );
mActionFacesRefinement->setObjectName( u"mActionFacesRefinement"_s );
mActionRemoveVerticesWithoutFillingHole = new QAction( this );
mActionRemoveVerticesWithoutFillingHole->setObjectName( u"mActionRemoveVerticesWithoutFillingHole"_s );
mActionRemoveFaces = new QAction( tr( "Remove Current Face" ), this );
mActionRemoveFaces->setObjectName( u"mActionRemoveFaces"_s );
mActionSplitFaces = new QAction( tr( "Split Current Face" ), this );
mActionSplitFaces->setObjectName( u"mActionSplitFaces"_s );

connect( mActionRemoveVerticesFillingHole, &QAction::triggered, this, [this] { removeSelectedVerticesFromMesh( true ); } );
connect( mActionRemoveVerticesWithoutFillingHole, &QAction::triggered, this, [this] { removeSelectedVerticesFromMesh( false ); } );
Expand Down
18 changes: 12 additions & 6 deletions src/app/qgisapp.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -822,7 +822,8 @@ void QgisApp::annotationItemTypeAdded( int id )
groupToolButton->setAutoRaise( true );
groupToolButton->setToolButtonStyle( Qt::ToolButtonIconOnly );
groupToolButton->setToolTip( groupText );
mAnnotationsToolBar->insertWidget( mAnnotationsItemInsertBefore, groupToolButton );
QAction *action = mAnnotationsToolBar->insertWidget( mAnnotationsItemInsertBefore, groupToolButton );
action->setObjectName( u"annotationGroupToolButton"_s );
mAnnotationItemGroupToolButtons.insert( groupId, groupToolButton );
groupButton = groupToolButton;
}
Expand Down Expand Up @@ -3570,7 +3571,8 @@ void QgisApp::createToolBars()
mSnappingWidget = new QgsSnappingWidget( QgsProject::instance(), mMapCanvas, mSnappingToolBar );
mSnappingWidget->setObjectName( u"mSnappingWidget"_s );
connect( mSnappingWidget, &QgsSnappingWidget::snappingConfigChanged, QgsProject::instance(), [this] { QgsProject::instance()->setSnappingConfig( mSnappingWidget->config() ); } );
mSnappingToolBar->addWidget( mSnappingWidget );
QAction *action = mSnappingToolBar->addWidget( mSnappingWidget );
action->setObjectName( u"mSnappingWidget"_s );

mTracer = new QgsMapCanvasTracer( mMapCanvas, messageBar() );
mTracer->setActionEnableTracing( mSnappingWidget->enableTracingAction() );
Expand Down Expand Up @@ -3910,7 +3912,8 @@ void QgisApp::createToolBars()
meshEditMenu->addSeparator();
meshEditMenu->addAction( editMeshMapTool->digitizingWidgetActionSettings() );
meshEditToolButton->setMenu( meshEditMenu );
mMeshToolBar->addWidget( meshEditToolButton );
QAction *action = mMeshToolBar->addWidget( meshEditToolButton );
action->setObjectName( u"meshEditToolButtonAction"_s );

QToolButton *meshSelectToolButton = new QToolButton();
meshSelectToolButton->setPopupMode( QToolButton::MenuButtonPopup );
Expand All @@ -3924,7 +3927,8 @@ void QgisApp::createToolBars()
}

meshSelectToolButton->setDefaultAction( editMeshMapTool->defaultSelectActions() );
mMeshToolBar->addWidget( meshSelectToolButton );
action = mMeshToolBar->addWidget( meshSelectToolButton );
action->setObjectName( u"meshSelectToolButtonAction"_s );

mMeshToolBar->addAction( ( editMeshMapTool->transformAction() ) );

Expand All @@ -3937,7 +3941,8 @@ void QgisApp::createToolBars()
meshForceByLineMenu->addSeparator();
meshForceByLineMenu->addAction( editMeshMapTool->forceByLineWidgetActionSettings() );
meshForceByLinesToolButton->setMenu( meshForceByLineMenu );
mMeshToolBar->addWidget( meshForceByLinesToolButton );
action = mMeshToolBar->addWidget( meshForceByLinesToolButton );
action->setObjectName( u"meshForceByLinesToolButton"_s );

for ( QAction *mapToolAction : editMeshMapTool->mapToolActions() )
mMapToolGroup->addAction( mapToolAction );
Expand All @@ -3952,7 +3957,8 @@ void QgisApp::createToolBars()
annotationLayerMenu->addAction( mMainAnnotationLayerProperties );
annotationLayerToolButton->setMenu( annotationLayerMenu );
annotationLayerToolButton->setDefaultAction( mActionCreateAnnotationLayer );
mAnnotationsToolBar->insertWidget( mAnnotationsToolBar->actions().at( 0 ), annotationLayerToolButton );
QAction *act = mAnnotationsToolBar->insertWidget( mAnnotationsToolBar->actions().at( 0 ), annotationLayerToolButton );
act->setObjectName( u"annotationLayerToolButtonAction"_s );

// Registered annotation items will be inserted before this separator
mAnnotationsItemInsertBefore = mAnnotationsToolBar->addSeparator();
Expand Down
17 changes: 17 additions & 0 deletions src/app/qgssnappingwidget.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -129,10 +129,14 @@ QgsSnappingWidget::QgsSnappingWidget( QgsProject *project, QgsMapCanvas *canvas,
mAvoidIntersectionsModeButton->setToolTip( tr( "When avoid overlap is enabled, digitized features will be clipped to not overlapped existing ones." ) );
mAvoidIntersectionsModeButton->setPopupMode( QToolButton::InstantPopup );
QMenu *avoidIntersectionsModeMenu = new QMenu( tr( "Set Avoid Overlap Mode" ), this );
avoidIntersectionsModeMenu->setObjectName( u"avoidIntersectionsModeMenu"_s );
mAllowIntersectionsAction = new QAction( QIcon( QgsApplication::getThemeIcon( "/mActionAllowIntersections.svg" ) ), tr( "Allow Overlap" ), avoidIntersectionsModeMenu );
mAllowIntersectionsAction->setObjectName( u"mAllowIntersectionsAction"_s );
mAvoidIntersectionsCurrentLayerAction = new QAction( QIcon( QgsApplication::getThemeIcon( "/mActionAvoidIntersectionsCurrentLayer.svg" ) ), tr( "Avoid Overlap on Active Layer" ), avoidIntersectionsModeMenu );
mAvoidIntersectionsCurrentLayerAction->setToolTip( tr( "Avoid Overlap on Active Layer.\nBeware that this option will be applied on all vertices of the edited geometries, even if outside the current view extent" ) );
mAvoidIntersectionsCurrentLayerAction->setObjectName( u"mAvoidIntersectionsCurrentLayerAction"_s );
mAvoidIntersectionsLayersAction = new QAction( QIcon( QgsApplication::getThemeIcon( "/mActionAvoidIntersectionsLayers.svg" ) ), tr( "Follow Advanced Configuration" ), avoidIntersectionsModeMenu );
mAvoidIntersectionsLayersAction->setObjectName( u"mAvoidIntersectionsLayersAction"_s );
avoidIntersectionsModeMenu->addAction( mAllowIntersectionsAction );
avoidIntersectionsModeMenu->addAction( mAvoidIntersectionsCurrentLayerAction );
avoidIntersectionsModeMenu->addAction( mAvoidIntersectionsLayersAction );
Expand All @@ -150,15 +154,19 @@ QgsSnappingWidget::QgsSnappingWidget( QgsProject *project, QgsMapCanvas *canvas,
mModeButton->setPopupMode( QToolButton::InstantPopup );
QMenu *modeMenu = new QMenu( tr( "Set Snapping Mode" ), this );
mAllLayersAction = new QAction( QIcon( QgsApplication::getThemeIcon( "/mIconSnappingAllLayers.svg" ) ), tr( "All Layers" ), modeMenu );
mAllLayersAction->setObjectName( u"mAllLayersAction"_s );
mActiveLayerAction = new QAction( QIcon( QgsApplication::getThemeIcon( "/mIconSnappingActiveLayer.svg" ) ), tr( "Active Layer" ), modeMenu );
mActiveLayerAction->setObjectName( u"mActiveLayerAction"_s );
mAdvancedModeAction = new QAction( QIcon( QgsApplication::getThemeIcon( "/mIconSnappingAdvanced.svg" ) ), tr( "Advanced Configuration" ), modeMenu );
mAdvancedModeAction->setObjectName( u"mAdvancedModeAction"_s );
modeMenu->addAction( mAllLayersAction );
modeMenu->addAction( mActiveLayerAction );
modeMenu->addAction( mAdvancedModeAction );
if ( mDisplayMode == ToolBar )
{
modeMenu->addSeparator();
QAction *openDialogAction = new QAction( tr( "Open Snapping Options…" ), modeMenu );
openDialogAction->setObjectName( u"openDialogAction"_s );
connect( openDialogAction, &QAction::triggered, QgisApp::instance(), &QgisApp::snappingOptions );
modeMenu->addAction( openDialogAction );
}
Expand All @@ -182,6 +190,7 @@ QgsSnappingWidget::QgsSnappingWidget( QgsProject *project, QgsMapCanvas *canvas,
if ( type == Qgis::SnappingType::NoSnap )
continue;
QAction *action = new QAction( QgsSnappingConfig::snappingTypeToIcon( type ), QgsSnappingConfig::snappingTypeToString( type ), typeMenu );
action->setObjectName( QgsSnappingConfig::snappingTypeToString( type ) );
action->setData( QVariant::fromValue( type ) );
action->setCheckable( true );
typeMenu->addAction( action );
Expand Down Expand Up @@ -256,7 +265,9 @@ QgsSnappingWidget::QgsSnappingWidget( QgsProject *project, QgsMapCanvas *canvas,
// See https://github.com/qgis/QGIS/pull/8266 for some more context
mTracingOffsetSpinBox->setShowClearButton( false );
QMenu *tracingMenu = new QMenu( this );
tracingMenu->setObjectName( u"tracingMenu"_s );
QWidgetAction *widgetAction = new QWidgetAction( tracingMenu );
widgetAction->setObjectName( u"tracingWidgetAction"_s );
QVBoxLayout *tracingWidgetLayout = new QVBoxLayout;
tracingWidgetLayout->addWidget( new QLabel( "Offset" ) );
tracingWidgetLayout->addWidget( mTracingOffsetSpinBox );
Expand All @@ -280,6 +291,7 @@ QgsSnappingWidget::QgsSnappingWidget( QgsProject *project, QgsMapCanvas *canvas,
// hiding widget in a toolbar is not possible, actions are required
tb->addAction( mEnabledAction );
mModeAction = tb->addWidget( mModeButton );
mModeAction->setObjectName( u"mModeAction"_s );

// edit advanced config button
QToolButton *advConfigButton = new QToolButton( this );
Expand All @@ -293,14 +305,19 @@ QgsSnappingWidget::QgsSnappingWidget( QgsProject *project, QgsMapCanvas *canvas,
advConfigButton->setObjectName( u"EditAdvancedConfigurationButton"_s );
advConfigButton->setMenu( advConfigMenu );
mEditAdvancedConfigAction = tb->addWidget( advConfigButton );
mEditAdvancedConfigAction->setObjectName( u"mEditAdvancedConfigAction"_s );

// other buttons / actions
mTypeAction = tb->addWidget( mTypeButton );
mTypeAction->setObjectName( u"mTypeAction"_s );
mToleranceAction = tb->addWidget( mToleranceSpinBox );
mToleranceAction->setObjectName( u"mToleranceAction"_s );
mUnitAction = tb->addWidget( mUnitsComboBox );
mUnitAction->setObjectName( u"mUnitAction"_s );

tb->addAction( mTopologicalEditingAction );
mAvoidIntersectionsModeAction = tb->addWidget( mAvoidIntersectionsModeButton );
mAvoidIntersectionsModeAction->setObjectName( u"mAvoidIntersectionsModeAction"_s );
tb->addAction( mIntersectionSnappingAction );
tb->addAction( mEnableTracingAction );
tb->addAction( mSelfSnappingAction );
Expand Down
1 change: 1 addition & 0 deletions tests/src/app/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ include_directories(

set(TESTS
testqgisapp.cpp
testqgisappwidgetnames.cpp
testqgsappbrowserproviders.cpp
testqgisappclipboard.cpp
testqgisappdockwidgets.cpp
Expand Down
Loading
Loading