Changeset 976

Show
Ignore:
Timestamp:
08/10/06 13:22:09 (2 years ago)
Author:
arjanmol
Message:

--

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • gaphas/trunk/gaphas/canvas.py

    r945 r976  
    168168        return self._tree.get_children(item) 
    169169 
    170     def get_matrix_i2w(self, item): 
     170    def get_matrix_i2w(self, item, calculate=False): 
    171171        """Get the Item to World matrix for @item. 
     172 
     173        item: The item who's item-to-world transformation matrix should be 
     174              found 
     175        calculate: True will allow this function to actually calculate it, 
     176              in stead of raising an AttributeError when no matrix is present 
     177              yet. Note that out-of-date matrices are not recalculated. 
    172178        """ 
    173179        try: 
    174180            return item._canvas_matrix_i2w 
    175181        except AttributeError, e: 
    176             self.request_matrix_update(item) 
    177             raise e 
    178  
    179     def get_matrix_w2i(self, item): 
     182            if calculate: 
     183                self.update_matrix(item, recursive=False) 
     184                return item._canvas_matrix_i2w 
     185            else: 
     186                self.request_matrix_update(item) 
     187                raise e 
     188 
     189    def get_matrix_w2i(self, item, calculate=False): 
    180190        """Get the World to Item matrix for @item. 
     191        See get_matrix_i2w(). 
    181192        """ 
    182193        try: 
    183194            return item._canvas_matrix_w2i 
    184195        except AttributeError, e: 
    185             self.request_matrix_update(item) 
    186             raise e 
     196            if calculate: 
     197                self.update_matrix(item, recursive=False) 
     198                return item._canvas_matrix_w2i 
     199            else: 
     200                self.request_matrix_update(item) 
     201                raise e 
    187202 
    188203    def request_update(self, item): 
  • gaphas/trunk/gaphas/tool.py

    r970 r976  
    447447        self._handle_tool = handle_tool 
    448448        self._handle_index = handle_index 
    449         self._new_obj = None 
     449        self._new_item = None 
     450 
     451    handle_tool = property(lambda s: s._handle_tool, doc="Handle tool") 
     452    handle_index = property(lambda s: s._handle_index, 
     453                            doc="Index of handle to be used by handle_tool") 
     454    new_item = property(lambda s: s._new_item, doc="The newly created item") 
    450455 
    451456    def on_button_press(self, context, event): 
     
    453458        canvas = view.canvas 
    454459        pos = view.transform_point_c2w(event.x, event.y) 
    455         new_obj = self._factory() 
    456         canvas.add(new_obj
    457         new_obj.matrix.translate(*pos) 
    458         self._handle_tool._grabbed_handle = new_obj.handles()[self._handle_index] 
    459         self._handle_tool._grabbed_item = new_obj 
    460         self._new_obj = new_obj 
    461         view.focused_item = new_obj 
     460        new_item = self._factory() 
     461        canvas.add(new_item
     462        new_item.matrix.translate(*pos) 
     463        self._handle_tool._grabbed_handle = new_item.handles()[self._handle_index] 
     464        self._handle_tool._grabbed_item = new_item 
     465        self._new_item = new_item 
     466        view.focused_item = new_item 
    462467        context.grab() 
    463468        return True 
     
    465470    def on_button_release(self, context, event): 
    466471        context.ungrab() 
    467         if self._new_obj
     472        if self._new_item
    468473            self._handle_tool.on_button_release(context, event) 
    469474        return True 
    470475 
    471476    def on_motion_notify(self, context, event): 
    472         if self._new_obj
     477        if self._new_item
    473478            return self._handle_tool.on_motion_notify(context, event) 
    474479        else: