# -*- 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 person_class from modelProperties import TreeItem from viewer.ui_window import Ui_window from viewer.ui_mainwindow import Ui_MainWindow from viewer.ui_workspace import Ui_Workspace from viewer.ui_initwindow import Ui_InitWindow from controller1 import Project,ReadBranch,ProcBranch,UP,UPSUB,UP2SUB,Operation,Parameter import os HORIZONTAL_HEADERS = ("ITEM :"," DATOS : " ) HORIZONTAL = ("RAMA :",) class MainWindow(QMainWindow, Ui_MainWindow): """ Class documentation goes here. #*##################VENTANA CUERPO DEL PROGRAMA#################### """ closed=pyqtSignal() def __init__(self, parent = None): """ Constructor 1-CARGA DE ARCHIVOS DE CONFIGURACION SI EXISTIERA.SI EXISTE EL ARCHIVO PROYECT.xml 2- ESTABLECE CIERTOS PARAMETROS PARA PRUEBAS 3- CARGA LAS VARIABLES DE LA CLASE CON LOS PARAMETROS SELECCIONADOS 4-VALIDACION DE LA RUTA DE LOS DATOS Y DEL PROYECTO 5-CARGA LOS DOYS ENCONTRADOS PARA SELECCIONAR EL RANGO 6-CARGA UN PROYECTO """ print "Inicio de Programa" QMainWindow.__init__(self, parent) self.setupUi(self) QtGui.QToolTip.setFont(QtGui.QFont('SansSerif', 10)) self.addoBtn.setToolTip('Add_Unit_Process') self.addbBtn.setToolTip('Add_Branch') self.addpBtn.setToolTip('Add_New_Project') self.ventanaproject=0 self.var=0 self.variableList=[] # Lista de DOYs self.iniciodisplay=0 self.year=0 self.OpMode=0 self.starTem=0 self.endTem=0 #*###################1######################## if os.path.isfile("Proyect.xml"): self.getParam() self.textedit.append("Parameters were loaded from configuration file") #*###################2######################## else: self.setParam() #*###################3######################### self.setVariables() #*###################4######################### self.statusDpath = self.existDir(self.dataPath) #self.statusRpath = self.dir_exists(self.var_Rpath, self) #*###################5 ######################## self.loadYears() self.loadDays() #================================ self.model = QtGui.QStandardItemModel() self.treeView.setModel(self.model) self.treeView.clicked.connect(self.treefunction1) #==========Project==========# self.projectObjList= [] self.ProjectObj=0 self.Pro=0 self.proObjList=[] self.valuep=1 self.namep=0 self.idp=0 self.refresh=0 self.countBperPObjList= [] #===========Branch==========# self.branchObjList=[] self.BranchObj=0 self.braObjList=[] self.Bra=0 self.idb=0 self.nameb=0 self.countVperBObjList= [] #===========Voltage==========# self.voltageObjList=[] self.VoltageObj=0 self.Vol=0 self.volObjList=[] self.idv=0 self.namev=0 #===========Spectra==========# self.spectraObjList=[] self.SpectraObj=0 self.Spec=0 self.specObjList=[] self.ids=0 self.names=0 #===========Correlation==========# self.correlationObjList=[] self.CorrelationObj=0 self.Cor=0 self.corObjList=[] self.idc=0 self.namec=0 self.datatype=0 #================= #self.window=Window() self.Workspace=Workspace() #self.DataType=0 #*################### def treefunction1(self, index): a= index.model().itemFromIndex(index).text() print a b=a[8:10] self.valuep=b c=a[0:7] self.namep=c # def ventanaconfigura(self): # ''' # METODO QUE SE ENCARGA DE LLAMAR A LA CLASE # VENTANA CONFIGURACION DE PROYECTO # ''' # self.Luna =Workspace(self) # self.Luna.closed.connect(self.show) # self.Luna.show() # self.hide() # def closeEvent(self, event): # self.closed.emit() # event.accept() #+######################BARRA DE MENU################### # *####################MENU FILE ######################### @pyqtSignature("") def on_actionabrirObj_triggered(self): """ Ubicado en la Barra de Menu, OPCION FILE, CARGA UN ARCHIVO DE CONFIGURACION ANTERIOR """ # TODO: not implemented yet #raise NotImplementedError @pyqtSignature("") def on_actioncrearObj_triggered(self): """ CREACION DE UN NUEVO EXPERIMENTO """ self.on_addpBtn_clicked() @pyqtSignature("") def on_actionguardarObj_triggered(self): """ GUARDAR EL ARCHIVO DE CONFIGURACION XML """ # TODO: not implemented yet #raise NotImplementedError self.SaveConfig() @pyqtSignature("") def on_actionCerrarObj_triggered(self): """ CERRAR LA APLICACION GUI """ self.close() #*######################### MENU RUN ################## @pyqtSignature("") def on_actionStartObj_triggered(self): """ EMPEZAR EL PROCESAMIENTO. """ # TODO: not implemented yet #raise NotImplementedErr @pyqtSignature("") def on_actionPausaObj_triggered(self): """ PAUSAR LAS OPERACIONES """ # TODO: not implemented yet # raise NotImplemente #*###################MENU OPTIONS###################### @pyqtSignature("") def on_actionconfigLogfileObj_triggered(self): """ Slot Documentation goes here """ self.Luna = Workspace(self) #print self.Luna.dirCmbBox.currentText() @pyqtSignature("") def on_actionconfigserverObj_triggered(self): """ CONFIGURACION DE SERVIDOR. """ # TODO: not implemented yet #raise NotImplementedError #*################# MENU HELPS########################## @pyqtSignature("") def on_actionAboutObj_triggered(self): """ Slot documentation goes here. """ # TODO: not implemented yet #raise NotImplementedError @pyqtSignature("") def on_actionPrfObj_triggered(self): """ Slot documentation goes here. """ # TODO: not implemented yet #raise NotImplementedError #+################################################## @pyqtSignature("") def on_actionOpenObj_triggered(self): """ Slot documentation goes here. """ # TODO: not implemented yet #raise No @pyqtSignature("") def on_actioncreateObj_triggered(self): """ Slot documentation goes here. """ self.on_addpBtn_clicked() @pyqtSignature("") def on_actionstopObj_triggered(self): """ CARGA UN ARCHIVO DE CONFIGURACION ANTERIOR """ # TODO: not implemented yet #raise NotImplementedError @pyqtSignature("") def on_actionPlayObj_triggered(self): """ EMPEZAR EL PROCESAMIENTO. """ # TODO: not implemented yet #raise NotImplementedError #*################VENTANA EXPLORADOR DE PROYECTOS###################### @pyqtSignature("") def on_addpBtn_clicked(self): """ AADIR UN NUEVO PROYECTO """ self.windowshow() self.idp += 1 self.Pro=Project() self.proObjList.append(self.Pro) self.parentItem=self.model.invisibleRootItem() self.ProjectObj = QtGui.QStandardItem(QtCore.QString("Project %0").arg(self.idp)) self.parentItem.appendRow(self.ProjectObj) self.projectObjList.append(self.ProjectObj) self.parentItem=self.ProjectObj @pyqtSignature("") def on_addbBtn_clicked(self): """ AÑADIR UNA RAMA DE PROCESAMIENTO """ #print self.valuep #print self.namep #print self.valueb #if self.namep ==str("Project"): self.idb += 1 self.Bra=self.proObjList[int(self.valuep)-1].addProcBranch(id=self.idb,name='Branch') self.braObjList.append(self.Bra) self.parentItem=self.projectObjList[int(self.valuep)-1] #= self.countBperPObjList.append(self.valuep) # LisBperP=self.countBperPObjList self.BranchObj= QtGui.QStandardItem(QtCore.QString("Branch %1 ").arg(self.idb)) self.parentItem.appendRow(self.BranchObj) self.branchObjList.append(self.BranchObj) self.parentItem=self.BranchObj @pyqtSignature("") def on_addoBtn_clicked(self): """ AÑADIR UN TIPO DE PROCESAMIENTO. """ if self.namep ==str("Project"): self.totalTree() #===================== if self.namep ==str("Voltage"): self.ids += 1 self.Spec=self.volObjList[int(self.valuep)-1].addUPSUB(id=self.ids, name='Spectra', type='Pri') self.specObjList.append(self.Spec) self.parentItem=self.voltageObjList[int(self.valuep)-1] self.SpectraObj= QtGui.QStandardItem(QtCore.QString("Spectra %2").arg(self.ids)) self.parentItem.appendRow(self.SpectraObj) self.spectraObjList.append(self.SpectraObj) self.parentItem=self.SpectraObj if self.namep ==str("Spectra"): self.idc += 1 self.Cor=self.specObjList[int(self.valuep)-1].addUP2SUB(id=self.idc, name='Correlation', type='Pri') self.corObjList.append(self.Cor) self.parentItem=self.spectraObjList[int(self.valuep)-1] self.CorrelationObj= QtGui.QStandardItem(QtCore.QString("Correlation %3").arg(self.idc)) self.parentItem.appendRow(self.CorrelationObj) self.correlationObjList.append(self.CorrelationObj) self.parentItem=self.CorrelationObj if self.namep == str("Branch "): if self.DataType== str("r"): self.idv += 1 if len(self.valuep)==0: print "construir rama" else: self.Vol=self.braObjList[int(self.valuep)-1].addUP(id=self.idv, name='Voltage', type='Pri') self.volObjList.append(self.Vol) self.parentItem=self.branchObjList[int(self.valuep)-1] self.VoltageObj= QtGui.QStandardItem(QtCore.QString("Voltage %2").arg(self.idv)) self.parentItem.appendRow(self.VoltageObj) self.voltageObjList.append(self.VoltageObj) self.parentItem=self.VoltageObj if self.DataType== str("pdata"): self.ids += 1 if len(self.valuep)==0: print "construir rama" else: self.Spec=self.braObjList[int(self.valuep)-1].addUPSUB(id=self.ids, name='Spectra', type='Pri') self.specObjList.append(self.Spec) self.parentItem=self.branchObjList[int(self.valuep)-1] self.SpectraObj= QtGui.QStandardItem(QtCore.QString("Spectra %2").arg(self.ids)) self.parentItem.appendRow(self.SpectraObj) self.spectraObjList.append(self.SpectraObj) self.parentItem=self.SpectraObj def totalTree(self): b= self.proObjList[int(self.valuep)-1] b.procBranchObjList # Objetos de tipo Branch print "Project"+str(self.valuep) +"Branch", for i in range(0 , len(b.procBranchObjList)): print b.procBranchObjList[i].id, #objetos de tipo branch 1,2,3 o 4,5 o 6 print "" for i in range(0 , len(b.procBranchObjList)): print "Branch"+ str(b.procBranchObjList[i].id) for i in range(0 , len(b.procBranchObjList)): print b.procBranchObjList[i].id c= self.braObjList[(b.procBranchObjList[i].id)-1] c.upsubObjList for i in range(0,len(c.upsubObjList)): print "Spectra"+str(c.upsubObjList[i].id), #*********************VENTANA CONFIGURACION DE PROYECTOS************************************ #***********************PESTAÑA DE PROYECTOS************************ #*************************MODO BASICO O AVANZADO***************** @pyqtSignature("QString") def on_operationModeCmbBox_activated(self, p0): """ Slot documentation goes here. """ pass #***********************TIPOS DE DATOS A GRABAR****************************** @pyqtSignature("int") def on_dataFormatCmbBox_activated(self,index): """ SE EJECUTA CUANDO SE ELIGE UN ITEM DE LA LISTA ADEMAS SE CARGA LA LISTA DE DIAS SEGUN EL TIPO DE ARCHIVO SELECCIONADO """ self.dataFormatTxt.setReadOnly(True) if index == 0: self.DataType ='r' elif index == 1: self.DataType ='pdata' else : self.DataType ='' self.dataFormatTxt.setReadOnly(False) self.dataFormatTxt.setText(self.DataType) # self.loadDays(self) @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.loadYears() self.loadDays() @pyqtSignature("int") def on_starDateCmbBox_activated(self, index): """ SELECCION DEL RANGO DE FECHAS -STAR 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("QString") def on_readModeCmBox_activated(self, p0): """ Slot documentation goes here. """ print self.readModeCmBox.currentText() @pyqtSignature("int") def on_initialTimeSlider_valueChanged(self, initvalue): """ SELECCION DE LA HORA DEL EXPERIMENTO -INITIAL TIME """ self.iniciodisplay=initvalue self.initialtimeLcd.display(initvalue) self.starTem=initvalue @pyqtSignature("int") def on_finalTimeSlider_valueChanged(self, finalvalue): """ SELECCION DE LA HORA DEL EXPERIMENTO -FINAL TIME """ finalvalue = self.iniciodisplay + finalvalue if finalvalue >24: finalvalue = 24 self.finaltimeLcd.display(finalvalue) self.endTem=finalvalue @pyqtSignature("QString") def on_yearCmbBox_activated(self, year): """ SELECCION DEL AÑO """ self.year = year #print self.year @pyqtSignature("") def on_dataCancelBtn_clicked(self): """ SAVE- BUTTON CANCEL """ # TODO: not implemented yet #raise NotImplementedError @pyqtSignature("") def on_dataOkBtn_clicked(self): """ SAVE-BUTTON OK """ #print self.ventanaproject.almacena() print "alex" print self.Workspace.dirCmbBox.currentText() self.model_2=treeModel() #lines = unicode(self.textEdit_2.toPlainText()).split('\n') #print lines if self.ventanaproject.almacena()==None: name=str(self.namep) name=str(self.ventanaproject.almacena()) self.model_2.setParams(name=name, directorio=str(self.dataPathTxt.text()), workspace=str(self.Workspace.dirCmbBox.currentText()), opmode=str(self.operationModeCmbBox.currentText()), remode=str(self.readModeCmBox.currentText()), dataformat=str(self.dataFormatTxt.text()), date=str(self.starDateCmbBox.currentText())+"-"+str(self.endDateCmbBox.currentText()), initTime=str( self.starTem), endTime=str(self.endTem), timezone="Local" ) # Summary=str(self.textEdit_2.textCursor())) self.model_2.arbol() self.treeView_2.setModel(self.model_2) self.treeView_2.expandAll() #*############METODOS PARA EL PATH-YEAR-DAYS########################### 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 loadYears(self): """ METODO PARA SELECCIONAR EL AÑO """ self.variableList=[] self.yearCmbBox.clear() if self.statusDpath == False: self.dataOkBtn.setEnabled(False) return if self.DataType == '': return Dirlist = os.listdir(self.dataPath) for y in range(0, len(Dirlist)): fyear= Dirlist[y] fyear = fyear[1:5] Dirlist[y]=fyear Dirlist=list(set(Dirlist)) Dirlist.sort() if len(Dirlist) == 0: self.textEdit.append("File not found") self.dataOkBtn.setEnabled(False) return #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.yearCmbBox.addItem(i) 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) #*################ METODO PARA GUARDAR ARCHIVO DE CONFIGURACION ################# # def SaveConfig(self): # # desc = "Este es un test" # filename=str(self.workspace.dirCmbBox.currentText())+"\\"+"Config"+str(self.valuep)+".xml" # projectObj=self.proObjList[int(self.valuep)-1] # projectObj.setParms(id =int(self.valuep),name=str(self.namep),description=desc) # print self.valuep # print self.namep # # readBranchObj = projectObj.addReadBranch(id=str(self.valuep), # dpath=str(self.dataPathTxt.text()), # dataformat=str(self.dataFormatTxt.text()), # opMode=str(self.operationModeCmbBox.currentText()), # readMode=str(self.readModeCmBox.currentText()), # startDate=str(self.starDateCmbBox.currentText()), # endDate=str(self.endDateCmbBox.currentText()), # startTime=str(self.starTem), # endTime=str(self.endTem)) # # # branchNumber= len(projectObj.procBranchObjList) #Numero de Ramas # #=======================readBranchObj============== # for i in range(0,branchNumber): # projectObj.procBranchObjList[i] # idb=projectObj.procBranchObjList[i].id # # opObjTotal={} # # for j in range(0,branchNumber): # idb=projectObj.procBranchObjList[j].id # branch=self.braObjList[(idb)-1] # branch.upObjList # volNumber=len(branch.upObjList) # for i in range(0,volNumber): # unitProcess=branch.upObjList[i] # idv=branch.upObjList[i].id # # opObj11 = unitProcess.addOperation(id=1,name='removeDC', priority=1) # opObj11.addParameter(name='type', value='1') # opObj2 = unitProcess.addOperation(id=2,name='removeInterference', priority=1) # opObj3 = unitProcess.addOperation(id=3,name='removeSatelites', priority=1) # opObj4 = unitProcess.addOperation(id=4,name='coherent Integration', priority=1) # # projectObj.writeXml(filename) # #*############METODOS PARA INICIALIZAR-CONFIGURAR-CARGAR ARCHIVO-CARGAR VARIABLES######################## def setParam(self): """ INICIALIZACION DE PARAMETROS PARA PRUEBAS """ #self.dataProyectTxt.setText('Test') self.dataFormatTxt.setText('r') self.dataPathTxt.setText('C:\\Users\\alex\\Documents\\ROJ\\ew_drifts') self.dataWaitTxt.setText('0') def make_parameters_conf(self): """ ARCHIVO DE CONFIGURACION cCRA parameters.conf """ pass def getParam(self): """ CARGA Proyect.xml """ print "Archivo XML AUN No adjuntado" def setVariables(self): """ ACTUALIZACION DEL VALOR DE LAS VARIABLES CON LOS PARAMETROS SELECCIONADOS """ self.dataPath = str(self.dataPathTxt.text()) #0 self.DataType= str(self.dataFormatTxt.text()) #3 def windowshow(self): self.ventanaproject= Window(self) self.ventanaproject.closed.connect(self.show) self.ventanaproject.show() # self.window() # self.window.closed.connect(self.show) # self.window.show() #self.hide() def closeEvent(self, event): self.closed.emit() event.accept() class treeModel(QtCore.QAbstractItemModel): ''' a model to display a few names, ordered by encabezado ''' name=None directorio=None workspace=None opmode=None remode=None dataformat=None date=None initTime=None endTime=None timezone=None #Summary=None def __init__(self ,parent=None): super(treeModel, self).__init__(parent) self.people = [] def arbol(self): for caracteristica,principal, descripcion in (("Properties","Name",self.name), ("Properties","Data Path",self.directorio), ("Properties","Workspace",self.workspace), ("Properties","Operation Mode ",self.opmode), ("Parameters", "Read Mode ",self.remode), ("Parameters", "DataFormat ",self.dataformat), ("Parameters", "Date ",self.date), ("Parameters", "Init Time ",self.initTime), ("Parameters", "Final Time ",self.endTime), ("Parameters", " Time zone ",self.timezone), ("Parameters", "Profiles ","1"), # ("Description", "Summary ", self.Summary), ): person = person_class(caracteristica, principal, descripcion) self.people.append(person) self.rootItem = TreeItem(None, "ALL", None) self.parents = {0 : self.rootItem} self.setupModelData() #def veamos(self): # self.update= MainWindow(self) # self.update.dataProyectTxt.text() # return self.update.dataProyectTxt.text() def setParams(self,name,directorio,workspace,opmode,remode,dataformat,date,initTime,endTime,timezone): self.name=name self.workspace=workspace self.directorio= directorio self.opmode=opmode self.remode=remode self.dataformat=dataformat self.date=date self.initTime=initTime self.endTime=endTime self.timezone=timezone #self.Summary=Summary def columnCount(self, parent=None): if parent and parent.isValid(): return parent.internalPointer().columnCount() else: return len(HORIZONTAL_HEADERS) def data(self, index, role): if not index.isValid(): return QtCore.QVariant() item = index.internalPointer() if role == QtCore.Qt.DisplayRole: return item.data(index.column()) if role == QtCore.Qt.UserRole: if item: return item.person return QtCore.QVariant() def headerData(self, column, orientation, role): if (orientation == QtCore.Qt.Horizontal and role == QtCore.Qt.DisplayRole): try: return QtCore.QVariant(HORIZONTAL_HEADERS[column]) except IndexError: pass return QtCore.QVariant() def index(self, row, column, parent): if not self.hasIndex(row, column, parent): return QtCore.QModelIndex() if not parent.isValid(): parentItem = self.rootItem else: parentItem = parent.internalPointer() childItem = parentItem.child(row) if childItem: return self.createIndex(row, column, childItem) else: return QtCore.QModelIndex() def parent(self, index): if not index.isValid(): return QtCore.QModelIndex() childItem = index.internalPointer() if not childItem: return QtCore.QModelIndex() parentItem = childItem.parent() if parentItem == self.rootItem: return QtCore.QModelIndex() return self.createIndex(parentItem.row(), 0, parentItem) def rowCount(self, parent=QtCore.QModelIndex()): if parent.column() > 0: return 0 if not parent.isValid(): p_Item = self.rootItem else: p_Item = parent.internalPointer() return p_Item.childCount() def setupModelData(self): for person in self.people: if person.descripcion: encabezado = person.caracteristica if not self.parents.has_key(encabezado): newparent = TreeItem(None, encabezado, self.rootItem) self.rootItem.appendChild(newparent) self.parents[encabezado] = newparent parentItem = self.parents[encabezado] newItem = TreeItem(person, "", parentItem) parentItem.appendChild(newItem) def searchModel(self, person): ''' get the modelIndex for a given appointment ''' def searchNode(node): ''' a function called recursively, looking at all nodes beneath node ''' for child in node.childItems: if person == child.person: index = self.createIndex(child.row(), 0, child) return index if child.childCount() > 0: result = searchNode(child) if result: return result retarg = searchNode(self.parents[0]) #print retarg return retarg def find_GivenName(self, principal): app = None for person in self.people: if person.principal == principal: app = person break if app != None: index = self.searchModel(app) return (True, index) return (False, None) class Workspace(QMainWindow, Ui_Workspace): """ Class documentation goes here. """ closed=pyqtSignal() def __init__(self, parent = None): """ Constructor """ QMainWindow.__init__(self, parent) self.setupUi(self) #*####### DIRECTORIO DE TRABAJO #########*# self.dirCmbBox.setItemText(0, QtGui.QApplication.translate("MainWindow", "C:\WorkSpaceGui", None, QtGui.QApplication.UnicodeUTF8)) self.dir=str("C:\WorkSpaceGui") self.dirCmbBox.addItem(self.dir) @pyqtSignature("") def on_dirBrowsebtn_clicked(self): """ Slot documentation goes here. """ self.dirBrowse = str(QtGui.QFileDialog.getExistingDirectory(self, 'Open Directory', './', QtGui.QFileDialog.ShowDirsOnly)) self.dirCmbBox.addItem(self.dirBrowse) @pyqtSignature("") def on_dirButton_clicked(self): """ Slot documentation goes here. """ @pyqtSignature("") def on_dirOkbtn_clicked(self): """ VISTA DE INTERFAZ GRÁFICA """ self.showmemainwindow() @pyqtSignature("") def on_dirCancelbtn_clicked(self): """ Cerrar """ self.close() def showmemainwindow(self): self.Dialog= MainWindow(self) self.Dialog.closed.connect(self.show) self.Dialog.show() self.hide() def closeEvent(self, event): self.closed.emit() event.accept() class InitWindow(QMainWindow, Ui_InitWindow): """ Class documentation goes here. """ def __init__(self, parent = None): """ Constructor """ QMainWindow.__init__(self, parent) self.setupUi(self) @pyqtSignature("") def on_pushButton_2_clicked(self): """ Close First Window """ self.close() @pyqtSignature("") def on_pushButton_clicked(self): """ Show Workspace Window """ self.showmeconfig() def showmeconfig(self): ''' Method to call Workspace ''' self.config=Workspace(self) self.config.closed.connect(self.show) self.config.show() self.hide() class Window(QMainWindow, Ui_window): """ Class documentation goes here. """ closed=pyqtSignal() def __init__(self, parent = None): """ Constructor """ QMainWindow.__init__(self, parent) self.setupUi(self) self.name=0 self.nameproject=None @pyqtSignature("") def on_cancelButton_clicked(self): """ Slot documentation goes here. """ # TODO: not implemented yet #raise NotImplementedError self.hide() @pyqtSignature("") def on_okButton_clicked(self): """ Slot documentation goes here. """ # TODO: not implemented yet #raise NotImplementedError self.almacena() print self.nameproject self.close() def almacena(self): #print str(self.proyectNameLine.text()) self.nameproject=str(self.proyectNameLine.text()) return self.nameproject def closeEvent(self, event): self.closed.emit() event.accept()