Skip to content
Open
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
53 changes: 31 additions & 22 deletions redLayerModule.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@

# PyQGIS
from qgis.core import (
Qgis,
QgsFeature,
QgsField,
QgsGeometry,
Expand All @@ -43,7 +44,7 @@
QgsCoordinateTransform,
QgsCoordinateReferenceSystem
)
from qgis.gui import QgsColorDialog, QgsMapTool, QgsRubberBand
from qgis.gui import QgsColorDialog, QgsMapTool, QgsMessageBar, QgsRubberBand
from qgis.PyQt.QtCore import (
QCoreApplication,
QFile,
Expand Down Expand Up @@ -110,7 +111,7 @@ def __init__(self, iface):
def log(
message: str,
application: str = "Red Layer",
log_level: int = 0,
log_level: Qgis.MessageLevel = Qgis.MessageLevel.Info,
push: bool = False,
):
"""Send messages to QGIS messages windows and to the user as a message bar. \
Expand All @@ -122,19 +123,19 @@ def log(
:type application: str, optional
:param log_level: message level. Possible values: 0 (info), 1 (warning), \
2 (critical), 3 (success), 4 (none - grey). Defaults to 0 (info)
:type log_level: int, optional
:type log_level: Qgis.MessageLevel, optional
:param push: also display the message in the QGIS message bar in addition to the log, defaults to False
:type push: bool, optional

:Example:

. code-block:: python

self.log(message="Plugin loaded - INFO", log_level=0, push=1)
self.log(message="Plugin loaded - WARNING", log_level=1, push=1)
self.log(message="Plugin loaded - ERROR", log_level=2, push=1)
self.log(message="Plugin loaded - SUCCESS", log_level=3, push=1)
self.log(message="Plugin loaded - TEST", log_level=4, push=1)
self.log(message="Plugin loaded - INFO", log_level=Qgis.MessageLevel.Info, push=1)
self.log(message="Plugin loaded - WARNING", log_level=Qgis.MessageLevel.Warning, push=1)
self.log(message="Plugin loaded - ERROR", log_level=Qgis.MessageLevel.Critical, push=1)
self.log(message="Plugin loaded - SUCCESS", log_level=Qgis.MessageLevel.Success, push=1)
self.log(message="Plugin loaded - TEST", push=1)
"""
# send it to QGIS messages panel
QgsMessageLog.logMessage(
Expand All @@ -143,9 +144,17 @@ def log(

# optionally, display message on QGIS Message bar (above the map canvas)
if push:
iface.messageBar().pushMessage(
title=application, text=message, level=log_level, duration=(log_level+1)*3
)
message_bar: QgsMessageBar = iface.messageBar()
if log_level is Qgis.MessageLevel.Info:
message_bar.pushInfo(title=application, message=message)
elif log_level is Qgis.MessageLevel.Warning:
message_bar.pushWarning(title=application, message=message)
elif log_level is Qgis.MessageLevel.Critical:
message_bar.pushCritical(title=application, message=message)
elif log_level is Qgis.MessageLevel.Success:
message_bar.pushSuccess(title=application, message=message)
else:
message_bar.pushMessage(title=application, text=message, level=Qgis.MessageLevel.NoLevel)

# noinspection PyMethodMayBeStatic
def tr(self, message):
Expand Down Expand Up @@ -430,7 +439,7 @@ def removeSketchesAction(self):
self.iface.mapCanvas().scene().removeItem(sketch[3])
del(sketch[3])
except Exception as err:
self.log(message=self.tr("Remove sketches failed."), log_level=1)
self.log(message=self.tr("Remove sketches failed."), log_level=Qgis.MessageLevel.Warning)
logger.error(err)
self.removeAllAnnotations()
self.geoSketches = []
Expand Down Expand Up @@ -539,7 +548,7 @@ def canvasMoveEvent(self, event):
try:
self.iface.mapCanvas().scene().removeItem(sketch[3])
except Exception as err:
self.log(message=self.tr("Erase sketch failed."), log_level=1)
self.log(message=self.tr("Erase sketch failed."), log_level=Qgis.MessageLevel.Warning)
logger.error(err)

def canvasReleaseEvent(self, event):
Expand Down Expand Up @@ -582,15 +591,15 @@ def notSavedProjectAction(self):
try:
QgsProject.instance().legendLayersAdded.disconnect(self.notSavedProjectAction)
except Exception as err:
self.log(message=self.tr("Remove unsaved action failed."), log_level=1)
self.log(message=self.tr("Remove unsaved action failed."), log_level=Qgis.MessageLevel.Warning)
logger.error(err)

def newProjectCreatedAction(self):
# remove current sketches
try:
QgsProject.instance().legendLayersAdded.connect(self.notSavedProjectAction)
except Exception as err:
self.log(message=self.tr("Remove current sketches failed."), log_level=1)
self.log(message=self.tr("Remove current sketches failed."), log_level=Qgis.MessageLevel.Warning)
logger.error(err)
self.removeSketchesAction()
self.sketchEnabled(None)
Expand All @@ -600,7 +609,7 @@ def projectReadAction(self):
try:
QgsProject.instance().layerLoaded.disconnect(self.notSavedProjectAction)
except Exception as err:
self.log(message=self.tr("Remove current sketches failed."), log_level=1)
self.log(message=self.tr("Remove current sketches failed."), log_level=Qgis.MessageLevel.Warning)
logger.error(err)

try:
Expand All @@ -614,7 +623,7 @@ def projectReadAction(self):
self.loadSketches()
self.sketchEnabled(True)
except Exception as err:
self.log(message=self.tr("Error connecting to project signals."), log_level=1)
self.log(message=self.tr("Error connecting to project signals."), log_level=Qgis.MessageLevel.Warning)
logger.error("Error connecting to project signals: {}".format(err))

def beforeSaveProjectAction(self, domDoc):
Expand Down Expand Up @@ -666,10 +675,10 @@ def saveSketches(self, userFile=None):
out_sketch_path = Path(str(out_sketch_path) + ".sketch")
self.log(
message=self.tr("Saving sketches to {}".format(out_sketch_path.resolve())),
log_level=2
log_level=Qgis.MessageLevel.Critical,
)
else:
self.log(message=self.tr("No file selected"), log_level=0)
self.log(message=self.tr("No file selected"), log_level=Qgis.MessageLevel.Info)
return
else:
out_sketch_path = self.sketchFileInfo.absoluteFilePath()
Expand All @@ -682,7 +691,7 @@ def saveSketches(self, userFile=None):
try:
note = sketch[3].annotation().document().toPlainText().replace("\n", "%%N%%")
except Exception as err:
self.log(message=self.tr("Error connecting to project signals."), log_level=1)
self.log(message=self.tr("Error connecting to project signals."), log_level=Qgis.MessageLevel.Warning)
logger.error(err)
note = ""
f.write(sketch[0]+'|'+sketch[1]+'|'+sketch[2].asGeometry().asWkt() + "|" + note + "|"+str(sketch[5])+'\n')
Expand All @@ -700,7 +709,7 @@ def removeAllAnnotations(self):
self.iface.mapCanvas().scene().removeItem(item)
del item
except Exception as err:
self.log(message=self.tr("Remove all annotations failed."), log_level=1)
self.log(message=self.tr("Remove all annotations failed."), log_level=Qgis.MessageLevel.Warning)
logger.error(err)

def recoverAllAnnotations(self):
Expand Down Expand Up @@ -765,7 +774,7 @@ def toMemoryLayerAction(self):
try:
polyGestures[gestureId].append(sketch[:-1])
except Exception as err:
self.log(message=self.tr("Adding sketch to memory layer failed."), log_level=1)
self.log(message=self.tr("Adding sketch to memory layer failed."), log_level=Qgis.MessageLevel.Warning)
logger.error(err)
polyGestures[gestureId] = [sketch[:-1]]
lastPoint = sketch[2].asGeometry().vertexAt(1)
Expand Down