Skip to content

Commit

Permalink
add quality warning
Browse files Browse the repository at this point in the history
  • Loading branch information
b-lack committed Sep 25, 2023
1 parent a707fdf commit 05bed6e
Show file tree
Hide file tree
Showing 19 changed files with 393 additions and 67 deletions.
10 changes: 9 additions & 1 deletion gnavs/gnavs.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,8 @@
from qgis.PyQt.QtGui import QIcon
from qgis.PyQt.QtWidgets import QAction

from qgis.core import QgsMessageLog

# Initialize Qt resources from file resources.py
#from .resources import *
from . import resources
Expand Down Expand Up @@ -53,10 +55,16 @@ def __init__(self, iface):

# initialize locale
locale = QSettings().value('locale/userLocale')[0:2]

# due to error message when installation from QGIS-Repo
loc = locale
if loc != 'de':
loc = 'en'

locale_path = os.path.join(
self.plugin_dir,
'i18n',
'gnavs_{}.qm'.format(locale))
'gnavs_{}.qm'.format(loc))

if os.path.exists(locale_path):
self.translator = QTranslator()
Expand Down
4 changes: 4 additions & 0 deletions gnavs/gui/gnavs_dockwidget.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@
from .setup.settings import Settings
from ..utils.utils import Utils
from .recording.toggle_buttons import ToggleButtons
from qgis.core import QgsMessageLog

FORM_CLASS, _ = uic.loadUiType(os.path.join(os.path.dirname(__file__), 'gnavs_dockwidget_base.ui'))

Expand Down Expand Up @@ -74,6 +75,9 @@ def __init__(self, interface, parent=None):
self.toHome()
self.toggleButtonsChanged('navigation')

filePath = Utils.getSettingsDirectory() # Create the settings directory if it does not exist
QgsMessageLog.logMessage(filePath, 'gnavs')

def addToMap(self):
"""Add the recorded points to the map"""

