# -*- coding: iso-8859-1 -*- # #------------------------------------------------------------------------------- # Code_Saturne version 1.3 # ------------------------ # # # This file is part of the Code_Saturne User Interface, element of the # Code_Saturne CFD tool. # # Copyright (C) 1998-2007 EDF S.A., France # # contact: saturne-support@edf.fr # # The Code_Saturne User Interface 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. # # The Code_Saturne User Interface 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 the Code_Saturne Kernel; if not, write to the # Free Software Foundation, Inc., # 51 Franklin St, Fifth Floor, # Boston, MA 02110-1301 USA # #------------------------------------------------------------------------------- """ This module contains the following classes and function: - OutputVariableModel - OutputVarRayView - ProbeValidator - VariableOption """ #------------------------------------------------------------------------------- # Library modules import #------------------------------------------------------------------------------- import string, unittest import Tix from Tkconstants import * #------------------------------------------------------------------------------- # Application modules import #------------------------------------------------------------------------------- from Base.Common import * import Base.Toolbox as Tool import Base.Dialog as Dialog import Base.TkPage as TkPage #------------------------------------------------------------------------------- # #------------------------------------------------------------------------------- class ProbeValidator(TkPage.DataValidator2): """ """ def isProbeOK(self, entry, var): """ This method validates the strict Positivity of the value, when an error occurs, an exception ValueError is raised. """ try: if int(var) <= 0: return self._error(entry, ValueError, "value must be positive") else: return 1 except: return self._error(entry, ValueError, "value must be positive") #------------------------------------------------------------------------------- # Output model class #------------------------------------------------------------------------------- class OutputVariableModel: def __init__(self, case): """ Constuctor """ self.case = case self.node_models = self.case.xmlGetNode('thermophysical_models') self.node_ray = self.node_models.xmlInitNode('radiative_transfer') ## try: ## self.node_var = node_ray.xmlGetChildNodeList('property')[0] ## except: ## self.node_var = [] def getNodeVar(self, var): """ """ ## return self.node_ray.xmlGetNodeList(var)[0] return self.node_ray.xmlGetNode('property',name=var) def getNameLabel(self, node): """ """ if node['label']: return node['label'] else: return node['name'] def getPostVar(self, node): """ """ return node['status'] def setLabelVar(self, node, label): """ """ node['label'] = label def setPostVar(self, node, post): """ """ node['status'] = post #------------------------------------------------------------------------------- # Output class #------------------------------------------------------------------------------- class VariableOption: """ """ def __init__(self, case, master, stbar, balloon, var, node, color): """ """ self.check = ProbeValidator() self.master = master self.case = case self.stbar = stbar self.balloon= balloon self.name = var self.node = node self.color = color self.balloon = Tix.Balloon(self.master, statusbar=self.stbar.label, bd=1, bg='black') self.balloon.message.config(bg=wm['background']) self.dicoLabelName = {} self.label = Tix.StringVar() self.post = Tix.StringVar() self.output = OutputVariableModel(self.case) self._createWidgets() def _createWidgets(self): """ """ t = PageText() f1 = Tix.Frame(self.master) f1.pack() self.lab = Tix.Entry(f1, width=15, textvariable=self.label, fg=self.color) self.lab.event_add("<>", "", "") self.lab.bind("<>", self.getLabel) self.balloon.bind_widget(self.lab, balloonmsg=t.KEYWORD+"NBRVAF") butp = Tix.Checkbutton(f1, onvalue="on", offvalue="off", variable=self.post, command=self.getPost) self.balloon.bind_widget(butp, statusmsg=t.MSG_POST, balloonmsg=t.KEYWORD+"IRAYVF") self.lab.grid (row=0, column=0, padx=2, pady=2) butp.grid (row=0, column=1, padx=15, pady=2) self.label.set(self.output.getNameLabel(self.node)) self.post.set(self.output.getPostVar(self.node)) def getLabel(self, event= None): """ """ t = PageText() self.check.begin(self.lab) self.stbar.busy() if len(self.label.get()) > 20 or len(self.label.get()) < 1: self.check.error(self.lab) self.stbar.set(t.ERROR_CAR) else: self.output.setLabelVar(self.node, self.label.get()) self.stbar.idle() def getPost(self, event= None): """ """ self.output.setPostVar(self.node, self.post.get()) #------------------------------------------------------------------------------- # Main class #------------------------------------------------------------------------------- class OutputVarRayView(TkPage.Page): def _dependsPages(self, name): """ Construction of the list of dependencies Pages. """ self.case[name]['depends'] = ['models/therma', 'models/radiat'] def _pageControl(self): """ """ self.info_turb_name = [] def _createWidgets(self): """ """ t = PageText() lf1 = Tix.LabelFrame(self.myPage, bd=2, label=t.TITLE, relief=FLAT) lf1.label.config(font=fT) lf1.pack(side=TOP, fill=X, padx=10, pady=10) f1 = Tix.Frame(lf1.frame, relief=FLAT) f1.pack(side=TOP, padx=10, pady=10) self.l1 = Tix.Label(f1, text=t.NAME, bd=1, relief=GROOVE) self.l2 = Tix.Label(f1, text=t.POST, bd=1, relief=GROOVE) self.l1.grid (row=0, column=0, ipadx=26, ipady=8) self.l2.grid (row=0, column=2, ipadx=10, ipady=1) self.f2 = Tix.ScrolledWindow(lf1.frame, relief=FLAT) self.f2.pack() def _initializeWidgets(self): """ """ dico = Tool.dicoRayLabel() print "dico", dico for nb in range(len(dico[0])): node = OutputVariableModel(self.case).getNodeVar(dico[0][nb]) VariableOption(self.case, self.f2.window, self.stbar, self.balloon, dico[0][nb], node, 'black') #------------------------------------------------------------------------------- # Text and messages for this page #------------------------------------------------------------------------------- class PageText: """ Storage of all texts and messages for this page. """ def __init__(self): # 1) Texts # if Tool.GuiParam.lang == 'fr': self.ERROR_CAR = "Le nombre de caractères doit etre compris"\ " entre 1 et 20" self.KEYWORD = "Mot clé Code_Saturne: " self.NAME = "Nom" self.POST = "Post-\nprocessing" self.TITLE = "Suivi des variables radiatives" else: self.ERROR_CAR = "Number of character must be between 1 and 20" self.KEYWORD = "Code_Saturne key word: " self.NAME = "Name" self.POST = "Post-\nprocessing" self.TITLE = "Control Thermal Radiation" # 2) Messages # if Tool.GuiParam.lang == 'fr': self.MSG_POST = "Suivi en Post-processing" else: self.MSG_POST = "Post-processing" #------------------------------------------------------------------------------- # OutputVariableModel test case #------------------------------------------------------------------------------- class OutputVarRayTestCase(unittest.TestCase): """ """ def setUp(self): """ This method is executed before all "check" methods. """ from Base.XMLengine import Case, XMLDocument from Base.XMLinitialize import XMLinit Tool.GuiParam.lang = 'en' self.case = Case(None) XMLinit(self.case) self.doc = XMLDocument() def tearDown(self): """ This method is executed after all "check" methods. """ del self.case def checkOutputVarRayInstantiation(self): """ Check whether the OutputVarRay Model class could be instantiated """ model = None model = OutputVariableModel(self.case) assert model != None, 'Could not instantiate OutputVariableModel' def checkGetNodeVar(self): """ """ model = OutputVariableModel(self.case) import Pages.ThermalRadiation as ThRad rad = ThRad.ThermalRadiationModel(self.case) rad.mSetModel('dom') truc = model.getNodeVar('srad').toString() doc = '' assert doc == truc,'Could not get node for variable' def checkSetandGetNameLabel(self): """ """ model = OutputVariableModel(self.case) import Pages.ThermalRadiation as ThRad rad = ThRad.ThermalRadiationModel(self.case) rad.mSetModel('dom') node = model.getNodeVar('wall_temp') model.setLabelVar(node,'temperature') assert model.getNameLabel(node) == 'temperature',\ 'Could not get label for node of variable' def checkSetandGetPostVar(self): """ """ model = OutputVariableModel(self.case) import Pages.ThermalRadiation as ThRad rad = ThRad.ThermalRadiationModel(self.case) rad.mSetModel('dom') node = model.getNodeVar('wall_temp') model.setPostVar(node,'off') assert model.getPostVar(node) == 'off',\ 'Could not set or get status for given node' def suite(): testSuite = unittest.makeSuite(OutputVarRayTestCase, "check") return testSuite def runTest(): print "OutputVarRayTestCase" runner = unittest.TextTestRunner() runner.run(suite()) #------------------------------------------------------------------------------- # End #-------------------------------------------------------------------------------