Enlarge2Page: Difference between revisions

From Scribus Wiki
Jump to navigation Jump to search
Line 89: Line 89:
</pre>
</pre>
===Enlarge2Page_v2.py===
===Enlarge2Page_v2.py===
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.
Of course we can combine the two and then have a script that lets 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>

Revision as of 19:49, 26 March 2011

This article is part of the Scripts series.

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

Of course we can combine the two and then have a script that lets 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()