On Tue, 11 Sep 2001, Matti Picus wrote:

> I am trying to get the RTF importer to set the style (some would say name) 
> of a imported chunk.  Apparently it works differently from other 
> formatting, say margin-right or margin-left.
> 
> The importer calls PD_Document::appendStrux with information about how to 
> format the chunk: margin-right etc. This ends up in a pt_PieceTable. 
> However the style/name has no effect, all the imported text ends up with 
> the default style/name "None". Just to be on the safe side I tried with 
> both "style:AbiWordSpecial;" and "name:AbiWordSpecial;"

You set the style attribute by doing

const char ** attributes = NULL;

... build all the attributes you want for your span/paragraph of text...

attributes[i] = pt_PT_STYLE_ATTRIBUTE_NAME;
attributes[i+1] = "AbiWordSpecial"

Then for a paragraph
                
bool ok = getDoc()->appendStrux(PTX_Block, attributes);

For a character level style...

bool ok = getDoc()->appendFmt(attributes);

All subsequent text you insert will acquire the attributes/properties you
set until you change the fmt.

Character level styles are set in ApplyCharacterAttributes(..)

Paragraph level styles are set in ApplyParagraphAttributes(..)

> 
> I imagine I want to use pt_PieceTable::changeStruxFmt since it seems to 
> relate to styles/names, but I cannot figure out how.
> 

This is for pre-existing text - not for import. 

See fv_View.cpp::setStyle(..) for how to set the style of pre-existing
text.


> When I finish importing, and use the style dialog box to change the style 
> of a paragraph, I end up in fl_BlockLayout::doclistener_changeStrux and 
> change a variable called m_szStyle. I don't see a pt_PieceTable anywhere 
> around, but I probably am not looking well enough.
> 
> Any one care to help?
> 

The pt_PieceTable is totally hidden behind calls to PD_Document. In the
AbiWord framework pt_PieceTable is our Model. Pd_Document is the
controller on the model. FV_View is the interface into this model for a
particular view on the document (since we can have multiple windows on the
same document.)

Anyway, all piecetable manipulations go through PD_Document.cpp

Keep up the great work!

Cheers

Martin



Reply via email to