365 |
self.elements = [] |
self.elements = [] |
366 |
self.var = var or toks[0] |
self.var = var or toks[0] |
367 |
self.name = toks[0] |
self.name = toks[0] |
368 |
self.do_contents(list) |
|
369 |
|
self.link = None |
370 |
|
|
371 |
|
for element in list: |
372 |
|
try: # try to make contained element work on it's own |
373 |
|
element = config.element_list.parse_element(element) |
374 |
|
if len(config.element_list.extras) > 0 and \ |
375 |
|
isinstance(config.element_list.extras[0], navidoc.link.Link): |
376 |
|
config.element_list.list.append(config.element_list.extras.pop(0)) |
377 |
|
config.element_list.list.append(element) |
378 |
|
if hasattr(element, 'var') and element.var: |
379 |
|
self.elements.append(element.var) |
380 |
|
except IndexError, e: # didn't work, add it as contained (usually links) |
381 |
|
config.element_list.add_contained_element(self, element) |
382 |
|
|
383 |
if self.link != None: |
if self.link != None: |
384 |
self.link.bbox = ('bboxmeasuredpic(%s)' % (self.var)) |
self.link.bbox = ('bboxmeasuredpic(%s.titl)' % (self.var)) |
385 |
def handle_contained(self, element): |
|
|
element = config.element_list.parse_element(element) |
|
|
config.element_list.list.append(element) |
|
|
if hasattr(element, 'var') and element.var: |
|
|
self.elements.append(element.var) |
|
386 |
def setup_code(self): |
def setup_code(self): |
387 |
titlebox = """ |
s = """ |
388 |
addto %%.titl.pict doublepath (urcorner(%%.titl.pict)--lrcorner(%%.titl.pict)) withpen currentpen; |
picture %%.titl.pict; |
389 |
addto %%.titl.pict doublepath (ulcorner(%%.titl.pict)--llcorner(%%.titl.pict)) withpen currentpen; |
%%.titl.pict = classTitle("%name%"); |
390 |
addto %%.titl.pict doublepath (ulcorner(%%.titl.pict)--urcorner(%%.titl.pict)) withpen currentpen; |
setbounds %%.titl.pict to bbox %%.titl.pict; |
391 |
""" |
|
392 |
s = """ |
addto %%.titl.pict doublepath (urcorner(%%.titl.pict)--lrcorner(%%.titl.pict)) withpen currentpen; |
393 |
picture %%.titl.pict; |
addto %%.titl.pict doublepath (ulcorner(%%.titl.pict)--llcorner(%%.titl.pict)) withpen currentpen; |
394 |
%%.titl.pict = classTitle("%name%"); |
addto %%.titl.pict doublepath (ulcorner(%%.titl.pict)--urcorner(%%.titl.pict)) withpen currentpen; |
395 |
setbounds %%.titl.pict to bbox %%.titl.pict; |
|
396 |
""" |
unknownpicmeasurements(%%); |
397 |
if not self.elements: s = s + titlebox |
picmeasurements(%%.titl); |
398 |
s = s + """ |
%%.titl.sw = %%.nw; |
399 |
unknownpicmeasurements(%%); |
""" |
400 |
picmeasurements(%%.titl); |
return self.repl(s) |
|
%%.titl.sw = %%.nw; |
|
|
""" |
|
|
if self.elements: s = s + titlebox |
|
|
return self.repl(s) |
|
401 |
def draw_code(self): |
def draw_code(self): |
|
s = '' |
|
402 |
if self.elements: |
if self.elements: |
403 |
elements_sw_x = 'xpart ' + '.sw, xpart '.join(self.elements) + '.sw' |
elements_sw_x = 'xpart ' + '.sw, xpart '.join(self.elements) + '.sw' |
404 |
elements_sw_y = 'ypart ' + '.sw, ypart '.join(self.elements) + '.sw' |
elements_sw_y = 'ypart ' + '.sw, ypart '.join(self.elements) + '.sw' |
405 |
elements_ne_x = 'xpart ' + '.ne, xpart '.join(self.elements) + '.ne' |
elements_ne_x = 'xpart ' + '.ne, xpart '.join(self.elements) + '.ne' |
406 |
elements_ne_y = 'ypart ' + '.ne, ypart '.join(self.elements) + '.ne' |
elements_ne_y = 'ypart ' + '.ne, ypart '.join(self.elements) + '.ne' |
407 |
|
|
408 |
s = """ |
s = '' |
409 |
%%.sw = (min("""+elements_sw_x+"""), min("""+elements_sw_y+""")) - (10,10); |
if self.elements: |
410 |
%%.ne = (max("""+elements_ne_x+"""), max("""+elements_ne_y+""")) + (10,10); |
s += """ |
411 |
""" |
%%.sw = (min("""+elements_sw_x+"""), min("""+elements_sw_y+""")) - (10,10); |
412 |
s = s + """ |
%%.ne = (max("""+elements_ne_x+"""), max("""+elements_ne_y+""")) + (10,10); |
413 |
draw bboxmeasuredpic(%%); |
|
|
drawmeasuredpic(%%.titl); |
|
414 |
""" |
""" |
415 |
|
s += """ |
416 |
|
picmeasurements(%%.titl); |
417 |
|
%%.titl.sw = %%.nw; |
418 |
|
|
419 |
|
draw bboxmeasuredpic(%%); |
420 |
|
drawmeasuredpic(%%.titl); |
421 |
|
""" |
422 |
return self.repl(s) |
return self.repl(s) |
423 |
|
|
424 |
class mpqual(navidoc.mp.MetapostElement): |
class mpqual(navidoc.mp.MetapostElement): |