Changeset 1224

Show
Ignore:
Timestamp:
04/16/07 04:29:31 (2 years ago)
Author:
arj..@yirdis.nl
Message:

Fixed #27. alignment works.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • gaphor/trunk/gaphor/data/plugins/alignment/alignment.py

    r461 r1224  
     1 
     2from gaphor.core import transactional 
    13from gaphor.plugin import Action 
    24 
     5 
    36class Alignment(Action): 
     7 
    48    def init(self, window): 
    59        self._window = window 
     
    913        self.sensitive = diagram_tab and len(diagram_tab.get_view().selected_items) > 0 
    1014 
     15    @transactional 
    1116    def execute(self): 
    1217        view = self._window.get_current_diagram_view() 
    1318        items = view.selected_items 
    1419        if len(items)>1: 
    15             view.canvas.undo_manager.begin_transaction() 
    1620            self.align(items) 
    17             view.canvas.undo_manager.commit_transaction() 
    1821         
    1922    def moveItemsToTarget(self, items, target_x, target_y): 
    2023        for item in items: 
    2124            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] 
    2426            else: 
    25                 x=
     27                x =
    2628            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] 
    2930            else: 
    30                 y=0 
    31             item.item.move(x,y) 
     31                y = 0 
     32            item.matrix.translate(x,y) 
     33            item.request_update() 
    3234             
    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  
    3935    def align(self, items): 
    4036        pass 
    4137 
     38 
    4239class AlignVertical(Alignment): 
     40         
     41    def getXCoords(self, items): 
     42        return [item.matrix[4] for item in items] 
     43 
    4344    def align(self, items): 
    44         target_x=min(self.getXCords(items)) 
     45        target_x=min(self.getXCoords(items)) 
    4546        target_y=None 
    4647        self.moveItemsToTarget(items, target_x, target_y) 
    4748 
     49 
    4850class AlignHorizontal(Alignment): 
     51 
     52    def getYCoords(self, items): 
     53        return [item.matrix[5] for item in items] 
     54 
    4955    def align(self, items): 
    50         target_y=min(self.getYCords(items)) 
     56        target_y=min(self.getYCoords(items)) 
    5157        target_x=None 
    5258        self.moveItemsToTarget(items, target_x, target_y) 
    5359 
     60# vim:sw=4:et:ai