00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 from ost import gui
00022 from ost import gfx
00023 from ost import mol
00024 try:
00025 from ost import img
00026 _img_present=True
00027 except ImportError:
00028 _img_present=False
00029 pass
00030 from PyQt4 import QtCore, QtGui
00031 from color_select_widget import ColorSelectWidget
00032
00033
00034 class UniformColorWidget(QtGui.QWidget):
00035 def __init__(self, parent=None):
00036 QtGui.QWidget.__init__(self, parent)
00037
00038 self.text_ = "Uniform Color"
00039
00040
00041 uniform_label = QtGui.QLabel(self.text_)
00042 font = uniform_label.font()
00043 font.setBold(True)
00044
00045
00046 self.color_select_widget_ = ColorSelectWidget(1,1,QtGui.QColor("White"))
00047
00048 top_layout = QtGui.QVBoxLayout()
00049
00050 grid = QtGui.QGridLayout()
00051 grid.addWidget(self.color_select_widget_, 2, 1, 1, 1)
00052 grid.setRowStretch(1, 1)
00053 grid.setRowStretch(3, 1)
00054 grid.setColumnStretch(0,1)
00055 grid.setColumnStretch(2,1)
00056
00057 top_layout.addWidget(uniform_label)
00058 top_layout.addLayout(grid)
00059 self.setLayout(top_layout)
00060
00061 QtCore.QObject.connect(self.color_select_widget_, QtCore.SIGNAL("colorChanged"), self.ChangeColors)
00062
00063 self.setMinimumSize(250,150)
00064
00065 def Update(self):
00066 scene_selection = gui.SceneSelection.Instance()
00067 for i in range(0,scene_selection.GetActiveNodeCount()):
00068 node = scene_selection.GetActiveNode(i)
00069 if _img_present and isinstance(node, gfx.MapIso):
00070 if self.color_select_widget_.GetGfxColor() != node.GetColor():
00071 self.color_select_widget_.SetGfxColor(node.GetColor())
00072 else:
00073 self.ChangeColors()
00074
00075 def ChangeColors(self):
00076 scene_selection = gui.SceneSelection.Instance()
00077 for i in range(0,scene_selection.GetActiveNodeCount()):
00078 node = scene_selection.GetActiveNode(i)
00079 self.ChangeColor(node)
00080
00081 if(scene_selection.GetActiveViewCount() > 0):
00082 entity = scene_selection.GetViewEntity()
00083 view = scene_selection.GetViewUnion()
00084 self.ChangeViewColor(entity,view)
00085
00086 def ChangeColor(self, node):
00087 gfx_color = self.color_select_widget_.GetGfxColor()
00088 if isinstance(node, gfx.Entity) or isinstance(node, gfx.Surface):
00089 node.CleanColorOps()
00090 node.SetColor(gfx_color,"")
00091 elif _img_present and isinstance(node, gfx.MapIso):
00092 node.SetColor(gfx_color)
00093
00094 def ChangeViewColor(self, entity, view):
00095 if isinstance(entity, gfx.Entity) and isinstance(view, mol.EntityView):
00096 gfx_color = self.color_select_widget_.GetGfxColor()
00097 ufco=gfx.UniformColorOp(mol.QueryViewWrapper(view),gfx_color)
00098 entity.Apply(ufco)
00099
00100 def resizeEvent(self, event):
00101 self.color_select_widget_.SetSize(self.width()/2,self.height()/2)
00102
00103 def GetText(self):
00104 return self.text_