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

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

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

revision 1.6 by humppake, Tue Aug 12 21:10:38 2003 UTC revision 1.7 by humppake, Wed Aug 13 07:03:50 2003 UTC
# Line 7  import org.nongnu.alph as alph Line 7  import org.nongnu.alph as alph
7  import org.nongnu.storm as storm  import org.nongnu.storm as storm
8  from java.lang import Math  from java.lang import Math
9  from org.fenfire.vocab import RDF  from org.fenfire.vocab import RDF
10    from org.fenfire.vocab import STRUCTLINK as STRUCT
11    from org.fenfire.vocab.lava import MINDSTRUCT as MIND
12  from org.fenfire.util import Pair  from org.fenfire.util import Pair
13    
14  # save and load  # save and load
15  from com.hp.hpl.mesa.rdf.jena.mem import ModelMem  from com.hp.hpl.mesa.rdf.jena.mem import ModelMem
16  import os.path  import os.path
17    
18    # storm pool directory and mindmap file
19  DIR = 'myFenfire/'  DIR = 'myFenfire/'
20  FILE = DIR+'mindmap.rdf'  FILE = DIR+'mindmap.rdf'
21    
# Line 20  os.system('mkdir -p '+DIR) Line 23  os.system('mkdir -p '+DIR)
23  pool = storm.impl.DirPool(java.io.File(DIR), java.util.HashSet())  pool = storm.impl.DirPool(java.io.File(DIR), java.util.HashSet())
24  myalph = alph.impl.StormAlph(pool)  myalph = alph.impl.StormAlph(pool)
25    
26    # set flag to load an old graph or creating new
27  do_load_graph = 0  do_load_graph = 0
 # automatic system for previous  
28  if os.path.isfile(FILE):  if os.path.isfile(FILE):
29      print 'Loading the RDF graph from the file %s' % (FILE)      print 'Loading the RDF graph from the file %s.' % (FILE)
30      do_load_graph = 1      do_load_graph = 1
31  else:  else:
32      print 'Creating a new RDF graph'      print 'Creating a new RDF graph.'
33      do_load_graph = 0      do_load_graph = 0
34    
35  fen = ff.Fen()  fen = ff.Fen()
# Line 51  nodeview.setHasNoContext() Line 54  nodeview.setHasNoContext()
54  def p(*s):  def p(*s):
55      print "mind.py::", s      print "mind.py::", s
56    
 M = ff.vocab.lava.MINDSTRUCT()  
   
57  def rotatelist(list):  def rotatelist(list):
58      list.append(list.pop(0))      list.append(list.pop(0))
59    
# Line 63  class MindMap: Line 64  class MindMap:
64    
65      def insertText(self, text):      def insertText(self, text):
66          if self._acc == None:          if self._acc == None:
67              self.setAccursed(ff.util.RDFUtil.N(fen.graph, M.Data))              self.setAccursed(ff.util.RDFUtil.N(fen.graph, MIND.Data))
68              self.offset = 0              self.offset = 0
69          alphContent.insertText(self._acc, self.offset, text, 1)          alphContent.insertText(self._acc, self.offset, text, 1)
70          self.offset += len(text)          self.offset += len(text)
# Line 76  class MindMap: Line 77  class MindMap:
77          self.offset -= 1          self.offset -= 1
78          l = len(alphContent.getText(fen.graph, self._acc))          l = len(alphContent.getText(fen.graph, self._acc))
79          if self.offset == 0 and l == 0:          if self.offset == 0 and l == 0:
80              fen.graph.rm_111(self._acc, RDF.type, M.Data)              fen.graph.rm_111(self._acc, RDF.type, MIND.Data)
81  #            try:              try:
82  #                self.setAaccursed(                  self.setAaccursed(
83  #                    fen.graph.findN_X11_Iter(RDF.type, M.Data).next())                      fen.graph.findN_X11_Iter(RDF.type, MIND.Data).next())
84  #            except:              except:
85              self.setAccursed(None)                  print "ei löytynyt"
86                    self.setAccursed(None)
87          if dbg: p('offs:', self.offset, l)          if dbg: p('offs:', self.offset, l)
88    
89      def setAccursed(self, node):      def setAccursed(self, node):
# Line 95  class MindMap: Line 97  class MindMap:
97          return self._acc          return self._acc
98    
99      def rmLinkTo(self, obj, with):      def rmLinkTo(self, obj, with):
100          iter = fen.graph.findN_11X_Iter(obj, M.link)          iter = fen.graph.findN_11X_Iter(obj, STRUCT.linkedTo)
101          try:          try:
102              while (iter.hasNext()):              while (iter.hasNext()):
103                  if with == iter.next():                  if with == iter.next():
104                      fen.graph.rm_111(obj, M.link, with)                      fen.graph.rm_111(obj, STRUCT.linkedTo, with)
105              iter = fen.graph.findN_11X_Iter(with, M.link)              iter = fen.graph.findN_11X_Iter(with, STRUCT.linkedTo)
106              while (iter.hasNext()):              while (iter.hasNext()):
107                  if obj == iter.next():                  if obj == iter.next():
108                      fen.graph.rm_111(with, M.link, obj)                      fen.graph.rm_111(with, STRUCT.linkedTo, obj)
109          except: pass          except: pass
110                    
111      def isLinked(self, obj):      def isLinked(self, obj):
112          iter = fen.graph.findN_11X_Iter(obj, M.link)          iter = fen.graph.findN_11X_Iter(obj, STRUCT.linkedTo)
113          if iter.hasNext(): return 1          if iter.hasNext(): return 1
114          iter = fen.graph.findN_X11_Iter(M.link, obj)          iter = fen.graph.findN_X11_Iter(STRUCT.linkedTo, obj)
115          if iter.hasNext(): return 1          if iter.hasNext(): return 1
116          return 0          return 0
117    
118      def isLinkedTo(self, obj, obj2):      def isLinkedTo(self, obj, obj2):
119          iter = fen.graph.findN_11X_Iter(obj, M.link)          iter = fen.graph.findN_11X_Iter(obj, STRUCT.linkedTo)
120          while (iter.hasNext()):          while (iter.hasNext()):
121              if obj2 == iter.next(): return 1              if obj2 == iter.next(): return 1
122          iter = fen.graph.findN_11X_Iter(obj2, M.link)          iter = fen.graph.findN_11X_Iter(obj2, STRUCT.linkedTo)
123          while (iter.hasNext()):          while (iter.hasNext()):
124              if obj == iter.next(): return 1              if obj == iter.next(): return 1
125          return 0          return 0
# Line 128  class Scene: Line 130  class Scene:
130          self.mm = MindMap()          self.mm = MindMap()
131          if do_load_graph:          if do_load_graph:
132              print "Setting accursed node."              print "Setting accursed node."
133              self.center = fen.graph.findN_X1A_Iter(M.link).next()              self.center = fen.graph.findN_X1A_Iter(STRUCT.linkedTo).next()
134          else: self.center = None          else: self.center = None
135          self.scumm = [ 'go', 'link', 'unlink' ]          self.scumm = [ 'go', 'link', 'unlink' ]
136    
# Line 168  class Scene: Line 170  class Scene:
170                      elif self.mm.isLinkedTo(obj, self.center):                      elif self.mm.isLinkedTo(obj, self.center):
171                          pass                          pass
172                      else:                      else:
173                          fen.graph.add(self.center, M.link, obj)                          fen.graph.add(self.center, STRUCT.linkedTo, obj)
174                      pass                      pass
175                  elif c == 'unlink':                  elif c == 'unlink':
176                      if obj == self.center:                      if obj == self.center:
# Line 185  class Scene: Line 187  class Scene:
187          elif key == 'Backspace':          elif key == 'Backspace':
188              if self.mm.getAccursed() != None:              if self.mm.getAccursed() != None:
189                  self.mm.deleteText()                  self.mm.deleteText()
190                  if self.mm.getAccursed() == None:  #                if self.mm.getAccursed() == None:
191                      self.center = None  #                    self.center = None
192          elif key == "Ctrl-S":          elif key == "Ctrl-S":
193              p("going to save");              p("going to save");
194    
# Line 215  class Scene: Line 217  class Scene:
217          vs.put(background((1, 1, 1)))          vs.put(background((1, 1, 1)))
218    
219          unused = []          unused = []
220          iter = fen.graph.findN_X11_Iter(RDF.type, M.Data)          iter = fen.graph.findN_X11_Iter(RDF.type, MIND.Data)
221          while (iter.hasNext()):          while (iter.hasNext()):
222              obj = iter.next()              obj = iter.next()
223              if self.mm.isLinked(obj): continue              if self.mm.isLinked(obj): continue
# Line 242  class Scene: Line 244  class Scene:
244    
245      def doMindMap(self, vs, node, x, y, deepnes = 0):      def doMindMap(self, vs, node, x, y, deepnes = 0):
246          links = []          links = []
247          iter = fen.graph.findN_11X_Iter(node, M.link)          iter = fen.graph.findN_11X_Iter(node, STRUCT.linkedTo)
248          while iter.hasNext():          while iter.hasNext():
249              links.append(iter.next())              links.append(iter.next())
250          iter = fen.graph.findN_X11_Iter(M.link, node)          iter = fen.graph.findN_X11_Iter(STRUCT.linkedTo, node)
251          while iter.hasNext():          while iter.hasNext():
252              links.append(iter.next())              links.append(iter.next())
253    
# Line 318  class Scene: Line 320  class Scene:
320    
321  class MindData:  class MindData:
322      def place(self, mm, key, vs, cs, rect=0):      def place(self, mm, key, vs, cs, rect=0):
323          wi, h = vs.size.width, vs.size.height          p = nodeview.f(fen.graph, key)
324          x0,y0 = wi/2.0, h/2.0  
325    #        wi, h = vs.size.width, vs.size.height
326    #        x0,y0 = wi/2.0, h/2.0
327          box = jarray.zeros(2, 'f')          box = jarray.zeros(2, 'f')
328          vs.coords.getSqSize(cs, box)          vs.coords.getSqSize(cs, box)
329          bx, by = box[0], box[1]          bx, by = box[0], box[1]
# Line 339  class MindData: Line 343  class MindData:
343          # put the text          # put the text
344          cs = vs.translateCS(cs, "TR", 0, by*0.3 )          cs = vs.translateCS(cs, "TR", 0, by*0.3 )
345                    
         p = nodeview.f(fen.graph, key)  
   
346  #        text = vob.vobs.TextVob(textstyle, alphContent  #        text = vob.vobs.TextVob(textstyle, alphContent
347  #                                .getText(fen.graph,key), 0,  #                                .getText(fen.graph,key), 0,
348  #                                color)  #                                color)

Legend:
Removed from v.1.6  
changed lines
  Added in v.1.7

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