Source code for openalea.system.vprint
"""to be done"""
__revision__ = "$Id$"
__license__ = "Cecill-C"
from openalea.core.node import AbstractNode, Node
try:
from qtpy import QtCore, QtWidgets
__visual_print_enabled = True
from .ui_vprint import Ui_Dialog
[docs]
class VisualPrintDialog (QtWidgets.QDialog,Ui_Dialog):
def __init__(self,parent = None):
if parent:
QtWidgets.QDialog.__init__(self,parent)
else:
QtWidgets.QDialog.__init__(self)
Ui_Dialog.__init__(self)
self.setupUi(self)
except:
print('visual print disabled')
__visual_print_enabled = False
[docs]
class VPrint(Node):
""" Visual Print
In 0 : The object to display
In 1 : The caption of the display
In 2 : The function to transform the object into a string (default=str)
In 3 : Blocking display
Out 0 : The object
"""
def __init__(self,*args):
Node.__init__(self,*args)
self.widget = None
self.enabled = not (QtCore.QCoreApplication .instance() is None)
def __call__(self, inputs):
obj = inputs[0]
caption = inputs[1]
if caption is None:
caption = 'Value is'
blocking = inputs[2]
if blocking is None:
blocking = False
strfunc = inputs[3]
if strfunc is None:
strfunc = str
txt = strfunc(obj)
if self.enabled:
if self.widget is None:
mw = QtWidgets.QApplication.topLevelWidgets()[0]
self.widget = VisualPrintDialog(parent=mw)
if self.widget.isModal() != blocking and self.widget.isVisible():
self.widget.hide()
self.widget.setModal(blocking)
self.widget.valueDisplay.setText(txt)
self.widget.captionText.setText(caption+':')
if self.widget.isVisible():
self.widget.activateWindow()
else:
if blocking:
self.widget.exec_()
else:
self.widget.show()
else:
print((caption+':'+txt))
return (obj,)