Setting Text Distances from a Script: Difference between revisions
Jump to navigation
Jump to search
Line 87: | Line 87: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
==More complex but more versatile== | ==More complex but more versatile== | ||
What if we didn't want all the distances to be the same? Look at this modification of the distance value.Dialog: | What if we didn't want all the distances to be the same? Look at this modification of the distance value.Dialog, and subsequent lines: | ||
<syntaxhighlight lang='python'> | |||
distances = scribus.valueDialog("Text Distance", 'Enter your text distances\n white space in between.\nLeft Right Top Bottom', '10 10 10 10') | |||
distance = distances.split | |||
distanceleft = float(distance[0]) | |||
distanceright = float(distance[1]) | |||
distancetop = float(distance[2]) | |||
distancebottom = float(distance[3] | |||
</syntaxhighlight> | |||
We could use int(distance...), but using float allows for decimals. |
Revision as of 01:21, 10 November 2015
Here is a simple script for setting the text distances for a text frame. In this particular version, we set all the distances the same, so only one value is needed for the value.Dialog.
settextdistance.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# ****************************************************************************
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#
# ****************************************************************************
"""
© 2015 by Gregory Pittman
settextdistance.py
Sets the text distances of the selected text frame
USAGE
Select a text frame, run script.
"""
try:
import scribus
except ImportError:
print "Unable to import the 'scribus' module. This script will only run within"
print "the Python interpreter embedded in Scribus. Try Script->Execute Script."
sys.exit(1)
if not scribus.haveDoc():
scribus.messageBox('Scribus - Script Error', "No document open", scribus.ICON_WARNING, scribus.BUTTON_OK)
sys.exit(1)
if scribus.selectionCount() == 0:
scribus.messageBox('Scribus - Script Error',
"There is no object selected.\nPlease select a text frame 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 one text frame and try again.",
scribus.ICON_WARNING, scribus.BUTTON_OK)
sys.exit(2)
distance = scribus.valueDialog("Text Distance", 'Enter your text distance', '10')
distance = float(distance)
distanceleft = distance
distanceright = distance
distancetop = distance
distancebottom = distance
textbox = scribus.getSelectedObject()
pageitems = scribus.getPageItems()
scribus.setRedraw(False)
for item in pageitems:
if (item[0] == textbox):
if (item[1] != 4):
scribus.messageBox('Scribus - Script Error',
"This is not a textframe. Try again.", scribus.ICON_WARNING, scribus.BUTTON_OK)
sys.exit(2)
scribus.setTextDistances(distanceleft,distanceright,distancetop,distancebottom,textbox)
scribus.moveObject(-4,0,textbox)
scribus.moveObject(4,0,textbox)
scribus.setRedraw(True)
More complex but more versatile
What if we didn't want all the distances to be the same? Look at this modification of the distance value.Dialog, and subsequent lines:
distances = scribus.valueDialog("Text Distance", 'Enter your text distances\n white space in between.\nLeft Right Top Bottom', '10 10 10 10')
distance = distances.split
distanceleft = float(distance[0])
distanceright = float(distance[1])
distancetop = float(distance[2])
distancebottom = float(distance[3]
We could use int(distance...), but using float allows for decimals.