Newer
Older

Benjamin Jakimow
committed
# -*- coding: utf-8 -*-

Benjamin Jakimow
committed
/***************************************************************************
HUB TimeSeriesViewer
-------------------
begin : 2017-08-04
git sha : $Format:%H$
copyright : (C) 2017 by HU-Berlin
email : benjamin.jakimow@geo.hu-berlin.de

Benjamin Jakimow
committed
***************************************************************************/
/***************************************************************************
* *
* 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

benjamin.jakimow@geo.hu-berlin.de
committed
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

Benjamin Jakimow
committed
import sys, re, os, six

Benjamin Jakimow
committed

benjamin.jakimow@geo.hu-berlin.de
committed
#widgets defined without UI file

benjamin.jakimow@geo.hu-berlin.de
committed

benjamin.jakimow@geo.hu-berlin.de
committed
from timeseriesviewer import jp, SETTINGS
from timeseriesviewer.utils import loadUI
from timeseriesviewer.main import SpatialExtent, TsvMimeDataUtils

Benjamin Jakimow
committed

benjamin.jakimow@geo.hu-berlin.de
committed
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()
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())

Benjamin Jakimow
committed

benjamin.jakimow@geo.hu-berlin.de
committed
class AboutDialogUI(QDialog,
loadUI('aboutdialog.ui')):

benjamin.jakimow@geo.hu-berlin.de
committed
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

benjamin.jakimow@geo.hu-berlin.de
committed
from timeseriesviewer import PATH_LICENSE, VERSION, PATH_CHANGELOG
self.labelVersion.setText('{}'.format(VERSION))

benjamin.jakimow@geo.hu-berlin.de
committed
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

benjamin.jakimow@geo.hu-berlin.de
committed

benjamin.jakimow@geo.hu-berlin.de
committed
# page Changed
self.tbChanges.setText(readTextFile(PATH_CHANGELOG))
self.tbLicense.setText(readTextFile(PATH_LICENSE))

benjamin.jakimow@geo.hu-berlin.de
committed
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')):

benjamin.jakimow@geo.hu-berlin.de
committed
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
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()

Benjamin Jakimow
committed

benjamin.jakimow@geo.hu-berlin.de
committed
#d = PropertyDialogUI()

benjamin.jakimow@geo.hu-berlin.de
committed
d.exec_()
#close QGIS
qgsApp.exec_()
qgsApp.exitQgis()