/[fenfire]/fenfire/org/fenfire/demo/mm.py
ViewVC logotype

Diff of /fenfire/org/fenfire/demo/mm.py

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.4 by mudyc, Wed Aug 13 10:57:41 2003 UTC revision 1.5 by humppake, Wed Aug 13 22:58:29 2003 UTC
# Line 23  def p(*s): Line 23  def p(*s):
23    
24  dbg = 0  dbg = 0
25    
26    w.setCursor("wait")
27    vob.putil.demo.usingNormalBindings = 1
28    
29  # Now, before reading the xu stuff, render something  # Now, before reading the xu stuff, render something
30  # to try to prevent NV driver  # to try to prevent NV driver
# Line 32  dbg = 0 Line 32  dbg = 0
32  # Might be that it only reserves screen memory when starting to render  # Might be that it only reserves screen memory when starting to render
33  # and if we reserve it all for textures, ... splat ...  # and if we reserve it all for textures, ... splat ...
34  vs = w.createVobScene()  vs = w.createVobScene()
35  vs.put(background((.4, .2, .1)))  vs.put(background((.5, .5, .5)))
36  w.renderStill(vs, 0)  w.renderStill(vs, 0)
37    
38            
# Line 67  ppAct.assocNotes(noteA1, 1, noteB1) Line 67  ppAct.assocNotes(noteA1, 1, noteB1)
67  noteHome = Nodes.get(ppAct.newNote(paperHome, 0, 0, 'HOME'))  noteHome = Nodes.get(ppAct.newNote(paperHome, 0, 0, 'HOME'))
68  ppAct.assocNotes(noteHome, 1, noteA1)  ppAct.assocNotes(noteHome, 1, noteA1)
69    
70    textstyle = vob.GraphicsAPI.getInstance().getTextStyle("sans", 0, 24)
71  nodeview = ff.view.TextNodeView(fen.txtfunc,  nodeview = ff.view.TextNodeView(fen.txtfunc, textstyle, 1)
                                 vob.GraphicsAPI.getInstance().getTextStyle("sans", 0, 24),  
                                 1)  
