On 18.11.2017 00:49, Jens Tröger wrote: > Some clarification: > >> * It seems that reference strings have somewhat different spaces: >> “_Ref498096146 “ and “ _Ref498096146” are the same reference >> (space after, space before) I assume? > > The spacing seems to be inserted by calling getPresentation(). Using the > SourceName and CurrentPresentation properties works ok.
probably this function; it's apparently possible to get 2 strings with a hard-coded space in the middle, in your case sSetRefName is empty: OUString SwGetRefField::GetFieldName() const { const OUString aName = GetTyp()->GetName(); if ( !aName.isEmpty() || !sSetRefName.isEmpty() ) { return aName + " " + sSetRefName; } return Expand(); } >> * In MS Word, a field’s “code” can be something like { PAGEREF >> _Ref498098146\h} (or NOTEREF, or REF). How are these reference >> kinds represented in the OO object model? > > I think a TextField’s GetReference service > <https://www.openoffice.org/api/docs/common/ref/com/sun/star/text/textfield/GetReference.html>, > if available, contains the appropriate reference field sources > <https://www.openoffice.org/api/docs/common/ref/com/sun/star/text/ReferenceFieldSource.html>. yes. > Although I don’t quite understand the difference between “bookmark” and > “reference mark”. they are quite different internally; bookmarks are inserted via Insert->Bookmark, they have a name and can span multiple paragraph breaks; reference marks are inserted via Insert->Cross-reference->Set Reference, and it's restricted to inside one paragraph. >> * What about the TextPortion types “TextFieldStart”, “TextFieldEnd", >> "TextFieldStartEnd"? I’ve seen them in documents, but can’t find >> documentation on them. this is the "field-marks" horror, which is an attempt to preserve Word-like fields in Writer. >> * Calling getString() on a “TextFieldStart” returns a ^G and for >> “TextFieldEnd” a ^H. Their IsCollapsed property is False. What’s >> with that? this is a bug in the horrible field-marks code - this implementation detail should never be visible in the API. >> * Given the list of text field services >> >> <https://wiki.openoffice.org/wiki/Documentation/DevGuide/Text/Text_Fields>, >> how can I find of which “type” a TextField >> >> <http://www.openoffice.org/api/docs/common/ref/com/sun/star/text/XTextField.html> >> object >> is? Should I really iterate over all services and check if an object >> implements one (or more) of the services? use XServiceInfo::getSupportedServiceNames() - this should return text.TextContent, plus 2 spellings of the specific field service name (there was some problem with those names and the "old" name is still returned here for compatibility). _______________________________________________ LibreOffice mailing list LibreOffice@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice