Changeset 1224
- Timestamp:
- 04/16/07 04:29:31 (2 years ago)
- Files:
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
gaphor/trunk/gaphor/data/plugins/alignment/alignment.py
r461 r1224 1 2 from gaphor.core import transactional 1 3 from gaphor.plugin import Action 2 4 5 3 6 class Alignment(Action): 7 4 8 def init(self, window): 5 9 self._window = window … … 9 13 self.sensitive = diagram_tab and len(diagram_tab.get_view().selected_items) > 0 10 14 15 @transactional 11 16 def execute(self): 12 17 view = self._window.get_current_diagram_view() 13 18 items = view.selected_items 14 19 if len(items)>1: 15 view.canvas.undo_manager.begin_transaction()16 20 self.align(items) 17 view.canvas.undo_manager.commit_transaction()18 21 19 22 def moveItemsToTarget(self, items, target_x, target_y): 20 23 for item in items: 21 24 if target_x is not None: 22 affine=list(item.item.affine) 23 x=target_x-affine[4] 25 x = target_x - item.matrix[4] 24 26 else: 25 x =027 x = 0 26 28 if target_y is not None: 27 affine=list(item.item.affine) 28 y=target_y-affine[5] 29 y = target_y - item.matrix[5] 29 30 else: 30 y=0 31 item.item.move(x,y) 31 y = 0 32 item.matrix.translate(x,y) 33 item.request_update() 32 34 33 def getXCords(self, items):34 return [item.item.affine[4] for item in items]35 36 def getYCords(self, items):37 return [item.item.affine[5] for item in items]38 39 35 def align(self, items): 40 36 pass 41 37 38 42 39 class AlignVertical(Alignment): 40 41 def getXCoords(self, items): 42 return [item.matrix[4] for item in items] 43 43 44 def align(self, items): 44 target_x=min(self.getXCo rds(items))45 target_x=min(self.getXCoords(items)) 45 46 target_y=None 46 47 self.moveItemsToTarget(items, target_x, target_y) 47 48 49 48 50 class AlignHorizontal(Alignment): 51 52 def getYCoords(self, items): 53 return [item.matrix[5] for item in items] 54 49 55 def align(self, items): 50 target_y=min(self.getYCo rds(items))56 target_y=min(self.getYCoords(items)) 51 57 target_x=None 52 58 self.moveItemsToTarget(items, target_x, target_y) 53 59 60 # vim:sw=4:et:ai
