Changeset 462
- Timestamp:
- Wed Jun 18 20:59:23 2008
- Files:
-
- ganttpv/trunk/ORM.py (modified) (diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
ganttpv/trunk/ORM.py
r461 r462 149 149 parallel = dist(pointA, junction) / dist(pointA, pointB) 150 150 orthagonal = dist(junction, pointC) 151 # if follower is clockwise from the line, make orthagonal negative 151 152 if ((pointB[1] > pointA[1] and pointC[0] < junction[0]) or 152 (pointB[1] == pointA[1] and pointC[1] < junction[1]) or 153 (pointB[1] < pointA[1] and pointC[0] > junction[0])): 153 (pointB[1] < pointA[1] and pointC[0] > junction[0]) or 154 (pointB[0] > pointA[0] and pointC[1] > junction[1]) or 155 (pointB[0] < pointA[0] and pointC[1] < junction[1])): 154 156 orthagonal = -orthagonal 155 # if follower is clockwise from the line, make orthagonal negative156 157 follower._SetInShell('parallel', parallel) 157 158 follower._SetInShell('orthagonal', orthagonal) … … 167 168 ''' Add report row, add target object''' 168 169 if debug: print report_object 169 project = report_object.Get('Project') 170 projectid = project.ID 170 projectid = report_object.ProjectID 171 171 today = Data.TodayString() 172 172 … … 205 205 ''' Add report row, add target object, connect to end objects''' 206 206 if debug: print 'adding %s to %s' % (shape_type, report_object) 207 project = report_object.Get('Project') 208 projectid = project.ID 207 projectid = report_object.ProjectID 209 208 today = Data.TodayString() 210 209 … … 215 214 model[nodea.TableName + 'ID'] = nodea.TableID 216 215 if shape_type == 'ORMRoleConnectorShape': 217 ## fact = nodea.Get('Target')218 ## fact.Nary += 1219 ## model['Seq'] = fact.Nary220 216 object_type = 'ORMRole' 221 217 model['ORMObjectTypeID'] = nodeb.TableID … … 230 226 object_id = Data.Update(model)['ID'] 231 227 if shape_type == 'ORMRoleConnectorShape': 232 fact = nodea.Target 228 fact = fact_object = nodea.Target 232 228 AddRole(fact, fact.db.GetObject('ORMRole', object_id)) 233 229 … … 241 237 newrowid = Data.Update(graphic)['ID'] 242 238 243 ## rlist = Data.GetRowList(report_object.ID) # insert row at beginning of row list244 ## rlist.append(newrowid)245 ## Data.ReorderReportRows(report_object.ID, rlist)246 247 239 return report_object.db.GetObject('GraphicObject', newrowid) 248 240 … … 250 242 ''' Add report row, add target object, connect to end objects''' 251 243 if debug: print 'adding %s to %s' % (shape_type, report_object) 252 project = report_object.Get('Project') 253 projectid = project.ID 244 projectid = report_object.ProjectID 254 245 today = Data.TodayString() 255 246 … … 259 250 model = {'ProjectID': projectid, 'DateAdded': today} 260 251 model[nodea.TableName + 'ID'] = nodea.TableID 261 # if object_type == 'ORMFactReading':262 # fact = nodea.Get('Target')263 # fact.Nary += 1264 # model['Seq'] = fact.Nary265 # else:266 # model[nodeb.TableName + 'ID'] = nodeb.TableID267 252 model['Table'] = object_type 268 ## object_id = Data.Update(model)['ID']269 253 if shape_type == 'ORMFactReadingShape': 270 254 model2 = {'Table': 'ORMRoleSequence', 'Seq': 1, … … 274 258 275 259 object_id = Data.Update(model)['ID'] 276 nodea.Target.ORMFactReadingID = object_id # pointer back 277 260 fact_object = nodea.Target 261 fact_object.ORMFactReadingID = object_id # pointer back 278 262 elif shape_type == 'ORMRoleNameShape': # is this really needed 279 263 object_type = 'ORMRole' 280 object_id = nodea.Get('Target').ID # same target as nodea 281 ## nodea.Get('Target').ORMRoleNameID = object_id # pointer back 264 object_id = nodea.TableID # same target as nodea 282 265 elif shape_type == 'ORMObjectTypeShape': 283 266 model['Type'] = 'Entity' … … 294 277 newrowid = Data.Update(graphic)['ID'] 295 278 296 ## rlist = Data.GetRowList(report_object.ID) # insert row at beginning of row list297 ## rlist.append(newrowid)298 ## Data.ReorderReportRows(report_object.ID, rlist)299 300 279 return report_object.db.GetObject('GraphicObject', newrowid) 301 280 … … 503 482 def GetEnds(self): 504 483 x, y = self.GetPos() 505 nodea = self.Get('NodeA') 506 nodeb = self.Get('NodeB') 484 nodea, nodeb = self.NodeA, self.NodeB 507 485 endb = nodeb.GetPos() 508 486 enda = nodea.AdjustEnd(endb) … … 516 494 517 495 def Follow(self, remove=None): 518 nodea = self.Get('NodeA') # these objects might not already be in the diagram 519 nodeb = self.Get('NodeB') 496 nodea = self.NodeA # these objects might not already be in the diagram 497 nodeb = self.NodeB 520 498 if not remove: 521 499 nodea.AddFollower(self) # must be the right subtype to have this method … … 527 505 class ORMFollowText(ORMBox): 528 506 def Follow(self, remove=None): 529 nodea = self. Get('NodeA')# these objects might not already be in the diagram507 nodea = self.NodeA # these objects might not already be in the diagram 529 507 if not remove: 530 508 nodea.AddFollower(self) # must be the right subtype to have this method … … 535 513 class ORMObjectTypeShape(ORMBox): 536 514 def Follow(self, remove=None): 537 nodea = self. Get('NodeA')515 nodea = self.NodeA 537 515 if nodea: # if objectified fact type 538 516 if not remove: … … 543 521 544 522 def OnBottom(self): 545 nodea = self. Get('NodeA')523 nodea = self.NodeA 545 523 if nodea: # if objectified fact type 546 524 nodea.OnTop() … … 605 583 606 584 if self.NodeA: # objectified fact type 607 box_w = role_box_width * self.NodeA.Target.Nary + left_margin + right_margin + 4 585 fact_object = self.NodeA.Target 586 box_w = role_box_width * fact_object.Nary + left_margin + right_margin + 4 608 587 box_h = role_box_width + top_margin + bottom_margin 609 588 … … 990 969 '''use this to delete a role from a fact type''' 991 970 fact_object = self.Target 992 #reading_object = self.Target.ORMFactReading971 reading_object = self.Target.ORMFactReading 992 971 993 972 DeleteRole(fact_object, role) … … 997 976 '''use this to delete a role from a fact type''' 998 977 fact_object = self.Target 999 #reading_object = self.Target.ORMFactReading978 reading_object = self.Target.ORMFactReading 999 978 1000 979 AddRole(fact_object, role) … … 1014 993 r.Seq = i 1015 994 995 delete_role.Delete() 1016 996 roles = fact_object.GetList('ORMRole') 1017 roles.sort(cmp=lambda x,y: cmp(x.Seq, y.Seq)) 1018 i = 0 1019 for r in roles: 1020 if r == delete_role: 1021 r.Delete() 1022 else: # renumber remaining roles 1023 i += 1 1024 r.Seq = i 1025 fact_object.Nary = len(roles) - 1 997 fact_object.Nary = len(roles) 1026 998 1027 999 def AddRole(fact_object, add_role): # in a separate function "just in case" … … 1039 1011 add_role.ORMFactTypeID = fact_object.ID 1040 1012 roles = fact_object.GetList('ORMRole') 1041 fact_object.Nary = add_role.Seq =len(roles)1013 fact_object.Nary = len(roles) 1041 1013 1042 1014 class ORMFactReadingShape(ORMFollowText): … … 1424 1396 orm_object = self.Get('Target') 1425 1397 x, y = self.GetPos() 1426 nodea = self.Get('NodeA') 1427 nodeb = self.Get('NodeB') 1398 nodea, nodeb = self.NodeA, self.NodeB 1428 1399 1429 1400 # connect base on reading sequence, not fact sequence 1430 seq = [ x.Seq for x in nodea.Target.ORMFactReading.ORMRoleSequence.GetList('ORMRolePosition') 1401 fact_object = nodea.Target 1402 reading_object = nodea.Target.ORMFactReading 1403 seq = [ x.Seq for x in reading_object.ORMRoleSequence.GetList('ORMRolePosition') 1431 1404 if x.ORMRole.ID == orm_object.ID ][0] 1432 1405 endb = nodeb.GetPos() … … 1442 1415 1443 1416 x, y = self.GetPos() 1444 nodea = self.Get('NodeA') # these objects might not already be in the diagram 1445 nodeb = self.Get('NodeB') 1417 nodea = self.NodeA # these objects might not already be in the diagram 1418 nodeb = self.NodeB 1446 1419 1447 1420 # connect base on reading sequence, not fact sequence 1448 ## seq = orm_object.Seq or 1 # the old ways was simpler 1449 seq = [ x.Seq for x in nodea.Target.ORMFactReading.ORMRoleSequence.GetList('ORMRolePosition') 1421 reading_object = nodea.Target.ORMFactReading 1422 seq = [ x.Seq for x in reading_object.ORMRoleSequence.GetList('ORMRolePosition') 1450 1423 if x.ORMRole.ID == orm_object.ID ][0] 1451 1424 endb = nodeb.GetPos() … … 1520 1493 1521 1494 x, y = self.GetPos() # treat this as the center of the shape 1522 nodea = self.Get('NodeA') # these objects might not already be in the diagram 1523 nodeb = self.Get('NodeB') 1495 nodea = self.NodeA # these objects might not already be in the diagram 1496 nodeb = self.NodeB 1524 1497 1525 1498 enda = nodea.GetPos() … … 1572 1545 1573 1546 x, y = self.GetPos() 1574 nodea = self.Get('NodeA') 1575 nodeb = self.Get('NodeB') 1547 nodea, nodeb = self.NodeA, self.NodeB 1576 1548 1577 1549 enda = nodea.GetPos() … … 1603 1575 def GetEnds(self): 1604 1576 x, y = self.GetPos() 1605 nodea = self.Get('NodeA') 1606 nodeb = self.Get('NodeB') 1577 nodea, nodeb = self.NodeA, self.NodeB 1578 fact_object = nodea.Target 1579 reading_object = nodea.Target.ORMFactReading 1607 1580 1608 1581 constraintlist = self.Get('Target') 1609 1582 cr_list = constraintlist.GetList('ORMRolePosition') 1610 fact_roles = [cr.ORMRole for cr in cr_list if cr.ORMRole.ORMFactTypeID == nodea.Target.ID]1583 fact_roles = [cr.ORMRole for cr in cr_list if cr.ORMRole.ORMFactTypeID == fact_object.ID] 1610 1583 1611 seq_xref = dict([ (x.ORMRoleID, x.Seq) for x in nodea.Target.ORMFactReading.ORMRoleSequence.GetList('ORMRolePosition') ])1584 seq_xref = dict([ (x.ORMRoleID, x.Seq) for x in reading_object.ORMRoleSequence.GetList('ORMRolePosition') ]) 1611 1584 seq_numbers = [seq_xref[role.ID] for role in fact_roles] 1612 1585 if not seq_numbers: return … … 1631 1604 1632 1605 x, y = self.GetPos() 1633 nodea = self.Get('NodeA') # these objects might not already be in the diagram 1634 nodeb = self.Get('NodeB') 1606 nodea = self.NodeA # these objects might not already be in the diagram 1607 nodeb = self.NodeB 1608 fact_object = nodea.Target 1609 reading_object = nodea.Target.ORMFactReading 1635 1610 1636 1611 constraintlist = self.Get('Target') 1637 1612 cr_list = constraintlist.GetList('ORMRolePosition') 1638 1613 # remove constraint roles that aren't for this fact 1639 fact_roles = [cr.ORMRole for cr in cr_list if cr.ORMRole.ORMFactTypeID == nodea.Target.ID]1614 fact_roles = [cr.ORMRole for cr in cr_list if cr.ORMRole.ORMFactTypeID == fact_object.ID] 1639 1614 1640 # seq_numbers = [role.Seq for role in fact_roles] # old way 1641 seq_xref = dict([ (x.ORMRoleID, x.Seq) for x in nodea.Target.ORMFactReading.ORMRoleSequence.GetList('ORMRolePosition') ]) 1615 seq_xref = dict([ (x.ORMRoleID, x.Seq) for x in reading_object.ORMRoleSequence.GetList('ORMRolePosition') ]) 1642 1616 seq_numbers = [seq_xref[role.ID] for role in fact_roles] 1643 1617 if not seq_numbers: return … … 1707 1681 1708 1682 x, y = self.GetPos() 1709 nodea = self.Get('NodeA') 1710 nodeb = self.Get('NodeB') 1683 nodea, nodeb = self.NodeA, self.NodeB 1711 1684 1712 1685 enda = nodea.GetPos() … … 2397 2370 if factshape.Target.ID in fact_type_ids: 2398 2371 new_shape = self.AddConnector('ORMConstraintConnectorShape', factshape, shape) 2399 new_shape.TableName = clist.Table # so 'Target' will work 2400 new_shape.TableID = clist.ID 2372 new_shape.Target = clist 2401 2373 self.RedrawID(factshape.dcid) 2402 2374 self.RedrawID(new_shape.dcid)
