Skip to content
Permalink
Browse files
advanced digitizing tools
this integrates advanced digitizing tools aka CAD tools in QGIS application and basically a port of CADinput plugin
* new class QgsMapToolAdvancedDigitizing shall be subsclassed if adv. digit. tools could be used in a map tool
* QgsAdvancedDigitizingDockWidget handles the interaction with the user and also perform the constraints (filters events)
* QgsAdvancedDigitizingCanvasItem paints construction lines on the canvas
  • Loading branch information
3nids committed Dec 3, 2014
1 parent f8f7842 commit d39a854
Show file tree
Hide file tree
Showing 45 changed files with 2,771 additions and 138 deletions.
@@ -469,6 +469,12 @@
<file>themes/default/mActionScaleHighlightFeature.svg</file>
<file>themes/default/mActionPanHighlightFeature.svg</file>
<file>flags/sr@latin.png</file>
<file>themes/default/cadtools/construction.png</file>
<file>themes/default/cadtools/delta.png</file>
<file>themes/default/cadtools/cad.png</file>
<file>themes/default/cadtools/lock.png</file>
<file>themes/default/cadtools/parallel.png</file>
<file>themes/default/cadtools/perpendicular.png</file>
</qresource>
<qresource prefix="/images/tips">
<file alias="symbol_levels.png">qgis_tips/symbol_levels.png</file>
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
@@ -64,6 +64,7 @@ class QgsMapToPixel
QgsPoint toMapCoordinates( QPoint p ) const;

QgsPoint toMapPoint( double x, double y ) const;

/*! Set map units per pixel
* @param mapUnitsPerPixel Map units per pixel
*/
@@ -14,6 +14,8 @@ SET(QGIS_APP_SRCS
qgsattributetabledialog.cpp
qgsbookmarks.cpp
qgsbrowserdockwidget.cpp
qgsadvanceddigitizingdockwidget.cpp
qgsadvanceddigitizingcanvasitem.cpp
qgsclipboard.cpp
qgsconfigureshortcutsdialog.cpp
qgscustomization.cpp
@@ -43,6 +45,7 @@ SET(QGIS_APP_SRCS
qgslabelinggui.cpp
qgslabelpreview.cpp
qgsloadstylefromdbdialog.cpp
qgsmapmouseevent.cpp
qgssavestyletodbdialog.cpp
qgsguivectorlayertools.cpp

@@ -63,6 +66,7 @@ SET(QGIS_APP_SRCS
qgsmaptoolshowhidelabels.cpp
qgsmaptoolidentifyaction.cpp
qgsmaptoollabel.cpp
qgsmaptooladvanceddigitizing.cpp
qgsmaptoolmeasureangle.cpp
qgsmaptoolmovefeature.cpp
qgsmaptoolmovelabel.cpp
@@ -167,6 +171,7 @@ SET (QGIS_APP_MOC_HDRS
qgsattributetabledialog.h
qgsbookmarks.h
qgsbrowserdockwidget.h
qgsadvanceddigitizingdockwidget.h
qgsclipboard.h
qgsconfigureshortcutsdialog.h
qgscustomization.h
@@ -211,6 +216,7 @@ SET (QGIS_APP_MOC_HDRS
qgsmaptoolpinlabels.h
qgsmaptoolshowhidelabels.h
qgsmaptoolidentifyaction.h
qgsmaptooladvanceddigitizing.h
qgsmaptoolmeasureangle.h
qgsmaptoolmovefeature.h
qgsmaptoolmovelabel.h
@@ -104,6 +104,7 @@
#include "qgsattributetabledialog.h"
#include "qgsbookmarks.h"
#include "qgsbrowserdockwidget.h"
#include "qgsadvanceddigitizingdockwidget.h"
#include "qgsclipboard.h"
#include "qgscomposer.h"
#include "qgscomposermanager.h"
@@ -582,6 +583,10 @@ QgisApp::QgisApp( QSplashScreen *splash, bool restorePlugins, QWidget * parent,
mUndoWidget = new QgsUndoWidget( NULL, mMapCanvas );
mUndoWidget->setObjectName( "Undo" );

// Advanced Digitizing dock
mAdvancedDigitizingDockWidget = new QgsAdvancedDigitizingDockWidget( mMapCanvas, this );
mAdvancedDigitizingDockWidget->setObjectName( "Cad" );

createActions();
createActionGroups();
createMenus();
@@ -618,6 +623,9 @@ QgisApp::QgisApp( QSplashScreen *splash, bool restorePlugins, QWidget * parent,
addDockWidget( Qt::LeftDockWidgetArea, mBrowserWidget2 );
mBrowserWidget2->hide();

addDockWidget( Qt::LeftDockWidgetArea, mAdvancedDigitizingDockWidget );
mAdvancedDigitizingDockWidget->hide();

// create the GPS tool on starting QGIS - this is like the browser
mpGpsWidget = new QgsGPSInformationWidget( mMapCanvas );
//create the dock widget
@@ -1627,6 +1635,11 @@ void QgisApp::createToolBars()
actionWhatsThis->setIcon( QgsApplication::getThemeIcon( "/mActionWhatsThis.svg" ) );
mHelpToolBar->addAction( actionWhatsThis );

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

void QgisApp::createStatusBar()
@@ -4789,6 +4802,11 @@ void QgisApp::labeling()
activateDeactivateLayerRelatedActions( vlayer );
}

void QgisApp::setCadDockVisible( bool visible )
{
mAdvancedDigitizingDockWidget->setVisible( visible );
}

void QgisApp::fieldCalculator()
{
QgsVectorLayer *myLayer = qobject_cast<QgsVectorLayer *>( activeLayer() );
@@ -53,6 +53,7 @@ class QgsMapCanvas;
class QgsMapLayer;
class QgsMapTip;
class QgsMapTool;
class QgsMapToolAdvancedDigitizing;
class QgsPoint;
class QgsProviderRegistry;
class QgsPythonUtils;
@@ -67,6 +68,7 @@ class QNetworkProxy;
class QAuthenticator;

class QgsBrowserDockWidget;
class QgsAdvancedDigitizingDockWidget;
class QgsSnappingDialog;
class QgsGPSInformationWidget;

@@ -419,6 +421,9 @@ class APP_EXPORT QgisApp : public QMainWindow, private Ui::MainWindow
QToolBar *databaseToolBar() { return mDatabaseToolBar; }
QToolBar *webToolBar() { return mWebToolBar; }

//! return CAD dock widget
QgsAdvancedDigitizingDockWidget* cadDockWidget() { return mAdvancedDigitizingDockWidget; }

//! show layer properties
void showLayerProperties( QgsMapLayer *ml );

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

//! set the CAD dock widget visible
void setCadDockVisible( bool visible );

/** Check if deprecated labels are used in project, and flag projects that use them */
void checkForDeprecatedLabelsInProject();

@@ -1530,6 +1538,8 @@ class APP_EXPORT QgisApp : public QMainWindow, private Ui::MainWindow
QgsBrowserDockWidget* mBrowserWidget;
QgsBrowserDockWidget* mBrowserWidget2;

QgsAdvancedDigitizingDockWidget* mAdvancedDigitizingDockWidget;

QgsSnappingDialog* mSnappingDialog;

QgsPluginManager* mPluginManager;
@@ -32,6 +32,7 @@
#include "qgscomposerview.h"
#include "qgsmaplayer.h"
#include "qgsmaplayerregistry.h"
#include "qgsmaptooladvanceddigitizing.h"
#include "qgsmapcanvas.h"
#include "qgsproject.h"
#include "qgslayertreeview.h"

0 comments on commit d39a854

Please sign in to comment.