Changeset 1068
- Timestamp:
- 11/07/06 23:34:37 (2 years ago)
- Files:
-
- gaphor/branches/new-canvas/gaphor/UML/diagram.py (modified) (3 diffs)
- gaphor/branches/new-canvas/gaphor/diagram/diagramitem.py (modified) (1 diff)
- gaphor/branches/new-canvas/gaphor/diagram/tool.py (modified) (5 diffs)
- gaphor/branches/new-canvas/gaphor/storage.py (modified) (10 diffs)
- gaphor/branches/new-canvas/gaphor/tests/test_storage.py (modified) (5 diffs)
- gaphor/branches/new-canvas/gaphor/ui/mainwindow.py (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
gaphor/branches/new-canvas/gaphor/UML/diagram.py
r1019 r1068 1 1 # vim: sw=4 2 '''diagram.py 2 """ 3 3 This module contains a model elements (!) Diagram which is the abstract 4 representation of a UML diagram. Diagrams can be visualized and edited.''' 4 representation of a UML diagram. Diagrams can be visualized and edited. 5 """ 5 6 6 7 __author__ = 'Arjan Molenaar' … … 17 18 Esp. load and save functionallity. 18 19 """ 19 # TODO: save or ignore properties coming from diacanvas.Canvas20 #_savable_canvas_properties = [ 'extents', 'static_extents',21 # 'snap_to_grid', 'grid_int_x', 'grid_int_y', 'grid_ofs_x',22 # 'grid_ofs_y', 'grid_color', 'grid_bg' ]23 20 24 21 def __init__(self, diagram): 25 22 super(DiagramCanvas, self).__init__() 26 23 self._diagram = diagram 24 self._block_updates = False 27 25 28 diagram = property(lambda d: d._diagram) 26 diagram = property(lambda s: s._diagram) 27 28 def _set_block_updates(self, block): 29 self._block_updates = block 30 if not block: 31 self.update_now() 32 33 block_updates = property(lambda s: s._block_updates, _set_block_updates) 34 35 def update_now(self): 36 if self._block_updates: 37 log.debug('Update blocked for canvas %s' % self) 38 return 39 super(DiagramCanvas, self).update_now() 29 40 30 41 def save(self, save_func): … … 37 48 38 49 def postload(self): 39 self. update_now()50 self.block_updates = False 40 51 41 52 def select(self, expression=lambda e: True): gaphor/branches/new-canvas/gaphor/diagram/diagramitem.py
r1057 r1068 78 78 def load(self, name, value): 79 79 if name == 'subject': 80 #print'loading subject', value80 print self, 'loading subject', value 81 81 type(self).subject.load(self, value) 82 print self, 'subject =', self.subject 82 83 else: 83 84 #log.debug('Setting unknown property "%s" -> "%s"' % (name, value)) 84 85 try: 85 se lf.set_property(name, eval(value))86 setattr(self, name, eval(value)) 86 87 except: 87 88 log.warning('%s has no property named %s (value %s)' % (self, name, value)) gaphor/branches/new-canvas/gaphor/diagram/tool.py
r1023 r1068 74 74 is called for (glued_item, item). 75 75 """ 76 #print 'handle connect'77 76 glue_item = self.glue(view, item, handle, wx, wy) 78 77 79 78 if glue_item: 80 #print 'handle connect', glue_item81 79 adapter = component.queryMultiAdapter((glue_item, item), IConnect) 82 80 x, y = view.canvas.get_matrix_w2i(glue_item).transform_point(wx, wy) 83 #print 'connecting:', adapter84 81 adapter.connect(handle, x, y) 85 82 … … 124 121 #window.move(int(x), int(y)) 125 122 cursor_pos = view.get_toplevel().get_screen().get_display().get_pointer() 126 #print 'cursor_pos', cursor_pos127 123 window.move(cursor_pos[1], cursor_pos[2]) 128 124 window.connect('focus-out-event', self._on_focus_out_event, … … 163 159 #self. 164 160 if event.keyval == gtk.keysyms.Return: 165 p rint 'Enter!'161 pass 166 162 #widget.get_toplevel().destroy() 167 163 elif event.keyval == gtk.keysyms.Escape: 168 print 'Escape!'169 164 widget.get_toplevel().destroy() 170 165 … … 191 186 view = context.view #resource('MainWindow').get_current_diagram_view() 192 187 view.unselect_all() 193 #print 'Gaphor: on_button_press event: %s' % self.__dict__194 188 get_undo_manager().begin_transaction() 195 189 if gaphas.tool.PlacementTool.on_button_press(self, context, event): … … 212 206 pool.get_action('Pointer').active = True 213 207 get_undo_manager().commit_transaction() 214 #print 'Gaphor: do_button_release event: %s' % self.__dict__215 208 return gaphas.tool.PlacementTool.on_button_release(self, context, event) 216 209 gaphor/branches/new-canvas/gaphor/storage.py
r1066 r1068 98 98 gaphas.Canvas (which contains canvas items). 99 99 """ 100 log.debug('saving element: %s|%s %s' % (name, value, type(value)))100 #log.debug('saving element: %s|%s %s' % (name, value, type(value))) 101 101 if isinstance (value, (UML.Element, gaphas.Item)): 102 102 save_reference(name, value) … … 114 114 The extra attribute reference can be used to force UML 115 115 """ 116 log.debug('saving canvasitem: %s|%s %s' % (name, value, type(value)))116 #log.debug('saving canvasitem: %s|%s %s' % (name, value, type(value))) 117 117 if reference: 118 118 save_reference(name, value) … … 161 161 Exceptions: IOError, ValueError. 162 162 """ 163 163 # TODO: restructure loading code, first load model, then add canvas items 164 164 log.debug(_('Loading %d elements...') % len(elements)) 165 from pprint import pprint166 pprint(elements)167 165 168 166 # The elements are iterated three times: … … 179 177 version_0_7_2(elements, factory, gaphor_version) 180 178 181 log.debug("Still have %d elements" % len(elements))179 #log.debug("Still have %d elements" % len(elements)) 182 180 183 181 # First create elements and canvas items in the factory … … 187 185 if isinstance(elem, parser.element): 188 186 cls = getattr(UML, elem.type) 189 log.debug('Creating UML element for %s (%s)' % (elem, elem.id))187 #log.debug('Creating UML element for %s (%s)' % (elem, elem.id)) 190 188 elem.element = factory.create_as(cls, id) 189 if elem.canvas: 190 elem.element.canvas.block_updates = True 191 191 elif isinstance(elem, parser.canvasitem): 192 192 cls = getattr(items, elem.type) 193 log.debug('Creating canvas item for %s (%s)' % (elem, elem.id))193 #log.debug('Creating canvas item for %s (%s)' % (elem, elem.id)) 194 194 elem.element = diagram.create_as(cls, id) 195 195 else: … … 198 198 #log.info('0% ... 33%') 199 199 200 log.debug("Still have %d elements" % len(elements))200 #log.debug("Still have %d elements" % len(elements)) 201 201 202 202 # load attributes and create references: … … 211 211 assert item in elements.values(), 'Item %s (%s) is a canvas item, but it is not in the parsed objects table' % (item, item.id) 212 212 #item.element.set_property('parent', elem.element.canvas.root) 213 elem.element.canvas.add(item.element) 214 215 # Also create nested canvas items: 213 216 if isinstance(elem, parser.canvasitem): 214 217 for item in elem.canvasitems: 215 218 assert item in elements.values(), 'Item %s (%s) is a canvas item, but it is not in the parsed objects table' % (item, item.id) 216 219 #item.element.set_property('parent', elem.element) 220 elem.element.canvas.add(item.element, parent=elem.element) 217 221 218 222 # load attributes and references: … … 295 299 for percentage in parser.parse_generator(filename, loader): 296 300 pass 297 ##if percentage:298 ##yield percentage / 2299 ##else:300 ##yield percentage301 if percentage: 302 yield percentage / 2 303 else: 304 yield percentage 301 305 elements = loader.elements 302 306 gaphor_version = loader.gaphor_version … … 315 319 for percentage in load_elements_generator(elements, factory, gaphor_version): 316 320 pass 317 ##if percentage:318 ##yield percentage / 2 + 50319 ##else:320 ##yield percentage321 if percentage: 322 yield percentage / 2 + 50 323 else: 324 yield percentage 321 325 gc.collect() 322 326 yield 100 … … 346 350 if tv.value: 347 351 for t in map(str.strip, str(tv.value).split(',')): 348 log.debug("Tagged value: %s" % t)352 #log.debug("Tagged value: %s" % t) 349 353 newtv = parser.element(generate_id(), 350 354 'LiteralSpecification') gaphor/branches/new-canvas/gaphor/tests/test_storage.py
r1066 r1068 8 8 from gaphor.misc.xmlwriter import XMLWriter 9 9 from gaphor.diagram import items 10 11 __module__ = 'test_storage' 10 12 11 13 class PseudoFile(object): … … 63 65 """Test loading of a freshly saved model. 64 66 """ 65 filename = os.tmpnam()67 filename = '%s.gaphor' % __module__ 66 68 67 69 UML.create(UML.Package) … … 89 91 """Test loading of a freshly saved model. 90 92 """ 91 filename = os.tmpnam()93 filename = '%s.gaphor' % __module__ 92 94 93 95 UML.create(UML.Package) … … 95 97 diagram.create(items.CommentItem, subject=UML.create(UML.Comment)) 96 98 diagram.create(items.ClassItem, subject=UML.create(UML.Class)) 97 99 iface = diagram.create(items.InterfaceItem, subject=UML.create(UML.Interface)) 100 iface.subject.name = 'Circus' 101 iface.matrix.translate(10, 10) 102 98 103 fd = open(filename, 'w') 99 104 storage.save(XMLWriter(fd)) … … 105 110 storage.load(filename) 106 111 107 assert len(UML.lselect()) == 4112 assert len(UML.lselect()) == 5 108 113 assert len(UML.lselect(lambda e: e.isKindOf(UML.Package))) == 1 109 114 assert len(UML.lselect(lambda e: e.isKindOf(UML.Diagram))) == 1 115 d = UML.lselect(lambda e: e.isKindOf(UML.Diagram))[0] 110 116 assert len(UML.lselect(lambda e: e.isKindOf(UML.Comment))) == 1 111 117 assert len(UML.lselect(lambda e: e.isKindOf(UML.Class))) == 1 118 assert len(UML.lselect(lambda e: e.isKindOf(UML.Interface))) == 1 119 120 iface = UML.lselect(lambda e: e.isKindOf(UML.Interface))[0] 121 assert iface.name == 'Circus' 122 assert len(iface.presentation) == 1 123 assert tuple(iface.presentation[0].matrix) == (1, 0, 0, 1, 10, 10), tuple(iface.presentation[0].matrix) 112 124 113 # TODO: check load/save of other canvas items. 125 # Check load/save of other canvas items. 126 assert len(d.canvas.get_all_items()) == 3 127 for item in d.canvas.get_all_items(): 128 assert item.subject, 'No subject for %s' % item 129 d1 = d.canvas.select(lambda e: isinstance(e, items.ClassItem))[0] 130 assert d1 131 print d1, d1.subject 114 132 115 def test_load_x_gaphor(self): 116 storage.load('x.gaphor') 117 133 # vim:sw=4:et:ai gaphor/branches/new-canvas/gaphor/ui/mainwindow.py
r1026 r1068 432 432 self._check_state(AbstractWindow.STATE_ACTIVE) 433 433 self.execute_action('OpenModelElement') 434 # Set the pointer tool as default tool. 435 self.execute_action('Pointer') 434 436 435 437 def on_view_cursor_changed(self, view):
