Commit 91e6e145 authored by Benjamin Jakimow's avatar Benjamin Jakimow
Browse files

WIP refactoring

Merge branch 'develop' of bitbucket.org:jakimowb/eo-time-series-viewer into develop

# Conflicts:
#	eotimeseriesviewer/mapvisualization.py
#	tests/test_main.py
parents bbf7db00 af4b7ccf
Pipeline #12983 failed
......@@ -5,7 +5,9 @@ from qgis.core import QgsMapLayer, QgsRasterLayer, QgsVectorLayer, QgsField, Qgs
QgsRendererCategory, QgsCategorizedSymbolRenderer, QgsProject, QgsMapLayerStore, QgsSymbol
from qgis.gui import QgsDockWidget, QgsSpinBox, QgsDoubleSpinBox, \
QgsEditorConfigWidget, QgsEditorWidgetFactory, QgsEditorWidgetWrapper, \
QgsGui, QgsEditorWidgetRegistry, QgsDateTimeEdit, QgsDateEdit, QgsTimeEdit
QgsGui, QgsEditorWidgetRegistry, \
QgsDateTimeEdit, QgsDateEdit, QgsTimeEdit
from eotimeseriesviewer.externals.qps.layerproperties import *
from eotimeseriesviewer.timeseries import TimeSeriesDate, TimeSeriesSource
......
......@@ -53,6 +53,7 @@ import qgis.utils
from eotimeseriesviewer import LOG_MESSAGE_TAG
from eotimeseriesviewer.utils import *
from eotimeseriesviewer.timeseries import *
from eotimeseriesviewer.settings import Keys as SettingKeys
from eotimeseriesviewer.mapcanvas import MapCanvas
from eotimeseriesviewer.profilevisualization import ProfileViewDock
from eotimeseriesviewer.temporalprofiles import TemporalProfileLayer
......@@ -204,6 +205,8 @@ class EOTimeSeriesViewerUI(QMainWindow):
self.dockTimeSeries.raise_()
def addDockWidget(self, area: Qt.DockWidgetArea, dock: QDockWidget) -> QDockWidget:
"""
shortcut to add a created dock and return it
......@@ -678,6 +681,9 @@ class EOTimeSeriesViewer(QgisInterface, QObject):
QgsProject.instance().writeProject.connect(self.onWriteProject)
QgsProject.instance().readProject.connect(self.onReadProject)
if eotsvSettings.value(SettingKeys.StartupRestoreProjectSettings, False):
self.onReloadProject()
def onWriteProject(self, dom: QDomDocument):
node = dom.createElement('EOTSV')
......@@ -711,7 +717,11 @@ class EOTimeSeriesViewer(QgisInterface, QObject):
archive.clearProjectFile()
def onReadProject(self, doc: QDomDocument) -> bool:
"""
Reads images and visualization settings from a QgsProject QDomDocument
:param doc: QDomDocument
:return: bool
"""
if not isinstance(doc, QDomDocument):
return False
......
......@@ -525,6 +525,9 @@ class MapCanvas(QgsMapCanvas):
self.mMapView = mapView
self.mInfoItem.setTextFormat(mapView.mapTextFormat())
self.addToRefreshPipeLine(mapView.mapBackgroundColor())
self.setCrosshairStyle(mapView.crosshairStyle())
#self.setCrosshairVisibility(mapView.crosshairStyle())
# self.addToRefreshPipeLine(MapCanvas.Command.UpdateMapItems)
def setTSD(self, tsd: TimeSeriesDate):
......@@ -820,14 +823,17 @@ class MapCanvas(QgsMapCanvas):
self.mCrosshairItem.setCrosshairStyle(crosshairStyle)
if emitSignal:
self.sigCrosshairStyleChanged.emit(self.mCrosshairItem.crosshairStyle())
s = ""
#self.sigCrosshairStyleChanged.emit(self.mCrosshairItem.crosshairStyle())
else:
s = ""
def crosshairStyle(self) -> CrosshairStyle:
"""
Returns the style of the Crosshair.
:return: CrosshairStyle
"""
return self.mCrosshairItem.crosshairStyle
return self.mCrosshairItem.crosshairStyle()
def setCrosshairPosition(self, spatialPoint: SpatialPoint):
"""
......@@ -839,6 +845,10 @@ class MapCanvas(QgsMapCanvas):
point = spatialPoint.toCrs(self.mapSettings().destinationCrs())
if self.mCrosshairItem.mPosition != point:
if self.mCrosshairItem.visibility() == False:
s = ""
else:
s = ""
self.mCrosshairItem.setPosition(point)
self.sigCrosshairPositionChanged.emit(point)
......@@ -848,7 +858,7 @@ class MapCanvas(QgsMapCanvas):
def setCrosshairVisibility(self, b: bool, emitSignal=True):
"""
Sets the Crosshair visbility
Sets the Crosshair visibility
:param b: bool
"""
if b and self.mCrosshairItem.mPosition is None:
......@@ -1162,7 +1172,9 @@ class MapCanvas(QgsMapCanvas):
ts = eotsv.timeSeries()
action = menu.addAction('Focus on Spatial Extent')
action = menu.addAction('Update date visibility')
action.setToolTip('Updates the visibility of observation dates and source images according its '
'presence of unmasked pixels for this spatial extent')
action.triggered.connect(lambda *args,
ext=self.spatialExtent():
ts.focusVisibilityToExtent(ext=ext))
......@@ -1191,21 +1203,23 @@ class MapCanvas(QgsMapCanvas):
layers = []
for l in mapLayers:
if isinstance(l, SensorProxyLayer):
lyr = QgsRasterLayer(l.source(), l.name(), l.dataProvider().name())
lyr = QgsRasterLayer(l.source(), os.path.basename(l.source()), l.dataProvider().name())
r = l.renderer().clone()
r.setInput(lyr.dataProvider())
lyr.setRenderer(r)
tprop: QgsRasterLayerTemporalProperties = lyr.temporalProperties()
tprop.setMode(QgsRasterLayerTemporalProperties.ModeFixedTemporalRange)
tprop.setIsActive(True)
if isinstance(l.mTSS, TimeSeriesSource):
dtg = QDateTime(l.mTSS.date().astype(object))
dtg = l.mTSS.date().astype(object)
else:
dtg = QDateTime(self.tsd().date().astype(object))
tprop.setFixedTemporalRange(QgsDateTimeRange(dtg, dtg))
layers.append(l)
dtg = self.tsd().date().astype(object)
dt1 = QDateTime(dtg, QTime(0, 0))
dt2 = QDateTime(dtg, QTime(23, 59, 59))
range = QgsDateTimeRange(dt1, dt2)
tprop.setFixedTemporalRange(range)
layers.append(lyr)
else:
layers.append(l)
if len(layers) > 0 and isinstance(qgis.utils.iface, QgisInterface):
......
......@@ -20,8 +20,12 @@
***************************************************************************/
"""
import enum
import os
import sys
import re
import fnmatch
import collections
import copy
import traceback
import typing
......@@ -36,8 +40,10 @@ from qgis.core import QgsCoordinateReferenceSystem, QgsVector, QgsTextFormat, \
QgsRectangle, QgsRasterRenderer, QgsMapLayerStore, QgsMapLayerStyle, \
QgsLayerTreeModel, QgsLayerTreeGroup, \
QgsLayerTree, QgsLayerTreeLayer, \
QgsRasterLayer, QgsVectorLayer, QgsMapLayer, QgsMapLayerProxyModel, QgsPointXY, QgsReadWriteContext
from qgis.gui import QgsDockWidget, QgsMapCanvas, QgsLayerTreeView, \
QgsRasterLayer, QgsVectorLayer, QgsMapLayer, QgsMapLayerProxyModel, QgsColorRamp, QgsSingleBandPseudoColorRenderer
from qgis.gui import *
from qgis.gui import QgsDockWidget, QgsMapCanvas, QgsMapTool, QgsCollapsibleGroupBox, QgsLayerTreeView, \
QgisInterface, QgsLayerTreeViewMenuProvider, QgsLayerTreeMapCanvasBridge, \
QgsProjectionSelectionWidget, QgsMessageBar
from .externals.qps.crosshair.crosshair import getCrosshairStyle, CrosshairStyle, CrosshairMapCanvasItem
......@@ -999,7 +1005,7 @@ class MapWidget(QFrame):
loadUi(DIR_UI / 'mapwidget.ui', self)
self.setContentsMargins(1, 1, 1, 1)
self.mGrid = self.gridFrame.layout()
self.mGrid: QGridLayout = self.mCanvasGrid
assert isinstance(self.mGrid, QGridLayout)
self.mGrid.setSpacing(0)
self.mGrid.setContentsMargins(0, 0, 0, 0)
......@@ -1718,16 +1724,20 @@ class MapWidget(QFrame):
# mapCanvas.sigDestinationCrsChanged.connect(self.setCrs)
mapCanvas.sigCrosshairPositionChanged.connect(self.onCrosshairPositionChanged)
mapCanvas.sigCanvasClicked.connect(self.onCanvasClicked)
mapCanvas.mapTools().mtCursorLocation.sigLocationRequest[QgsCoordinateReferenceSystem, QgsPointXY].connect(
self.sigCurrentLocationChanged)
mapCanvas.mapTools().mtCursorLocation.sigLocationRequest.connect(
lambda crs, pt, c=mapCanvas: self.onCanvasLocationRequest(c, crs, pt))
def _disconnectCanvasSignals(self, mapCanvas: MapCanvas):
mapCanvas.sigSpatialExtentChanged.disconnect(self.setSpatialExtent)
# mapCanvas.sigDestinationCrsChanged.disconnect(self.setCrs)
mapCanvas.sigCrosshairPositionChanged.disconnect(self.onCrosshairPositionChanged)
mapCanvas.sigCanvasClicked.disconnect(self.onCanvasClicked)
mapCanvas.mapTools().mtCursorLocation.sigLocationRequest[SpatialPoint, QgsMapCanvas].disconnect(
self.sigCurrentLocationChanged)
#mapCanvas.mapTools().mtCursorLocation.sigLocationRequest.disconnect(
# self.sigCurrentLocationChanged)
def onCanvasLocationRequest(self, canvas: QgsMapCanvas, crs: QgsCoordinateReferenceSystem, pt: QgsPointXY):
spt = SpatialPoint(crs, pt)
self.sigCurrentLocationChanged.emit(spt, canvas)
def onCanvasClicked(self, event: QMouseEvent):
canvas = self.sender()
......@@ -1793,17 +1803,19 @@ class MapWidget(QFrame):
w.setParent(None)
w.setVisible(False)
usedCanvases = []
usedCanvases: typing.List[MapCanvas] = []
self.mCanvases.clear()
if self.mViewMode == MapWidget.ViewMode.MapViewByRows:
for row, mv in enumerate(self.mMapViews):
assert isinstance(mv, MapView)
reminder = self.mCanvases.get(mv, [])
self.mCanvases[mv] = []
for col in range(self.mMpMV):
item = self.mGrid.itemAtPosition(row, col)
if isinstance(item, QLayoutItem) and isinstance(item.widget(), MapCanvas):
c = item.widget()
s = ""
else:
c = self._createMapCanvas()
self.mGrid.addWidget(c, row, col)
......@@ -1813,6 +1825,7 @@ class MapWidget(QFrame):
c.setMapView(mv)
usedCanvases.append(c)
self.mCanvases[mv].append(c)
s = ""
else:
raise NotImplementedError()
......@@ -2199,6 +2212,8 @@ class MapViewDock(QgsDockWidget):
return QSize(self.spinBoxMapSizeX.value(),
self.spinBoxMapSizeY.value())
def dummySlot(self):
s = ""
def onMapViewsRemoved(self, mapViews):
......
......@@ -37,6 +37,7 @@ class Keys(enum.Enum):
QgsTaskBlockSize = 'qgs_task_block_size'
BandStatsSampleSize = 'band_stats_sample_size'
RasterOverlapSampleSize = 'raster_overlap_sample_size'
StartupRestoreProjectSettings = 'startup_load_projectsettings'
def defaultValues() -> dict:
......@@ -68,6 +69,8 @@ def defaultValues() -> dict:
d[Keys.BandStatsSampleSize] = 256
d[Keys.RasterOverlapSampleSize] = 25
d[Keys.StartupRestoreProjectSettings] = True
d[Keys.SettingsVersion] = EOTSV_VERSION
textFormat = QgsTextFormat()
textFormat.setColor(QColor('black'))
......@@ -567,7 +570,11 @@ class SettingsDialog(QDialog):
if self.cbSensorMatchingSensorName.isChecked():
flags = flags | SensorMatching.NAME
d[Keys.StartupRestoreProjectSettings] = self.cbStartupRestoreSettings.isChecked()
d[Keys.SensorMatching] = flags
d[Keys.SensorSpecs] = self.mSensorSpecsModel.specs()
d[Keys.MapSize] = QSize(self.sbMapSizeX.value(), self.sbMapSizeY.value())
d[Keys.MapUpdateInterval] = self.sbMapRefreshIntervall.value()
......@@ -621,6 +628,9 @@ class SettingsDialog(QDialog):
if i > -1:
self.cbDateTimePrecission.setCurrentIndex(i)
if checkKey(key, Keys.StartupRestoreProjectSettings):
self.cbStartupRestoreSettings.setChecked(bool(value in [True, 'true', 'True']))
if checkKey(key, Keys.SensorMatching):
assert isinstance(value, SensorMatching)
self.cbSensorMatchingPxDims.setChecked(bool(value & SensorMatching.PX_DIMS))
......
......@@ -43,7 +43,11 @@ from qgis.core import QgsRasterLayer, QgsCoordinateReferenceSystem, \
Qgis, QgsDateTimeRange, QgsMapLayerStyle, \
QgsProject, QgsGeometry, QgsApplication, QgsTask, QgsRasterBandStats, QgsRectangle, QgsRasterDataProvider, \
QgsTaskManager, QgsPoint, QgsPointXY, \
QgsRasterLayerTemporalProperties, QgsMimeDataUtils, QgsCoordinateTransform
QgsMimeDataUtils, QgsCoordinateTransform
try:
from qgis.core import QgsRasterLayerTemporalProperties
except:
pass
from qgis.gui import QgsDockWidget, QgisInterface
DEFAULT_WKT = QgsCoordinateReferenceSystem('EPSG:4326').toWkt()
......@@ -206,17 +210,6 @@ class SensorInstrument(QObject):
SensorNameSettingsPrefix = 'SensorName.'
sigNameChanged = pyqtSignal(str)
@staticmethod
def readXml(node: QDomNode):
sensor: SensorInstrument = None
nodeId = node.firstChildElement('SensorId').toElement()
if nodeId.nodeName() == 'SensorId':
sid = nodeId.firstChild().nodeValue()
sensor = SensorInstrument(sid)
s = ""
return sensor
def __init__(self, sid: str, band_names: list = None):
super(SensorInstrument, self).__init__()
......@@ -266,7 +259,20 @@ class SensorInstrument(QObject):
if self.wlu is not None:
self.mMockupDS.SetMetadataItem('wavelength units', self.wlu)
self.mMockupDS.FlushCache()
s = ""
@staticmethod
def readXml(node: QDomNode):
sensor: SensorInstrument = None
nodeId = node.firstChildElement('SensorId').toElement()
if nodeId.nodeName() == 'SensorId':
sid = nodeId.firstChild().nodeValue()
sensor = SensorInstrument(sid)
nodeName = node.firstChildElement('SensorName').toElement()
if isinstance(sensor, SensorInstrument) and nodeName.nodeName() == 'SensorName':
name = nodeName.firstChild().nodeValue()
sensor.setName(name)
return sensor
def writeXml(self, node: QDomNode, doc: QDomDocument):
......@@ -665,9 +671,12 @@ class TimeSeriesSource(object):
loptions = QgsRasterLayer.LayerOptions(loadDefaultStyle=loadDefaultStyle)
lyr = QgsRasterLayer(self.uri(), self.name(), 'gdal', options=loptions)
tprop: QgsRasterLayerTemporalProperties = lyr.temporalProperties()
tprop.setIsActive(True)
tprop.setMode(QgsRasterLayerTemporalProperties.ModeFixedTemporalRange)
dtg = QDateTime(self.date().astype(object))
tprop.setFixedTemporalRange(QgsDateTimeRange(dtg, dtg))
dtg = self.date().astype(object)
dt1 = QDateTime(dtg, QTime(0, 0))
dt2 = QDateTime(dtg, QTime(QTime(23, 59, 59)))
tprop.setFixedTemporalRange(QgsDateTimeRange(dt1, dt2))
return lyr
def crsWkt(self) -> str:
......@@ -2157,10 +2166,10 @@ class TimeSeries(QAbstractItemModel):
def writeXml(self, node: QDomElement, doc: QDomDocument) -> bool:
"""
Writes the TimeSeires to a QDomNode
:param node:
:param doc:
:return:
Writes the TimeSeries to a QDomNode
:param node: QDomElement
:param doc: QDomDocument
:return: bool
"""
tsNode = doc.createElement('TimeSeries')
......@@ -2412,10 +2421,8 @@ class TimeSeriesTreeView(QTreeView):
a.setEnabled(len(selectedTSSs) > 0)
a.triggered.connect(lambda _, tss=selectedTSSs: self.setClipboardUris(tss))
a.setToolTip('Copy path(s) to clipboard.')
a = menu.addAction('Copy value(s)')
a.triggered.connect(lambda: self.onCopyValues())
menu.addSeparator()
if isinstance(node, TimeSeriesDate):
......@@ -2461,7 +2468,6 @@ class TimeSeriesTreeView(QTreeView):
self.sigMoveToExtent.emit(extent)
def openInQGIS(self, tssList: typing.List[TimeSeriesSource]):
import qgis.utils
iface = qgis.utils.iface
if isinstance(iface, QgisInterface):
......@@ -2469,7 +2475,6 @@ class TimeSeriesTreeView(QTreeView):
QgsProject.instance().addMapLayers(layers, True)
def setClipboardUris(self, tssList: typing.List[TimeSeriesSource]):
urls = []
paths = []
for tss in tssList:
......
......@@ -7,7 +7,7 @@
<x>0</x>
<y>0</y>
<width>602</width>
<height>483</height>
<height>270</height>
</rect>
</property>
<property name="windowTitle">
......@@ -57,19 +57,40 @@
<enum>QFrame::Raised</enum>
</property>
<layout class="QGridLayout" name="gridLayout_2">
<item row="0" column="0">
<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>
<property name="spacing">
<number>0</number>
</property>
<item row="1" column="0">
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Preferred</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
<width>0</width>
<height>0</height>
</size>
</property>
</spacer>
</item>
<item row="0" column="0">
<layout class="QGridLayout" name="mCanvasGrid"/>
</item>
</layout>
</widget>
</item>
......@@ -95,7 +116,7 @@
<string>...</string>
</property>
<property name="icon">
<iconset>
<iconset resource="../../../../cpp/QGIS/images/images.qrc">
<normaloff>:/images/themes/default/mActionDoubleArrowLeft.svg</normaloff>:/images/themes/default/mActionDoubleArrowLeft.svg</iconset>
</property>
<property name="autoRaise">
......@@ -109,7 +130,7 @@
<string>...</string>
</property>
<property name="icon">
<iconset>
<iconset resource="../../../../cpp/QGIS/images/images.qrc">
<normaloff>:/images/themes/default/mActionArrowLeft.svg</normaloff>:/images/themes/default/mActionArrowLeft.svg</iconset>
</property>
<property name="autoRaise">
......@@ -146,7 +167,7 @@
<string>...</string>
</property>
<property name="icon">
<iconset>
<iconset resource="../../../../cpp/QGIS/images/images.qrc">
<normaloff>:/images/themes/default/mActionArrowRight.svg</normaloff>:/images/themes/default/mActionArrowRight.svg</iconset>
</property>
<property name="autoRaise">
......@@ -160,7 +181,7 @@
<string>...</string>
</property>
<property name="icon">
<iconset>
<iconset resource="../../../../cpp/QGIS/images/images.qrc">
<normaloff>:/images/themes/default/mActionDoubleArrowRight.svg</normaloff>:/images/themes/default/mActionDoubleArrowRight.svg</iconset>
</property>
<property name="autoRaise">
......@@ -187,7 +208,7 @@
</layout>
<action name="actionForward">
<property name="icon">
<iconset>
<iconset resource="../../../../cpp/QGIS/images/images.qrc">
<normaloff>:/images/themes/default/mActionArrowRight.svg</normaloff>:/images/themes/default/mActionArrowRight.svg</iconset>
</property>
<property name="text">
......@@ -199,7 +220,7 @@
</action>
<action name="actionBackward">
<property name="icon">
<iconset>
<iconset resource="../../../../cpp/QGIS/images/images.qrc">
<normaloff>:/images/themes/default/mActionArrowLeft.svg</normaloff>:/images/themes/default/mActionArrowLeft.svg</iconset>
</property>
<property name="text">
......@@ -229,7 +250,7 @@
</action>
<action name="actionForwardFast">
<property name="icon">
<iconset>
<iconset resource="../../../../cpp/QGIS/images/images.qrc">
<normaloff>:/images/themes/default/mActionDoubleArrowRight.svg</normaloff>:/images/themes/default/mActionDoubleArrowRight.svg</iconset>
</property>
<property name="text">
......@@ -238,7 +259,7 @@
</action>
<action name="actionBackwardFast">
<property name="icon">
<iconset>
<iconset resource="../../../../cpp/QGIS/images/images.qrc">
<normaloff>:/images/themes/default/mActionDoubleArrowLeft.svg</normaloff>:/images/themes/default/mActionDoubleArrowLeft.svg</iconset>
</property>
<property name="text">
......@@ -255,7 +276,7 @@
</customwidget>
</customwidgets>
<resources>
<include location="../../../QGIS/images/images.qrc"/>
<include location="../../../../cpp/QGIS/images/images.qrc"/>
<include location="eotsv_resources.qrc"/>
</resources>
<connections/>
......
......@@ -61,7 +61,7 @@
<item>
<widget class="QStackedWidget" name="stackedWidget">
<property name="currentIndex">
<number>3</number>
<number>0</number>
</property>
<widget class="QWidget" name="pageGeneral">
<layout class="QVBoxLayout" name="verticalLayout_3">
......@@ -90,8 +90,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>399</width>
<height>397</height>
<width>395</width>
<height>388</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout_5">
......@@ -213,6 +213,28 @@
</layout>
</widget>
</item>
<item>
<widget class="QgsCollapsibleGroupBox" name="mGroupBox_3">
<property name="minimumSize">
<size>
<width>0</width>
<height>50</height>
</size>
</property>
<property name="title">
<string>Start up</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_6">
<item>
<widget class="QCheckBox" name="cbStartupRestoreSettings">
<property name="text">
<string>Restore settings from QgsProject</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<spacer name="verticalSpacer">
<property name="orientation">
......
......@@ -28,6 +28,7 @@ import re
import shutil
import typing
import site
site.addsitedir(pathlib.Path(__file__).parents[1])
import docutils.core
from xml.dom import minidom
......@@ -39,7 +40,6 @@ from eotimeseriesviewer.externals.qps.make.deploy import QGISMetadataFileWriter
print('DIR_REPO={}'.format(DIR_REPO))
CHECK_COMMITS = False
########## Config Section
MD = QGISMetadataFileWriter()
......@@ -56,6 +56,7 @@ MD.mRepository = eotimeseriesviewer.REPOSITORY
MD.mQgisMinimumVersion = '3.14'
MD.mEmail = eotimeseriesviewer.MAIL
########## End of config section
def aboutText() -> str:
......@@ -66,8 +67,10 @@ def aboutText() -> str:
aboutText = ''.join(aboutText)
return aboutText
MD.mAbout = aboutText()
def scantree(path, pattern=re.compile(r'.$')) -> typing.Iterator[pathlib.Path]:
"""
Recursively returns file paths in directory
......@@ -86,7 +89,6 @@ def create_plugin(include_testdata: bool = False,
include_qgisresources: bool = False,
zipfilename: str = None,
latest: bool = False) -> str:
assert (DIR_REPO / '.git').is_dir()
DIR_DEPLOY = DIR_REPO / 'deploy'
......@@ -256,7 +258,7 @@ def createHTMLDocuments(dirPlugin: pathlib.Path):
pathMD = DIR_REPO / 'CHANGELOG.rst'
pathHTML = dirPlugin / 'CHANGELOG'
#pathCL2 = DIR_REPO / 'CHANGELOG'
# pathCL2 = DIR_REPO / 'CHANGELOG'
os.makedirs(pathHTML.parent, exist_ok=True)
# make html compact
......@@ -299,4 +301,3 @@ if __name__ == "__main__":
latest=args.latest)
print('EOTSV_ZIP={}'.format(path))
exit(0)