Changeset 1559
- Timestamp:
- 07/02/07 23:53:34 (1 year ago)
- Files:
-
- gaphor/trunk/gaphor/UML/diagram.py (modified) (1 diff)
- gaphor/trunk/gaphor/adapters/grouping.py (modified) (1 diff)
- gaphor/trunk/gaphor/diagram/classifier.py (modified) (2 diffs)
- gaphor/trunk/gaphor/diagram/diagramitem.py (modified) (4 diffs)
- gaphor/trunk/gaphor/diagram/diagramline.py (modified) (3 diffs)
- gaphor/trunk/gaphor/diagram/interface.py (modified) (1 diff)
- gaphor/trunk/gaphor/storage.py (modified) (12 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
gaphor/trunk/gaphor/UML/diagram.py
r1502 r1559 85 85 obj.subject = subject 86 86 self.canvas.add(obj, parent) 87 for kid in obj._items:88 self.canvas.add(kid, parent=obj)87 # for kid in obj._items: 88 # self.canvas.add(kid, parent=obj) 89 89 return obj 90 90 gaphor/trunk/gaphor/adapters/grouping.py
r1502 r1559 81 81 def group(self): 82 82 self.parent.subject.lifeline = self.item.subject 83 self.parent.add_item(self.item) 83 self.parent.canvas.reparent(self.item, self.parent) 84 #self.parent.add_item(self.item) 84 85 85 86 gaphor/trunk/gaphor/diagram/classifier.py
r1470 r1559 179 179 self._drawing_style = style 180 180 self.request_update() 181 # if self.canvas: 182 # request_resolve = self.canvas.solver.request_resolve 183 # for h in self._handles: 184 # request_resolve(h.x) 185 # request_resolve(h.y) 181 186 182 187 if self._drawing_style == self.DRAW_COMPARTMENT: … … 267 272 def pre_update_compartment_icon(self, context): 268 273 self.pre_update_compartment(context) 274 # icon width plus right margin 269 275 self.min_width = max(self.min_width, 270 self._header_size[0] + self.ICON_WIDTH + 10) # icon width plus right margin276 self._header_size[0] + self.ICON_WIDTH + 10) 271 277 272 278 def pre_update_icon(self, context): gaphor/trunk/gaphor/diagram/diagramitem.py
r1514 r1559 282 282 self._persistent_props = set() 283 283 284 self._items = []285 284 286 285 id = property(lambda self: self._id, doc='Id') 287 288 289 def add_item(self, item):290 self._items.append(item)291 286 292 287 … … 309 304 save_func(p, getattr(self, p.replace('-', '_')), reference=True) 310 305 311 parent = self.canvas.get_parent(self)312 if parent:313 save_func('parent', parent, reference=True)314 315 # save kids316 if self._items:317 save_func('items', self._items)318 319 306 320 307 def load(self, name, value): 321 self._parent = None # temporary value to be killed in postload322 308 if name == 'subject': 323 309 type(self).subject.load(self, value) 324 elif name == 'items':325 self._items.append(value)326 310 else: 327 311 #log.debug('Setting unknown property "%s" -> "%s"' % (name, value)) … … 334 318 if self.subject: 335 319 self.on_subject_notify(type(self).subject) 336 for item in self._items:337 self.canvas.reparent(item, self)338 assert self is self.canvas.get_parent(item)339 320 340 321 … … 357 338 """ 358 339 if self.canvas: 359 self.canvas.remove(self) 340 try: 341 self.canvas.remove(self) 342 except KeyError: 343 # Canvas was already removed 344 pass 360 345 self.subject = None 361 346 super(DiagramItem, self).unlink() gaphor/trunk/gaphor/diagram/diagramline.py
r1536 r1559 106 106 # lazy and are resolved by the constraint solver rather than set 107 107 # directly. 108 self.canvas.update_matrix(self)109 self.canvas.solver.solve()108 #self.canvas.update_matrix(self) 109 #self.canvas.solver.solve() 110 110 111 111 if hasattr(self, '_load_head_connection'): … … 114 114 h = self.head 115 115 116 x, y = self.canvas.get_matrix_i2w(self , calculate=True).transform_point(h.x, h.y)117 x, y = self.canvas.get_matrix_w2i(self._load_head_connection , calculate=True).transform_point(x, y)116 x, y = self.canvas.get_matrix_i2w(self).transform_point(h.x, h.y) 117 x, y = self.canvas.get_matrix_w2i(self._load_head_connection).transform_point(x, y) 118 118 adapter.connect(h, x, y) 119 119 del self._load_head_connection 120 120 121 if hasattr(self, '_load_tail_connection'): 121 122 adapter = component.queryMultiAdapter((self._load_tail_connection, self), IConnect) … … 123 124 h = self.tail 124 125 125 x, y = self.canvas.get_matrix_i2w(self , calculate=True).transform_point(h.x, h.y)126 x, y = self.canvas.get_matrix_w2i(self._load_tail_connection , calculate=True).transform_point(x, y)126 x, y = self.canvas.get_matrix_i2w(self).transform_point(h.x, h.y) 127 x, y = self.canvas.get_matrix_w2i(self._load_tail_connection).transform_point(x, y) 127 128 adapter.connect(h, x, y) 128 129 del self._load_tail_connection gaphor/trunk/gaphor/diagram/interface.py
r1505 r1559 121 121 super(InterfaceItem, self).pre_update_icon(context) 122 122 123 124 123 def draw_icon(self, context): 125 124 cr = context.cairo gaphor/trunk/gaphor/storage.py
r1502 r1559 39 39 40 40 def save_generator(writer, factory): 41 """Save the current model using @writer, which is a 41 """ 42 Save the current model using @writer, which is a 42 43 gaphor.misc.xmlwriter.XMLWriter instance (or at least a SAX serializer 43 44 with CDATA support). 44 45 """ 45 # Make bool work for Python 2.246 bool_ = type(bool(0))47 46 48 47 def save_reference(name, value): 49 """Save a value as a reference to another element in the model. 48 """ 49 Save a value as a reference to another element in the model. 50 50 This applies to both UML as well as canvas items. 51 51 """ … … 58 58 59 59 def save_collection(name, value): 60 """Save a list of references. 60 """ 61 Save a list of references. 61 62 """ 62 63 if len(value) > 0: … … 72 73 73 74 def save_value(name, value): 74 """Save a value (attribute). 75 """ 76 Save a value (attribute). 75 77 If the value is a string, it is saves as a CDATA block. 76 78 """ … … 82 84 writer.characters(value) 83 85 writer.endCDATA() 84 elif isinstance(value, bool _):86 elif isinstance(value, bool): 85 87 # Write booleans as 0/1. 86 88 writer.characters(str(int(value))) … … 91 93 92 94 def save_element(name, value): 93 """Save attributes and references from items in the gaphor.UML module. 95 """ 96 Save attributes and references from items in the gaphor.UML module. 94 97 A value may be a primitive (string, int), a gaphor.UML.collection 95 98 (which contains a list of references to other UML elements) or a … … 109 112 110 113 def save_canvasitem(name, value, reference=False): 111 """Save attributes and references in a gaphor.diagram.* object. 114 """ 115 Save attributes and references in a gaphor.diagram.* object. 112 116 The extra attribute reference can be used to force UML 113 117 """ … … 115 119 if reference: 116 120 save_reference(name, value) 117 elif isinstance(value, (UML.collection, list)):121 elif isinstance(value, UML.collection): 118 122 save_collection(name, value) 119 123 elif isinstance(value, gaphas.Item): … … 121 125 'type': value.__class__.__name__ }) 122 126 value.save(save_canvasitem) 127 128 # save subitems 129 for child in value.canvas.get_children(value): 130 save_canvasitem(None, child) 131 # writer.startElement('item', { 'id': child.id, 132 # 'type': kid.__class__.__name__ }) 133 # child.save(save_canvasitem) 134 # writer.endElement('item') 135 123 136 writer.endElement('item') 124 125 # save subitems126 for kid in value._items:127 writer.startElement('item', {128 'id': kid.id,129 'type': kid.__class__.__name__ })130 kid.save(save_canvasitem)131 writer.endElement('item')132 137 133 138 elif isinstance(value, UML.Element): … … 163 168 164 169 def load_elements_generator(elements, factory, gaphor_version=None): 165 """Load a file and create a model if possible. 170 """ 171 Load a file and create a model if possible. 166 172 Exceptions: IOError, ValueError. 167 173 """ … … 273 279 # no need for special function. 274 280 281 for d in factory.select(lambda e: isinstance(e, UML.Diagram)): 282 # update_now() is implicitly called when lock is released 283 d.canvas.block_updates = False 284 275 285 # do a postload: 276 286 for id, elem in elements.items(): … … 278 288 elem.element.postload() 279 289 280 # Unlock canvas's for updates281 for id, elem in elements.items():282 if isinstance(elem, parser.element) and elem.canvas:283 elem.element.canvas.block_updates = False284 285 290 factory.notify_model() 286 291 287 292 288 293 def load(filename, factory, status_queue=None): 289 """Load a file and create a model if possible. 294 """ 295 Load a file and create a model if possible. 290 296 Optionally, a status queue function can be given, to which the 291 297 progress is written (as status_queue(progress)). … … 297 303 298 304 def load_generator(filename, factory): 299 """Load a file and create a model if possible. 305 """ 306 Load a file and create a model if possible. 300 307 This function is a generator. It will yield values from 0 to 100 (%) 301 308 to indicate its progression.
