265 |
|
|
266 |
def mouse(self, ev, oldvs): |
def mouse(self, ev, oldvs): |
267 |
if dbg: pa(ev) |
if dbg: pa(ev) |
268 |
if ev.getID() == ev.MOUSE_WHEEL: |
if 0 and ev.getID() == ev.MOUSE_WHEEL: |
269 |
print "WHEEL" |
pa("WHEEL") |
270 |
r = ev.getWheelRotation() |
r = ev.getWheelRotation() |
271 |
self.split -= .03 * r |
self.split -= .03 * r |
272 |
self._doset(oldvs) |
self._doset(oldvs) |
322 |
def __init__(self): |
def __init__(self): |
323 |
vob.buoy.buoymanager.MultiBuoyManager.__init__(self, |
vob.buoy.buoymanager.MultiBuoyManager.__init__(self, |
324 |
[mainNode, mainNode2], [ppconnector, tconnector], |
[mainNode, mainNode2], [ppconnector, tconnector], |
325 |
DoubleGeometer(self), context) |
DoubleGeometer(self), |
326 |
|
FenPDFActions(context, 2), context) |
327 |
|
w.setCursor('default') |
328 |
|
|
329 |
|
class AbstractController(ff.util.ControlBinding.Controller): |
330 |
|
def controlPoint(self, x,y,scale): pass |
331 |
|
def change(self, x,y): pass |
332 |
|
def set(self, obj, oldVS): |
333 |
|
self.obj = obj |
334 |
|
self.oldVS = oldVS |
335 |
|
|
336 |
|
class MovePanFast(AbstractController): |
337 |
|
def isChangeAble(self): return 1 |
338 |
|
def change(self, x, y): |
339 |
|
f = self.obj.getFocus() |
340 |
|
fX, fY = f.getPanX(), f.getPanY() |
341 |
|
f.setPan( (fX-x)/f.getZoom(),(fY-y)/f.getZoom()) |
342 |
|
self.obj.chgFast(self.oldVS) |
343 |
|
|
344 |
|
class MovePanSlow(AbstractController): |
345 |
|
def isChangeAble(self): return 0 |
346 |
|
def controlPoint(self, x, y, scale): |
347 |
|
self.obj.moveToPoint(int(x),int(y), self.oldVS) |
348 |
|
|
349 |
|
class FenPDFActions: |
350 |
|
def __init__(self, context, mainNodes): |
351 |
|
self.context = context |
352 |
|
context = context |
353 |
|
self.context.initMainNodes(mainNodes) |
354 |
|
self.lastIndex = 0 |
355 |
|
|
356 |
|
self.controlMains = ff.util.ControlBinding() |
357 |
|
c = self.controlMains |
358 |
|
c.add(MovePanFast(), -1, 'wheel', 7,1) |
359 |
|
c.add(MovePanFast(), 1, "drag", 1.4, 1) |
360 |
|
c.add(MovePanSlow(), 1, "click", 1, 1) |
361 |
|
# c.dbg=1 |
362 |
|
self.controls = [ self.controlMains ] |
363 |
|
|
364 |
|
def key(self, mngr, key): |
365 |
|
index = self.lastIndex |
366 |
|
self.context.setMainNodeIndex(index) |
367 |
|
mngr.singles[index].mainNode.keystroke(key) |
368 |
|
vob.AbstractUpdateManager.chg() |
369 |
|
|
370 |
|
def mouse(self, mngr, ev): |
371 |
|
# pa(ev) |
372 |
|
|
373 |
|
if hasattr(mngr.geometer, 'mouse') and \ |
374 |
|
mngr.geometer.mouse(ev, mngr.vs): |
375 |
|
return |
376 |
|
x, y = ev.getX(), ev.getY() |
377 |
|
cs = mngr.vs.getCSAt(0, x, y, None) |
378 |
|
|
379 |
|
if ev.getID() == ev.MOUSE_RELEASED: |
380 |
|
w.setCursor('default') |
381 |
|
for ctrl in self.controls: |
382 |
|
ctrl.removePressState() |
383 |
|
return |
384 |
|
if ev.getID() == ev.MOUSE_PRESSED: |
385 |
|
self.oldEv = ev |
386 |
|
|
387 |
|
### If there exist a buoy jump over there |
388 |
|
for single in mngr.singles: |
389 |
|
link = single.cs.get(cs, None) |
390 |
|
if link != None: |
391 |
|
# print "IN CS: ",cs, link |
392 |
|
if hasattr(mngr.geometer, 'buoyMouse') and \ |
393 |
|
mngr.geometer.buoyMouse(mngr, ev, single, link): |
394 |
|
return |
395 |
|
|
396 |
|
if ev.getID() != ev.MOUSE_CLICKED: |
397 |
|
return |
398 |
|
single.followLink(link) |
399 |
|
vob.AbstractUpdateManager.chg() |
400 |
|
return |
401 |
|
|
402 |
|
### Fall through if no link - need main node |
403 |
|
for i in range(0, len(mngr.singles)): |
404 |
|
if mngr.singles[i].mainNode.isHitInsidePlane(x,y,mngr.vs): |
405 |
|
self.context.setMainNodeIndex(i) |
406 |
|
self.lastIndex = i |
407 |
|
|
408 |
|
if self.controlMains.handleEvent(mngr.singles[i].mainNode, ev, mngr.vs): |
409 |
|
mngr.replaceScene = mngr.vs |
410 |
|
vob.AbstractUpdateManager.setNoAnimation() |
411 |
|
vob.AbstractUpdateManager.chg() |
412 |
|
return |
413 |
|
|
414 |
|
# ...then see context |
415 |
|
if ev.getID() != ev.MOUSE_CLICKED: |
416 |
|
return |
417 |
|
self.context.setMainNodeIndex(self.lastIndex) |
418 |
|
planes = [] |
419 |
|
for single in mngr.singles: |
420 |
|
planes.append(single.getMainNode()) |
421 |
|
newPlanes = self.context.doMouse(ev, mngr.vs, planes) |
422 |
|
if newPlanes != None and planes != newPlanes: |
423 |
|
for i in range(0, len(newPlanes)): |
424 |
|
mngr.singles[i] = SingleFocusManager( |
425 |
|
newPlanes[i], |
426 |
|
mngr.connectors) |
427 |
|
vob.AbstractUpdateManager.chg() |
428 |
|
|
429 |
|
|
430 |
currentScene = Scene() |
currentScene = Scene() |
431 |
|
|
432 |
|
|
433 |
|
|
434 |
|
|
435 |
|
|
436 |
def screenshots(): |
def screenshots(): |
437 |
frame = 0 |
frame = 0 |
438 |
s = Scene() |
s = Scene() |