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
00016
00017
00018
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
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
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
00110
00111
00112
00113
00114
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
00122
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
00140
00141
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
00149
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