gzz-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Gzz-commits] gzz/metacode umlrst.py umltool.py


From: Asko Soukka
Subject: [Gzz-commits] gzz/metacode umlrst.py umltool.py
Date: Thu, 19 Dec 2002 11:13:20 -0500

CVSROOT:        /cvsroot/gzz
Module name:    gzz
Changes by:     Asko Soukka <address@hidden>    02/12/19 11:13:18

Modified files:
        metacode       : umlrst.py umltool.py 

Log message:
        bi-directional first rev

CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/gzz/gzz/metacode/umlrst.py.diff?tr1=1.8&tr2=1.9&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gzz/gzz/metacode/umltool.py.diff?tr1=1.6&tr2=1.7&r1=text&r2=text

Patches:
Index: gzz/metacode/umlrst.py
diff -u gzz/metacode/umlrst.py:1.8 gzz/metacode/umlrst.py:1.9
--- gzz/metacode/umlrst.py:1.8  Thu Dec 19 09:30:00 2002
+++ gzz/metacode/umlrst.py      Thu Dec 19 11:13:18 2002
@@ -96,7 +96,10 @@
 docutils.parsers.rst.directives._directives['uml-refer'] = uml_refer_directive
 
 def create_diagram(diagram):
-    umltool.run(diagram)
+    return (umltool.run(diagram))
+
+def create_diagram(diagram_orig, diagram_copy="", zoom=100):
+    return (umltool.run(diagram_orig, diagram_copy, zoom))
 
 def embed_diagram(path):
     if not umltool.settings.has_key('to_root'):
@@ -120,8 +123,12 @@
             assert 
(os.path.isfile(umltool.settings['tmpdir']+"/"+prefix+".uml")\
                    and 
os.path.isfile(umltool.settings['tmpdir']+"/"+prefix+".mp")),\
                    "file "+ prefix+".uml or "+prefix+".mp not found"
-            print "Embedding %s into %s" % (name, path)
-            create_diagram(prefix)
+            print "Embedding %s into %s" % (prefix, path)
+
+            implicit_targets = create_diagram(prefix)
+            for target in implicit_targets:
+                embed_implicit(name, target) 
+
             assert 
(os.path.isfile(umltool.settings['tmpdir']+"/"+name+".gen.html")\
                    and 
os.path.isfile(umltool.settings['tmpdir']+"/"+name+".gen.png")),\
                    "file "+name+".gen.html or "+name+".gen.png not found"
@@ -139,3 +146,48 @@
         out.write(html)
         out.close()
 
+def embed_implicit(name, path):
+    """Terrible kludge to embed named diagram into path document
+       with correct imagemap."""
+    tmp = umltool.settings.copy()
+    umltool.set_to_root(path)
+    
+    #the second pass - adds uml into html
+    if path.endswith(".rst"): path = path[0:len(path)-4]
+    if os.path.isfile(path+".html"):
+        html = open(path+".html").read()
+        insert = html.upper().find("</H1>")
+        if insert == -1: insert = html.upper().find("</H2>")
+        
+        #the same diagram is written only once
+        if html.find("id=\""+name+"\"") == -1 and insert != -1:
+            out = open(path+".html", "w")
+            out.write(html[0:insert+5]);
+
+            #This should work also with non-generated UML-diagrams. Checks 
first
+            #for generated and then if non-generated diagram exists.
+            if 
(os.path.isfile(umltool.settings['tmpdir']+"/"+name+".gen.uml")):
+                old_prefix = name + ".gen"
+            else: old_prefix = name
+
+            print "Embedding %s into %s" % (name, path)
+
+            new_prefix = name+"_"+path.replace("/","_")
+            create_diagram(old_prefix, new_prefix, 100)
+        
+            #Cut&Pastes imagemap into html
+            imgmap = 
open(umltool.settings['tmpdir']+"/"+new_prefix+".gen.html").read()
+            out.write("<map id=\""+name+"\" name=\""+name+"\">\n")
+            out.write(imgmap[imgmap.find('>',imgmap.find('<map'))+1:\
+                             imgmap.find('</map>')])
+            out.write("</map>\n")
+            out.write("<img "\
+                      +"src=\""+umltool.settings['to_tmpdir']+"/"\
+                      +new_prefix+".gen.png"\
+                      +"\" usemap=\"#"+name+"\" alt=\""+name+"\" />")
+            
+            html = html[insert+5:len(html)]
+            out.write(html)
+            out.close()
+        
+    umltool.settings = tmp
Index: gzz/metacode/umltool.py
diff -u gzz/metacode/umltool.py:1.6 gzz/metacode/umltool.py:1.7
--- gzz/metacode/umltool.py:1.6 Thu Dec 19 08:46:30 2002
+++ gzz/metacode/umltool.py     Thu Dec 19 11:13:18 2002
@@ -662,7 +662,13 @@
            mapper(self.corners[2], self.corners[3]) 
        )]
        print "Mapped: ", self.corners
-    def imgmapanchor(self):
+    def getTarget(self):
+        """Returns jlink's target with "full path",
+        but without .foo postfix."""
+       ts = self.name.split(".")
+        target = (settings['javadoc']+"/"+"/".join(ts)) 
+        return (target)
+    def imgmapanchor(self, zoom=100):
        ts = self.name.split(".")
        if re.search("html", ts[-1]):
            target = self.name
@@ -675,7 +681,7 @@
                       +"/".join(ts)
                       + ".html")
        return """<area href="%s" shape="rect" coords="%s" target="_top" 
title="%s" alt="%s" />\n""" % (
-           target, ",".join(["%s"%c for c in self.corners]), self.name, 
self.name)
+           target, ",".join(["%s"%(int(c*(zoom*0.01))) for c in 
self.corners]), self.name, self.name)
        
 
 def roundDown(x):
@@ -700,7 +706,7 @@
                "-xsize", self.w * scale, "-ysize", self.h * scale,
                "-xborder", 0, "-yborder", 0]]
 
-def run(prefix_in, prefix_out=""):
+def run(prefix_in, prefix_out="", zoom=100):
     if prefix_out == "": prefix_out = prefix_in
     if not prefix_out.endswith(".gen"): prefix_out = prefix_out + ".gen"
 
@@ -782,8 +788,12 @@
        </HTML>
        """ % { "prefix_in": prefix_in,
                "filename": prefix_out+".png",
-               "links": " ".join([l.imgmapanchor() for l in links]) }
+               "links": " ".join([l.imgmapanchor(zoom) for l in links]) }
     html = open(path+prefix_out+".html", "w")
     html.write(htmlcode)
     html.close()
 
+    targets = []
+    for l in links:
+        targets.append(l.getTarget())
+    return targets



reply via email to

[Prev in Thread] Current Thread [Next in Thread]