OLD | NEW |
(Empty) | |
| 1 # Copyright 2015 The Chromium Authors. All rights reserved. |
| 2 # Use of this source code is governed by a BSD-style license that can be |
| 3 # found in the LICENSE file. |
| 4 |
| 5 from catapult_base.refactor import snippet |
| 6 |
| 7 |
| 8 class AnnotatedSymbol(snippet.Symbol): |
| 9 def __init__(self, symbol_type, children): |
| 10 super(AnnotatedSymbol, self).__init__(symbol_type, children) |
| 11 self._modified = False |
| 12 |
| 13 @property |
| 14 def modified(self): |
| 15 if self._modified: |
| 16 return True |
| 17 return super(AnnotatedSymbol, self).modified |
| 18 |
| 19 def __setattr__(self, name, value): |
| 20 if (hasattr(self.__class__, name) and |
| 21 isinstance(getattr(self.__class__, name), property)): |
| 22 self._modified = True |
| 23 return super(AnnotatedSymbol, self).__setattr__(name, value) |
| 24 |
| 25 def Cut(self, child): |
| 26 for i in xrange(len(self._children)): |
| 27 if self._children[i] == child: |
| 28 self._modified = True |
| 29 del self._children[i] |
| 30 break |
| 31 else: |
| 32 raise ValueError('%s is not in %s.' % (child, self)) |
| 33 |
| 34 def Paste(self, child): |
| 35 self._modified = True |
| 36 self._children.append(child) |
OLD | NEW |