Changeset 2210
- Timestamp:
- 02/11/08 22:28:15 (3 months ago)
- Files:
-
- gaphor/trunk/gaphor/diagram/diagramitem.py (modified) (1 diff)
- gaphor/trunk/gaphor/services/undomanager.py (modified) (4 diffs)
- gaphor/trunk/tests/test_association_undo.py (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
gaphor/trunk/gaphor/diagram/diagramitem.py
r2185 r2210 216 216 Remove the item from the canvas and set subject to None. 217 217 """ 218 super(DiagramItem, self).unlink() 219 self.subject = None 218 220 if self.canvas: 219 try: 220 self.canvas.remove(self) 221 except KeyError: 222 # Canvas was already removed 223 pass 224 self.subject = None 225 super(DiagramItem, self).unlink() 221 #try: 222 self.canvas.remove(self) 223 #except KeyError: 224 # # Canvas was already removed 225 # pass 226 226 227 227 gaphor/trunk/gaphor/services/undomanager.py
r2191 r2210 161 161 Add an action to undo. An action 162 162 """ 163 #log.debug('add_undo_action: %s %s' % (self._current_transaction, action)) 164 if not self._current_transaction: 165 return 166 167 self._current_transaction.add(action) 168 self._app.handle(UndoManagerStateChanged(self)) 169 170 # TODO: should this be placed here? 171 self._action_executed() 163 if self._current_transaction: 164 log.debug('add_undo_action: %s %s' % (self._current_transaction, action)) 165 self._current_transaction.add(action) 166 self._app.handle(UndoManagerStateChanged(self)) 167 168 # TODO: should this be placed here? 169 self._action_executed() 172 170 173 171 @component.adapter(TransactionCommit) … … 288 286 ## 289 287 290 def _undo_handler(self, event): 288 def _gaphas_undo_handler(self, event): 289 print 'Gaphas event:', event 291 290 self.add_undo_action(lambda: state.saveapply(*event)); 292 291 … … 303 302 state.observers.add(state.revert_handler) 304 303 305 state.subscribers.add(self._ undo_handler)304 state.subscribers.add(self._gaphas_undo_handler) 306 305 307 306 def _unregister_undo_handlers(self): … … 316 315 state.observers.discard(state.revert_handler) 317 316 318 state.subscribers.discard(self._ undo_handler)317 state.subscribers.discard(self._gaphas_undo_handler) 319 318 320 319 gaphor/trunk/tests/test_association_undo.py
r2207 r2210 123 123 #assert len(y_cons) == 0, y_cons 124 124 125 def testAssociationDelete(self): 126 factory = Application.get_service('element_factory') 127 undo_manager = Application.get_service('undo_manager') 128 129 diagram = factory.create(UML.Diagram) 130 solver = diagram.canvas.solver 131 132 class1 = factory.create(UML.Class) 133 class1.name = 'class1' 134 classItem1 = diagram.create(items.ClassItem, subject=class1) 135 136 class2 = factory.create(UML.Class) 137 class2.name = 'class2' 138 classItem2 = diagram.create(items.ClassItem, subject=class2) 139 140 assoc = diagram.create(items.AssociationItem) 141 assert assoc.subject is None 142 143 adapter = component.queryMultiAdapter((classItem1, assoc), IConnect) 144 assert adapter 145 adapter.connect(assoc.handles()[0]) 146 147 adapter = component.queryMultiAdapter((classItem2, assoc), IConnect) 148 assert adapter 149 adapter.connect(assoc.handles()[1]) 150 151 assoc_subject = assoc.subject 152 assert assoc.subject 153 assert assoc.head_end.subject 154 assert assoc.tail_end.subject 155 assert assoc.head.connected_to is classItem1 156 assert assoc.tail.connected_to is classItem2 157 158 former = (assoc.subject, assoc.head_end.subject, assoc.tail_end.subject) 159 160 assert len(solver._constraints) == 14, len(solver._constraints) 161 162 tx = transaction.Transaction() 163 164 assoc.unlink() 165 166 tx.commit() 167 168 assert assoc.canvas is None 169 assert assoc.subject is None 170 assert assoc.head_end.subject is None 171 assert assoc.tail_end.subject is None 172 assert assoc.head.connected_to is None 173 assert assoc.tail.connected_to is None 174 175 assert undo_manager.can_undo() 176 177 print 178 print '-' * 80 179 print 180 181 undo_manager.undo_transaction() 182 183 print 184 print '-' * 80 185 print 186 187 assert not undo_manager.can_undo() 188 189 assert assoc.canvas 190 assert assoc.subject is assoc_subject 191 assert assoc.head_end.subject 192 assert assoc.tail_end.subject 193 194 assert len(solver._constraints) == 14, len(solver._constraints) 195 assert assoc.head.connected_to is classItem1, assoc.head.connected_to 196 assert assoc.tail.connected_to is classItem2, assoc.head.connected_to 197 125 198 126 199 if __name__ == '__main__':
