69 |
""" |
""" |
70 |
self.mainNode = mainNode |
self.mainNode = mainNode |
71 |
self.connectors = connectors |
self.connectors = connectors |
72 |
def getMainNode(self): return self.mainNode |
def getMainNode(self): |
73 |
|
return self.mainNode |
74 |
def _nadir(self, cs): |
def _nadir(self, cs): |
75 |
n = self.vs.coords.nadirUnitSq(cs, self.nadirCS) |
n = self.vs.coords.nadirUnitSq(cs, self.nadirCS) |
76 |
self.vs.matcher.add(cs, n, "NADIR") |
self.vs.matcher.add(cs, n, "NADIR") |
202 |
|
|
203 |
|
|
204 |
class MultiBuoyManager: |
class MultiBuoyManager: |
205 |
def __init__(self, mainNodes, connectors, geometer, context): |
def __init__(self, mainNodes, connectors, geometer, eventHandler=None, context=None): |
206 |
self.singles = [ |
self.singles = [ |
207 |
SingleFocusManager(i, connectors) for i in mainNodes] |
SingleFocusManager(i, connectors) for i in mainNodes] |
208 |
self.connectors = connectors |
self.connectors = connectors |
209 |
self.geometer = geometer |
self.geometer = geometer |
210 |
self.replaceScene = None |
self.replaceScene = None |
211 |
|
self.events = eventHandler |
212 |
self.context = context |
self.context = context |
|
self.context.initMainNodes(len(mainNodes)) |
|
|
self.lastIndex = 0 |
|
213 |
def key(self, key): |
def key(self, key): |
214 |
if self.geometer.key(key): |
if self.geometer.key(key): |
215 |
return |
return |
216 |
index = self.lastIndex |
if self.events != None: |
217 |
self.context.setMainNodeIndex(index) |
self.events.key(self, key) |
|
self.singles[index].mainNode.keystroke(key) |
|
|
vob.AbstractUpdateManager.chg() |
|
|
pass |
|
218 |
def getVs(self): |
def getVs(self): |
219 |
return self.vs; |
return self.vs; |
220 |
|
def getSingles(self): |
221 |
|
return self.singles |
222 |
def scene(self, vs): |
def scene(self, vs): |
223 |
if self.replaceScene: |
if self.replaceScene: |
224 |
sc = self.replaceScene |
sc = self.replaceScene |
236 |
|
|
237 |
geoms = self.geometer.place(vs) |
geoms = self.geometer.place(vs) |
238 |
|
|
239 |
self.context.renderContext(vs, 0) |
if self.context != None: |
240 |
|
self.context.renderContext(vs, 0) |
241 |
for i in range(0, len(self.singles)): |
for i in range(0, len(self.singles)): |
242 |
self.context.setMainNodeIndex(i) |
self.context.setMainNodeIndex(i) |
243 |
self.singles[i].drawscene(vs, |
self.singles[i].drawscene(vs, |
246 |
nadirCS) |
nadirCS) |
247 |
|
|
248 |
def mouse(self, ev): |
def mouse(self, ev): |
249 |
|
if self.events != None: |
250 |
|
self.events.mouse(self, ev) |
251 |
|
return |
252 |
|
|
253 |
if hasattr(self.geometer, 'mouse') and \ |
if hasattr(self.geometer, 'mouse') and \ |
254 |
self.geometer.mouse(ev, self.vs): |
self.geometer.mouse(ev, self.vs): |
255 |
return |
return |
268 |
single.followLink(link) |
single.followLink(link) |
269 |
vob.AbstractUpdateManager.chg() |
vob.AbstractUpdateManager.chg() |
270 |
return |
return |
271 |
|
|
272 |
# Fall through if no link - need main node |
# Fall through if no link - need main node |
273 |
for i in range(0, len(self.singles)): |
for i in range(0, len(self.singles)): |
274 |
if self.singles[i].mainNode.mouseClickHit(ev, self.vs, None): |
if self.singles[i].mainNode.mouseClickHit(ev, self.vs, None): |
280 |
vob.AbstractUpdateManager.chg() |
vob.AbstractUpdateManager.chg() |
281 |
return |
return |
282 |
|
|
|
# ...then see context |
|
|
if ev.getID() != ev.MOUSE_CLICKED: return |
|
|
self.context.setMainNodeIndex(self.lastIndex) |
|
|
planes = [] |
|
|
for single in self.singles: |
|
|
planes.append(single.getMainNode()) |
|
|
#newPlanes = jarray.zeros(len(self.singles), 'c') |
|
|
newPlanes = self.context.doMouse(ev, self.vs, planes) |
|
|
if newPlanes != None and planes != newPlanes: |
|
|
for i in range(0, len(newPlanes)): |
|
|
self.singles[i] = SingleFocusManager( |
|
|
newPlanes[i], |
|
|
self.connectors) |
|
|
vob.AbstractUpdateManager.chg() |
|
|
#else: |
|
|
# self.context.setMainNodeIndex(self.lastIndex) |
|
|
# if self.singles[self.lastIndex].mainNode.mouse(ev, self.vs, w): |
|
|
# self.replaceScene = self.vs |
|
|
# vob.AbstractUpdateManager.setNoAnimation() |
|
|
# vob.AbstractUpdateManager.chg() |
|
|
|
|
|
|
|
|
|
|
283 |
vob.impl.gl.GLScreen.dbg = 0 |
vob.impl.gl.GLScreen.dbg = 0 |
284 |
|
|
285 |
class SingleGeometer: |
class SingleGeometer: |