38 |
dbg_fail = config.dbg.shorthand('mp.fail') |
dbg_fail = config.dbg.shorthand('mp.fail') |
39 |
|
|
40 |
def link_draw_code(self): |
def link_draw_code(self): |
41 |
|
if config.mp_eps_only: return '' |
42 |
if self.error: return 'showlinkerror("'+self.target+'", "'+self.title+'", ('+self.bbox+'));' |
if self.error: return 'showlinkerror("'+self.target+'", "'+self.title+'", ('+self.bbox+'));' |
43 |
if not self.focus: return 'showlink("'+self.target+'", "'+self.title+'", ('+self.bbox+'));' |
if not self.focus: return 'showlink("'+self.target+'", "'+self.title+'", ('+self.bbox+'));' |
44 |
else: |
else: |
70 |
if self.link != None: |
if self.link != None: |
71 |
self.link.bbox = ('bboxmeasuredpic(%s)' % (self.var)) |
self.link.bbox = ('bboxmeasuredpic(%s)' % (self.var)) |
72 |
|
|
73 |
def create_uml(diagram, extension='', scale=1.0): |
def create_uml(diagram, context='', scale=1.0): |
74 |
""" |
""" |
75 |
""" |
""" |
76 |
if not os.path.isfile(slashify(config.mp_directory)+diagram+'.gen.uml'): |
if not os.path.isfile(slashify(config.mp_directory)+diagram+'.gen.uml'): |
82 |
l = navidoc.util.parser.parse_indented(s) |
l = navidoc.util.parser.parse_indented(s) |
83 |
m = navidoc.parser.ElementList(l) |
m = navidoc.parser.ElementList(l) |
84 |
|
|
85 |
if len(extension) > 0: extension = '_'+extension |
if len(context) > 0: |
86 |
|
context = '_'+context |
87 |
|
|
88 |
|
draw_extra = '' |
89 |
|
|
90 |
|
# """ Creates the "menu" above the diagram. """ |
91 |
|
# """ Some variables are needed :/ """ |
92 |
|
# if menu and settings.has_key('name') and settings.has_key('path'): |
93 |
|
# """Refers must exist""" |
94 |
|
# if (os.path.isfile(path+settings['name']+".gen.refers")): |
95 |
|
# refer_file = open(path+settings['name']\ |
96 |
|
# +".gen.refers", "r") |
97 |
|
# refers = refer_file.readlines() |
98 |
|
# refer_file.close() |
99 |
|
# """List through in descending order.""" |
100 |
|
# refer_names = {} |
101 |
|
# for id_inv in range(len(refers)): |
102 |
|
# id = len(refers)-(id_inv+1) |
103 |
|
# refer_file = open(refers[id].replace(".rst", ".gen.html").replace("\n","")) |
104 |
|
# refer_title = re.compile('<title>([^<]*)</title>') |
105 |
|
# refer_title = refer_title.findall(refer_file.read()) |
106 |
|
# refer_file.close() |
107 |
|
# if len(refer_title) > 0: refer_title = refer_title[0] |
108 |
|
# else: refer_title = refers[id].split("/")[-1].split(".")[0] |
109 |
|
# |
110 |
|
# slash = settings['path'].rfind("/") |
111 |
|
# if slash != -1: |
112 |
|
# refer_path = settings['path'][0:slash+1].replace("//", "/") |
113 |
|
# refer_jlink = mputils.transition_path(refer_path, |
114 |
|
# refers[id].replace(".rst", ".gen.html").replace("\n","")) |
115 |
|
# else: refer_jlink = refers[id].replace(".rst", ".gen.html").replace("\n","") |
116 |
|
## print "refer:", refers[id], "jlink:",refer_jlink, "path:", settings['path'] |
117 |
|
## refer_name = refers[id].split("/")[-1].split(".")[0] |
118 |
|
# refer_name = randomVar() |
119 |
|
# refer_names[id] = refer_name |
120 |
|
# refer_obj = mptitle(refer_name, refer_title) |
121 |
|
# refer_obj.jlink = refer_jlink+"#"+settings['name'] |
122 |
|
# titles[refer_obj.jlink] = refer_title |
123 |
|
# if id == len(refers)-1: |
124 |
|
# refer_draw += "\tdraw ulcorner(bbox(currentpicture))+(0,10) -- urcorner(bbox(currentpicture))+(0,10) withpen pencircle scaled 1.5pt;\n" |
125 |
|
# refer_draw += refer_obj.setupCode() |
126 |
|
# refer_draw += "\t"+refer_name+".sw = ulcorner(bbox(currentpicture))+(35,0);\n" |
127 |
|
# refer_draw += refer_obj.drawCode() |
128 |
|
# else: |
129 |
|
# refer_draw += refer_obj.setupCode() |
130 |
|
# refer_draw += "\t"+refer_name+".sw = "\ |
131 |
|
# +refer_names[id+1]\ |
132 |
|
# +".nw;\n" |
133 |
|
# refer_draw += refer_obj.drawCode() |
134 |
|
# if id == 0: |
135 |
|
# refer_draw += "\tdraw (infontBB(\"from:\", \"Helvetica\") scaled 1.3) shifted (ulcorner(bbox(currentpicture))+(2,-13));\n" |
136 |
|
|
137 |
dir = slashify(config.mp_directory) |
dir = slashify(config.mp_directory) |
138 |
|
|
139 |
gen1 = open(dir+diagram+extension+'.gen.mp.1', 'w') |
gen1 = open(dir+diagram+context+'.gen.mp.1', 'w') |
140 |
gen1.write(m.setup_code()+'\n') |
gen1.write(m.setup_code()+'\n') |
141 |
gen1.close() |
gen1.close() |
142 |
gen2 = open(dir+diagram+extension+'.gen.mp.2', 'w') |
gen2 = open(dir+diagram+context+'.gen.mp.2', 'w') |
143 |
gen2.write(m.draw_code()+"\n") |
gen2.write(m.draw_code()+"\n") |
144 |
|
gen2.write(draw_extra+"\n") |
145 |
gen2.write('showlinksize("bbox", "'+diagram+'", (bbox currentpicture));'+"\n") |
gen2.write('showlinksize("bbox", "'+diagram+'", (bbox currentpicture));'+"\n") |
146 |
gen2.close() |
gen2.close() |
147 |
gen3 = open(dir+diagram+extension+".gen.mp.3", "w") |
gen3 = open(dir+diagram+context+".gen.mp.3", "w") |
148 |
gen3.write(""" |
gen3.write(""" |
149 |
prologues := 1; |
prologues := 1; |
150 |
input uml.mp |
input uml.mp |
151 |
|
|
152 |
beginfig(1) |
beginfig(1) |
153 |
input %(diagram)s%(extension)s.gen.mp.1 |
input %(diagram)s%(context)s.gen.mp.1 |
154 |
input %(diagram)s.gen.mp |
input %(diagram)s.gen.mp |
155 |
input %(diagram)s%(extension)s.gen.mp.2 |
input %(diagram)s%(context)s.gen.mp.2 |
156 |
endfig |
endfig |
157 |
end |
end |
158 |
""" % locals()) |
""" % locals()) |
159 |
gen3.close() |
gen3.close() |
160 |
|
|
161 |
mp2png(diagram+extension, scale) |
mp2png(diagram+context, scale) |
162 |
|
|
163 |
def mp2png(diagram, scale=1.0): |
def mp2png(diagram, scale=1.0): |
164 |
""" |
""" |
252 |
Map exact coordinates from corner elements using |
Map exact coordinates from corner elements using |
253 |
provided mapper. |
provided mapper. |
254 |
""" |
""" |
255 |
dbg("Unmapped corners: "+self.corners) |
dbg("Unmapped corners: "+str(self.corners)) |
256 |
self.corners = [int(element) for element in ( |
self.corners = [int(element) for element in ( |
257 |
mapper(self.corners[0], self.corners[1]) + |
mapper(self.corners[0], self.corners[1]) + |
258 |
mapper(self.corners[2], self.corners[3]) |
mapper(self.corners[2], self.corners[3]) |
259 |
)] |
)] |
260 |
dbg("Mapped corners: "+self.corners) |
dbg("Mapped corners: "+str(self.corners)) |
261 |
|
|
262 |
def imgmapanchor(self, scale=1.0): |
def imgmapanchor(self, scale=1.0): |
263 |
return """<area href="%s" shape="rect" coords="%s" target="_top" title="%s" alt="%s" />\n""" \ |
return """<area href="%s" shape="rect" coords="%s" target="_top" title="%s" alt="%s" />""" \ |
264 |
% (self.target, |
% (self.target, |
265 |
",".join(["%s"%(int(c*scale)) for c in self.corners]), |
",".join(["%s"%(int(c*scale)) for c in self.corners]), |
266 |
self.title, |
self.title, |