[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Gzz-commits] fenfire/org/fenfire demo/buoyoing.py view/buoy/...
From: |
Matti Katila |
Subject: |
[Gzz-commits] fenfire/org/fenfire demo/buoyoing.py view/buoy/... |
Date: |
Thu, 19 Jun 2003 07:57:49 -0400 |
CVSROOT: /cvsroot/fenfire
Module name: fenfire
Branch:
Changes by: Matti Katila <address@hidden> 03/06/19 07:57:48
Modified files:
org/fenfire/demo: buoyoing.py
org/fenfire/view/buoy: AbstractMainNode2D.java
FisheyeMainNode2D.java MainNode2D.java
org/fenfire/view/lava: FenPDFContext.java
Added files:
org/fenfire/util: ControlBinding.java
Log message:
eventhandling sketching
CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/demo/buoyoing.py.diff?tr1=1.72&tr2=1.73&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/util/ControlBinding.java?rev=1.1
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/view/buoy/AbstractMainNode2D.java.diff?tr1=1.20&tr2=1.21&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/view/buoy/FisheyeMainNode2D.java.diff?tr1=1.7&tr2=1.8&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/view/buoy/MainNode2D.java.diff?tr1=1.24&tr2=1.25&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/view/lava/FenPDFContext.java.diff?tr1=1.31&tr2=1.32&r1=text&r2=text
Patches:
Index: fenfire/org/fenfire/demo/buoyoing.py
diff -u fenfire/org/fenfire/demo/buoyoing.py:1.72
fenfire/org/fenfire/demo/buoyoing.py:1.73
--- fenfire/org/fenfire/demo/buoyoing.py:1.72 Sat Jun 14 17:15:10 2003
+++ fenfire/org/fenfire/demo/buoyoing.py Thu Jun 19 07:57:47 2003
@@ -265,8 +265,8 @@
def mouse(self, ev, oldvs):
if dbg: pa(ev)
- if ev.getID() == ev.MOUSE_WHEEL:
- print "WHEEL"
+ if 0 and ev.getID() == ev.MOUSE_WHEEL:
+ pa("WHEEL")
r = ev.getWheelRotation()
self.split -= .03 * r
self._doset(oldvs)
@@ -322,9 +322,116 @@
def __init__(self):
vob.buoy.buoymanager.MultiBuoyManager.__init__(self,
[mainNode, mainNode2], [ppconnector, tconnector],
- DoubleGeometer(self), context)
+ DoubleGeometer(self),
+ FenPDFActions(context, 2), context)
+ w.setCursor('default')
+
+class AbstractController(ff.util.ControlBinding.Controller):
+ def controlPoint(self, x,y,scale): pass
+ def change(self, x,y): pass
+ def set(self, obj, oldVS):
+ self.obj = obj
+ self.oldVS = oldVS
+
+class MovePanFast(AbstractController):
+ def isChangeAble(self): return 1
+ def change(self, x, y):
+ f = self.obj.getFocus()
+ fX, fY = f.getPanX(), f.getPanY()
+ f.setPan( (fX-x)/f.getZoom(),(fY-y)/f.getZoom())
+ self.obj.chgFast(self.oldVS)
+
+class MovePanSlow(AbstractController):
+ def isChangeAble(self): return 0
+ def controlPoint(self, x, y, scale):
+ self.obj.moveToPoint(int(x),int(y), self.oldVS)
+
+class FenPDFActions:
+ def __init__(self, context, mainNodes):
+ self.context = context
+ context = context
+ self.context.initMainNodes(mainNodes)
+ self.lastIndex = 0
+
+ self.controlMains = ff.util.ControlBinding()
+ c = self.controlMains
+ c.add(MovePanFast(), -1, 'wheel', 7,1)
+ c.add(MovePanFast(), 1, "drag", 1.4, 1)
+ c.add(MovePanSlow(), 1, "click", 1, 1)
+# c.dbg=1
+ self.controls = [ self.controlMains ]
+
+ def key(self, mngr, key):
+ index = self.lastIndex
+ self.context.setMainNodeIndex(index)
+ mngr.singles[index].mainNode.keystroke(key)
+ vob.AbstractUpdateManager.chg()
+
+ def mouse(self, mngr, ev):
+# pa(ev)
+
+ if hasattr(mngr.geometer, 'mouse') and \
+ mngr.geometer.mouse(ev, mngr.vs):
+ return
+ x, y = ev.getX(), ev.getY()
+ cs = mngr.vs.getCSAt(0, x, y, None)
+
+ if ev.getID() == ev.MOUSE_RELEASED:
+ w.setCursor('default')
+ for ctrl in self.controls:
+ ctrl.removePressState()
+ return
+ if ev.getID() == ev.MOUSE_PRESSED:
+ self.oldEv = ev
+
+ ### If there exist a buoy jump over there
+ for single in mngr.singles:
+ link = single.cs.get(cs, None)
+ if link != None:
+ # print "IN CS: ",cs, link
+ if hasattr(mngr.geometer, 'buoyMouse') and \
+ mngr.geometer.buoyMouse(mngr, ev, single, link):
+ return
+
+ if ev.getID() != ev.MOUSE_CLICKED:
+ return
+ single.followLink(link)
+ vob.AbstractUpdateManager.chg()
+ return
+
+ ### Fall through if no link - need main node
+ for i in range(0, len(mngr.singles)):
+ if mngr.singles[i].mainNode.isHitInsidePlane(x,y,mngr.vs):
+ self.context.setMainNodeIndex(i)
+ self.lastIndex = i
+
+ if self.controlMains.handleEvent(mngr.singles[i].mainNode, ev,
mngr.vs):
+ mngr.replaceScene = mngr.vs
+ vob.AbstractUpdateManager.setNoAnimation()
+ vob.AbstractUpdateManager.chg()
+ return
+
+ # ...then see context
+ if ev.getID() != ev.MOUSE_CLICKED:
+ return
+ self.context.setMainNodeIndex(self.lastIndex)
+ planes = []
+ for single in mngr.singles:
+ planes.append(single.getMainNode())
+ newPlanes = self.context.doMouse(ev, mngr.vs, planes)
+ if newPlanes != None and planes != newPlanes:
+ for i in range(0, len(newPlanes)):
+ mngr.singles[i] = SingleFocusManager(
+ newPlanes[i],
+ mngr.connectors)
+ vob.AbstractUpdateManager.chg()
+
currentScene = Scene()
+
+
+
+
def screenshots():
frame = 0
Index: fenfire/org/fenfire/view/buoy/AbstractMainNode2D.java
diff -u fenfire/org/fenfire/view/buoy/AbstractMainNode2D.java:1.20
fenfire/org/fenfire/view/buoy/AbstractMainNode2D.java:1.21
--- fenfire/org/fenfire/view/buoy/AbstractMainNode2D.java:1.20 Wed Jun 11
13:00:24 2003
+++ fenfire/org/fenfire/view/buoy/AbstractMainNode2D.java Thu Jun 19
07:57:47 2003
@@ -55,17 +55,21 @@
public interface Focus {
float getPanX();
float getPanY();
+ float getZoom();
+ void setZoom(float zoom);
void setPan(float panX, float panY);
}
public static class SimpleFocus implements Focus {
- protected float panX, panY;
+ protected float panX, panY, zoom=1;
public SimpleFocus(float panX, float panY) {
this.panX = panX;
this.panY = panY;
}
public float getPanX() { return panX; }
public float getPanY() { return panY; }
+ public float getZoom() { return zoom; }
+ public void setZoom(float zoom) {this.zoom=zoom; }
public void setPan(float panX, float panY) {
this.panX = panX;
this.panY = panY;
@@ -116,6 +120,7 @@
public void renderMain(VobScene vs, int into) {
context.mainNodeToBeRender(vs, into, this);
+ // extending classes will render after this.
}
public interface Render {
void mainNodeToBeRender(VobScene vs, int into,
@@ -151,6 +156,35 @@
}
}
+ public boolean isHitInsidePlane(int x, int y, VobScene oldVobScene) {
+ float[] pt = new float[] { x, y, 0 };
+ float[] sq = new float[2];
+ oldVobScene.coords.inverseTransformPoints3(
+ box2screen, pt, pt);
+ oldVobScene.coords.getSqSize(box2screen, sq);
+ if (dbg) p("sq: 1: "+sq[0]+", 3: "+sq[1]);
+ if (this instanceof MainNode2D) {
+ if(pt[0] >= 0 && pt[0] < sq[0] &&
+ pt[1] >= 0 && pt[1] < sq[1]) {
+ pt[2] = 0;
+ oldVobScene.coords
+ .transformPoints3(box2screen, pt, pt);
+ // what's zout?
+ //if(zout != null)
+ // zout[0] = pt[2];
+ return true;
+ }
+ } else if (this instanceof FisheyeMainNode2D) {
+ oldVobScene.coords.transformPoints3(box2paper, pt, pt);
+ view2d.getSize(plane, v2dwh);
+ if(v2dwh[0] >= 0) {
+ if(pt[0] >= 0 && pt[0] < v2dwh[0] &&
+ pt[1] >= 0 && pt[1] < v2dwh[1]) return true;
+ }
+ } else throw new Error("No known main node view2d");
+ return false;
+ }
+
public boolean mouseClickHit(MouseEvent e, VobScene oldVobScene, float[]
zout) {
float[] pt = new float[] { e.getX(), e.getY(), 0 };
float[] sq = new float[2];
@@ -179,6 +213,10 @@
return false;
}
+ public void moveToPoint(int x, int y, VobScene oldVS) {
+ mouseMoveClick(x,y,oldVS);
+ }
+
protected void mouseMoveClick(int x, int y, VobScene oldVobScene) {
float[] pt = new float[] { x, y, 0 };
@@ -220,7 +258,7 @@
}
public boolean mouse(MouseEvent e, VobScene oldVobScene) {
- win.setCursor("default");
+ // win.setCursor("default");
if (e.getID() == MouseEvent.MOUSE_PRESSED) {
readMouseState(e, oldVobScene);
return false;
@@ -229,7 +267,12 @@
if (m_state == null) throw new Error("Mouse state not found!");
return doMouse(e, oldVobScene);
}
-
+
+ public void chgFast(VobScene oldVobScene) {
+ clipPan();
+ setZoomPan(oldVobScene, box2screen);
+ }
+
protected boolean doMouse(MouseEvent e, VobScene oldVobScene) {
// Move by dragging with button 1
if(m_state[2] == e.BUTTON1_MASK &&
@@ -281,5 +324,8 @@
return false;
}
+ /** DEPRECATED
+ * @see Focus
+ */
protected float getZoom() { return 1; }
}
Index: fenfire/org/fenfire/view/buoy/FisheyeMainNode2D.java
diff -u fenfire/org/fenfire/view/buoy/FisheyeMainNode2D.java:1.7
fenfire/org/fenfire/view/buoy/FisheyeMainNode2D.java:1.8
--- fenfire/org/fenfire/view/buoy/FisheyeMainNode2D.java:1.7 Wed Jun 11
13:00:24 2003
+++ fenfire/org/fenfire/view/buoy/FisheyeMainNode2D.java Thu Jun 19
07:57:47 2003
@@ -57,6 +57,7 @@
public FisheyeMainNode2D(Object plane, View2D view2d,
Focus focus) {
super(plane, view2d, focus);
+ focus.setZoom(1);
}
Index: fenfire/org/fenfire/view/buoy/MainNode2D.java
diff -u fenfire/org/fenfire/view/buoy/MainNode2D.java:1.24
fenfire/org/fenfire/view/buoy/MainNode2D.java:1.25
--- fenfire/org/fenfire/view/buoy/MainNode2D.java:1.24 Mon Jun 9 15:03:13 2003
+++ fenfire/org/fenfire/view/buoy/MainNode2D.java Thu Jun 19 07:57:47 2003
@@ -62,6 +62,7 @@
public MainNode2D(Object plane, View2D view2d,
Focus focus, float zoom) {
super(plane, view2d, focus);
+ focus.setZoom(zoom);
this.zoom = zoom;
}
Index: fenfire/org/fenfire/view/lava/FenPDFContext.java
diff -u fenfire/org/fenfire/view/lava/FenPDFContext.java:1.31
fenfire/org/fenfire/view/lava/FenPDFContext.java:1.32
--- fenfire/org/fenfire/view/lava/FenPDFContext.java:1.31 Wed Jun 11
13:00:25 2003
+++ fenfire/org/fenfire/view/lava/FenPDFContext.java Thu Jun 19 07:57:48 2003
@@ -396,7 +396,11 @@
if ( cursorOffset[CURR] < text.length())
cursorOffset[CURR]++;
}
+ // normal alphabets etc.
else if (stroke.length() == 1) {
+ char c = stroke.toCharArray()[0];
+ p("Pressed: '"+ stroke +"', ch: '"+c+"' and int: "+ (int)c);
+
if (accursed[CURR]==null) {
String paper = Nodes.toString(main.getPlane());
String note = ppAct.newNote(paper,
(int)main.getFocus().getPanX(),