[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[ff-cvs] fenfire/org/fenfire/fenpdf/events mousemenu.py
From: |
Matti Katila |
Subject: |
[ff-cvs] fenfire/org/fenfire/fenpdf/events mousemenu.py |
Date: |
Mon, 25 Aug 2003 20:26:44 -0400 |
CVSROOT: /cvsroot/fenfire
Module name: fenfire
Branch:
Changes by: Matti Katila <address@hidden> 03/08/25 20:26:44
Modified files:
org/fenfire/fenpdf/events: mousemenu.py
Log message:
startted to use new selectlsitvob. removed abomination, uses
eventStoler now
CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/fenpdf/events/mousemenu.py.diff?tr1=1.5&tr2=1.6&r1=text&r2=text
Patches:
Index: fenfire/org/fenfire/fenpdf/events/mousemenu.py
diff -u fenfire/org/fenfire/fenpdf/events/mousemenu.py:1.5
fenfire/org/fenfire/fenpdf/events/mousemenu.py:1.6
--- fenfire/org/fenfire/fenpdf/events/mousemenu.py:1.5 Mon Aug 25 03:02:25 2003
+++ fenfire/org/fenfire/fenpdf/events/mousemenu.py Mon Aug 25 20:26:44 2003
@@ -5,41 +5,46 @@
import vob
from org.fenfire.swamp import Nodes
from org import fenfire as ff
-import java
+import java, jarray
+import org.nongnu.libvob.vobs.SelectItemVob as Item
def p(*s):
print 'ff.fenpdf.events.mousemenu::', s
+dbg = 0
class MouseMenu:
-
- def __init__(self, fenPDF, states):
+ def __init__(self, fenPDF, states, eventHandler):
self.fenPDF = fenPDF
self.states = states
+ self.eventHandler = eventHandler
self.style = vob.GraphicsAPI.getInstance().getTextStyle('sans', 0, 12)
self.makeMainList()
self.hideList()
def makeMainList(self):
- self.selectListVob = vob.vobs.SelectListVob(self.style)
+ list = []
if self.states.selection.hasSelection():
- self.selectListVob.add('Transclude selection (PDF to canvas only)',
- lambda: self.fenPDF.actions.menu.transclude())
+ list.append(Item('Transclude selection (PDF to canvas only)',
+ lambda: self.fenPDF.actions.menu.transclude()))
if self.fenPDF.uistate.menu.originatingNode:
- self.selectListVob.add('<----- Link node to left',
- lambda: self.fenPDF.actions.menu.structLinkNodes(-1))
- self.selectListVob.add('Link node to right ----->',
- lambda: self.fenPDF.actions.menu.structLinkNodes(1))
- self.selectListVob.add('Delete this node',
- lambda: self.fenPDF.actions.menu.deleteNode())
+ list.append(Item('<----- Link node to left',
+ lambda: self.fenPDF.actions.menu.structLinkNodes(-1)))
+ list.append(Item('Link node to right ----->',
+ lambda: self.fenPDF.actions.menu.structLinkNodes(1)))
+ list.append(Item('Delete this node',
+ lambda: self.fenPDF.actions.menu.deleteNode()))
+
+ list.append(Item('Destroy this canvas',
+ lambda: self.fenPDF.actions.menu.killPlane()))
- self.selectListVob.add('Destroy this canvas',
- lambda: self.fenPDF.actions.menu.killPlane())
+ self.selectListVob = vob.vobs.SelectListVob(list)
def makeBuoyList(self):
- self.selectListVob = vob.vobs.SelectListVob(self.style)
- self.selectListVob.add('Unlink buoy',
- lambda: self.fenPDF.actions.menu.unlinkBuoy())
+ list = []
+ list.append(Item('Unlink buoy',
+ lambda: self.fenPDF.actions.menu.unlinkBuoy()))
+ self.selectListVob = vob.vobs.SelectListVob(list)
def render(self, vs):
cs = vs.orthoBoxCS(0, 'MOUSE_MENU',-100, self.x, self.y-self.h/2,
@@ -47,6 +52,7 @@
vs.put(self.selectListVob, cs)
def showList(self, x, y, who):
+ self.eventHandler.eventStoler = self.mouse
p("showList")
if who == 'buoymenu':
self.makeBuoyList()
@@ -58,71 +64,49 @@
return
self.w, self.h = self.selectListVob.width, self.selectListVob.height
+ self.w *= 2.5
+ self.h *= 2.5
self.x, self.y = x, y
- self.fenPDF.uistate.menu.shown = 1
def hideList(self):
+ self.eventHandler.eventStoler = None
p("Hidelist")
if hasattr(self.states, 'lastEvent'):
self.x, self.y = self.states.lastEvent.getX(),
self.states.lastEvent.getY()
else: self.x, self.y = 0,0
self.w, self.h = .0, .0
- self.fenPDF.uistate.menu.shown = 0
- self.fenPDF.animation.regenerateVS()
- self.fenPDF.animation.noAnimation()
- vob.AbstractUpdateManager.chg()
-
- def getCSKey(self, ev):
- if not self.fenPDF.uistate.menu.shown : return None
- vs = self.fenPDF.animation.lastVs
-
- cs = vs.matcher.getCS(0, 'MOUSE_MENU')
- p('cs:', cs)
- key = vs.getKeyAt(cs, ev.getX(), ev.getY(), None)
- return key
-
- def mousePressed(self, ev):
- """A mouse pressed event was received.
-
- If it's outside the menu, pop the menu away.
-
- Returns: 1 if it was inside a menu,
- and should be eaten.
- """
- key = self.getCSKey(ev)
- if self.fenPDF.uistate.menu.shown:
- if key == None:
- self.hideList()
- return 1
- else:
- return 1
- else:
- return 0
-
- def mouseClicked(self, ev):
- """A mouse clicked event was received.
- If it's in the menu, react, otherwise
- remove the menu.
-
- Returns: 1 if the event was consumed.
- """
- key = self.getCSKey(ev)
- if key != None:
- try:
- p('context menu hit!')
- self.selectListVob.colorize(key, java.awt.Color.red)
- key = key.object
- key()
- self.hideList()
- finally: # If there's an error, we still need a new scene
- self.fenPDF.animation.regenerateVS()
- return 1
- else:
- if self.fenPDF.uistate.menu.shown:
- self.hideList()
- # We return 1 here too, since the button press
- # outside the menu should be eaten.
- return 1
- return 0
+ # what are these?!
+ #self.fenPDF.animation.regenerateVS()
+ #self.fenPDF.animation.noAnimation()
+ #vob.AbstractUpdateManager.chg()
+
+ def mouse(self, ev, oldVS):
+ """ Should be called only through eventHandler.eventStoler
+ """
+ cs = oldVS.matcher.getCS(0, 'MOUSE_MENU')
+ key = oldVS.getKeyAt(cs, ev.getX(), ev.getY(), None)
+ p('cs', cs, key)
+ if cs < 0:
+ p('Something WRONG!!, should not happend! How can ',oldvs,'be
*WRONG* vobscene??? should not be reused!')
+ return
+
+ pts = jarray.zeros(3, 'f')
+ if dbg: p('mouse', ev.getX(), ev.getY())
+ oldVS.coords.inverseTransformPoints3(cs, [ev.getX(), ev.getY(), 0.],
pts)
+ if dbg: p('transformed', pts)
+
+ if ev.getType() in [ev.MOUSE_PRESSED, ev.MOUSE_DRAGGED]:
+ self.selectListVob.preSelect(pts[0], pts[1])
+ if ev.getType() in [ev.MOUSE_RELEASED, ev.MOUSE_CLICKED]:
+ self.selectListVob.postSelect(pts[0], pts[1])
+
+ if key:
+ key.run()
+ else:
+ p('nothing', key)
+ self.eventHandler.eventStoler = None
+
+ vob.AbstractUpdateManager.setNoAnimation()
+ vob.AbstractUpdateManager.chg()
- [ff-cvs] fenfire/org/fenfire/fenpdf/events mousemenu.py,
Matti Katila <=