# -*- coding: utf-8 -*- """ /*************************************************************************** HUB TimeSeriesViewer ------------------- 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, collections from qgis.core import * from qgis.gui import * from PyQt5 import uic from PyQt5.QtCore import * from PyQt5.QtGui import * from PyQt5.QtXml import * import PyQt5.QtWebKit import sys, re, os, six #widgets defined without UI file from timeseriesviewer import jp, SETTINGS from timeseriesviewer.utils import loadUI from timeseriesviewer.main import SpatialExtent, TsvMimeDataUtils def maxWidgetSizes(layout, onHint=True): assert isinstance(layout, QBoxLayout) p = layout.parentWidget() m = layout.contentsMargins() sizeX = 0 sizeY = 0 horizontal = isinstance(layout, QHBoxLayout) for item in [layout.itemAt(i) for i in range(layout.count())]: wid = item.widget() ly = item.layout() if wid: if onHint: s = wid.sizeHint() else: s = wid.size() elif ly: continue else: continue if horizontal: sizeX += s.width() + layout.spacing() sizeY = max([sizeY, s.height()]) + layout.spacing() else: sizeX = max([sizeX, s.width()]) + layout.spacing() sizeY += s.height() + layout.spacing() return QSize(sizeX + m.left()+ m.right(), sizeY + m.top() + m.bottom()) class AboutDialogUI(QDialog, loadUI('aboutdialog.ui')): def __init__(self, parent=None): """Constructor.""" super(AboutDialogUI, self).__init__(parent) # Set up the user interface from Designer. # After setupUI you can access any designer object by doing # self.<objectname>, and you can use autoconnect slots - see # http://qt-project.org/doc/qt-4.8/designer-using-a-ui-file.html # #widgets-and-dialogs-with-auto-connect self.setupUi(self) self.init() def init(self): self.mTitle = self.windowTitle() self.listWidget.currentItemChanged.connect(lambda: self.setAboutTitle()) self.setAboutTitle() # page About from timeseriesviewer import PATH_LICENSE, VERSION, PATH_CHANGELOG self.labelVersion.setText('{}'.format(VERSION)) def readTextFile(path): if os.path.isfile(path): f = open(path, encoding='utf-8') txt = f.read() f.close() else: txt = 'unable to read {}'.format(path) return txt # page Changed self.tbChanges.setText(readTextFile(PATH_CHANGELOG)) self.tbLicense.setText(readTextFile(PATH_LICENSE)) def setAboutTitle(self, suffix=None): item = self.listWidget.currentItem() if item: title = '{} | {}'.format(self.mTitle, item.text()) else: title = self.mTitle if suffix: title += ' ' + suffix self.setWindowTitle(title) class PropertyDialogUI(QDialog, loadUI('settingsdialog.ui')): def __init__(self, parent=None): super(PropertyDialogUI, self).__init__(parent) self.setupUi(self) if __name__ == '__main__': import site, sys #add site-packages to sys.path as done by enmapboxplugin.py from timeseriesviewer import DIR_SITE_PACKAGES site.addsitedir(DIR_SITE_PACKAGES) #prepare QGIS environment if sys.platform == 'darwin': PATH_QGS = r'/Applications/QGIS.app/Contents/MacOS' os.environ['GDAL_DATA'] = r'/usr/local/Cellar/gdal/1.11.3_1/share' else: # assume OSGeo4W startup PATH_QGS = os.environ['QGIS_PREFIX_PATH'] assert os.path.exists(PATH_QGS) qgsApp = QgsApplication([], True) QApplication.addLibraryPath(r'/Applications/QGIS.app/Contents/PlugIns') QApplication.addLibraryPath(r'/Applications/QGIS.app/Contents/PlugIns/qgis') qgsApp.setPrefixPath(PATH_QGS, True) qgsApp.initQgis() #run tests d = AboutDialogUI() d.show() #d = PropertyDialogUI() d.exec_() #close QGIS qgsApp.exec_() qgsApp.exitQgis()