95 |
|
|
96 |
class SelectArea(AbstractContextController): |
class SelectArea(AbstractContextController): |
97 |
def isChangeable(self): return 0 |
def isChangeable(self): return 0 |
98 |
def tryFast(self): return 0 |
def tryFast(self): return 1 |
99 |
def controlPoint(self, x, y, scale): |
def controlPoint(self, x, y, scale): |
100 |
if dbg: self.context.states.p() |
if dbg: self.context.states.p() |
101 |
xy = self.obj.getXYHit(self.oldVS, x,y) |
xy = self.obj.getXYHit(self.oldVS, x,y) |
102 |
oldXY = self.context.states.getPressPans() |
oldXY = self.context.states.getPressPans() |
103 |
self.context.selection.setArea(oldXY[0], oldXY[1], xy[0], xy[1]) |
self.context.selection.setArea(oldXY[0], oldXY[1], xy[0], xy[1]) |
104 |
|
self.obj.chgFast(self.oldVS) |
105 |
|
|
106 |
####### Dispatcher for plane events etc. |
####### Dispatcher for plane events etc. |
107 |
|
|
125 |
self.context.states.setPressPans(xy[0], xy[1]) |
self.context.states.setPressPans(xy[0], xy[1]) |
126 |
if dbg: self.context.states.p() |
if dbg: self.context.states.p() |
127 |
|
|
128 |
|
### Get node on plane if any |
129 |
if dbg: p('event', ev) |
if dbg: p('event', ev) |
130 |
obj = main.getNodeOnPlane(vs, ev.getX(), ev.getY()) |
obj = main.getNodeOnPlane(vs, ev.getX(), ev.getY()) |
131 |
if dbg: p(obj) |
if dbg: p(obj) |
132 |
|
|
|
self.context.selection.setCurrentPlane(main.getPlane()) |
|
133 |
|
|
134 |
# Special case if user has pressed 'Ctrl' |
### Set selection plane |
135 |
|
v = main.getView2D() |
136 |
|
while v != None: |
137 |
|
if isinstance(v, ff.view.AreaSelectingView2D): |
138 |
|
v.setCurrentPlane(main.getPlane()) |
139 |
|
break |
140 |
|
v = v.getChildView2D() |
141 |
|
|
142 |
|
#### Special case if user has pressed 'Ctrl' |
143 |
if self.context.states.hasCtrl(): |
if self.context.states.hasCtrl(): |
144 |
self.last = self.c |
self.last = self.c |
145 |
self.args = main |
self.args = main |
150 |
self.args = [main, obj, self.graph, self.pp] |
self.args = [main, obj, self.graph, self.pp] |
151 |
return self.p.handleEvent(self.args, ev, vs) |
return self.p.handleEvent(self.args, ev, vs) |
152 |
|
|
153 |
# Drag if something under mouse pointer is accursed! |
### Drag if something under mouse pointer is accursed! |
154 |
if obj != None and self.p.hasBinding(ev) and self.context.isAccursed(obj): |
if obj != None and self.p.hasBinding(ev) and self.context.isAccursed(obj): |
155 |
self.last = self.p |
self.last = self.p |
156 |
self.args = [main, obj, self.graph, self.pp] |
self.args = [main, obj, self.graph, self.pp] |
161 |
if 0 and ev.getID() != ev.MOUSE_PRESSED and not self.last.hasPressState(): |
if 0 and ev.getID() != ev.MOUSE_PRESSED and not self.last.hasPressState(): |
162 |
self.removePressState() |
self.removePressState() |
163 |
self.last.setPressStateByForce(ev) |
self.last.setPressStateByForce(ev) |
164 |
raise 'set press state by force - should not happen', ev |
raise 'set press state by force - should not happen!', ev |
165 |
return self.last.handleEvent(self.args, ev, vs) |
return self.last.handleEvent(self.args, ev, vs) |
166 |
def removePressState(self): |
def removePressState(self): |
167 |
for c in self.all: |
for c in self.all: |