[Scribus] different paragraph-Styles from scripter (1.3)

Craig Ringer craig
Fri Oct 21 09:34:05 CEST 2005

Ralf-Diether Ebel wrote:

> setText("ABC"+chr(13),ob)  #chr(13) should be paragraph -or?

That's exactly equivalent to:


though it's more common to use:


Scribus doesn't appear to care about the difference.

> setStyle("Style1,ob)
> insertText("DEF",-1,ob)
> selectText(4,3,ob)
> setStyle("Style2,ob)
> Regardless what I do, the whole frame has always the same style, 
> normaly the last applied.

Yep. setStyle(...) will only apply its effects to a selection if no 
object target is given. I realise that's surprising, but it's consistent 
with the rest of the API, and until/unless we can perhaps provide a more 
OO API it's likely to stay like that.

Unfortunately, that doesn't seem to be working right now. I'm unsure of 
why that is. It seems to be a problem with selecting the text range 
rather than with applying the style, as if I hand-select the range it 
all works fine. I'm using current "great breakage" CVS not anoncvs, so 
it's entirely possible this is a problem you won't have. Please let me know.

On a side note, would you find something like this more friendly 
(extended example):

doc = scribus.documents.currentDocument()
ob = doc.newTextFrame(100,100,100,100,doc.currentPage)
ob.text = "ABC\nfred\n"
par0 = ob.selectText(0,3)   # select first paragraph
par0.style = doc.styles["fred"]
par1and2.style = doc.styles.defaultStyle()
ob.text += "More text\n"
ob.paragraph[2].paragraphStyle = doc.styles["wilma"]


Frames could also be acccessed by name, eg:


and manipulated by properties, eg:

doc.frames["barney"].text = scribus.documents["MyDoc"].frames["barney"]

plus it should be possible to do things like use slices to make 
selections on frames and work with the selection, though that's require 
a much more flexible concept of "selection" than the Scribus core 
presently has:

ob.pars[1:3].style = "dinosaur"

There are lots of fun possibilities for making scripting more intuitive 
and "python-like". With Boost::Python it might not even be insanely 
painful to implement ;-)

If I ever find myself landing on about a billion years of free time and 
sort out the other things I really need to do in the Scribus core code 
(encoding fixes, FileLoader plugin work, etc) that's what I'm really 
hoping to put in place with the approval of Petr and all you folks who 
use the scripting API. Look reasonable?

Craig Ringer

More information about the scribus mailing list