[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Gzz-commits] fenfire ./Makefile org/fenfire/demo/buoyoing.py...
From: |
Matti Katila |
Subject: |
[Gzz-commits] fenfire ./Makefile org/fenfire/demo/buoyoing.py... |
Date: |
Sun, 22 Jun 2003 14:18:15 -0400 |
CVSROOT: /cvsroot/fenfire
Module name: fenfire
Branch:
Changes by: Matti Katila <address@hidden> 03/06/22 14:18:15
Modified files:
. : Makefile
org/fenfire/demo: buoyoing.py
org/fenfire/util: ControlBinding.java
org/fenfire/view/buoy: AbstractMainNode2D.java
Log message:
moving notes
CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/Makefile.diff?tr1=1.19&tr2=1.20&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/demo/buoyoing.py.diff?tr1=1.76&tr2=1.77&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/util/ControlBinding.java.diff?tr1=1.3&tr2=1.4&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/view/buoy/AbstractMainNode2D.java.diff?tr1=1.22&tr2=1.23&r1=text&r2=text
Patches:
Index: fenfire/Makefile
diff -u fenfire/Makefile:1.19 fenfire/Makefile:1.20
--- fenfire/Makefile:1.19 Fri Jun 13 08:01:23 2003
+++ fenfire/Makefile Sun Jun 22 14:18:14 2003
@@ -21,7 +21,7 @@
test:
$(LDLIB) java -cp $(CLASSPATH) $(PYTHONPATH) org.python.util.jython
org/fenfire/test/test.py -Dvob.api=gl $(DBG) $(TEST)
-DEMO=org/fenfire/demo/buoyoing.py
+DEMO?=org/fenfire/demo/buoyoing.py
rundemo:
$(LDLIB) java -cp $(CLASSPATH) $(PYTHONPATH) org.python.util.jython
../libvob/rundemo.py $(DBG) $(DEMO)
Index: fenfire/org/fenfire/demo/buoyoing.py
diff -u fenfire/org/fenfire/demo/buoyoing.py:1.76
fenfire/org/fenfire/demo/buoyoing.py:1.77
--- fenfire/org/fenfire/demo/buoyoing.py:1.76 Sun Jun 22 12:17:18 2003
+++ fenfire/org/fenfire/demo/buoyoing.py Sun Jun 22 14:18:14 2003
@@ -38,15 +38,15 @@
from org import fenfire as ff
from org.fenfire.swamp import Nodes
-
from org.fenfire.vocab import RDF, CANVAS2D
+from org.fenfire.index import XuLink
+from org.fenfire.util import Pair
from org.nongnu import alph
from org.nongnu import storm
from org.nongnu.alph.impl import PageImageScroll
-from org.fenfire.index import XuLink
import vob
w.setCursor('wait')
@@ -326,12 +326,14 @@
w.setCursor('default')
+######## Actions to control pan of main nodes etc.
+
class MovePanFast(ff.util.ControlBinding.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())
+ f.setPan( fX-x/f.getZoom(),fY-y/f.getZoom())
self.obj.chgFast(self.oldVS)
class MovePanSlow(ff.util.ControlBinding.AbstractController):
@@ -352,6 +354,37 @@
self.obj.changeSize(x+y)
self.obj.chgFast(self.oldVS)
+class AbstractContextController(ff.util.ControlBinding.AbstractController):
+ def __init__(self, context):
+ self.context = context
+
+class UnSelectNodeOnPlane(AbstractContextController):
+ def isChangeable(self): return 0
+ def controlPoint(self, x, y, scale):
+ self.context.setAccursed(None)
+
+
+####### Actions to control nodes on main node plane
+
+class SelectNodeOnPlane(AbstractContextController):
+ def isChangeable(self): return 0
+ def controlPoint(self, x, y, scale):
+ self.context.setAccursed(self.obj.second)
+
+class MoveNodeOnPlane(AbstractContextController):
+ def isChangeable(self): return 1
+ def change(self, x,y):
+ f = self.obj.first.getFocus()
+ fX, fY = f.getPanX(), f.getPanY()
+ f.setPan( fX+x*.5/f.zoom,fY+y*.5/f.zoom)
+
+ node = self.obj.second
+ g = fen.graph
+ ox = ff.util.RDFUtil.getInt(g, node, CANVAS2D.x)
+ oy = ff.util.RDFUtil.getInt(g, node, CANVAS2D.y)
+ ppAct.moveNote(node, int(ox+x/f.zoom), int(oy+y/f.zoom) )
+
+
class FenPDFActions:
def __init__(self, context, mainNodes):
self.context = context
@@ -360,13 +393,20 @@
c = self.controlMains = ff.util.ControlBinding()
c.add(MovePanFast(), -1, c.WHEEL, 7,0, c.VERTICAL)
- c.add(MovePanFast(), 1, c.DRAG, 1.4, 0, c.ALL)
+ c.add(MovePanFast(), 1, c.DRAG, 1.3, 0, c.ALL)
c.add(MovePanSlow(), 1, c.CLICK)
c.add(ZoomPan(), 3, c.DRAG, 1, 0, c.VERTICAL)
c.add(PanSize(), 3, c.DRAG, 1, 0, c.HORIZONTAL)
+ c.add(UnSelectNodeOnPlane(context), 3, c.CLICK)
+
+ c = self.controlNodesOnMain = ff.util.ControlBinding()
+ c.replaceVS = 0
+ c.add(SelectNodeOnPlane(context), 3, c.CLICK)
+ c.add(MoveNodeOnPlane(context), 1, c.DRAG)
+
#c.dbg=1
- self.controls = [ self.controlMains ]
+ self.controls = [ self.controlMains, self.controlNodesOnMain ]
def key(self, mngr, key):
index = self.lastIndex
@@ -392,7 +432,8 @@
for ctrl in self.controls:
if ctrl.hasPressState():
ctrl.handleEvent(None, ev, mngr.vs)
- mngr.replaceScene = mngr.vs
+ if ctrl.replaceVS:
+ mngr.replaceScene = mngr.vs
vob.AbstractUpdateManager.setNoAnimation()
vob.AbstractUpdateManager.chg()
return
@@ -417,6 +458,19 @@
if mngr.singles[i].mainNode.isHitInsidePlane(x,y,mngr.vs):
self.context.setMainNodeIndex(i)
self.lastIndex = i
+
+ ### See if there's somtehing on a plane.
+ obj = mngr.singles[i].mainNode.getNodeOnPlane(mngr.vs, x,y)
+ if obj != None and \
+ self.controlNodesOnMain.hasBinding(ev):
+ if self.controlNodesOnMain.handleEvent( \
+ Pair(mngr.singles[i].mainNode, obj), ev, mngr.vs):
+ # can't replace vobscene!!
+ # mngr.replaceScene = mngr.vs
+ vob.AbstractUpdateManager.setNoAnimation()
+ vob.AbstractUpdateManager.chg()
+ return
+
if self.controlMains.handleEvent(mngr.singles[i].mainNode, ev,
mngr.vs):
mngr.replaceScene = mngr.vs
vob.AbstractUpdateManager.setNoAnimation()
Index: fenfire/org/fenfire/util/ControlBinding.java
diff -u fenfire/org/fenfire/util/ControlBinding.java:1.3
fenfire/org/fenfire/util/ControlBinding.java:1.4
--- fenfire/org/fenfire/util/ControlBinding.java:1.3 Sun Jun 22 12:14:02 2003
+++ fenfire/org/fenfire/util/ControlBinding.java Sun Jun 22 14:18:14 2003
@@ -15,10 +15,7 @@
* associated with a controller.
* This is a typesafe enumeration.
*/
- public static final class Type {
- private Type() {}
- }
-
+ public static final class Type { private Type() {} }
public static final Type
CLICK = new Type(),
DRAG = new Type(),
@@ -35,7 +32,7 @@
static private boolean FAST = true;
static private boolean ANIMATE = false;
-
+ public boolean replaceVS = true;
// -- Methods to handle events wisely.
@@ -210,6 +207,33 @@
this.scale=scale; this.dir=direction;
}
}
+
+
+ public boolean hasBinding(MouseEvent event) {
+ if (event.getID() == event.MOUSE_PRESSED)
+ return true;
+ else if (event.getID() == event.MOUSE_WHEEL) {
+ for (int i=0; i<wheels.size(); i++)
+ return true;
+ }
+ else if (event.getID() == event.MOUSE_CLICKED) {
+ for (int i=0; i<clicks.size(); i++) {
+ Event e = (Event)clicks.get(i);
+ if (event.getModifiers() == e.mask)
+ return true;
+ }
+ }
+ else if (event.getID() == event.MOUSE_DRAGGED) {
+ for (int i=0; i<drags.size(); i++) {
+ Event e = (Event)drags.get(i);
+ if (event.getModifiers() == e.mask)
+ return true;
+ }
+ }
+ return false;
+ }
+
+
public interface Controller {
boolean isChangeable();
Index: fenfire/org/fenfire/view/buoy/AbstractMainNode2D.java
diff -u fenfire/org/fenfire/view/buoy/AbstractMainNode2D.java:1.22
fenfire/org/fenfire/view/buoy/AbstractMainNode2D.java:1.23
--- fenfire/org/fenfire/view/buoy/AbstractMainNode2D.java:1.22 Sun Jun 22
12:15:35 2003
+++ fenfire/org/fenfire/view/buoy/AbstractMainNode2D.java Sun Jun 22
14:18:14 2003
@@ -303,29 +303,32 @@
// See around of objects
if(m_state[2] == e.BUTTON2_MASK &&
e.getID() == MouseEvent.MOUSE_CLICKED){
- View2D view = getView2D();
- while (view.getChildView2D() != null)
- view = view.getChildView2D();
-
- // currently only for canvas2d canvases
- if (view instanceof CanvasView2D) {
-
- Object obj = ((CanvasView2D)view).getNode(oldVobScene,
e.getX(), e.getY(),
- plane, box2screen, box2screen,
- box2paper, null);
- if (obj != null) if (dbg) p("Object is: "+ obj.toString());
- context.setAccursed(obj);
- AbstractUpdateManager.chg();
- }
- else p("not a canvas view?");
-
+ getNodeOnPlane(oldVobScene, e.getX(), e.getY());
return false;
}
-
if(dbg) p("nothing!");
return false;
}
+
+ public Object getNodeOnPlane(VobScene oldVobScene, float x, float y) {
+ View2D view = getView2D();
+ while (view.getChildView2D() != null)
+ view = view.getChildView2D();
+
+ // currently only for canvas2d canvases
+ if (view instanceof CanvasView2D) {
+
+ Object obj = ((CanvasView2D)view)
+ .getNode(oldVobScene, (int)x, (int)y,
+ plane, box2screen, box2screen,
+ box2paper, null);
+ if (obj != null) if (dbg) p("Object is: "+ obj.toString());
+ return obj;
+ } else p("not a canvas view?");
+ return null;
+ }
+
/** DEPRECATED
* @see Focus
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Gzz-commits] fenfire ./Makefile org/fenfire/demo/buoyoing.py...,
Matti Katila <=