Changeset 1679
- Timestamp:
- 07/19/07 04:42:53 (1 year ago)
- Files:
-
- gaphor/trunk/gaphor/diagram/diagramline.py (modified) (2 diffs)
- gaphor/trunk/gaphor/plugins/diagramlayout/__init__.py (modified) (1 diff)
- gaphor/trunk/gaphor/tests/test_storage.py (modified) (1 diff)
- gaphor/trunk/gaphor/ui/diagrampainters.py (modified) (1 diff)
- gaphor/trunk/gaphor/ui/diagramtab.py (modified) (2 diffs)
- gaphor/trunk/gaphor/ui/diagramtools.py (modified) (15 diffs)
- gaphor/trunk/gaphor/ui/groupingtools.py (modified) (3 diffs)
- gaphor/trunk/gaphor/ui/tests/test_handletool.py (modified) (11 diffs)
- gaphor/trunk/setup.py (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
gaphor/trunk/gaphor/diagram/diagramline.py
r1570 r1679 114 114 h = self.head 115 115 116 x, y = self.canvas.get_matrix_i2 w(self).transform_point(h.x, h.y)117 x, y = self.canvas.get_matrix_ w2i(self._load_head_connection).transform_point(x, y)116 x, y = self.canvas.get_matrix_i2c(self).transform_point(h.x, h.y) 117 x, y = self.canvas.get_matrix_c2i(self._load_head_connection).transform_point(x, y) 118 118 adapter.connect(h, x, y) 119 119 del self._load_head_connection … … 124 124 h = self.tail 125 125 126 x, y = self.canvas.get_matrix_i2 w(self).transform_point(h.x, h.y)127 x, y = self.canvas.get_matrix_ w2i(self._load_tail_connection).transform_point(x, y)126 x, y = self.canvas.get_matrix_i2c(self).transform_point(h.x, h.y) 127 x, y = self.canvas.get_matrix_c2i(self._load_tail_connection).transform_point(x, y) 128 128 adapter.connect(h, x, y) 129 129 del self._load_tail_connection gaphor/trunk/gaphor/plugins/diagramlayout/__init__.py
r1548 r1679 244 244 x = item.width / 2.0 245 245 y = item.height / 2.0 246 return item.canvas.get_matrix_i2 w(item).transform_point(x, y)246 return item.canvas.get_matrix_i2c(item).transform_point(x, y) 247 247 248 248 # vim:sw=4:et gaphor/trunk/gaphor/tests/test_storage.py
r1616 r1679 211 211 c2.matrix.translate(200, 200) 212 212 diagram.canvas.update_matrix(c2) 213 assert tuple(diagram.canvas.get_matrix_i2 w(c2)) == (1, 0, 0, 1, 200, 200)213 assert tuple(diagram.canvas.get_matrix_i2c(c2)) == (1, 0, 0, 1, 200, 200) 214 214 215 215 a = diagram.create(items.AssociationItem) gaphor/trunk/gaphor/ui/diagrampainters.py
r1334 r1679 31 31 cr.save() 32 32 cr.identity_matrix() 33 m = Matrix(*view.canvas.get_matrix_i2w(item)) 34 m *= view._matrix 33 m = Matrix(*view.get_matrix_i2v(item)) 35 34 36 35 cr.set_antialias(ANTIALIAS_NONE) gaphor/trunk/gaphor/ui/diagramtab.py
r1614 r1679 3 3 4 4 import gtk 5 from cairo import Matrix 5 6 6 7 from zope import component … … 252 253 item = self.diagram.create(item_class) 253 254 assert item 254 wx, wy = view.transform_point_c2w(x + view.hadjustment.value, 255 y + view.vadjustment.value) 256 257 ix, iy = view.canvas.get_matrix_w2i(item, calculate=True).transform_point(max(0, wx), max(0, wy)) 255 inverse = Matrix(*view.matrix) 256 inverse.invert() 257 cx, cy = inverse.transform_point(x + view.hadjustment.value, 258 y + view.vadjustment.value) 259 260 ix, iy = view.canvas.get_matrix_c2i(item, calculate=True).transform_point(max(0, cx), max(0, cy)) 258 261 item.matrix.translate(ix, iy) 259 262 item.subject = element gaphor/trunk/gaphor/ui/diagramtools.py
r1591 r1679 9 9 10 10 import gtk 11 from cairo import Matrix 11 12 from zope import component 12 13 13 import gaphas14 14 from gaphas.geometry import distance_point_point, distance_point_point_fast, \ 15 15 distance_line_point, distance_rectangle_point 16 16 from gaphas.item import Line 17 from gaphas.tool import Tool, HandleTool, ItemTool, ToolChain 17 from gaphas.tool import Tool, HandleTool, PlacementTool as _PlacementTool 18 from gaphas.tool import ToolChain, HoverTool, ItemTool, RubberbandTool 19 20 18 21 19 22 from gaphor.core import inject, Transaction, transactional … … 42 45 43 46 44 def glue(self, view, item, handle, wx, wy):47 def glue(self, view, item, handle, cx, cy): 45 48 """ 46 49 Find the nearest item that the handle may connect to. … … 54 57 item: The item who's about to connect, owner of handle 55 58 handle: the handle to connect 56 wx, wy: handle position in worldcoordinates59 cx, cy: handle position in canvas coordinates 57 60 """ 58 61 canvas = view.canvas 59 cx, cy = view.transform_point_w2c(wx, wy)62 vx, vy = view.matrix.transform_point(cx, cy) 60 63 61 64 # localize methods 62 i2 w = view.canvas.get_matrix_i2w63 w2i = view.canvas.get_matrix_w2i65 i2c = view.canvas.get_matrix_i2c 66 c2i = view.canvas.get_matrix_c2i 64 67 drp = distance_rectangle_point 65 68 get_item_bounding_box = view.get_item_bounding_box 66 69 query_adapter = component.queryMultiAdapter 67 70 68 dist, _ = view.transform_distance_c2w(self.GLUE_DISTANCE, 0) 71 inverse = Matrix(*view.matrix) 72 inverse.invert() 73 dist, _ = inverse.transform_distance(self.GLUE_DISTANCE, 0) 69 74 max_dist = dist 70 75 glue_pos_w = (0, 0) … … 75 80 76 81 b = get_item_bounding_box(i) 77 if drp(b, ( cx, cy)) >= max_dist:82 if drp(b, (vx, vy)) >= max_dist: 78 83 continue 79 84 80 85 adapter = query_adapter((i, item), IConnect) 81 86 if adapter: 82 x, y = w2i(i).transform_point(wx, wy)87 x, y = c2i(i).transform_point(cx, cy) 83 88 pos = adapter.glue(handle, x, y) 84 89 self._adapter = adapter … … 87 92 if d <= dist: 88 93 dist = d 89 glue_pos_w = i2 w(i).transform_point(*pos)94 glue_pos_w = i2c(i).transform_point(*pos) 90 95 glue_item = i 91 96 92 97 if dist < max_dist: 93 x, y = w2i(item).transform_point(*glue_pos_w)98 x, y = c2i(item).transform_point(*glue_pos_w) 94 99 handle.x = x 95 100 handle.y = y … … 99 104 return glue_item 100 105 101 def connect(self, view, item, handle, wx, wy):106 def connect(self, view, item, handle, cx, cy): 102 107 """ 103 108 Find an item near @handle that @item can connect to and connect. … … 109 114 connected = False 110 115 try: 111 glue_item = self.glue(view, item, handle, wx, wy)116 glue_item = self.glue(view, item, handle, cx, cy) 112 117 113 118 if glue_item: 114 x, y = view.canvas.get_matrix_ w2i(glue_item).transform_point(wx, wy)119 x, y = view.canvas.get_matrix_c2i(glue_item).transform_point(cx, cy) 115 120 self._adapter.connect(handle, x, y) 116 121 … … 147 152 if item and item is view.focused_item and isinstance(item, Line): 148 153 h = item.handles() 149 x, y = context.view. transform_point_c2i(item,event.x, event.y)154 x, y = context.view.get_matrix_v2i(item).transform_point(event.x, event.y) 150 155 for h1, h2 in zip(h[:-1], h[1:]): 151 cx = (h1.x + h2.x) / 2156 vx = (h1.x + h2.x) / 2 152 157 cy = (h1.y + h2.y) / 2 153 158 if distance_point_point_fast((x,y), (cx, cy)) <= 4: … … 230 235 # Could not adapt to IEditor 231 236 return False 232 x, y = view. transform_point_c2i(item,event.x, event.y)237 x, y = view.get_matrix_v2i(item).transform_point(event.x, event.y) 233 238 if editor.is_editable(x, y): 234 239 text = editor.get_text() … … 249 254 250 255 251 class PlacementTool( gaphas.tool.PlacementTool):256 class PlacementTool(_PlacementTool): 252 257 """ 253 258 PlacementTool is used to place items on the canvas. … … 259 264 that is displayed on the diagram. 260 265 """ 261 gaphas.tool.PlacementTool.__init__(self, factory=item_factory,266 _PlacementTool.__init__(self, factory=item_factory, 262 267 handle_tool=ConnectHandleTool(), 263 268 handle_index=handle_index) … … 269 274 view = context.view 270 275 view.unselect_all() 271 if gaphas.tool.PlacementTool.on_button_press(self, context, event):276 if _PlacementTool.on_button_press(self, context, event): 272 277 try: 273 278 opposite = self.new_item.opposite(self.new_item.handles()[self._handle_index]) … … 277 282 # Connect opposite handle first, using the HandleTool's 278 283 # mechanisms 279 wx, wy = view.canvas.get_matrix_i2w(self.new_item, calculate=True).transform_point(opposite.x, opposite.y)280 item = self.handle_tool.glue(view, self.new_item, opposite, wx, wy)284 cx, cy = view.canvas.get_matrix_i2c(self.new_item, calculate=True).transform_point(opposite.x, opposite.y) 285 item = self.handle_tool.glue(view, self.new_item, opposite, cx, cy) 281 286 if item: 282 self.handle_tool.connect(view, self.new_item, opposite, wx, wy)287 self.handle_tool.connect(view, self.new_item, opposite, cx, cy) 283 288 return True 284 289 return False … … 288 293 if self.after_handler: 289 294 self.after_handler() 290 return gaphas.tool.PlacementTool.on_button_release(self, context, event)295 return _PlacementTool.on_button_release(self, context, event) 291 296 finally: 292 297 self._tx.commit() … … 328 333 finally: 329 334 tx.commit() 330 331 332 from gaphas.tool import ToolChain, HoverTool, ItemTool, RubberbandTool333 335 334 336 gaphor/trunk/gaphor/ui/groupingtools.py
r1601 r1679 96 96 view = context.view 97 97 # get item position through parent world 98 x, y = view.canvas.get_matrix_ w2i(self._parent).transform_point(x, y)98 x, y = view.canvas.get_matrix_c2i(self._parent).transform_point(x, y) 99 99 item.matrix.translate(x, y) 100 100 … … 170 170 171 171 # reset item's position 172 px, py = canvas.get_matrix_ w2i(parent).transform_point(0, 0)172 px, py = canvas.get_matrix_c2i(parent).transform_point(0, 0) 173 173 item.matrix.translate(-px, -py) 174 174 … … 183 183 184 184 # reset item's position 185 x, y = canvas.get_matrix_i2 w(over).transform_point(0, 0)185 x, y = canvas.get_matrix_i2c(over).transform_point(0, 0) 186 186 item.matrix.translate(-x, -y) 187 187 gaphor/trunk/gaphor/ui/tests/test_handletool.py
r1616 r1679 47 47 tool.glue(view, line, handle, 45, 48) 48 48 49 self.assertEquals((45, 50), view.canvas.get_matrix_i2 w(line).transform_point(handle.x, handle.y))49 self.assertEquals((45, 50), view.canvas.get_matrix_i2c(line).transform_point(handle.x, handle.y)) 50 50 51 51 handle.x, handle.y = 0, 0 52 52 tool.connect(view, line, handle, 45, 48) 53 self.assertEquals((45, 50), view.canvas.get_matrix_i2 w(line).transform_point(handle.x, handle.y))53 self.assertEquals((45, 50), view.canvas.get_matrix_i2c(line).transform_point(handle.x, handle.y)) 54 54 assert handle.connected_to is comment, handle.connected_to 55 55 assert handle._connect_constraint is not None … … 73 73 actor.matrix.translate(200, 200) 74 74 diagram.canvas.update_matrix(actor) 75 print diagram.canvas.get_matrix_i2 w(actor), actor.matrix75 print diagram.canvas.get_matrix_i2c(actor), actor.matrix 76 76 assert actor.height == 60, actor.height 77 77 assert actor.width == 38, actor.width … … 89 89 handle.x, handle.y = 0, 0 90 90 tool.connect(view, line, handle, 45, 48) 91 self.assertEquals((45, 50), view.canvas.get_matrix_i2 w(line).transform_point(handle.x, handle.y))91 self.assertEquals((45, 50), view.canvas.get_matrix_i2c(line).transform_point(handle.x, handle.y)) 92 92 assert handle.connected_to is comment, handle.connected_to 93 93 assert handle._connect_constraint is not None … … 101 101 assert tool.glue(view, line, handle, 200, 200) is actor 102 102 tool.connect(view, line, handle, 200, 200) 103 self.assertEquals((200, 200), view.canvas.get_matrix_i2 w(line).transform_point(handle.x, handle.y))103 self.assertEquals((200, 200), view.canvas.get_matrix_i2c(line).transform_point(handle.x, handle.y)) 104 104 assert handle.connected_to is actor, handle.connected_to 105 105 assert handle._connect_constraint is not None … … 112 112 tool.disconnect(view, line, handle) 113 113 114 self.assertEquals((200, 200), view.canvas.get_matrix_i2 w(line).transform_point(handle.x, handle.y))114 self.assertEquals((200, 200), view.canvas.get_matrix_i2c(line).transform_point(handle.x, handle.y)) 115 115 assert handle.connected_to is actor, handle.connected_to 116 116 assert handle._connect_constraint is None … … 124 124 tool.connect(view, line, handle, 500, 500) 125 125 126 self.assertEquals((200, 200), view.canvas.get_matrix_i2 w(line).transform_point(handle.x, handle.y))126 self.assertEquals((200, 200), view.canvas.get_matrix_i2c(line).transform_point(handle.x, handle.y)) 127 127 assert handle.connected_to is None, handle.connected_to 128 128 assert handle._connect_constraint is None … … 141 141 actor.matrix.translate(200, 200) 142 142 diagram.canvas.update_matrix(actor) 143 print diagram.canvas.get_matrix_i2 w(actor), actor.matrix143 print diagram.canvas.get_matrix_i2c(actor), actor.matrix 144 144 assert actor.height == 60, actor.height 145 145 assert actor.width == 38, actor.width … … 160 160 161 161 handle = line.handles()[0] 162 self.assertEquals((0, 0), view.canvas.get_matrix_i2 w(line).transform_point(handle.x, handle.y))162 self.assertEquals((0, 0), view.canvas.get_matrix_i2c(line).transform_point(handle.x, handle.y)) 163 163 assert handle.connected_to is comment, 'c =' + str(handle.connected_to) 164 164 assert handle._connect_constraint is not None … … 171 171 172 172 handle = line.handles()[-1] 173 self.assertEquals((200, 200), view.canvas.get_matrix_i2 w(line).transform_point(handle.x, handle.y))173 self.assertEquals((200, 200), view.canvas.get_matrix_i2c(line).transform_point(handle.x, handle.y)) 174 174 assert handle.connected_to is actor 175 175 assert handle._connect_constraint is not None … … 183 183 184 184 handle = line.handles()[-1] 185 self.assertEquals((200, 200), view.canvas.get_matrix_i2 w(line).transform_point(handle.x, handle.y))185 self.assertEquals((200, 200), view.canvas.get_matrix_i2c(line).transform_point(handle.x, handle.y)) 186 186 assert handle.connected_to is actor 187 187 assert handle._connect_constraint is not None … … 195 195 196 196 handle = line.handles()[-1] 197 self.assertEquals((500, 500), view.canvas.get_matrix_i2 w(line).transform_point(handle.x, handle.y))197 self.assertEquals((500, 500), view.canvas.get_matrix_i2c(line).transform_point(handle.x, handle.y)) 198 198 assert handle.connected_to is None 199 199 assert handle._connect_constraint is None gaphor/trunk/setup.py
r1655 r1679 117 117 # 'PyGTK >= 2.8.0', - Exclude, since it will not build anyway 118 118 'decorator >= 2.0.1', 119 'gaphas >= 0. 2.0',119 'gaphas >= 0.3.0.dev-r1677', 120 120 'zope.component >= 3.3.0', # - won't compile on windows. 121 121 # Add dependency on zope.testing to work around bug in zope.component
