Newer
Older
# -*- coding: utf-8 -*-
"""
/***************************************************************************

Benjamin Jakimow
committed
EO Time Series Viewer
-------------------
begin : 2017-08-04
git sha : $Format:%H$
copyright : (C) 2017 by HU-Berlin
email : benjamin.jakimow@geo.hu-berlin.de
***************************************************************************/
/***************************************************************************
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
***************************************************************************/
"""
# noinspection PyPep8Naming
import os
import sys
import site
from qgis.PyQt.QtCore import *
from qgis.PyQt.QtGui import *
from qgis.PyQt.QtWidgets import *
class EOTimeSeriesViewerPlugin:
def __init__(self, iface):
self.iface = iface
self.mEOTSV = None

benjamin.jakimow@geo.hu-berlin.de
committed
dirPlugin = os.path.dirname(__file__)
site.addsitedir(dirPlugin)
import eotimeseriesviewer
eotimeseriesviewer.debugLog('initial Dependency Check')
self.initialDependencyCheck()
eotimeseriesviewer.debugLog('initial all')
eotimeseriesviewer.initAll()
def initGui(self):
self.mToolbarActions = []

benjamin.jakimow@geo.hu-berlin.de
committed
assert isinstance(self.iface, QgisInterface)
import eotimeseriesviewer

benjamin.jakimow@geo.hu-berlin.de
committed
# init main UI
from eotimeseriesviewer import DIR_UI, jp, TITLE
icon = eotimeseriesviewer.icon()
action.triggered.connect(self.run)
self.mToolbarActions.append(action)
for action in self.mToolbarActions:
self.iface.addToolBarIcon(action)

benjamin.jakimow@geo.hu-berlin.de
committed
self.iface.addPluginToRasterMenu(TITLE, action)
def initialDependencyCheck(self):
"""
Runs a check for availability of package dependencies and give an readible error message
:return:
"""
missing = []
from eotimeseriesviewer import DEPENDENCIES, messageLog
for package in DEPENDENCIES:
try:
__import__(package)
except Exception as ex:
missing.append(package)
if len(missing) > 0:
n = len(missing)
longText = ['Unable to import the following package(s):']
longText.append('<b>{}</b>'.format(', '.join(missing)))
longText.append('<p>Please run your local package manager(s) with root rights to install them.')
#longText.append('More information is available under:')
#longText.append('<a href="http://enmap-box.readthedocs.io/en/latest/Installation.html">http://enmap-box.readthedocs.io/en/latest/Installation.html</a> </p>')
longText.append('This Python:')
longText.append('Executable: {}'.format(sys.executable))
longText.append('ENVIRON:')
for k in sorted(os.environ.keys()):
longText.append('\t{} ={}'.format(k, os.environ[k]))
longText = '<br/>\n'.join(longText)
messageLog(longText)
raise Exception(longText)
def run(self):
eotsv = EOTimeSeriesViewer.instance()
if isinstance(eotsv, EOTimeSeriesViewer):
eotsv.ui.show()
else:
self.mEOTSV = EOTimeSeriesViewer()
self.mEOTSV.ui.sigAboutToBeClosed.connect(self.onUiClosed)
self.mEOTSV.show()
def onUiClosed(self):
self.mEOTSV = None
from eotimeseriesviewer.main import EOTimeSeriesViewer
EOTimeSeriesViewer._instance = None
def unload(self):
try:
from eotimeseriesviewer.main import EOTimeSeriesViewer
eotsv = EOTimeSeriesViewer.instance()
if isinstance(eotsv, EOTimeSeriesViewer):
eotsv.close()
QApplication.processEvents()
for action in self.mToolbarActions:
self.iface.removeToolBarIcon(action)
except Exception as ex:
print(f'Failed to unload EOTimeSeriesViewer:\n{ex}')
def tr(self, message):
return QCoreApplication.translate('EOTimeSeriesViewerPlugin', message)