27 |
|
|
28 |
__docformat__ = 'reStructuredText' |
__docformat__ = 'reStructuredText' |
29 |
|
|
|
import os, os.path |
|
|
|
|
30 |
import config |
import config |
31 |
|
|
32 |
import navidoc.link |
import os, os.path |
33 |
|
import navidoc.link, navidoc.parser |
34 |
|
|
35 |
from navidoc.utils.path import * |
from navidoc.utils.path import * |
|
from navidoc.parser import NamedElement |
|
36 |
|
|
37 |
dbg = config.dbg.shorthand('mp') |
dbg = config.dbg.shorthand('mp') |
38 |
dbg_fail = config.dbg.shorthand('mp.fail') |
dbg_fail = config.dbg.shorthand('mp.fail') |
45 |
else: return 'showfocus("'+target+'", '+title+', ('+box+'));' |
else: return 'showfocus("'+target+'", '+title+', ('+box+'));' |
46 |
navidoc.link.Link.draw_code = link_draw_code |
navidoc.link.Link.draw_code = link_draw_code |
47 |
|
|
48 |
class NamedMPElement(NamedElement): |
class MetaPostElement(navidoc.parser.NamedElement): |
49 |
def repl(self, s): |
def repl(self, s): |
50 |
s = s.replace("%%", self.var) |
s = s.replace("%%", self.var) |
51 |
s = s.replace("%name%", self.name) |
s = s.replace("%name%", self.name) |
58 |
""" |
""" |
59 |
return self.repl(s) |
return self.repl(s) |
60 |
|
|
61 |
class SimpleElement(NamedMPElement): |
class SimpleElement(MetaPostElement): |
62 |
def __init__(self, var, s, list): |
def __init__(self, var, s, list): |
63 |
dbg("Simple element: %s %s %s" % (self, s, list)) |
dbg("Simple element: %s %s %s" % (self, s, list)) |
64 |
self.var = var or s |
self.var = var or s |
68 |
def create_uml(diagram, extension='', scale=1.0): |
def create_uml(diagram, extension='', scale=1.0): |
69 |
""" |
""" |
70 |
""" |
""" |
71 |
if not os.path.isfile(_slashify(config.mp_directory)+diagram+'.gen.uml'): |
if not os.path.isfile(slashify(config.mp_directory)+diagram+'.gen.uml'): |
72 |
raise MetapostException(_slashify(config.mp_directory)+diagram+'.gen.uml'+' not found') |
raise MetapostException(slashify(config.mp_directory)+diagram+'.gen.uml'+' not found') |
73 |
if not os.path.isfile(_slashify(config.mp_directory)+diagram+'.gen.mp'): |
if not os.path.isfile(slashify(config.mp_directory)+diagram+'.gen.mp'): |
74 |
raise MetapostException(_slashify(config.mp_directory)+diagram+'.gen.mp'+' not found') |
raise MetapostException(slashify(config.mp_directory)+diagram+'.gen.mp'+' not found') |
75 |
|
|
76 |
s = open(_slashify(config.mp_directory)+diagram+'.gen.uml').read() |
s = open(slashify(config.mp_directory)+diagram+'.gen.uml').read() |
77 |
l = parseIndented(s) |
l = parseIndented(s) |
78 |
m = mplist(l) |
m = mplist(l) |
79 |
|
|
80 |
if len(extension) > 0: extension = '_'+extension |
if len(extension) > 0: extension = '_'+extension |
81 |
|
|
82 |
dir = _slashify(config.mp_directory) |
dir = slashify(config.mp_directory) |
83 |
gen1 = open(dir+diagram+extension+'.gen.mp.1', 'w') |
gen1 = open(dir+diagram+extension+'.gen.mp.1', 'w') |
84 |
gen1.write(m.setupCode()+'\n') |
gen1.write(m.setupCode()+'\n') |
85 |
gen1.close() |
gen1.close() |
116 |
dbg(syscmd) |
dbg(syscmd) |
117 |
os.system('cd '+config.mp_directory+';'+syscmd) |
os.system('cd '+config.mp_directory+';'+syscmd) |
118 |
|
|
119 |
log = open(_slashify(config.mp_directory)+diagram+'.gen.log').read() |
log = open(slashify(config.mp_directory)+diagram+'.gen.log').read() |
120 |
if log.find("\n"+'!') != -1: |
if log.find("\n"+'!') != -1: |
121 |
dbg_fail('Error occurred while processing the diagram. The log is shown below.') |
dbg_fail('Error occurred while processing the diagram. The log is shown below.') |
122 |
dbg_fail(log) |
dbg_fail(log) |
145 |
|
|
146 |
scaling = int(scaling / scale) |
scaling = int(scaling / scale) |
147 |
|
|
148 |
syscmd = ('pstopnm '+' '.join(list)+' <'+_slashify(config.mp_directory)+diagram+'.gen' \ |
syscmd = ('pstopnm '+' '.join(list)+' <'+slashify(config.mp_directory)+diagram+'.gen' \ |
149 |
+'.mp.1 2>/dev/null | pnmscale -reduce '+scaling+' 2>/dev/null | ' \ |
+'.mp.1 2>/dev/null | pnmscale -reduce '+scaling+' 2>/dev/null | ' \ |
150 |
+'pnmtopng >'+_slashify(config.mp_directory)+diagram+'.gen.png 2>/dev/null') |
+'pnmtopng >'+slashify(config.mp_directory)+diagram+'.gen.png 2>/dev/null') |
151 |
|
|
152 |
dbg(syscmd) |
dbg(syscmd) |
153 |
os.system(syscmd) |
os.system(syscmd) |