root/gaphor/tags/gaphor-0.3.0/gaphor/diagram/placementtool.py

Revision 225, 1.8 kB (checked in by arjanmol, 5 years ago)

*** empty log message ***

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
Line 
1
2 # vim:sw=4:et
3 import gobject
4 import diacanvas
5 import gaphor.UML as UML
6
7 class PlacementTool(diacanvas.PlacementTool):
8
9     def __init__(self, item_factory, action_id, **properties):
10         """item_factory is a callable. It is used to create a CanvasItem
11         that is displayed on the diagram.
12         """
13         diacanvas.PlacementTool.__init__(self, None, **properties)
14         self.item_factory = item_factory
15         self.action_id = action_id
16         self.is_released = False
17
18     def _create_item(self, view, event):
19         if event.button == 3:
20             return None
21
22         item = None
23
24         try:
25             item = self.item_factory()
26         except Exception, e:
27             log.error('Error while creating item: %s' % e)
28         else:
29             if self.properties and len(self.properties) > 0:
30                 try:
31                     for (k, v) in self.properties.items():
32                         item.set_property(k, v)
33                 except TypeError, e:
34                     log.error('PlacementTool: could not set property %s' % k, e)
35                
36         return item
37
38     def _grab_handle(self, view, event, item):
39         if not self.is_released:
40             diacanvas.PlacementTool._grab_handle(self, view, event, item)
41
42     def do_button_press_event(self, view, event):
43         view.unselect_all()
44         #print 'Gaphor: on_button_press_event: %s' % self.__dict__
45         view.set_tool(None)
46         return diacanvas.PlacementTool.do_button_press_event(self, view, event)
47
48     def do_button_release_event(self, view, event):
49         view.set_tool(None)
50         self.is_released = True
51         #print 'Gaphor: do_button_release_event: %s' % self.__dict__
52         #return diacanvas.PlacementTool.do_button_release_event(self, view, event)
53         return False
54
55 #gobject.type_register(PlacementTool)
56
Note: See TracBrowser for help on using the browser.