diff --git a/moose-gui/plugins/kkitViewcontrol.py b/moose-gui/plugins/kkitViewcontrol.py index 7d63950455985364a05fb8963a5e521809a71786..9f947cd9e9f0c09439ea135aa1864ebb1b2ae191 100644 --- a/moose-gui/plugins/kkitViewcontrol.py +++ b/moose-gui/plugins/kkitViewcontrol.py @@ -5,7 +5,7 @@ __version__ = "1.0.0" __maintainer__ = "HarshaRani" __email__ = "hrani@ncbs.res.in" __status__ = "Development" -__updated__ = "Oct 17 2017" +__updated__ = "Feb 3 2018" ''' Oct 17: If object is moved from one group or compartment to another group or with in same Compartment, @@ -877,92 +877,97 @@ class GraphicalView(QtGui.QGraphicsView): def deleteConnection(self,item): #Delete moose connection, i.e one can click on connection arrow and delete the connection - deleteSolver(self.layoutPt.modelRoot) - msgIdforDeleting = " " - if isinstance(item,QtGui.QGraphicsPolygonItem): - src = self.layoutPt.lineItem_dict[item] - lineItem_value = self.layoutPt.lineItem_dict[item] - i = iter(lineItem_value) - source = i.next() - destination = i.next() - endt = i.next() - numl = i.next() - self.deleteObject2line(item,source,destination,endt) - self.deleteObject2line(item,destination,source,endt) - try: - del self.layoutPt.lineItem_dict[item] - except KeyError: - pass - srcZero = [k for k, v in self.layoutPt.mooseId_GObj.iteritems() if v == src[0]] - srcOne = [k for k, v in self.layoutPt.mooseId_GObj.iteritems() if v == src[1]] - - if isinstance (moose.element(srcZero[0]),moose.MMenz): - gItem =self.layoutPt.mooseId_GObj[moose.element(srcZero[0])] - # This block is done b'cos for MMenz while loaded from ReadKKit, the msg - # from parent pool to Enz is different as compared to direct model building. - # if ReadKKit get the msg from parent Pool, else from MMenz itself. - - # Rules: If some one tries to remove connection parent Pool to Enz - # then delete entire enz itself, this is True for enz and mmenz - for msg in srcZero[0].msgIn: - if moose.element(msg.e1.path) == moose.element(srcOne[0].path): - if src[2] == "t": - if msg.destFieldsOnE2[0] == "enzDest": - # delete indivial msg if later adding parent is possible - # msgIdforDeleting = msg - # moose.delete(msgIdforDeleting) - # self.sceneContainerPt.removeItem(item) - self.deleteItem(gItem) - return - else: - self.getMsgId(src,srcZero,srcOne,item) - moose.delete(msgIdforDeleting) - self.sceneContainerPt.removeItem(item) - setupItem(self.modelRoot,self.layoutPt.srcdesConnection) - for msg in moose.element(srcZero[0].parent).msgIn: - if moose.element(msg.e2.path) == moose.element(srcZero[0].parent.path): - if src[2] == 't': - if len(msg.destFieldsOnE1) > 0: - if msg.destFieldsOnE1[0] == "enzDest": + reply = QtGui.QMessageBox.question(self, "Deleting Object","Do want to delete object and its connections", + QtGui.QMessageBox.Yes | QtGui.QMessageBox.No) + if reply == QtGui.QMessageBox.Yes: + deleteSolver(self.layoutPt.modelRoot) + msgIdforDeleting = " " + if isinstance(item,QtGui.QGraphicsPolygonItem): + src = self.layoutPt.lineItem_dict[item] + lineItem_value = self.layoutPt.lineItem_dict[item] + i = iter(lineItem_value) + source = i.next() + destination = i.next() + endt = i.next() + numl = i.next() + self.deleteObject2line(item,source,destination,endt) + self.deleteObject2line(item,destination,source,endt) + try: + del self.layoutPt.lineItem_dict[item] + except KeyError: + pass + srcZero = [k for k, v in self.layoutPt.mooseId_GObj.iteritems() if v == src[0]] + srcOne = [k for k, v in self.layoutPt.mooseId_GObj.iteritems() if v == src[1]] + + if isinstance (moose.element(srcZero[0]),moose.MMenz): + gItem =self.layoutPt.mooseId_GObj[moose.element(srcZero[0])] + # This block is done b'cos for MMenz while loaded from ReadKKit, the msg + # from parent pool to Enz is different as compared to direct model building. + # if ReadKKit get the msg from parent Pool, else from MMenz itself. + + # Rules: If some one tries to remove connection parent Pool to Enz + # then delete entire enz itself, this is True for enz and mmenz + for msg in srcZero[0].msgIn: + if moose.element(msg.e1.path) == moose.element(srcOne[0].path): + if src[2] == "t": + if msg.destFieldsOnE2[0] == "enzDest": # delete indivial msg if later adding parent is possible # msgIdforDeleting = msg # moose.delete(msgIdforDeleting) # self.sceneContainerPt.removeItem(item) self.deleteItem(gItem) - return - else: - self.getMsgId(src,srcZero,srcOne,item) - - elif isinstance (moose.element(srcZero[0]),moose.Enz): - self.getMsgId(src,srcZero,srcOne,item) - - elif isinstance(moose.element(srcZero[0]),moose.Function): - v = moose.Variable(srcZero[0].path+'/x') - found = False - for msg in v.msgIn: - if moose.element(msg.e1.path) == moose.element(srcOne[0].path): - if src[2] == "sts": - if msg.destFieldsOnE2[0] == "input": - msgIdforDeleting = msg - self.deleteSceneObj(msgIdforDeleting,item) - found = True - if not found: - for msg in srcZero[0].msgOut: - if moose.element(msg.e2.path) == moose.element(srcOne[0].path): - if src[2] == "stp": - if msg.destFieldsOnE2[0] == "setN": - gItem =self.layoutPt.mooseId_GObj[moose.element(srcZero[0])] - self.deleteItem(gItem) - self.deleteSceneObj(msg,item) return - elif msg.destFieldsOnE2[0] == "setNumKf" or msg.destFieldsOnE2[0] == "setConcInit" or msg.destFieldsOnE2[0]=="increment": + else: + self.getMsgId(src,srcZero,srcOne,item) + moose.delete(msgIdforDeleting) + self.sceneContainerPt.removeItem(item) + setupItem(self.modelRoot,self.layoutPt.srcdesConnection) + for msg in moose.element(srcZero[0].parent).msgIn: + if moose.element(msg.e2.path) == moose.element(srcZero[0].parent.path): + if src[2] == 't': + if len(msg.destFieldsOnE1) > 0: + if msg.destFieldsOnE1[0] == "enzDest": + # delete indivial msg if later adding parent is possible + # msgIdforDeleting = msg + # moose.delete(msgIdforDeleting) + # self.sceneContainerPt.removeItem(item) + self.deleteItem(gItem) + return + else: + self.getMsgId(src,srcZero,srcOne,item) + + elif isinstance (moose.element(srcZero[0]),moose.Enz): + self.getMsgId(src,srcZero,srcOne,item) + + elif isinstance(moose.element(srcZero[0]),moose.Function): + v = moose.Variable(srcZero[0].path+'/x') + found = False + for msg in v.msgIn: + if moose.element(msg.e1.path) == moose.element(srcOne[0].path): + if src[2] == "sts": + if msg.destFieldsOnE2[0] == "input": msgIdforDeleting = msg self.deleteSceneObj(msgIdforDeleting,item) - gItem =self.layoutPt.mooseId_GObj[moose.element(srcZero[0])] - self.deleteItem(gItem) - - else: - self.getMsgId(src,srcZero,srcOne,item) + found = True + if not found: + for msg in srcZero[0].msgOut: + if moose.element(msg.e2.path) == moose.element(srcOne[0].path): + if src[2] == "stp": + if msg.destFieldsOnE2[0] == "setN": + gItem =self.layoutPt.mooseId_GObj[moose.element(srcZero[0])] + self.deleteItem(gItem) + self.deleteSceneObj(msg,item) + return + elif msg.destFieldsOnE2[0] == "setNumKf" or msg.destFieldsOnE2[0] == "setConcInit" or msg.destFieldsOnE2[0]=="increment": + msgIdforDeleting = msg + self.deleteSceneObj(msgIdforDeleting,item) + gItem =self.layoutPt.mooseId_GObj[moose.element(srcZero[0])] + self.deleteItem(gItem) + + else: + self.getMsgId(src,srcZero,srcOne,item) + else: + pass def deleteSceneObj(self,msgIdforDeleting,item): moose.delete(msgIdforDeleting)