Source code for lavuelib.preparationGroupBox

# Copyright (C) 2017  DESY, Christoph Rosemann, Notkestr. 85, D-22607 Hamburg
#
# lavue is an image viewing program for photon science imaging detectors.
# Its usual application is as a live viewer using hidra as data source.
#
# 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 in  version 2
# of the License.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor,
# Boston, MA  02110-1301, USA.
#
# Authors:
#     Christoph Rosemann <christoph.rosemann@desy.de>
#     Jan Kotanski <jan.kotanski@desy.de>
#

""" preparationbox widget """

from pyqtgraph import QtGui

from . import transformationsWidget
from . import maskWidget
from . import highValueMaskWidget
from . import bkgSubtractionWidget
from . import normalizationWidget


[docs]class QHLine(QtGui.QFrame): """ horizontal line """ def __init__(self): """ constructor """ QtGui.QFrame.__init__(self) self.setFrameShape(QtGui.QFrame.HLine) self.setFrameShadow(QtGui.QFrame.Sunken)
[docs]class PreparationGroupBox(QtGui.QGroupBox): """ colection of image preperation widgets """ def __init__(self, parent=None, settings=None): """ constructor :param parent: parent object :type parent: :class:`pyqtgraph.QtCore.QObject` :param settings: lavue configuration settings :type settings: :class:`lavuelib.settings.Settings` """ QtGui.QGroupBox.__init__(self, parent) self.setTitle("Image preparation") #: (:obj:`bool`) show mask widget self.__mask = True #: (:obj:`bool`) show highvaluemask widget self.__highvaluemask = True #: (:obj:`bool`) show background subtraction widget self.__bkgsub = True #: (:obj:`bool`) show normalization widget self.__norm = True #: (:obj:`bool`) show transformations widget self.__trans = True #: (:obj:`bool`) show subtraction scalar factors self.__subsf = False #: (:obj:`bool`) show norm scalar factors self.__normsf = False #: (:class:`lavuelib.maskWidget.Maskwidget`) mask widget self.maskWidget = maskWidget.MaskWidget( parent=self, settings=settings) #: (:class:`lavuelib.maskWidget.Maskwidget`) mask widget self.highValueMaskWidget = highValueMaskWidget.HighValueMaskWidget( parent=self, settings=settings) #: (:class:`lavuelib.bkgSubtractionWidget.BkgSubtractionWidget`) # background subtrantion widget self.bkgSubWidget = bkgSubtractionWidget.BkgSubtractionWidget( parent=self, settings=settings) #: (:class:`lavuelib.bkgSubtractionWidget.BkgSubtractionWidget`) # background subtrantion widget self.normWidget = normalizationWidget.NormalizationWidget( parent=self, settings=settings) self.__hline = QHLine() #: (:class:`lavuelib.transformationsWidget.TransformationsWidget`) # transformations widget self.trafoWidget = transformationsWidget.TransformationsWidget( parent=self) vlayout = QtGui.QVBoxLayout() vlayout.addWidget(self.bkgSubWidget) vlayout.addWidget(self.normWidget) vlayout.addWidget(self.maskWidget) vlayout.addWidget(self.highValueMaskWidget) vlayout.addWidget(self.__hline) vlayout.addWidget(self.trafoWidget) self.setLayout(vlayout)
[docs] def changeView(self, showmask=None, showsub=None, showtrans=None, showhighvaluemask=None, showsubsf=None, shownorm=None, shownormsf=None): """ show or hide widgets in the preparation colection :param showmask: mask widget shown :type showmask: :obj:`bool` :param showsub: subtraction widget shown :type showsub: :obj:`bool` :param showtrans: transformation widget shown :type showtrans: :obj:`bool` :param showhighvaluemask: mask widget shown :type showhighvaluemask: :obj:`bool` :param showsubsf: subtraction scaling widget shown :type showsubsf: :obj:`bool` :param shownorm: normalization widget shown :type shownorm: :obj:`bool` :param shownormsf: normalization scaling widget shown :type shownormsf: :obj:`bool` """ if showmask is True: self.__mask = True self.maskWidget.show() elif showmask is False: self.__mask = False self.maskWidget.hide() if showsub is True: self.__bkgsub = True self.bkgSubWidget.show() elif showsub is False: self.__bkgsub = False self.bkgSubWidget.hide() if showsubsf is True and showsub is True: self.__subsf = True self.bkgSubWidget.showScalingFactors(True) elif showsubsf is False: self.bkgSubWidget.showScalingFactors(False) if shownorm is True: self.__norm = True self.normWidget.show() elif shownorm is False: self.__norm = False self.normWidget.hide() if shownormsf is True and shownorm is True: self.__normsf = True self.normWidget.showScalingFactors(True) elif shownormsf is False: self.normWidget.showScalingFactors(False) if showtrans is True: self.__trans = True self.trafoWidget.show() elif showtrans is False: self.__trans = False self.trafoWidget.hide() if showhighvaluemask is True: self.__highvaluemask = True self.highValueMaskWidget.show() elif showhighvaluemask is False: self.__highvaluemask = False self.highValueMaskWidget.hide() masks = self.__bkgsub or self.__mask or self.__highvaluemask if self.__trans and masks: self.__hline.show() else: self.__hline.hide() if self.__trans or masks: self.show() else: self.hide()