#!/usr/bin/env python # -*- coding: utf-8 -*- """ Return the depth of the text in the file sample.txt Run with the command line scribus -g -py storydeptharg.py --python-arg-storyfile sample.txt depthtemplate.sla sample.txt is the text file to measure. depthtemplate.sla is a document with a single, empty text frame. Tested with scribus 1.5.0 Author: William Bader 11Aug14 wb initial version 15Dec14 wb get the file name from STORYFILE 19Aug15 wb get the file name from the command line """ # check that the script is running from inside scribus try: from scribus import * except ImportError: print 'This script only runs from within Scribus.' sys.exit(1) # get the os module try: import os except ImportError: print 'Could not import the os module.' sys.exit(1) # get the sys module try: import sys except ImportError: print 'Could not import the sys module.' sys.exit(1) def main(argv): # The first text frame of the current document defines the style try: storyfile = "" i = 1; while i < len(argv): if argv[i] == "-storyfile": storyfile = argv[i+1] i = i + 1 if storyfile == "": print 'Warning: -storyfile not given, checking environment' storyfile = os.environ['STORYFILE'] except: print 'Error: Pass the story file with the --python-arg-storyfile argument or the STORYFILE environment variable' return try: storytext = open(storyfile, 'r').read() except: print 'Error: Story file "', storyfile, '" not found.' return try: deselectAll() selectObject('Text1') except: print 'Error: The document does not have an object called Text1.' return try: setText(storytext) except: print 'Error: The document does not have a text frame.' return try: ov = textOverflows() width, depth = getSize() if ov: baddepth = depth gooddepth = 100 else: baddepth = 0 gooddepth = depth while baddepth < gooddepth: trydepth = (baddepth + gooddepth) / 2 sizeObject(width, trydepth) tryov = textOverflows() if tryov: baddepth = trydepth + 0.0001 else: baddepth = baddepth + 0.0001 gooddepth = trydepth sizeObject(width, gooddepth) print 'The depth is ', str(gooddepth) except: print 'Error: not a text frame.' # start the script if __name__ == '__main__': if haveDoc(): main(sys.argv) else: print 'Error: You need to have a document open before you can run this script succesfully.'