Making margins in Guttenberg way

From Scribus Wiki
Revision as of 13:58, 22 June 2011 by Stefan (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search
This article is part of the Scripts series.

This script makes proportional margins in Gutemberg way, based in left margin value. Scribus automaticaly mirror margin in facing page documents.

Made après Sitespiegel OpenOffice.org macro.

--Meira da Rocha 18:37, 10 Jun 2005 (UTC)

#!/usr/bin/env python2.3
# -*- coding: utf-8 -*-
"""Generate margins according Gutemberg way.
"""
import sys
 
"""Locale strings to be translated """
TITLE = "Generate margins"
noDocMsg = "<h2>First, open a doc</h2>This script only work on opened document.\
<b>Open a document&lt/b> before run this script." 
runningMsg = "Running script..." 
noScribusMsg = "This Python script is written for the Scribus scripting interface.\
\nIt can only be run from within Scribus." 

try:
    import scribus
except ImportError,err:
    print noScribusMsg
    sys.exit(1)
    
from scribus import UNIT_POINTS,BUTTON_OK,ICON_WARNING

def main(argv):
    """Generate margins"""
    if scribus.haveDoc():
        scribus.setRedraw(False)
        unit = scribus.getUnit()  # save original unit
        scribus.setUnit(UNIT_POINTS) # working in points, due a bug in getPageMargins
        
        pageWidth, pageHeight = scribus.getPageSize()
        ratio = pageHeight / pageWidth
        topMargin, leftMargin, rightMargin, bottomMargin = scribus.getPageMargins()
        topMargin = leftMargin * ratio
        rightMargin = leftMargin * 2
        bottomMargin = rightMargin * ratio
        scribus.setMargins(leftMargin, rightMargin, topMargin, bottomMargin)
        
        scribus.setUnit(unit) # restore original unit
        
    else:
        scribus.messageBox(TITLE, noDocMsg, ICON_WARNING, BUTTON_OK)

def main_wrapper(argv):
    try:
        scribus.statusMessage(runningMsg)
        scribus.progressReset()
       main(argv)
    finally:
        if scribus.haveDoc():
            scribus.setRedraw(True)
        scribus.statusMessage("")
        scribus.progressReset()

if __name__ == '__main__':
    main_wrapper(sys.argv)