diff --git a/schainpy/gui/viewcontroller/basicwindow.py b/schainpy/gui/viewcontroller/basicwindow.py new file mode 100644 index 0000000..c947312 --- /dev/null +++ b/schainpy/gui/viewcontroller/basicwindow.py @@ -0,0 +1,1101 @@ +# -*- coding: utf-8 -*- +""" +Module implementing MainWindow. +#+++++++++++++++++++++INTERFAZ DE USUARIO V1.1++++++++++++++++++++++++# +""" +from PyQt4.QtGui import QMainWindow +from PyQt4.QtCore import pyqtSignature +from PyQt4.QtCore import pyqtSignal +from PyQt4 import QtCore +from PyQt4 import QtGui +from timeconversions import Doy2Date +from modelProperties import treeModel + +from viewer.ui_unitprocess import Ui_UnitProcess +from viewer.ui_window import Ui_window +from viewer.ui_mainwindow import Ui_BasicWindow + + +from controller import Project,ReadUnitConf,ProcUnitConf,OperationConf,ParameterConf +import os + + +class BasicWindow(QMainWindow, Ui_BasicWindow): + __projObjDict = {} + __arbolDict = {} + __upObjDict = {} + + """ + Class documentation goes here. + #*##################VENTANA CUERPO DEL PROGRAMA#################### + """ + def __init__(self, parent = None): + """ + Constructor + """ + print "Inicio de Programa Interfaz Gráfica" + QMainWindow.__init__(self, parent) + self.setupUi(self) + + self.indexclick=None + + self.online=0 + self.datatype=0 + self.variableList=[] + + self.proObjList=[] + self.idp=0 + self.namep=0 + self.description=0 + self.namepTree=0 + self.valuep=0 + + self.upObjList= [] + self.upn=0 + self.upName=0 + self.upType=0 + self.uporProObjRecover=0 + + self.readUnitConfObjList=[] + + self.upObjVolList=[] + self.upobjSpecList=[] + + self.operObjList=[] + + self.configProject=None + self.configUP=None + + self.readUnitConfObj=None + self.procUnitConfObj0=None + self.opObj10=None + self.opObj12=None + + self.setParam() + + #-----------------------------------NEW PROPERTIES------------------------------------------------# + QtGui.QToolTip.setFont(QtGui.QFont('SansSerif', 10)) + self.addprojectBtn.setToolTip('Add_New_Project') + self.addUnitProces.setToolTip('Add_New_Processing_Unit') + + #-----------------------------------NEW PROPERTIES------------------------------------------------# + self.model = QtGui.QStandardItemModel() + self.treeView.setModel(self.model) + self.treeView.clicked.connect(self.clickFunctiontree) + self.treeView.expandAll() + #self.treeView.clicked.connect(self.treefunction1) + + #-----------------------------------BARRA DE MENU-------------------------------------------------# + + #----------------------------------- MENU_PROJECT--------------------------------------------------# + + @pyqtSignature("") + def on_menuFileAbrirObj_triggered(self): + """ + Abre un archivo de configuracion seleccionado, lee los parametros y + actualiza los atributos de esta clase; creando los objetos necesarios + con los parametros leidos desde el archivo. + """ + print "Leer un archivo xml y extraer sus atributos Not implemented yet" + + @pyqtSignature("") + def on_menuFileCrearObj_triggered(self): + """ + Crea un proyecto nuevo y lo anade a mi diccionario de proyectos + y habilita la ventana de configuracion del proyecto. + + """ + self.addProject() + + @pyqtSignature("") + def on_menuFileGuardarObj_triggered(self): + """ + METODO EJECUTADO CUANDO OCURRE EL EVENTO GUARDAR PROJECTO + + Llama al metodo saveProject. + """ +# my_id = arbol_selected() +# filename = savefindow.show() +# self.saveProject(id, filename) + print "probsave" + self.saveProject() + + @pyqtSignature("") + def on_menuFileCerrarObj_triggered(self): + """ + METODO EJECUTADO CUANDO OCURRE EL EVENTO CERRAR + Llama al metodo close. + """ + self.close() + + #-----------------------------------MENU_RUN----------------------------------------------------# + + @pyqtSignature("") + def on_menuRUNStartObj_clicked(self): + """ + METODO EJECUTADO CUANDO OCURRE EL EVENTO RUN + Llama al metodo RUN. + """ + print "Not implemented yet" + + @pyqtSignature("") + def on_menuRUNPausaObj_clicked(self): + """ + METODO EJECUTADO CUANDO OCURRE EL EVENTO PAUSA + Llama al metodo PAUSA. + """ + print "Not implemented yet" + + #-----------------------------------MENU_OPTION-------------------------------------------------# + + @pyqtSignature("") + def on_menuOptConfigLogfileObj_clicked(self): + """ + METODO EJECUTADO CUANDO OCURRE EL EVENTO ConfigLog + Llama al metodo close. + """ + print "Not implemented yet" + + @pyqtSignature("") + def on_menuOptConfigserverObj_clicked(self): + """ + METODO EJECUTADO CUANDO OCURRE EL EVENTO Config Server + Llama al metodo close. + """ + print "Not implemented yet" + #-----------------------------------MENU_HELP-------------------------------------------------------# + + @pyqtSignature("") + def on_menuHELPAboutObj_clicked(self): + """ + METODO EJECUTADO CUANDO OCURRE EL EVENTO HELP + Llama al metodo close. + """ + print "Not implemented yet" + + @pyqtSignature("") + def on_menuHELPPrfObj_clicked(self): + """ + METODO EJECUTADO CUANDO OCURRE EL EVENTO HElp + Llama al metodo close. + """ + print "Not implemented yet" + + #-----------------------------------BARRA DE HERRAMIENTAS----------------------------------------# + + @pyqtSignature("") + def on_actOpenObj_triggered(self): + """ + METODO CARGA UN ARCHIVO DE CONFIGURACION ANTERIOR + """ + print "Leer un archivo xml y extraer sus atributos Not implemented yet" + + @pyqtSignature("") + def on_actCreateObj_triggered(self): + """ + CREAR PROJECT ,ANADE UN NUEVO PROYECTO, LLAMA AL MÉTODO QUE CONTIENE LAS OPERACION DE CREACION DE PROYECTOS + Llama al metodo addProject. + """ + self.addProject() + + @pyqtSignature("") + def on_actStopObj_triggered(self): + """ + METODO EJECUTADO CUANDO OCURRE EL EVENTO PAUSA + Llama al metodo PAUSA. + """ + print "Not implemented yet" + + @pyqtSignature("") + def on_actPlayObj_triggered(self): + """ + METODO EJECUTADO CUANDO OCURRE EL EVENTO PAUSA + Llama al metodo PAUSA. + """ + print "Not implemented yet" + + @pyqtSignature("") + def on_actSaveObj_triggered(self): + """ + METODO EJECUTADO CUANDO OCURRE EL EVENTO SAVE + Llama al metodo SAVE. + """ + self.saveProject() + + #-----------------------------------PUSHBUTTON_CREATE PROJECT----------------------------------# + + @pyqtSignature("") + def on_addprojectBtn_clicked(self): + """ + CREAR PROJECT ,ANADE UN NUEVO PROYECTO, LLAMA AL MÉTODO QUE CONTIENE LAS OPERACION DE CREACION DE PROYECTOS + Llama al metodo addProject. + """ + self.addProject() + + #------------------------------------VENTANA CONFIGURACION PROJECT----------------------------# + + @pyqtSignature("int") + def on_dataTypeCmbBox_activated(self,index): + """ + Metodo que identifica que tipo de dato se va a trabajar VOLTAGE O ESPECTRA + """ + self.dataFormatTxt.setReadOnly(True) + if index==0: + self.datatype='Voltage' + elif index==1: + self.datatype='Spectra' + else : + self.datatype='' + self.dataFormatTxt.setReadOnly(False) + self.dataFormatTxt.setText(self.datatype) + + @pyqtSignature("") + def on_dataPathBrowse_clicked(self): + """ + OBTENCION DE LA RUTA DE DATOS + """ + self.dataPath = str(QtGui.QFileDialog.getExistingDirectory(self, 'Open Directory', './', QtGui.QFileDialog.ShowDirsOnly)) + self.dataPathTxt.setText(self.dataPath) + self.statusDpath=self.existDir(self.dataPath) + self.loadDays() + + @pyqtSignature("int") + def on_starDateCmbBox_activated(self, index): + """ + SELECCION DEL RANGO DE FECHAS -START DATE + """ + var_StopDay_index=self.endDateCmbBox.count() - self.endDateCmbBox.currentIndex() + self.endDateCmbBox.clear() + for i in self.variableList[index:]: + self.endDateCmbBox.addItem(i) + self.endDateCmbBox.setCurrentIndex(self.endDateCmbBox.count() - var_StopDay_index) + self.getsubList() + + @pyqtSignature("int") + def on_endDateCmbBox_activated(self, index): + """ + SELECCION DEL RANGO DE FECHAS-END DATE + """ + var_StartDay_index=self.starDateCmbBox.currentIndex() + var_end_index = self.endDateCmbBox.count() - index + self.starDateCmbBox.clear() + for i in self.variableList[:len(self.variableList) - var_end_index + 1]: + self.starDateCmbBox.addItem(i) + self.starDateCmbBox.setCurrentIndex(var_StartDay_index) + self.getsubList() #Se carga var_sublist[] con el rango de las fechas seleccionadas + + @pyqtSignature("int") + def on_readModeCmBox_activated(self, p0): + """ + SELECCION DEL MODO DE LECTURA ON=1, OFF=0 + """ + if p0==0: + self.online=0 + elif p0==1: + self.online=1 + + #---------------PUSHBUTTON_DATA " OKBUTTON "_CONFIGURATION PROJECT--------------------------# + + @pyqtSignature("") + def on_dataOkBtn_clicked(self): + """ + Añade al Obj XML de Projecto, name,datatype,date,time,readmode,wait,etc, crea el readUnitProcess del archivo xml. + Prepara la configuración del diágrama del Arbol del treeView numero 2 + """ + print "En este nivel se pasa el tipo de dato con el que se trabaja,path,startDate,endDate,startTime,endTime,online" + + for i in self.__arbolDict: + if self.__arbolDict[i]==self.indexclick: + name=str(self.nameProjectTxt.text()) +# self.model.clear() +# self.parentItem = self.model.invisibleRootItem() +# self.__arbolDict[i]= QtGui.QStandardItem(QtCore.QString(name+" %0").arg(self.idp)) +# self.parentItem.appendRow(self.__arbolDict[self.idp + self.projectObj=self.__projObjDict[int(i)] +# print self.projectObj +# print i +# print "get",self.__arbolDict.items() +# print "keys",self.__arbolDict.keys() + self.description="Think" + id=i + #name=str(self.nameProjectTxt.text()) + desc=str(self.description) + + self.projectObj.setup(id = id, name=name, description=desc) + print self.projectObj.id +# print self.projectObj.name +# print self.projectObj.description + + datatype=str(self.dataTypeCmbBox.currentText()) + path=str(self.dataPathTxt.text()) + online=int(self.online) + starDate=str(self.starDateCmbBox.currentText()) + endDate=str(self.endDateCmbBox.currentText()) + + + self.readUnitConfObj = self.projectObj.addReadUnit(datatype=datatype, + path=path, + startDate=starDate, + endDate=endDate, + startTime='06:10:00', + endTime='23:59:59', + online=online) + + self.readUnitConfObjList.append(self.readUnitConfObj) + print "self.readUnitConfObj.getId",self.readUnitConfObj.getId(),datatype,path,starDate,endDate,online + + self.model_2=treeModel() + self.model_2.setParams(name=self.projectObj.name+str(self.projectObj.id), + directorio=path, + workspace="C:\\WorkspaceGUI", + remode=str(self.readModeCmBox.currentText()), + dataformat=datatype, + date=str(starDate)+"-"+str(endDate), + initTime='06:10:00', + endTime='23:59:59', + timezone="Local" , + Summary="test de prueba") + self.model_2.arbol() + self.treeView_2.setModel(self.model_2) + self.treeView_2.expandAll() + + + + #-----------------PUSHBUTTON_ADD_PROCESSING UNIT PROJECT------------------# + @pyqtSignature("") + def on_addUnitProces_clicked(self): + """ + CREAR PROCESSING UNI ,ANADE UNA UNIDAD DE PROCESAMIENTO, LLAMA AL MÉTODO addUP QUE CONTIENE LAS OPERACION DE CREACION DE UNIDADES DE PROCESAMIENTO + Llama al metodo addUP. + """ +# print "En este nivel se adiciona una rama de procesamiento, y se le concatena con el id" + self.addUP() + + + + + #-----------------VENTANA CONFIGURACION DE VOLTAGE---------------------------# + + @pyqtSignature("int") + def on_selecChannelopVolCEB_stateChanged(self, p0): + """ + Check Box habilita operaciones de Selecci�n de Canales + """ + if p0==2: + self.numberChannelopVol.setEnabled(True) + upProcessSelect=self.upObjVolList[int(self.addOpUpselec.currentIndex())] + opObj10=upProcessSelect.addOperation(name='selectChannels') + print opObj10.id + self.operObjList.append(opObj10) + print " Ingresa seleccion de Canales" + if p0==0: + print " deshabilitado" + + @pyqtSignature("int") + def on_selecHeighopVolCEB_stateChanged(self, p0): + """ + Check Box habilita operaciones de Selecci�n de Alturas + """ + if p0==2: + self.lineHeighProfileTxtopVol.setEnabled(True) + upProcessSelect=self.upObjVolList[int(self.addOpUpselec.currentIndex())] + opObj10=upProcessSelect.addOperation(name='selectHeights') + print opObj10.id + self.operObjList.append(opObj10) + print " Select Type of Profile" + if p0==0: + print " deshabilitado" + + + @pyqtSignature("int") + def on_profileSelecopVolCEB_stateChanged(self, p0): + """ + Check Box habilita ingreso del rango de Perfiles + """ + if p0==2: + self.lineProfileSelecopVolCEB.setEnabled(True) + upProcessSelect=self.upObjVolList[int(self.addOpUpselec.currentIndex())] + opObj10=upProcessSelect.addOperation(name='ProfileSelector', optype='other') + print opObj10.id + self.operObjList.append(opObj10) + print " Select Type of Profile" + if p0==0: + print " deshabilitado" + + + @pyqtSignature("int") + def on_coherentIntegrationCEB_stateChanged(self, p0): + """ + Check Box habilita ingresode del numero de Integraciones a realizar + """ + if p0==2: + self.numberIntegration.setEnabled(True) + upProcessSelect=self.upObjVolList[int(self.addOpUpselec.currentIndex())] + opObj10=upProcessSelect.addOperation(name='CohInt', optype='other') + print opObj10.id + self.operObjList.append(opObj10) + print "Choose number of Cohint" + if p0==0: + print " deshabilitado" + self.numberChannelopVol.setEnabled(False) + + #-----------------------PUSHBUTTON_ACCEPT_OPERATION----------------------------# + + @pyqtSignature("") + def on_dataopVolOkBtn_clicked(self): + """ + BUSCA EN LA LISTA DE OPERACIONES DEL TIPO VOLTAJE Y LES A�ADE EL PARAMETRO ADECUADO ESPERANDO LA ACEPTACION DEL USUARIO + PARA AGREGARLO AL ARCHIVO DE CONFIGURACION XML + """ + if self.selecChannelopVolCEB.isChecked(): + for i in self.operObjList: + if i.name=='selectChannels': + value=self.numberChannelopVol.text() + i.addParameter(name='channelList', value=value, format='intlist') + + + print "channel" + + if self.selecHeighopVolCEB.isChecked(): + for i in self.operObjList: + if i.name=='selectHeights' : + value=self.lineHeighProfileTxtopVol.text() + valueList=value.split(',') + i.addParameter(name='minHei', value=valueList[0], format='float') + i.addParameter(name='maxHei', value=valueList[1], format='float') + + print "height" + + + if self.selecHeighopVolCEB.isChecked(): + for i in self.operObjList: + if i.name=='ProfileSelector' : + value=self.lineProfileSelecopVolCEB.text() + i.addParameter(name='ProfileSelector', value=value, format='intlist') + + + + if self.coherentIntegrationCEB.isChecked(): + for i in self.operObjList: + if i.name=='CohInt': + value=self.numberIntegration.text() + i.addParameter(name='n', value=value, format='int') + + + #-------------------------VENTANA DE CONFIGURACION SPECTRA------------------------# + + @pyqtSignature("int") + def on_nFFTPointOpSpecCEB_stateChanged(self, p0): + """ + Habilita la opcion de a�adir el par�metro nFFTPoints a la Unidad de Procesamiento . + """ + if p0==2: + self.valuenFFTPointOpSpec.setEnabled(True) + print " nFFTPoint" + if p0==0: + print " deshabilitado" + + #------------------PUSH_BUTTON_SPECTRA_OK------------------------------------# + + @pyqtSignature("") + def on_dataopSpecOkBtn_clicked(self): + """ + A�ade al archivo de configuraci�n el par�metros nFFTPoints a la UP. + """ + print "A�adimos operaciones Spectra,nchannels,value,format" + if self.nFFTPointOpSpecCEB.isChecked(): + upProcessSelect=self.upobjSpecList[int(self.addOpSpecUpselec.currentIndex())] + value=self.valuenFFTPointOpSpec.text() + upProcessSelect.addParameter(name='nFFTPoints',value=value,format='int') + #---------------------VENTANA DE CONFIGURACION GRAPH SPECTRA------------------# + + @pyqtSignature("int") + def on_SpectraPlotGraphCEB_stateChanged(self, p0): + """ + Habilita la opcion de Ploteo Spectra Plot + """ + if p0==2: + upProcessSelect=self.upobjSpecList[int(self.addOpSpecUpselec.currentIndex())] + opObj10=upProcessSelect.addOperation(name='SpectraPlot',optype='other') + print opObj10.id + self.operObjList.append(opObj10) + + if p0==0: + print " deshabilitado" + + @pyqtSignature("int") + def on_CrossSpectraPlotGraphceb_stateChanged(self, p0): + """ + Habilita la opci�n de Ploteo CrossSpectra + """ + if p0==2: + upProcessSelect=self.upobjSpecList[int(self.addOpSpecUpselec.currentIndex())] + opObj10=upProcessSelect.addOperation(name='CrossSpectraPlot',optype='other') + print opObj10.id + self.operObjList.append(opObj10) + if p0==0: + print " deshabilitado" + + @pyqtSignature("int") + def on_RTIPlotGraphCEB_stateChanged(self, p0): + """ + Habilita la opci�n de Plote RTIPlot + """ + if p0==2: + upProcessSelect=self.upobjSpecList[int(self.addOpSpecUpselec.currentIndex())] + opObj10=upProcessSelect.addOperation(name='RTIPlot',optype='other') + print opObj10.id + self.operObjList.append(opObj10) + if p0==0: + print " deshabilitado" + + #------------------PUSH_BUTTON_SPECTRA_GRAPH_OK-----------------------------# + @pyqtSignature("") + def on_dataGraphSpecOkBtn_clicked(self): + """ + HABILITAR DE ACUERDO A LOS CHECKBOX QUE TIPO DE PLOTEOS SE VAN A REALIZAR MUESTRA Y GRABA LAS IMAGENES. + """ + print "Graficar Spec op" + if self.SpectraPlotGraphCEB.isChecked(): + for i in self.operObjList: + if i.name=='SpectraPlot': + i.addParameter(name='idfigure', value='1', format='int') + i.addParameter(name='wintitle', value='SpectraPlot0', format='str') + i.addParameter(name='zmin', value='40', format='int') + i.addParameter(name='zmax', value='90', format='int') + i.addParameter(name='showprofile', value='1', format='int') + + if self.CrossSpectraPlotGraphceb.isChecked(): + for i in self.operObjList: + if i.name=='CrossSpectraPlot' : + i.addParameter(name='idfigure', value='2', format='int') + i.addParameter(name='wintitle', value='CrossSpectraPlot', format='str') + i.addParameter(name='zmin', value='40', format='int') + i.addParameter(name='zmax', value='90', format='int') + + if self.RTIPlotGraphCEB.isChecked(): + for i in self.operObjList: + if i.name=='RTIPlot': + i.addParameter(name='n', value='2', format='int') + i.addParameter(name='overlapping', value='1', format='int') + + + + + + + + + + + + + + + + + + + + #----------------------------BASICO-----------------------------------# + + def getNumberofProject(self): +# for i in self.proObjList: +# print i + return self.proObjList +# for i in self.proObjList: +# print i + + def setParam(self): + + self.tabWidgetProject.setEnabled(False) + self.dataPathTxt.setText('C:\data') + self.nameProjectTxt.setText("Test") + self.numberChannelopVol.setEnabled(False) + self.lineHeighProfileTxtopVol.setEnabled(False) + self.numberIntegration.setEnabled(False) + self.valuenFFTPointOpSpec.setEnabled(False) + self.lineProfileSelecopVolCEB.setEnabled(False) + + def clickFunctiontree(self,index): + self.indexclick= index.model().itemFromIndex(index) + print self.indexclick + return self.indexclick +# self.indexclick= index.model().itemFromIndex(index).text() +# return self.indexclick +# print self.indexclick() +# print index.model().itemFromIndex(index) +# print self.indexclick +# NumofPro=self.indexclick[8:10] +# self.valuep=NumofPro +# #print self.valuep +# NameofPro=self.indexclick[0:7] +# self.namepTree=NameofPro +# print self.namepTree + + def addProject(self): + self.tabWidgetProject.setEnabled(True) + print "En este nivel se debe crear el proyecto,id,nombre,desc" + #+++++++++++++++++++Creacion del Objeto Controller-XML+++++++++++++# + + self.idp += 1 + self.projectObj = Project() + print self.projectObj + self.__projObjDict[self.idp] = self.projectObj + + #++++++++++++++++++Creación del Arbol++++++++++++++++++++# + + name='Test' + self.parentItem = self.model.invisibleRootItem() + self.__arbolDict[self.idp] = QtGui.QStandardItem(QtCore.QString(name+" %0").arg(self.idp)) + print "Nombre del projecto es :",self.__arbolDict[self.idp].setAccessibleText('HOLA') + print self.__arbolDict[self.idp] + self.parentItem.appendRow(self.__arbolDict[self.idp]) + self.parentItem=self.__arbolDict[self.idp] + + print "Porfavor ingrese los parámetros de configuracion del Proyecto" + + def existDir(self, var_dir): + """ + METODO PARA VERIFICAR SI LA RUTA EXISTE-VAR_DIR + VARIABLE DIRECCION + """ + if os.path.isdir(var_dir): + return True + else: + self.textEdit.append("Incorrect path:" + str(var_dir)) + return False + + def loadDays(self): + """ + METODO PARA CARGAR LOS DIAS + """ + self.variableList=[] + self.starDateCmbBox.clear() + self.endDateCmbBox.clear() + + Dirlist = os.listdir(self.dataPath) + Dirlist.sort() + + for a in range(0, len(Dirlist)): + fname= Dirlist[a] + Doy=fname[5:8] + fname = fname[1:5] + print fname + fecha=Doy2Date(int(fname),int(Doy)) + fechaList=fecha.change2date() + #print fechaList[0] + Dirlist[a]=fname+"/"+str(fechaList[0])+"/"+str(fechaList[1]) + #+"-"+ fechaList[0]+"-"+fechaList[1] + + #---------------AQUI TIENE QUE SER MODIFICADO--------# + + #Se cargan las listas para seleccionar StartDay y StopDay (QComboBox) + for i in range(0, (len(Dirlist))): + self.variableList.append(Dirlist[i]) + + for i in self.variableList: + self.starDateCmbBox.addItem(i) + self.endDateCmbBox.addItem(i) + self.endDateCmbBox.setCurrentIndex(self.starDateCmbBox.count()-1) + + self.getsubList() + self.dataOkBtn.setEnabled(True) + + def getsubList(self): + """ + OBTIENE EL RANDO DE LAS FECHAS SELECCIONADAS + """ + self.subList=[] + for i in self.variableList[self.starDateCmbBox.currentIndex():self.starDateCmbBox.currentIndex() + self.endDateCmbBox.currentIndex()+1]: + self.subList.append(i) + + def addUP(self): + + self.configUP=UnitProcess(self) + for i in self.__arbolDict: + if self.__arbolDict[i]==self.indexclick: + if self.__projObjDict.has_key(i)==True: + self.projectObj=self.__projObjDict[int(i)] + print self.projectObj.id + self.configUP.getfromWindowList.append(self.projectObj) + + + for i in self.projectObj.procUnitConfObjDict: + if self.projectObj.procUnitConfObjDict[i].getElementName()=='ProcUnit': + self.upObj=self.projectObj.procUnitConfObjDict[i] + self.configUP.getfromWindowList.append(self.upObj) + + + + self.configUP.loadTotalList() + self.configUP.show() + #self.configUP.unitPsavebut.clicked.connect(self.reciveUPparameters) + self.configUP.closed.connect(self.createUP) + + + + def createUP(self): + + print "En este nivel se adiciona una rama de procesamiento, y se le concatena con el id" + + if not self.configUP.create: + return + + self.uporProObjRecover=self.configUP.getFromWindow + + self.upType = self.configUP.typeofUP + for i in self.__arbolDict: + if self.__arbolDict[i]==self.indexclick: + self.projectObj=self.__projObjDict[int(i)] + + datatype=str(self.upType) + uporprojectObj=self.uporProObjRecover + + if uporprojectObj.getElementName()=='ProcUnit': + inputId=uporprojectObj.getId() + else: + inputId=self.readUnitConfObjList[uporprojectObj.id-1].getId() + + print 'uporprojectObj.id','inputId', uporprojectObj.id,inputId + self.procUnitConfObj1 = self.projectObj.addProcUnit(datatype=datatype, inputId=inputId) + self.__upObjDict[inputId]= self.procUnitConfObj1 + + self.parentItem=self.__arbolDict[uporprojectObj.id] + #print "i","self.__arbolDict[i]",i ,self.__arbolDict[i] + self.numbertree=int(self.procUnitConfObj1.getId())-1 + self.__arbolDict[self.procUnitConfObj1.id]=QtGui.QStandardItem(QtCore.QString(datatype +"%1 ").arg(self.numbertree)) + self.parentItem.appendRow(self.__arbolDict[self.procUnitConfObj1.id]) + self.parentItem=self.__arbolDict[self.procUnitConfObj1.id] + # self.loadUp() + self.treeView.expandAll() + + def resetopVolt(self): + self.selecChannelopVolCEB.setChecked(False) + self.selecHeighopVolCEB.setChecked(False) + self.coherentIntegrationCEB.setChecked(False) + self.profileSelecopVolCEB.setChecked(False) + #self.selecChannelopVolCEB.setEnabled(False) + self.lineHeighProfileTxtopVol.clear() + self.lineProfileSelecopVolCEB.clear() + self.numberChannelopVol.clear() + self.numberIntegration.clear() + + + def resetopSpec(self): + self.nFFTPointOpSpecCEB.setChecked(False) + + self.valuenFFTPointOpSpec.clear() + + def resetgraphSpec(self): + self.SpectraPlotGraphCEB.setChecked(False) + self.CrossSpectraPlotGraphceb.setChecked(False) + self.RTIPlotGraphCEB.setChecked(False) + + + def saveProject(self): + print "entro" + #filename="C:\WorkspaceGUI\config1.xml" + for i in self.__arbolDict: + if self.__arbolDict[i]==self.indexclick: + self.projectObj=self.__projObjDict[int(i)] + print "Encontre project" + filename="C:\WorkspaceGUI\config"+str(self.projectObj.id)+".xml" + print "Escribo Project" + self.projectObj.writeXml(filename) + + +class UnitProcess(QMainWindow, Ui_UnitProcess): + """ + Class documentation goes here. + """ + closed=pyqtSignal() + create= False + def __init__(self, parent = None): + """ + Constructor + """ + QMainWindow.__init__(self, parent) + self.setupUi(self) + self.getFromWindow=None + self.getfromWindowList=[] + + self.listUP=None + + @pyqtSignature("") + def on_unitPokbut_clicked(self): + """ + Slot documentation goes here. + """ + self.create =True + self.getFromWindow=self.getfromWindowList[int(self.comboInputBox.currentIndex())] + #self.nameofUP= str(self.nameUptxt.text()) + self.typeofUP= str(self.comboTypeBox.currentText()) + self.close() + + + @pyqtSignature("") + def on_unitPcancelbut_clicked(self): + """ + Slot documentation goes here. + """ + # TODO: not implemented yet + #raise NotImplementedError + self.create=False + self.close() + + def loadTotalList(self): + self.comboInputBox.clear() + for i in self.getfromWindowList: + + name=i.getElementName() + if name=='Project': + id= i.id + name=i.name + if name=='ProcUnit': + id=int(i.id)-1 + name=i.datatype + + self.comboInputBox.addItem(str(name)+str(id)) + + def closeEvent(self, event): + self.closed.emit() + event.accept() + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +# -----------------VENTANA CONFIGURACION DE VOLTAGE---------------------------# +# +# @pyqtSignature("int") +# def on_selecChannelopVolCEB_stateChanged(self, p0): +# """ +# Check Box habilita operaciones de Selecci�n de Canales +# """ +# if p0==2: +# self.numberChannelopVol.setEnabled(True) +# upProcessSelect=self.upObjVolList[int(self.addOpUpselec.currentIndex())] +# opObj10=upProcessSelect.addOperation(name='selectChannels') +# print opObj10.id +# self.operObjList.append(opObj10) +# print " Ingresa seleccion de Canales" +# if p0==0: +# print " deshabilitado" +# +# @pyqtSignature("int") +# def on_selecHeighopVolCEB_stateChanged(self, p0): +# """ +# Check Box habilita operaciones de Selecci�n de Alturas +# """ +# if p0==2: +# self.lineHeighProfileTxtopVol.setEnabled(True) +# upProcessSelect=self.upObjVolList[int(self.addOpUpselec.currentIndex())] +# opObj10=upProcessSelect.addOperation(name='selectHeights') +# print opObj10.id +# self.operObjList.append(opObj10) +# print " Select Type of Profile" +# if p0==0: +# print " deshabilitado" +# +# +# @pyqtSignature("int") +# def on_profileSelecopVolCEB_stateChanged(self, p0): +# """ +# Check Box habilita ingreso del rango de Perfiles +# """ +# if p0==2: +# self.lineProfileSelecopVolCEB.setEnabled(True) +# upProcessSelect=self.upObjVolList[int(self.addOpUpselec.currentIndex())] +# opObj10=upProcessSelect.addOperation(name='ProfileSelector', optype='other') +# print opObj10.id +# self.operObjList.append(opObj10) +# print " Select Type of Profile" +# if p0==0: +# print " deshabilitado" +# +# +# @pyqtSignature("int") +# def on_coherentIntegrationCEB_stateChanged(self, p0): +# """ +# Check Box habilita ingresode del numero de Integraciones a realizar +# """ +# if p0==2: +# self.numberIntegration.setEnabled(True) +# upProcessSelect=self.upObjVolList[int(self.addOpUpselec.currentIndex())] +# opObj10=upProcessSelect.addOperation(name='CohInt', optype='other') +# print opObj10.id +# self.operObjList.append(opObj10) +# print "Choose number of Cohint" +# if p0==0: +# print " deshabilitado" +# self.numberChannelopVol.setEnabled(False) +# +# #-----------------------PUSHBUTTON_ACCEPT_OPERATION----------------------------# +# +# @pyqtSignature("") +# def on_dataopVolOkBtn_clicked(self): +# """ +# BUSCA EN LA LISTA DE OPERACIONES DEL TIPO VOLTAJE Y LES A�ADE EL PARAMETRO ADECUADO ESPERANDO LA ACEPTACION DEL USUARIO +# PARA AGREGARLO AL ARCHIVO DE CONFIGURACION XML +# """ +# if self.selecChannelopVolCEB.isChecked(): +# for i in self.operObjList: +# if i.name=='selectChannels': +# value=self.numberChannelopVol.text() +# i.addParameter(name='channelList', value=value, format='intlist') +# +# +# print "channel" +# +# if self.selecHeighopVolCEB.isChecked(): +# for i in self.operObjList: +# if i.name=='selectHeights' : +# value=self.lineHeighProfileTxtopVol.text() +# valueList=value.split(',') +# i.addParameter(name='minHei', value=valueList[0], format='float') +# i.addParameter(name='maxHei', value=valueList[1], format='float') +# +# print "height" +# +# +# if self.selecHeighopVolCEB.isChecked(): +# for i in self.operObjList: +# if i.name=='ProfileSelector' : +# value=self.lineProfileSelecopVolCEB.text() +# i.addParameter(name='ProfileSelector', value=value, format='intlist') +# +# +# +# if self.coherentIntegrationCEB.isChecked(): +# for i in self.operObjList: +# if i.name=='CohInt': +# value=self.numberIntegration.text() +# i.addParameter(name='n', value=value, format='int') +# +# +# #-------------------------VENTANA DE CONFIGURACION SPECTRA------------------------# +# +# @pyqtSignature("int") +# def on_nFFTPointOpSpecCEB_stateChanged(self, p0): +# """ +# Habilita la opcion de a�adir el par�metro nFFTPoints a la Unidad de Procesamiento . +# """ +# if p0==2: +# self.valuenFFTPointOpSpec.setEnabled(True) +# print " nFFTPoint" +# if p0==0: +# print " deshabilitado" +# +# #------------------PUSH_BUTTON_SPECTRA_OK------------------------------------# +# +# @pyqtSignature("") +# def on_dataopSpecOkBtn_clicked(self): +# """ +# A�ade al archivo de configuraci�n el par�metros nFFTPoints a la UP. +# """ +# print "A�adimos operaciones Spectra,nchannels,value,format" +# if self.nFFTPointOpSpecCEB.isChecked(): +# upProcessSelect=self.upobjSpecList[int(self.addOpSpecUpselec.currentIndex())] +# value=self.valuenFFTPointOpSpec.text() +# upProcessSelect.addParameter(name='nFFTPoints',value=value,format='int') +# #---------------------VENTANA DE CONFIGURACION GRAPH SPECTRA------------------# +# +# @pyqtSignature("int") +# def on_SpectraPlotGraphCEB_stateChanged(self, p0): +# """ +# Habilita la opcion de Ploteo Spectra Plot +# """ +# if p0==2: +# upProcessSelect=self.upobjSpecList[int(self.addOpSpecUpselec.currentIndex())] +# opObj10=upProcessSelect.addOperation(name='SpectraPlot',optype='other') +# print opObj10.id +# self.operObjList.append(opObj10) +# +# if p0==0: +# print " deshabilitado" +# +# @pyqtSignature("int") +# def on_CrossSpectraPlotGraphceb_stateChanged(self, p0): +# """ +# Habilita la opci�n de Ploteo CrossSpectra +# """ +# if p0==2: +# upProcessSelect=self.upobjSpecList[int(self.addOpSpecUpselec.currentIndex())] +# opObj10=upProcessSelect.addOperation(name='CrossSpectraPlot',optype='other') +# print opObj10.id +# self.operObjList.append(opObj10) +# if p0==0: +# print " deshabilitado" +# +# @pyqtSignature("int") +# def on_RTIPlotGraphCEB_stateChanged(self, p0): +# """ +# Habilita la opci�n de Plote RTIPlot +# """ +# if p0==2: +# upProcessSelect=self.upobjSpecList[int(self.addOpSpecUpselec.currentIndex())] +# opObj10=upProcessSelect.addOperation(name='RTIPlot',optype='other') +# print opObj10.id +# self.operObjList.append(opObj10) +# if p0==0: +# print " deshabilitado" +# +# #------------------PUSH_BUTTON_SPECTRA_GRAPH_OK-----------------------------# +# @pyqtSignature("") +# def on_dataGraphSpecOkBtn_clicked(self): +# """ +# HABILITAR DE ACUERDO A LOS CHECKBOX QUE TIPO DE PLOTEOS SE VAN A REALIZAR MUESTRA Y GRABA LAS IMAGENES. +# """ +# print "Graficar Spec op" +# if self.SpectraPlotGraphCEB.isChecked(): +# for i in self.operObjList: +# if i.name=='SpectraPlot': +# i.addParameter(name='idfigure', value='1', format='int') +# i.addParameter(name='wintitle', value='SpectraPlot0', format='str') +# i.addParameter(name='zmin', value='40', format='int') +# i.addParameter(name='zmax', value='90', format='int') +# i.addParameter(name='showprofile', value='1', format='int') +# +# if self.CrossSpectraPlotGraphceb.isChecked(): +# for i in self.operObjList: +# if i.name=='CrossSpectraPlot' : +# i.addParameter(name='idfigure', value='2', format='int') +# i.addParameter(name='wintitle', value='CrossSpectraPlot', format='str') +# i.addParameter(name='zmin', value='40', format='int') +# i.addParameter(name='zmax', value='90', format='int') +# +# if self.RTIPlotGraphCEB.isChecked(): +# for i in self.operObjList: +# if i.name=='RTIPlot': +# i.addParameter(name='n', value='2', format='int') +# i.addParameter(name='overlapping', value='1', format='int') +# +# +# + +#--------------------------------------VENTANA DE CONFIGURACION DE LA UP-----------------------# \ No newline at end of file