72  nodeview.setHasNoContext()  nodeview.setHasNoContext()
73  mindView = ff.view.lava.mindMapView2D.MindMapView2D(fen, nodeview)  mindView = ff.view.lava.mindMapView2D.MindMapView2D(fen, nodeview)
74    
# Line 82  class Context(ff.view.buoy.AbstractMainN Line 80  class Context(ff.view.buoy.AbstractMainN
80          self.main = None    # MainNode2D          self.main = None    # MainNode2D
81          self.fastMouseChg = 0  # callback from abstractmainnode2d when called mouse          self.fastMouseChg = 0  # callback from abstractmainnode2d when called mouse
82          self._accursed = None          self._accursed = None
83            self.bgcolor = (.36, .74, 1.0)
84          self.offset = 0          self.offset = 0
85            self.scale = 1
86    
87      def nextRmb(self):      def nextRmb(self):
88          rmb = self.rmb_switch          rmb = self.rmb_switch
89          rmb.append(rmb.pop(0))          rmb.append(rmb.pop(0))
90          rmb = rmb[0]          rmb = rmb[0]
91          if rmb == 'go': w.setCursor('default')          if rmb == 'go': self.bgcolor = (.36, .74, 1.0); w.setCursor('default')
92          elif rmb == 'link': w.setCursor('hand')          elif rmb == 'link': self.bgcolor = (.4, .8, .4); w.setCursor('hand')
93          elif rmb == 'unlink': w.setCursor('crosshair')          elif rmb == 'unlink': self.bgcolor = (1.0, .5, .5); w.setCursor('crosshair')
94          else: raise 'no good cursor!?'          else: raise 'no good cursor!?'
95    
96        def drawCursor(self, vs, node, cs):
97            xy = jarray.zeros(2, 'f')
98            nodeview.getXY(fen.graph, context.getAccursed(), context.offset, xy)
99            cs = vs.orthoCS(cs, "CURSOR", 0, xy[0]*self.scale, xy[1]*self.scale,
100                            0, -textstyle.getHeight(self.scale))
101            vs.put(vob.vobs.LineVob(0,0,0,1, java.awt.Color.white), cs)
102    
103      def insertText(self, text):      def insertText(self, text):
104          if self._accursed == None:          if self._accursed == None:
105              self.setAccursed(ff.util.RDFUtil.N(fen.graph, MINDSTRUCT.Data))              self.setAccursed(ff.util.RDFUtil.N(fen.graph, MINDSTRUCT.Data))
# Line 115  class Context(ff.view.buoy.AbstractMainN Line 124  class Context(ff.view.buoy.AbstractMainN
124                  else: self.setAccursed(node)                  else: self.setAccursed(node)
125              if dbg: p('offs:', self.offset, l)              if dbg: p('offs:', self.offset, l)
126    
127        def isLinked(self, obj):
128            iter = fen.graph.findN_11X_Iter(obj, STRUCTLINK.linkedTo)
129            if iter.hasNext(): return 1
130            iter = fen.graph.findN_X11_Iter(STRUCTLINK.linkedTo, obj)
131            if iter.hasNext(): return 1
132            return 0
133        
134      def setAccursed(self, node):      def setAccursed(self, node):
135          self._accursed = node          self._accursed = node
136          if self._accursed != None:          if self._accursed != None:
# Line 162  class Click(Action, vob.mouse.MouseClick Line 178  class Click(Action, vob.mouse.MouseClick
178    
179          rmb = context.rmb_switch[0]          rmb = context.rmb_switch[0]
180          if rmb == 'go':          if rmb == 'go':
181                self.context.setAccursed(node)
182    
183                # set cursor, transitions between zoomed and normal should be accounted
184                cs = vs.getCSAt(0, x,y, None)
185                into = jarray.zeros(3, 'f')
186                vs.coords.transformPoints3(cs, [0,0,0], into)
187    
188              if node == self.context.main.getPlane():              if node == self.context.main.getPlane():
189                  pass                  self.context.scale = self.context.main.getFocus().getZoom()
190                    self.context.offset = nodeview.getPos(fen.graph, context.getAccursed(),
191                                                      (x-into[0])/self.context.scale,
192                                                      (y-into[1])/self.context.scale)
193              elif ff.util.RDFUtil.isLinked(fen.graph, node):              elif ff.util.RDFUtil.isLinked(fen.graph, node):
194                    self.context.offset = nodeview.getPos(fen.graph, context.getAccursed(),
195                                                      (x-into[0])/self.context.scale,
196                                                      (y-into[1])/self.context.scale)
197                    self.context.scale = 1
198                  self.context.main.setNewPlane(node, 0,0,1)                  self.context.main.setNewPlane(node, 0,0,1)
199              self.context.setAccursed(node)              else:
200                    self.context.scale = 1
201                    self.context.offset = nodeview.getPos(fen.graph, context.getAccursed(),
202                                                      (x-into[0])/self.context.scale,
203                                                      (y-into[1])/self.context.scale)
204    
205          elif rmb == 'link':          elif rmb == 'link':
206              if node == self.context.main.getPlane():              if node == self.context.main.getPlane():
207                  pass                  pass
# Line 190  class ZoomPan(vob.input.RelativeAxisList Line 225  class ZoomPan(vob.input.RelativeAxisList
225          self.context.main.changeZoom(x)          self.context.main.changeZoom(x)
226          self.context.main.chgFast(self.context.oldVS, -1)          self.context.main.chgFast(self.context.oldVS, -1)
227          self.context.fastMouseChg = 1          self.context.fastMouseChg = 1
228            if self.context.getAccursed() and \
229                   ff.util.RDFUtil.isLinked(fen.graph, self.context.getAccursed()):
230                self.context.scale = self.context.main.getFocus().getZoom()
231    
232  class PanMover(Action, vob.mouse.RelativeAdapter, vob.mouse.MousePressListener):  class PanMover(Action, vob.mouse.RelativeAdapter, vob.mouse.MousePressListener):
233      def pressed(self, x,y):      def pressed(self, x,y):
# Line 219  class VeryStupidBuoyManager: Line 257  class VeryStupidBuoyManager:
257          self.main.init(fen, nodeview)          self.main.init(fen, nodeview)
258          context.main = self.main          context.main = self.main
259          self.main.context = context          self.main.context = context
260                    mindView.context = context
261            w.setCursor('default')
262    
263      def scene(self, vs):      def scene(self, vs):
264          context.oldVS = vs          context.oldVS = vs
265          vs.put(background((.36, .74, 1.0)))          vs.put(background(context.bgcolor))
266          cs = vs.orthoBoxCS(0, "foo",0, 50,50, 1,1, 750,650)          cs = vs.orthoBoxCS(0, "foo",0, 50,50, 1,1, 750,650)
267          self.main.renderMain(vs, cs)          self.main.renderMain(vs, cs)
268    
# Line 242  class VeryStupidBuoyManager: Line 282  class VeryStupidBuoyManager:
282                  context.deleteText()                  context.deleteText()
283          elif key == "Ctrl-S":          elif key == "Ctrl-S":
284              p("going to save");              p("going to save");
   
