Criando grades com guias
Jump to navigation
Jump to search
Scripts para iniciantes • Scripts de extensão/PyQt • Questões sobre Py • Plugins • Outros |
Versão em inglês.
Básico
Colaborado por José Antonio. Útil na criação de layout de revistas e jornais.
#!/usr/bin/env python2.3 # -*- coding: utf-8 -*- """Generate a grid of guides for layout porpouses. Ask user for number of columns, number of rows and gap measure. """ import sys """Locale strings to be translated """ numColStr1 = 'Número de colunas' #Quantas colunas? numColStr2 = 'Quantas colunas?' #Quantas colunas? numLinStr1 = 'Número de linhas' #Quantas linhas? numLinStr2 = 'Quantas linhas de módulos?' #How many rows? gapStr1 = 'Largura da valeta' #Largura do espaço gapStr2 = 'Qual a largura das valetas em pontos?' #gap measure in points? TITLE = "Gera linhas-guia" #Gera as guias noDocMsg = "<h2>Abra um documento, primeiramente</h2>Ops! Este script só funciona com um documento aberto. <b>Abra um documento</b> antes de rodar o script." # <h2>Primeiro abra um documento.</h2>Este script apenas funciona com em um documento aberto. <b>Abra um documento</b> antes de executar este script. runningMsg = "Rodando o script..." #"Executando script..." noScribusMsg = "This Python script is written for the Scribus scripting interface.\nIt can only be run from within Scribus." """ Feel free to change defaults""" defaultNumColumns = '5' defaultNumRows = '8' defaultGap = '14.1732' #5mm em pontos, devido a um bug no getPageMargins """ You don't need change nothing below this line """ try: import scribus except ImportError,err: print noScribusMsg sys.exit(1) from scribus import UNIT_POINTS,BUTTON_OK,ICON_WARNING def odd(num): return num % 2 def main(argv): """Generate guides""" if scribus.haveDoc(): scribus.setRedraw(False) numColumns = int(scribus.valueDialog(numColStr1, numColStr2, defaultNumColumns)) numRows = int(scribus.valueDialog(numLinStr1, numLinStr2, defaultNumRows)) gap = float(scribus.valueDialog(gapStr1, gapStr2, defaultGap)) unit = scribus.getUnit() #salva a unidade original scribus.setUnit(UNIT_POINTS) #trabalhando com pontos devido a um bug no getPageMargins pageWidth, pageHeight = scribus.getPageSize() # A ordem das margens estão erradas na documentação do Scripter topMargin, leftMargin, rightMargin, bottomMargin = scribus.getPageMargins() printAreaWidth = pageWidth - leftMargin - rightMargin printAreaHeight = pageHeight - topMargin - bottomMargin numVgaps = numColumns-1 numHgaps = numRows-1 columnWidth = (printAreaWidth-(numVgaps*gap)) / numColumns rowHeight = (printAreaHeight-(numHgaps*gap)) / numRows VGuides = [] HGuides = [] # getPageMargins() retorna apenas margens de páginas ímpares. # Isto corrige margens pares if not odd(scribus.currentPage()): leftMargin = rightMargin # Constroi linhas verticais for i in range(1,numColumns): res = leftMargin+(i*columnWidth)+((i-1)*gap) VGuides.append(res) VGuides.append(res+gap) # Constroi linhas horizontais scribus.setVGuides(VGuides) for i in range(1,numRows): res = topMargin+(i*rowHeight)+((i-1)*gap) HGuides.append(res) HGuides.append(res+gap) scribus.setHGuides(HGuides) scribus.setUnit(unit) # restaura para a unidade original 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)