Newer
Older

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

Benjamin Jakimow
committed
/***************************************************************************

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

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 qgis.PyQt.QtWidgets import *
from qgis.PyQt import uic
from qgis.PyQt.QtCore import *
from qgis.PyQt.QtGui import *
from qgis.PyQt.QtXml import *

Benjamin Jakimow
committed
import sys, re, os, six
from eotimeseriesviewer import DIR_UI
from eotimeseriesviewer.utils import jp

Benjamin Jakimow
committed
from eotimeseriesviewer.utils import loadUIFormClass

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
class AboutDialogUI(QDialog, loadUIFormClass(jp(DIR_UI, '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
from eotimeseriesviewer import PATH_LICENSE, __version__, PATH_CHANGELOG, PATH_ABOUT

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

Benjamin Jakimow
committed
self.tbAbout.setHtml(readTextFile(PATH_ABOUT))
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)