Enlarge2Page: Difference between revisions
Line 89: | Line 89: | ||
</pre> | </pre> | ||
===Enlarge2Page_v2.py=== | ===Enlarge2Page_v2.py=== | ||
But of course we can combine the two and then have a script that let's us choose between page or margins. Also note that if you change your mind after you run the script, just run it again and change the choice. | |||
<pre> | <pre> | ||
#!/usr/bin/env python | #!/usr/bin/env python | ||
Line 104: | Line 106: | ||
corner of the chosen feature. | corner of the chosen feature. | ||
Assumes a basepoint in the upper left corner. Error | Assumes a basepoint in the upper left corner. Error detection | ||
for no selected frame or more than one. Page units do not matter. | |||
""" | """ | ||
Revision as of 18:50, 26 March 2011
This script takes a selected object, enlarges it to the page size, and places it at an X-Pos, Y-Pos of 0,0. Works for whatever units you are using, since it simply gets the information and uses your selected units.
There is error detection for no selected object, but also for more than one selected object. The script would actually work for more than one selected object, but the resizing/repositioning will only apply to one of them. If you have grouped objects no error is detected, but only the bounding box is affected – the items of the group are not changed in size or position. One warning: the basepoint needs to be in the upper left corner for positioning to work properly.
#!/usr/bin/env python # -*- coding: utf-8 -*- # Enlarge2Page.py # this version 2011.03.26 # enlarges a selected object to the # size of the page """ Enlarge2Page.py (c) 2011 Gregory Pittman A devilishly simple script (there are more lines for detecting errors than for actually manipulating the object) which enlarges a single selected object to size of the page and positions it at 0,0. Assumes a basepoint in the upper left corner. Error detection for no selected frame or more than one. Page units do not matter. """ import scribus if scribus.haveDoc(): if scribus.selectionCount() == 0: scribus.messageBox('Scribus - Script Error', "There is no object selected.\nPlease select one and try again.", scribus.ICON_WARNING, scribus.BUTTON_OK) sys.exit(2) if scribus.selectionCount() > 1: scribus.messageBox('Scribus - Script Error', "You have more than one object selected.\nPlease select only one and try again.", scribus.ICON_WARNING, scribus.BUTTON_OK) sys.exit(2) xdimension, ydimension = scribus.getPageSize() selectedframe = scribus.getSelectedObject() scribus.sizeObject(xdimension, ydimension, selectedframe) scribus.moveObjectAbs(0, 0, selectedframe) scribus.redrawAll()
Enlarge2Margins
But what if you want to enlarge to the margins instead, and you've already created an object, edited, and you don't want to start all over? Enlarge2Margins.py is your answer.
#!/usr/bin/env python # -*- coding: utf-8 -*- # Enlarge2Margins.py # this version 2011.03.26 # enlarges a selected object to the # size of the margins """ Enlarge2Margins.py (c) 2011 Gregory Pittman A devilishly simple script (there are more lines for detecting errors than for actually manipulating the object) which enlarges a single selected object to size of the margins and positions it appropriately. Assumes a basepoint in the upper left corner. Error detection for no selected frame or more than one. Page units do not matter. """ import scribus if scribus.haveDoc(): if scribus.selectionCount() == 0: scribus.messageBox('Scribus - Script Error',"There is no object selected.\nPlease select one and try again.",scribus.ICON_WARNING, scribus.BUTTON_OK) sys.exit(2) if scribus.selectionCount() > 1: scribus.messageBox('Scribus - Script Error',"You have more than one object selected.\nPlease select only one and try again.", scribus.ICON_WARNING, scribus.BUTTON_OK) sys.exit(2) xdimension, ydimension = scribus.getPageSize() top,left,right,bottom = scribus.getPageMargins() selectedframe = scribus.getSelectedObject() scribus.sizeObject((xdimension - left - right), (ydimension - top - bottom), selectedframe) scribus.moveObjectAbs(left, top, selectedframe) scribus.redrawAll()
Enlarge2Page_v2.py
But of course we can combine the two and then have a script that let's us choose between page or margins. Also note that if you change your mind after you run the script, just run it again and change the choice.
#!/usr/bin/env python # -*- coding: utf-8 -*- # Enlarge2Page_v2.py # this version 2011.03.26 # enlarges a selected object to the # size of the page """Enlarge2Page_v2.py (c) 2011 Gregory Pittman A simple script which enlarges a single selected object to size of the page or margins and positions it at the upper right corner of the chosen feature. Assumes a basepoint in the upper left corner. Error detection for no selected frame or more than one. Page units do not matter. """ import scribus if scribus.haveDoc(): if scribus.selectionCount() == 0: scribus.messageBox('Scribus - Script Error',"There is no object selected.\nPlease select one and try again.", scribus.ICON_WARNING, scribus.BUTTON_OK) sys.exit(2) if scribus.selectionCount() > 1: scribus.messageBox('Scribus - Script Error',"You have more than one object selected.\nPlease select only one and try again.", scribus.ICON_WARNING, scribus.BUTTON_OK) sys.exit(2) xdimension, ydimension = scribus.getPageSize() top,left,right,bottom = scribus.getPageMargins() selectedframe = scribus.getSelectedObject() enlargesize = scribus.valueDialog('Page or Margin?','Enlarge object to:\n(Anything other than default chooses margins)','page') if (enlargesize == 'page'): scribus.sizeObject(xdimension, ydimension, selectedframe) scribus.moveObjectAbs(0, 0, selectedframe) else: scribus.sizeObject((xdimension - left - right), (ydimension - top - bottom), selectedframe) scribus.moveObjectAbs(left, top, selectedframe) scribus.redrawAll()