Expand Down
48 changes: 26 additions & 22 deletions gnavs/gui/gnavs_dockwidget_base.ui
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@
<number>0</number>
</property>
<item row="0" column="0">
<layout class="QVBoxLayout" name="verticalLayout">
<layout class="QVBoxLayout" name="_2">
<property name="spacing">
<number>0</number>
</property>
Expand Down Expand Up @@ -98,7 +98,7 @@ border-bottom: 0px solid #888;</string>
<x>0</x>
<y>0</y>
<width>654</width>
<height>514</height>
<height>518</height>
</rect>
</property>
<layout class="QVBoxLayout">
Expand Down Expand Up @@ -153,21 +153,23 @@ border-bottom: 0px solid #888;</string>
<number>5</number>
</property>
<item>
<widget class="QPushButton" name="lfbAddToMapBtn">
<property name="enabled">
<bool>false</bool>
</property>
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="cursor">
<cursorShape>PointingHandCursor</cursorShape>
</property>
<property name="styleSheet">
<string notr="true">QPushButton{
<layout class="QVBoxLayout" name="lfbAddToMapLayout">
<item>
<widget class="QPushButton" name="lfbAddToMapBtn">
<property name="enabled">
<bool>false</bool>
</property>
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="cursor">
<cursorShape>PointingHandCursor</cursorShape>
</property>
<property name="styleSheet">
<string notr="true">QPushButton{
border: 2px solid #888;
color: #888;
padding: 5px;
Expand All @@ -181,11 +183,13 @@ QPushButton:enabled{
background-color: green;
color: #fff;
}</string>
</property>
<property name="text">
<string>ADD TO MAP</string>
</property>
</widget>
</property>
<property name="text">
<string>ADD TO MAP</string>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
Expand Down
2 changes: 1 addition & 1 deletion gnavs/gui/measurement/aggregation.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ def emitData(self):
self.getTextFields()
self.lfbAddToMapBtn.setEnabled(False)

Utils.addPointToLayer('GNAVS - Aggregated', self.aggregatedValues, self.gpsInfos)
Utils.addPointToLayer('GNAVS-Aggregated', self.aggregatedValues, self.gpsInfos)
self.reset()

def updateAggregatedValues(self, gpsInfos):
Expand Down
69 changes: 69 additions & 0 deletions gnavs/gui/measurement/precision.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@

import os
import json
import statistics
import time


from qgis.PyQt import QtWidgets, uic
from qgis.PyQt.QtWidgets import QDialog
from PyQt5 import QtCore

from qgis.core import QgsMessageLog

from ..recording.indicator import Indicator
from ...utils.utils import Utils


UI_CLASS, _ = uic.loadUiType(os.path.join(os.path.dirname(__file__), 'precision.ui'))

class PrecisionNote(QtWidgets.QWidget, UI_CLASS):
"""
PrecisionNote class.
Shows a dialog with a note about the precision of the measurement.
"""

addToMap = QtCore.pyqtSignal(object, list)

def __init__(self, interface):
"""Constructor."""

_translate = QtCore.QCoreApplication.translate

QDialog.__init__(self, interface.mainWindow())
self.setupUi(self)

self.indicator = Indicator(interface, 25, 25)
self.lfbPrecition.insertWidget(0, self.indicator)

self.lfbShowPrecitionBad.hide()
self.lfbShowPrecitionGood.hide()


self.lfbShowPrecitionBad.setText(_translate("Form", "qualityNoteBad"))
#self.lfbShowPrecitionGoodsetText(self._translate("Form", "qualityNoteGood"))

self.hide()

def hideGroup(self):
"""Hides the group"""
QgsMessageLog.logMessage('Hide precision note', 'gnavs')

self.hide()

def updateIndicator(self, gpsInfo):
"""Updates the color indicator"""

self.indicator.setColor(gpsInfo)

def update(self, gpsInfos):
self.show()
"""Updates the note indicator"""
showNote = self.indicator.getAggregatedNote(gpsInfos)

if showNote:
self.lfbShowPrecitionBad.show()
#self.lfbShowPrecitionGood.hide()
else:
self.lfbShowPrecitionBad.hide()
#self.lfbShowPrecitionGood.show()
109 changes: 109 additions & 0 deletions gnavs/gui/measurement/precision.ui
Original file line number Diff line number Diff line change
@@ -0,0 +1,109 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>Form</class>
<widget class="QWidget" name="Form">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>850</width>
<height>206</height>
</rect>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<layout class="QGridLayout" name="gridLayout">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item row="0" column="0">
<widget class="QGroupBox" name="groupBox">
<property name="title">
<string>Precision</string>
</property>
<layout class="QGridLayout" name="gridLayout_2">
<property name="leftMargin">
<number>4</number>
</property>
<property name="topMargin">
<number>20</number>
</property>
<property name="rightMargin">
<number>4</number>
</property>
<property name="bottomMargin">
<number>4</number>
</property>
<item row="0" column="0">
<layout class="QHBoxLayout" name="lfbPrecition">
<property name="topMargin">
<number>0</number>
</property>
<item>
<widget class="QLabel" name="lfbShowPrecitionBad">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="styleSheet">
<string notr="true">color:#f00;</string>
</property>
<property name="text">
<string>Die Qualitätsparameter sind so schlecht, dass auf eine Messung verzichtet oder durch die Einmessung von mindestens drei Hilfspunkten mit Azimut und Distanz für eine anschließende Fehlerberrechnung und -ausgleichsrechnung erfolgen sollte.</string>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="lfbShowPrecitionGood">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Qualität ist ausreichend!</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Expanding</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
<resources/>
<connections/>
</ui>
53 changes: 40 additions & 13 deletions gnavs/gui/navigate/selection.py
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ def updateToC(self):
self.layerSelectionChanged()


def updateCoordinates(self, gpsInfo):
def updateCoordinates(self, gpsInfo, trackingState = 'navigation'):
"""Update the GPS coordinates and list of targets selected by the user"""

if gpsInfo is None or gpsInfo.latitude is None or gpsInfo.longitude is None:
Expand All @@ -73,7 +73,10 @@ def updateCoordinates(self, gpsInfo):
Utils.clearLayer('lfb-tmp-position', 'point')
Utils.drawPosition('lfb-tmp-position', position)

self.updateSelectionTargets()
if trackingState == 'navigation':
self.updateSelectionTargets()
else:
Utils.clearLayer('lfb-tmp-distance', 'linestring')

def createTargetList(self):
"""Create a list of targets selected by the user"""
Expand Down Expand Up @@ -117,22 +120,46 @@ def removeAllTargets(self):
def updateSelectionTargets(self):
"""Update the list of targets selected by the user"""

self.removeAllTargets()
#self.removeAllTargets()
Utils.clearLayer('lfb-tmp-distance', 'linestring')

if self.targets is not None and len(self.targets) > 0:
for targetElement in self.targets:
newTargets = self.targets
for i in reversed(range(self.lfbSelectedTargets.count())): # existing Targets
exists = None
target = self.lfbSelectedTargets.itemAt(i).widget()

for targetElement in newTargets: # new Targets
if target.getId() == targetElement['id']:
exists = target
target.updateValues(targetElement)
newTargets.remove(targetElement)
Utils.drawDistance('lfb-tmp-distance',targetElement['startPoint'], targetElement['endPoint'])
break

if exists is None:
# remove it from the layout list
self.lfbSelectedTargets.removeWidget(target)
# remove it from the gui
target.setParent(None)
else:
Utils.drawDistance('lfb-tmp-distance',targetElement['startPoint'], targetElement['endPoint'])


if newTargets is not None and len(newTargets) > 0:

for targetElement in newTargets:

target = Target(self.interface, targetElement, self.onlyOne)
self.lfbSelectedTargets.addWidget(target)
Utils.drawDistance('lfb-tmp-distance',targetElement['startPoint'], targetElement['endPoint'])
else:
for element in self.selectedFeatures:
target = Target(self.interface, {
'id': element['feature'].id(),
'feature': element['feature'],
'layer': element['layer'],
}, self.onlyOne)
self.lfbSelectedTargets.addWidget(target)
#else:
# for element in self.selectedFeatures:
# target = Target(self.interface, {
# 'id': element['feature'].id(),
# 'feature': element['feature'],
# 'layer': element['layer'],
# }, self.onlyOne)
# self.lfbSelectedTargets.addWidget(target)


def updateSelectionLabel(self):
Expand Down
Loading

0 comments on commit 05bed6e

Please sign in to comment.