Skip to content

Commit d65a6f7

Browse files
committed
Merge pull request #1624 from 3nids/cadtool_single
Advanced digitizing tools (aka CAD tools)
2 parents 2b1b79d + d39a854 commit d65a6f7

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

45 files changed

+2771
-138
lines changed

images/images.qrc

+6
Original file line numberDiff line numberDiff line change
@@ -470,6 +470,12 @@
470470
<file>themes/default/mActionScaleHighlightFeature.svg</file>
471471
<file>themes/default/mActionPanHighlightFeature.svg</file>
472472
<file>flags/sr@latin.png</file>
473+
<file>themes/default/cadtools/construction.png</file>
474+
<file>themes/default/cadtools/delta.png</file>
475+
<file>themes/default/cadtools/cad.png</file>
476+
<file>themes/default/cadtools/lock.png</file>
477+
<file>themes/default/cadtools/parallel.png</file>
478+
<file>themes/default/cadtools/perpendicular.png</file>
473479
</qresource>
474480
<qresource prefix="/images/tips">
475481
<file alias="symbol_levels.png">qgis_tips/symbol_levels.png</file>
1.36 KB
Loading
1.38 KB
Loading
1.1 KB
Loading
1.08 KB
Loading
1.33 KB
Loading
1.49 KB
Loading

python/core/qgsmaptopixel.sip

+1
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ class QgsMapToPixel
6464
QgsPoint toMapCoordinates( QPoint p ) const;
6565

6666
QgsPoint toMapPoint( double x, double y ) const;
67+
6768
/*! Set map units per pixel
6869
* @param mapUnitsPerPixel Map units per pixel
6970
*/

src/app/CMakeLists.txt

