[scribus] recalculation of overflow is not correct
Gregory Pittman
gpittman at iglou.com
Mon Mar 2 14:29:08 CET 2009
Chantal Rosmuller wrote:
> Hi, I am writing a script that loops through textboxes in a document and
> resizes them until the frame fits. However after resizing and re evaluating
> the overflow the script gives me the exact same number. How is that possible
> and what can I do about it?
>
>
> # ---------------------------------------------------#
> # check of het script vanuit scribus wordt gestart #
> #----------------------------------------------------#
>
> import sys
> try:
> import scribus
>
> except ImportError:
> print "This script only works from within Scribus"
> sys.exit(1)
>
> #Loop through the pages
> page = 1
> pagenum = scribus.pageCount()
> while (page <= pagenum):
> scribus.gotoPage(page)
> #go to the next page in the next loop
> page += 1
> #and get all pageitems, this function gets
> #name, obejcttype and ordre for eacht item
> #
> #objecttype 4 is textframe
> ItemsOnpage = scribus.getPageItems()
> #print pageitmes for debugging puprposes
> ItemsOnpage
> #count the number of items
> NumberItemsOnpageTotal=len(ItemsOnpage)
> #loop through items
> NumberItemsOnpage = 1
> while (NumberItemsOnpage <= NumberItemsOnpageTotal):
> #whe have arrays of itemproperties (name, obejcttype and ordre)
> #within arrays with items, first get the current itme number in the array
> #current item number is NumberItemsOnpage but counting in an array
> # starts with zero so subtract one
> NumberItemsOnpageArraynumber=NumberItemsOnpage-1
> #now move to the right item
> CurrentItem=ItemsOnpage[NumberItemsOnpageArraynumber]
> #the first value in the itemarray is the itemname
> CurrentItemName=CurrentItem[0]
> print CurrentItemName
> #the secund value is the itemtype
> CurrentItemType=CurrentItem[1]
> print CurrentItemType
> #type 4 is textbox
> if CurrentItemType == 4:
> print "this is a textbox"
> selectObject(CurrentItemName)
> OverflowChar = scribus.textOverflows(CurrentItemName)
> print "initial overflow"
> print OverflowChar
> if OverflowChar > 0:
> (CurrentItemwidth, CurrentItemheight) = scribus.getSize(CurrentItemName)
> InitialAddition=1000
> ItemHeight=CurrentItemheight+InitialAddition
> scribus.sizeObject(CurrentItemwidth,ItemHeight,CurrentItemName)
> ##OverflowChar = 0
> ##print "overflow zero"
> ##print OverflowChar
> scribus.selectObject(CurrentItemName)
> OverflowChar = scribus.textOverflows(CurrentItemName)
> print "overflow after first adjustment"
> print OverflowChar
> #go to the next item
> NumberItemsOnpage += 1
>
> _______________________________________________
>
You think you have resized, but apparently not.
I would try these things in sequence:
1. stick a getSize() command after your sizeObject() command. If nothing
else, it will let you know if you actually did resize. It may also cause
the sizeObject to take effect.
2. put a redrawAll command after the sizeObject() command.
Greg
More information about the scribus
mailing list