- for (k,v) in os.environ.items ():
- sys.stderr.write ("%s=\"%s\"\n" % (k, v))
-
-BOUNDING_BOX_RE = '^%%BoundingBox: (-?[0-9]+) (-?[0-9]+) (-?[0-9]+) (-?[0-9]+)'
-def get_bbox (filename):
- bbox = filename + '.bbox'
- ## -sOutputFile does not work with bbox?
- cmd = 'gs -sDEVICE=bbox -q -dNOPAUSE %s -c showpage -c quit 2>%s' % \
- (filename, bbox)
- system (cmd, progress_p = 1)
- box = open (bbox).read ()
- m = re.match (BOUNDING_BOX_RE, box)
- gr = []
- if m:
- gr = map (string.atoi, m.groups ())
-
- return gr
-
-
-def make_ps_images (ps_name, resolution = 90):
- ## todo:
- ## have better algorithm for deciding when to crop page,
- ## and when to show full page
- base = re.sub (r'\.e?ps', '', ps_name)
-
- header = open (ps_name).read (1024)
-
- match = re.search (BOUNDING_BOX_RE, header, re.MULTILINE)
- bbox = []
- if match:
- bbox = map (string.atoi, match.groups ())
-
- multi_page = re.search ('\n%%Pages: ', header)
- cmd = ''
-
- if multi_page == None:
-
- if bbox == []:
- bbox = get_bbox (ps_name)
-
- trans_ps = ps_name + '.trans.ps'
- output_file = re.sub (r'\.e?ps', '.png', ps_name)
-
- # need to have margin, otherwise edges of letters will
- # be cropped off.
-
- margin = 3
- fo = open (trans_ps, 'w')
- fo.write ('%d %d translate\n' % (-bbox[0] + margin,
- -bbox[1] + margin))
- fo.close ()
-
- x = (2* margin + bbox[2] - bbox[0]) \
- * resolution / 72.0
- y = (2* margin + bbox[3] - bbox[1]) \
- * resolution / 72.0
- if x == 0:
- x = 1
- if y == 0:
- y = 1
-
- cmd = r'''gs -g%dx%d -sDEVICE=pnggray -dTextAlphaBits=4 -dGraphicsAlphaBits=4 -q -sOutputFile=%s -r%d -dNOPAUSE %s %s -c showpage -c quit ''' % \
- (x, y, output_file, resolution, trans_ps, ps_name)
-
- rms = glob.glob (base + '-page*.png')
- map (os.unlink, rms)
- else:
- output_file = re.sub (r'\.e?ps', '-page%d.png', ps_name)
-
- rmfile = base + '.png'
- if os.path.isfile (rmfile):
- os.unlink (rmfile)
-
- cmd = r'''gs -s -sDEVICE=pnggray -dTextAlphaBits=4 -dGraphicsAlphaBits=4 -q -sOutputFile=%s -dNOPAUSE -r%d %s -c quit''' % (output_file,
- resolution, ps_name)
-
- status = system (cmd)
- signal = 0xf & status
- exit_status = status >> 8
-
-
- if status:
- os.unlink (png)
- error (_ ("Removing output file"))
- exit (1)
-
-
- cmd = r'''gs -s -sDEVICE=pnggray -dTextAlphaBits=4 -dGraphicsAlphaBits=4 -q -sOutputFile=%s -dNOPAUSE -r%d %s -c quit''' % (output_file,
- resolution, ps_name)
-
- files = glob.glob (re.sub ('%d', '*', output_file))
- return files
-
+ for (k,v) in os.environ.items ():
+ sys.stderr.write ("%s=\"%s\"\n" % (k, v))
+
+class NonDentedHeadingFormatter (optparse.IndentedHelpFormatter):
+ def format_heading(self, heading):
+ if heading:
+ return heading[0].upper() + heading[1:] + ':\n'
+ return ''
+ def format_option_strings(self, option):
+ sep = ' '
+ if option._short_opts and option._long_opts:
+ sep = ','
+
+ metavar = ''
+ if option.takes_value():
+ metavar = '=%s' % option.metavar or option.dest.upper()
+
+ return "%3s%s %s%s" % (" ".join (option._short_opts),
+ sep,
+ " ".join (option._long_opts),
+ metavar)
+
+ def format_usage(self, usage):
+ return _("Usage: %s") % usage + '\n'
+
+ def format_description(self, description):
+ return description
+
+def get_option_parser (*args, **kwargs):
+ p = optparse.OptionParser (*args, **kwargs)
+ p.formatter = NonDentedHeadingFormatter ()
+ return p