+6
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@ SET(QGIS_APP_SRCS
1414
qgsattributetabledialog.cpp
1515
qgsbookmarks.cpp
1616
qgsbrowserdockwidget.cpp
17+
qgsadvanceddigitizingdockwidget.cpp
18+
qgsadvanceddigitizingcanvasitem.cpp
1719
qgsclipboard.cpp
1820
qgsconfigureshortcutsdialog.cpp
1921
qgscustomization.cpp
@@ -43,6 +45,7 @@ SET(QGIS_APP_SRCS
4345
qgslabelinggui.cpp
4446
qgslabelpreview.cpp
4547
qgsloadstylefromdbdialog.cpp
48+
qgsmapmouseevent.cpp
4649
qgssavestyletodbdialog.cpp
4750
qgsguivectorlayertools.cpp
4851

@@ -63,6 +66,7 @@ SET(QGIS_APP_SRCS
6366
qgsmaptoolshowhidelabels.cpp
6467
qgsmaptoolidentifyaction.cpp
6568
qgsmaptoollabel.cpp
69+
qgsmaptooladvanceddigitizing.cpp
6670
qgsmaptoolmeasureangle.cpp
6771
qgsmaptoolmovefeature.cpp
6872
qgsmaptoolmovelabel.cpp
@@ -167,6 +171,7 @@ SET (QGIS_APP_MOC_HDRS
167171
qgsattributetabledialog.h
168172
qgsbookmarks.h
169173
qgsbrowserdockwidget.h
174+
qgsadvanceddigitizingdockwidget.h
170175
qgsclipboard.h
171176
qgsconfigureshortcutsdialog.h
172177
qgscustomization.h
@@ -211,6 +216,7 @@ SET (QGIS_APP_MOC_HDRS
211216
qgsmaptoolpinlabels.h
212217
qgsmaptoolshowhidelabels.h
213218
qgsmaptoolidentifyaction.h
219+
qgsmaptooladvanceddigitizing.h
214220
qgsmaptoolmeasureangle.h
215221
qgsmaptoolmovefeature.h
216222
qgsmaptoolmovelabel.h

src/app/qgisapp.cpp

+18
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,7 @@
105105
#include "qgsattributetabledialog.h"
106106
#include "qgsbookmarks.h"
107107
#include "qgsbrowserdockwidget.h"
108+
#include "qgsadvanceddigitizingdockwidget.h"
108109
#include "qgsclipboard.h"
109110
#include "qgscomposer.h"
110111
#include "qgscomposermanager.h"
@@ -584,6 +585,10 @@ QgisApp::QgisApp( QSplashScreen *splash, bool restorePlugins, QWidget * parent,
584585
mUndoWidget = new QgsUndoWidget( NULL, mMapCanvas );
585586
mUndoWidget->setObjectName( "Undo" );
586587

588+
// Advanced Digitizing dock
589+
mAdvancedDigitizingDockWidget = new QgsAdvancedDigitizingDockWidget( mMapCanvas, this );
590+
mAdvancedDigitizingDockWidget->setObjectName( "Cad" );
591+
587592
createActions();
588593
createActionGroups();
589594
createMenus();
@@ -620,6 +625,9 @@ QgisApp::QgisApp( QSplashScreen *splash, bool restorePlugins, QWidget * parent,
620625
addDockWidget( Qt::LeftDockWidgetArea, mBrowserWidget2 );
621626
mBrowserWidget2->hide();
622627

628+
addDockWidget( Qt::LeftDockWidgetArea, mAdvancedDigitizingDockWidget );
629+
mAdvancedDigitizingDockWidget->hide();
630+
623631
// create the GPS tool on starting QGIS - this is like the browser
624632
mpGpsWidget = new QgsGPSInformationWidget( mMapCanvas );
625633
//create the dock widget
@@ -1632,6 +1640,11 @@ void QgisApp::createToolBars()
16321640
actionWhatsThis->setIcon( QgsApplication::getThemeIcon( "/mActionWhatsThis.svg" ) );
16331641
mHelpToolBar->addAction( actionWhatsThis );
16341642

1643+
// Cad toolbar
1644+
QAction* cadAction = mAdvancedDigitizingDockWidget->toggleViewAction();
1645+
cadAction->setText( tr( "Show CAD tools" ) );
1646+
cadAction->setIcon( QgsApplication::getThemeIcon( "/cadtools/cad.png" ) );
1647+
mAdvancedDigitizeToolBar->insertAction( mActionUndo, cadAction );
16351648
}
16361649

16371650
void QgisApp::createStatusBar()
@@ -4844,6 +4857,11 @@ void QgisApp::labeling()
48444857
activateDeactivateLayerRelatedActions( vlayer );
48454858
}
48464859

4860+
void QgisApp::setCadDockVisible( bool visible )
4861+
{
4862+
mAdvancedDigitizingDockWidget->setVisible( visible );
4863+
}
4864+
48474865
void QgisApp::fieldCalculator()
48484866
{
48494867
QgsVectorLayer *myLayer = qobject_cast<QgsVectorLayer *>( activeLayer() );

src/app/qgisapp.h

+10
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ class QgsMapCanvas;
5454
class QgsMapLayer;
5555
class QgsMapTip;
5656
class QgsMapTool;
57+
class QgsMapToolAdvancedDigitizing;
5758
class QgsPoint;
5859
class QgsProviderRegistry;
5960
class QgsPythonUtils;
@@ -68,6 +69,7 @@ class QNetworkProxy;
6869
class QAuthenticator;
6970

7071
class QgsBrowserDockWidget;
72+
class QgsAdvancedDigitizingDockWidget;
7173
class QgsSnappingDialog;
7274
class QgsGPSInformationWidget;
7375

@@ -420,6 +422,9 @@ class APP_EXPORT QgisApp : public QMainWindow, private Ui::MainWindow
420422
QToolBar *databaseToolBar() { return mDatabaseToolBar; }
421423
QToolBar *webToolBar() { return mWebToolBar; }
422424

425+
//! return CAD dock widget
426+
QgsAdvancedDigitizingDockWidget* cadDockWidget() { return mAdvancedDigitizingDockWidget; }
427+
423428
//! show layer properties
424429
void showLayerProperties( QgsMapLayer *ml );
425430

@@ -1090,6 +1095,9 @@ class APP_EXPORT QgisApp : public QMainWindow, private Ui::MainWindow
10901095
//! shows label settings dialog (for labeling-ng)
10911096
void labeling();
10921097

1098+
//! set the CAD dock widget visible
1099+
void setCadDockVisible( bool visible );
1100+
10931101
/** Check if deprecated labels are used in project, and flag projects that use them */
10941102
void checkForDeprecatedLabelsInProject();
10951103

@@ -1543,6 +1551,8 @@ class APP_EXPORT QgisApp : public QMainWindow, private Ui::MainWindow
15431551
QgsBrowserDockWidget* mBrowserWidget;
15441552
QgsBrowserDockWidget* mBrowserWidget2;
15451553

1554+
QgsAdvancedDigitizingDockWidget* mAdvancedDigitizingDockWidget;
1555+
15461556
QgsSnappingDialog* mSnappingDialog;
15471557

15481558
QgsPluginManager* mPluginManager;

src/app/qgisappinterface.cpp

+1
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
#include "qgscomposerview.h"
3333
#include "qgsmaplayer.h"
3434
#include "qgsmaplayerregistry.h"
35+
#include "qgsmaptooladvanceddigitizing.h"
3536
#include "qgsmapcanvas.h"
3637
#include "qgsproject.h"
3738
#include "qgslayertreeview.h"

0 commit comments

Comments
 (0)