C:/mesDocs/QT_confDbVis_canvas/CreateLink.py

Go to the documentation of this file.
00001 from GUIcreatelink import *
00002 from CreatePorts import *
00003 from objectclasses import *
00004 
00005 
00006 class CreateLinkWindow(GUIcreateLink):
00007     def __init__(self, main, parent,deviceFrom=None, deviceTo=None):
00008         GUIcreateLink.__init__(self,parent,"Create Link",1,0)
00009         self.connect(self.swapbutton,SIGNAL("released()"),self.Swap)
00010         self.connect(self.addportfrombutton,SIGNAL("released()"),self.addPortFrom)
00011         self.connect(self.addporttobutton,SIGNAL("released()"),self.addPortTo)
00012         self.main = main
00013         self.linkid.setEnabled(False)
00014         self.linkid.setText('-1')
00015         # self.deviceto.insertItem(device1.GetName())
00016         # self.deviceto.insertItem(device2.GetName())
00017         # self.devicefrom.insertItem(device2.GetName())
00018         # self.devicefrom.insertItem(device1.GetName())
00019         if deviceFrom and deviceTo:
00020                 if type(deviceFrom)==type("") and type(deviceTo)==type(""):
00021                         deviceFrom = Device('',deviceFrom)
00022                         deviceTo = Device('',deviceTo)
00023                         if not deviceFrom.Update():
00024                                 self.main.showError("device From does not exist in the Database",ERR_ERROR)
00025                                 return
00026                         if not deviceTo.Update():
00027                                 self.main.showError("device To does not exist in the Database",ERR_ERROR)
00028                                 return  
00029                 # Now we are sure that deviceFrom and deviceTo are "objectclasses.Device"  objects
00030                 self.deviceFrom = deviceFrom
00031                 self.deviceTo = deviceTo
00032                 
00033                 freeports = self.deviceFrom.GetFreePorts()
00034                 self.devFromINfreePorts = freeports[1]
00035                 self.devFromOUTfreePorts = freeports[2]
00036                 if not self.devFromINfreePorts: self.devFromINfreePorts=[]
00037                 if not self.devFromOUTfreePorts: self.devFromOUTfreePorts=[]
00038                 
00039                 freeports = self.deviceTo.GetFreePorts()
00040                 self.devToINfreePorts = freeports[1]
00041                 self.devToOUTfreePorts = freeports[2]
00042                 if not self.devToINfreePorts: self.devToINfreePorts=[]
00043                 if not self.devToOUTfreePorts: self.devToOUTfreePorts=[]
00044                 
00045                 if self.devFromOUTfreePorts:
00046                         for item in self.devFromOUTfreePorts:
00047                         
00048                                 self.portfrom.insertItem(item)
00049                 else:
00050                         self.portfrom.insertItem("No Free Port found !")
00051 
00052                 if self.devToINfreePorts:
00053                         for item in self.devToINfreePorts:
00054                                 self.portto.insertItem(item)
00055                 else:
00056                         self.portto.insertItem("No Free Port found !")
00057                 
00058                 self.devicefrom.setText(self.deviceFrom.GetName())
00059                 self.deviceto.setText(self.deviceTo.GetName())
00060                 
00061         # Link Types
00062         system = self.main.GetActiveSystem()
00063         if system == None or system == "":
00064                 self.ShowError("No subsystem is selected!",ERR_ERROR)
00065                 return False
00066         my_subsystem = SubSystem(self.main.GetCfg(),system)
00067         my_linktypes = my_subsystem.GetLinkTypes()
00068         for item in my_linktypes:
00069                 self.linktype.insertItem(item)
00070 
00071     def accept(self):
00072         new = Link('')
00073         new.SetNodeFrom(str(self.devicefrom.text()))
00074         new.SetNodeTo(str(self.deviceto.text()))
00075 
00076         portfrom = str(self.portfrom.currentText()).split(':')[0].strip()
00077         portto = str(self.portto.currentText()).split(':')[0].strip()
00078         try:
00079                 int(portfrom)
00080                 int(portto)
00081         except:
00082                 self.main.ShowError("You should create a new Port",ERR_ERROR)
00083                 return
00084         new.SetPortFrom(portfrom)
00085         new.SetPortTo(portto)
00086         new.SetType(str(self.linktype.currentText()))
00087         new.SetLinkInfo(str(self.comment.text()))
00088         new.SetBidirectional(int(self.bidirectionallink.isChecked()))
00089         new.SetLinkUsed(int(self.usethislink.isChecked()))
00090         new.SetSaveStatus(CREATE)
00091         new.Create()    
00092         QDialog.accept(self)
00093         
00094     def addPortFrom(self):
00095         portslist = self.deviceFrom.GetPorts()
00096         devtype = DeviceType('',self.deviceFrom.GetType())
00097         devtype.Update()
00098         
00099         my_createportframe = createPortsWindow(self.main,devtype,self.deviceFrom.GetName(),portslist,self)
00100         my_createportframe.show()
00101         ans =  my_createportframe.exec_loop()
00102         self.deviceports = my_createportframe.GetPorts()
00103         
00104         for ports in my_createportframe.GetNewFreePorts()[0]+my_createportframe.GetNewFreePorts()[1]:
00105                 ports.Create()
00106         self.deletedports = my_createportframe.GetDeletedPorts()
00107         for ports in self.deletedports:
00108                 ports.Delete()
00109         # TODO : ici bas on ne prend pas en compte les ports supprime !!!!!!!!!!!!!!!!!!!!!!!!!!!!
00110         
00111         # mettre a jour les champs !
00112         
00113         # self.devFromINfreePorts = my_createportframe.GetNewFreePorts()[0] + self.devFromINfreePorts
00114         # self.devFromOUTfreePorts = my_createportframe.GetNewFreePorts()[1] + self.devFromOUTfreePorts 
00115         freeports = self.deviceFrom.GetFreePorts()
00116         self.devFromINfreePorts = freeports[1]
00117         self.devFromOUTfreePorts = freeports[2]
00118 
00119         self.portfrom.clear()
00120         for item in self.devFromOUTfreePorts:
00121                 # name = item.GetName().split(':')
00122                 # name = name[1]+':'+name[2]
00123                 self.portfrom.insertItem(item)
00124         
00125     def addPortTo(self):
00126         portslist = self.deviceTo.GetPorts()
00127         devtype = DeviceType('',self.deviceTo.GetType())
00128         devtype.Update()
00129         
00130         my_createportframe = createPortsWindow(self.main,devtype,self.deviceTo.GetName(),portslist,self)
00131         my_createportframe.show()
00132         ans =  my_createportframe.exec_loop()
00133         
00134         for ports in my_createportframe.GetNewFreePorts()[0]+my_createportframe.GetNewFreePorts()[1]:
00135                 ports.Create()
00136         self.deletedports = my_createportframe.GetDeletedPorts()
00137         for ports in self.deletedports:
00138                 ports.Delete()  
00139         # mettre a jour les champs !
00140         # self.devToINfreePorts = my_createportframe.GetNewFreePorts()[0] + self.devToINfreePorts
00141         # self.devToOUTfreePorts = my_createportframe.GetNewFreePorts()[1] + self.devToOUTfreePorts
00142         freeports = self.deviceTo.GetFreePorts()
00143         self.devToINfreePorts = freeports[1]
00144         self.devToOUTfreePorts = freeports[2]
00145 
00146         self.portto.clear()
00147         for item in self.devToINfreePorts:
00148                 # name = item.GetName().split(':')
00149                 # name = name[1]+':'+name[2]
00150                 self.portto.insertItem(item)
00151         
00152     def GetPorts(self):
00153         deletedPorts, createdPorts = [], []
00154         portslist = self.deviceFrom.GetPorts()
00155         for port in portslist:
00156                 if port.GetSaveStatus()==CREATE:
00157                         createdPorts.append(port)
00158                 elif port.GetSaveStatus()==DELETE:
00159                         deletedPorts.append(port)
00160 
00161         portslist = self.deviceTo.GetPorts()
00162         for port in portslist:
00163                 if port.GetSaveStatus()==CREATE:
00164                         createdPorts.append(port)
00165                 elif port.GetSaveStatus()==DELETE:
00166                         deletedPorts.append(port)
00167         return deletedPorts, createdPorts
00168         
00169     def Swap(self):
00170         tmp = str(self.deviceto.text())
00171         self.deviceto.setText(self.devicefrom.text())
00172         self.devicefrom.setText(tmp)
00173 
00174         tmp = self.deviceFrom
00175         self.deviceFrom = self.deviceTo
00176         self.deviceTo = tmp
00177         
00178         tmp = self.devFromINfreePorts
00179         self.devFromINfreePorts = self.devFromOUTfreePorts 
00180         self.devFromOUTfreePorts = tmp
00181         
00182         tmp = self.devToINfreePorts
00183         self.devToINfreePorts = self.devToOUTfreePorts 
00184         self.devToOUTfreePorts = tmp
00185         
00186         self.portfrom.clear()
00187         if self.devFromOUTfreePorts!=[]:
00188                 for item in self.devFromOUTfreePorts:
00189                         self.portfrom.insertItem(item)
00190 
00191         self.portto.clear()
00192         if self.devToINfreePorts!=[]:
00193                 for item in self.devToINfreePorts:
00194                         self.portto.insertItem(item)
00195 

Generated on Fri Aug 31 11:11:12 2007 for CDBVis by  doxygen 1.5.3