Changeset 437
- Timestamp:
- Mon Jun 9 00:40:17 2008
- Files:
-
- ganttpv/trunk/ORM.py (modified) (diff)
- ganttpv/trunk/Data.py (modified) (diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
ganttpv/trunk/ORM.py
r436 r437 1282 1282 model[nodea.TableName + 'ID'] = nodea.TableID 1283 1283 if shape_type == 'ORMRoleConnectorShape': 1284 fact = nodea.Get('Target') 1285 fact.Nary += 1 1286 model['Seq'] = fact.Nary 1284 ## fact = nodea.Get('Target') 1285 ## fact.Nary += 1 1286 ## model['Seq'] = fact.Nary 1287 1287 object_type = 'ORMRole' 1288 1288 elif shape_type == 'ORMSubtypeConnectorShape': # what should this be called? … … 1296 1296 object_id = Data.Update(model)['ID'] 1297 1297 if shape_type == 'ORMRoleConnectorShape': 1298 fact = nodea.Target 1298 1299 AddRole(fact, fact.db.GetObject('ORMRole', object_id)) 1299 1300 … … 1905 1906 ## def ClearFollowers(self): # objects don't have this method soon enough 1906 1907 ## self._SetInShell('followers', []) 1907 def Follow(self): # identify which objects you follow 1908 def Follow(self, remove=None): # identify which objects you follow 1907 1908 pass # overriden in subtypes 1908 1909 def AddFollower(self, follower_shape): 1909 self.followers.append(follower_shape) 1910 if not follower_shape in self.followers: 1911 self.followers.append(follower_shape) 1912 def RemoveFollower(self, follower_shape): 1913 if follower_shape in self.followers: 1914 self.followers.remove(follower_shape) 1910 1915 def GetFollowers(self, filter=''): # use this instead of accessing followers directly 1911 1916 if filter: 1912 1917 return [ x for x in self.followers if x.TableName == filter ] 1913 1918 return self.followers # returned value can be iterated over 1914 def RemoveFollower(self, follower_shape):1915 pass1916 ## #self.followers.append(follower_shape)1917 ## shape._SetInShell('followers', [])1918 ## shape._SetInShell('AddFollower', AddFollower)1919 ## shape._SetInShell('RemoveFollower', RemoveFollower)1920 1919 1921 1920 def SetTempPos(self, x, y): … … 1957 1956 1958 1957 def Delete(self): # overriden in subclasses 1959 self.canvas.pdc.RemoveId(self.dcid) 1958 self.Follow(remove=True) 1959 if self.dcid: 1960 self.canvas.pdc.RemoveId(self.dcid) 1960 1961 self._SetInShell('dcid', None) 1961 1962 Data.Object.Delete(self) … … 2024 2025 return self.GetPos() 2025 2026 2026 def Follow(self): 2027 def Follow(self, remove=None): 2026 2027 nodea = self.Get('NodeA') # these objects might not already be in the diagram 2027 2028 nodeb = self.Get('NodeB') 2028 ## # if not already in the diagram , then create the nodes 2029 ## print 'nodea type', nodea.__class__ 2030 ## if not isinstance(nodea, ORMShape): 2031 ## self.canvas.CreateNode(self.canvas.pdc, nodea) 2032 ## print 'nodeb type', nodeb.__class__ 2033 ## if not isinstance(nodeb, ORMShape): 2034 ## self.canvas.CreateNode(self.canvas.pdc, nodeb) 2035 nodea.AddFollower(self) # must be the right subtype to have this method 2036 nodeb.AddFollower(self) 2029 if not remove: 2030 nodea.AddFollower(self) # must be the right subtype to have this method 2031 nodeb.AddFollower(self) 2032 else: 2033 nodea.RemoveFollower(self) # must be the right subtype to have this method 2034 nodeb.RemoveFollower(self) 2037 2035 2038 2036 class ORMFollowText(ORMBox): 2039 def Follow(self): 2037 def Follow(self, remove=None): 2039 2037 nodea = self.Get('NodeA') # these objects might not already be in the diagram 2040 ## # if not already in the diagram , then create the nodes 2041 ## print 'nodea type', nodea.__class__ 2042 ## if not isinstance(nodea, ORMShape): 2043 ## self.canvas.CreateNode(self.canvas.pdc, nodea) 2044 nodea.AddFollower(self) # must be the right subtype to have this method 2038 if not remove: 2039 nodea.AddFollower(self) # must be the right subtype to have this method 2040 else: 2041 nodea.RemoveFollower(self) # must be the right subtype to have this method 2045 2042 2046 2043 class ORMObjectTypeShape(ORMBox): 2047 def Follow(self): 2044 def Follow(self, remove=None): 2047 2044 nodea = self.Get('NodeA') 2048 2045 if nodea: # if objectified fact type 2049 nodea.AddFollower(self) 2046 if not remove: 2047 nodea.AddFollower(self) 2048 else: 2049 nodea.RemoveFollower(self) 2050 2050 2051 2051 def OnBottom(self): … … 2540 2540 i += 1 2541 2541 r.Seq = i 2542 fact_object.Nary = len(roles) - 1 2542 2543 2543 2544 def AddRole(fact_object, add_role): # in a separate function "just in case" … … 2550 2551 newpos.ORMRoleID = add_role.ID 2551 2552 2552 if not add_role.ORMFactType == fact_object: # if it hasn't already been added 2553 roles = fact_object.GetList('ORMRole') 2554 add_role.ORMFactTypeID = fact_object.ID 2555 add_role.Seq = len(roles) + 1 2553 ## if not add_role.ORMFactType == fact_object: # if it hasn't already been added 2554 add_role.ORMFactTypeID = fact_object.ID 2555 roles = fact_object.GetList('ORMRole') 2556 fact_object.Nary = add_role.Seq = len(roles) 2556 2557 2557 2558 class ORMFactReadingShape(ORMFollowText): … … 3911 3912 if l: 3912 3913 shape = self.dcid_to_shape_xref.get(l[0]) 3913 # get all the connectors that point to the specified role sequence 3914 3915 # get all the connectors that target the specified role sequence 3914 3916 connectors = [x for x in shape.GetGraphicList('ORMConstraintConnectorShape', 'NodeB') 3915 3917 if x.Target and x.Target.Seq == delete_seq] 3916 3918 if connectors: # any of them will do 3917 if debug: print 'connector found' 3919 if debug: print 'connector found', connectors 3917 3919 role_seq = connectors[0].Target # ORMRoleSequence 3920 if debug: print 'role_seq', role_seq 3921 if debug: print 'role_pos', role_seq.GetList('ORMRolePosition') 3918 3922 for role_pos in role_seq.GetList('ORMRolePosition'): 3919 3923 role_pos.Delete() … … 3922 3926 for c_shape in connectors: 3923 3927 c_shape.Delete() 3928 3929 # renumber remaining sequences 3930 role_seqs = shape.Target.GetList('ORMRoleSequence') 3931 sorted_seqs = sorted(role_seqs, cmp=lambda x,y: cmp(x.Seq, y.Seq)) 3932 for i, x in enumerate(sorted_seqs): 3933 x.Seq = i+1 3934 3924 3935 Data.SetUndo('Delete Role Sequence %s' % delete_seq) 3925 3936 ## self.RedrawID(shape.dcid) -
ganttpv/trunk/Data.py
r434 r437 666 666 667 667 def Delete(self): 668 try: 669 rec = self.db.Database[self.Table].get(self.ID) 670 if rec: 671 rec.zzStatus = 'deleted' 672 except: 673 pass 668 self.zzStatus = 'deleted' 674 669 675 670 def Get(self, name=None): … … 725 720 result = SearchByColumn(table_rows, search) # only works w/ current db -- IMPORTANT 726 721 # if debug: print result 727 return [ self.db.GetObject( table_name, x['ID']) for x in result.itervalues() if x.get('zzStatus') != 'deleted']722 return [ self.db.GetObject('GraphicObject', x['ID']) for x in result.itervalues() if x.get('zzStatus') != 'deleted'] 727 722 728 723 class DB:
