diff options
Diffstat (limited to 'examples/customDataView.py')
-rw-r--r-- | examples/customDataView.py | 106 |
1 files changed, 106 insertions, 0 deletions
diff --git a/examples/customDataView.py b/examples/customDataView.py new file mode 100644 index 0000000..6db5c3e --- /dev/null +++ b/examples/customDataView.py @@ -0,0 +1,106 @@ +#!/usr/bin/env python +# coding: utf-8 +# /*########################################################################## +# +# Copyright (c) 2016-2017 European Synchrotron Radiation Facility +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. +# +# ###########################################################################*/ +"""Qt data view example +""" + +import logging +import sys + +logging.basicConfig() +_logger = logging.getLogger("customDataView") +"""Module logger""" + +from silx.gui import qt +from silx.gui.data.DataViewerFrame import DataViewerFrame +from silx.gui.data.DataViews import DataView +from silx.third_party import enum + + +class Color(enum.Enum): + RED = 1 + BLUE = 2 + GREEN = 3 + + +class MyColorView(DataView): + + def __init__(self, parent): + DataView.__init__(self, parent) + + def label(self): + return "Color" + + def icon(self): + pixmap = qt.QPixmap(2, 2) + painter = qt.QPainter(pixmap) + painter.setPen(qt.QColor(255, 0, 0)) + painter.drawPoint(qt.QPoint(0, 0)) + painter.setPen(qt.QColor(255, 255, 0)) + painter.drawPoint(qt.QPoint(1, 0)) + painter.setPen(qt.QColor(0, 255, 0)) + painter.drawPoint(qt.QPoint(0, 1)) + painter.setPen(qt.QColor(0, 255, 255)) + painter.drawPoint(qt.QPoint(1, 1)) + painter.end() + pixmap = pixmap.scaled(32, 32, qt.Qt.IgnoreAspectRatio, qt.Qt.FastTransformation) + return qt.QIcon(pixmap) + + def setData(self, data): + widget = self.getWidget() + colors = {Color.RED: "#FF0000", + Color.GREEN: "#00FF00", + Color.BLUE: "#0000FF"} + color = colors.get(data, "#000000") + text = "<span style='color:%s'>%s</span>" % (color, str(data)) + widget.setText(text) + + def axesNames(self, data, info): + return None + + def createWidget(self, parent): + return qt.QLabel(parent) + + def getDataPriority(self, data, info): + if isinstance(data, Color): + return 100 + return self.UNSUPPORTED + + +def main(): + app = qt.QApplication([]) + + widget = DataViewerFrame() + widget.addView(MyColorView(widget)) + widget.setData(Color.GREEN) + widget.show() + result = app.exec_() + # remove ending warnings relative to QTimer + app.deleteLater() + sys.exit(result) + + +if __name__ == "__main__": + main() |