285              m = ff.swamp.Graphs.toModel(fen.graph);              m = ff.swamp.Graphs.toModel(fen.graph);
286              m.write(java.io.FileWriter(FILE));              m.write(java.io.FileWriter(FILE));
287          elif key == "Ctrl-Q":          elif key == "Ctrl-Q":
288              p("going to save");              p("going to save");
   
289              m = ff.swamp.Graphs.toModel(fen.graph);              m = ff.swamp.Graphs.toModel(fen.graph);
290              m.write(java.io.FileWriter(FILE));              m.write(java.io.FileWriter(FILE));
   
291              java.lang.System.exit(43)              java.lang.System.exit(43)
292          elif key == "Ctrl-R":          elif key == "Ctrl-R":
293              vob.putil.demo.loadScenes()              vob.putil.demo.loadScenes()
294          elif key == "Return":          elif key == "Return":
295              context.insertText("\n")              context.insertText("\n")
296                text = alphContent.getText(fen.graph, context.getAccursed())
297                # small hack to show the new line on NodeView, without content it would be shrank
298                if len(text) == context.offset:
299                    context.insertText(" ")
300                    context.offset -= 1
301            elif key == 'Up':
302                xy = jarray.zeros(2, 'f')
303                nodeview.getXY(fen.graph, context.getAccursed(),
304                                   context.offset, xy)
305                xy[1] -= textstyle.getHeight(context.scale) * 1.5
306                context.offset = nodeview.getPos(fen.graph, context.getAccursed(), xy[0], xy[1])
307            elif key == 'Down':
308                xy = jarray.zeros(2, 'f')
309                nodeview.getXY(fen.graph, context.getAccursed(),
310                                   context.offset, xy)
311                xy[1] += textstyle.getHeight(context.scale) * 0.5
312                context.offset = nodeview.getPos(fen.graph, context.getAccursed(), xy[0], xy[1])
313            elif key == 'Left':
314                if context.offset > 0: context.offset -= 1
315            elif key == 'Right':
316                text = alphContent.getText(fen.graph, context.getAccursed())
317                if context.offset < len(text):
318                    context.offset += 1
319            if key == "Ctrl-HomE":
320                context.offset = 0
321            if key == "Ctrl-EnD":
322                text = alphContent.getText(fen.graph, context.getAccursed())
323                context.offset = len(text)
324            if key == "Home" or key == "Ctrl-A":
325                xy = jarray.zeros(2, 'f')
326                nodeview.getXY(fen.graph, context.getAccursed(),
327                                   context.offset, xy)
328                xy[0] = 0
329                # we must return a half of the line height back to stay on the same line
330                xy[1] -= textstyle.getHeight(context.scale) * 0.5 # XXX scaling!
331                context.offset = nodeview.getPos(fen.graph, context.getAccursed(), xy[0], xy[1])            
332            if key == "End" or key == "Ctrl-E":
333                # the end of line is reached by going to home of the line below
334                # and returning a single character back if not the end of text was reached
335                xy = jarray.zeros(2, 'f')
336                nodeview.getXY(fen.graph, context.getAccursed(),
337                                   context.offset, xy)
338                xy[0] = 0
339                xy[1] += textstyle.getHeight(context.scale) * 0.5 # XXX scaling!
340                context.offset = nodeview.getPos(fen.graph, context.getAccursed(), xy[0], xy[1])
341                text = alphContent.getText(fen.graph, context.getAccursed())
342                if context.offset < len(text): context.offset -= 1
343          elif len(key) == 1:          elif len(key) == 1:
344              context.insertText(key)              context.insertText(key)
           
345    
346            if dbg:
347                text = alphContent.getText(fen.graph, context.getAccursed())
348                print text[0:context.offset], '[cursor]'
349            
350          vob.AbstractUpdateManager.chg()          vob.AbstractUpdateManager.chg()
351    
352    
353  currentScene = VeryStupidBuoyManager()  currentScene = VeryStupidBuoyManager()
354    vob.putil.demo.usingNormalBindings = 0

Legend:
Removed from v.1.4  
changed lines
  Added in v.1.5

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26