22#include <com/sun/star/io/IOException.hpp>
23#include <com/sun/star/lang/IndexOutOfBoundsException.hpp>
24#include <com/sun/star/lang/WrappedTargetRuntimeException.hpp>
25#include <com/sun/star/container/ElementExistException.hpp>
27#include <osl/diagnose.h>
28#include <rtl/character.hxx>
74 "SwXAutoTextContainer::getCount: too many items");
83 throw lang::IndexOutOfBoundsException();
103 uno::Reference< text::XAutoTextGroup > xGroup;
109 throw container::NoSuchElementException();
111 return css::uno::Any( xGroup );
119 "SwXAutoTextContainer::getElementNames: too many groups");
121 uno::Sequence< OUString > aGroupNames(
static_cast<sal_Int32
>(
nCount));
122 OUString *pArr = aGroupNames.getArray();
136 if(!sGroupName.isEmpty())
142 const OUString& aGroupName)
146 throw container::ElementExistException();
148 if(aGroupName.isEmpty())
150 lang::IllegalArgumentException aIllegal;
151 aIllegal.Message =
"group name must not be empty";
154 for(sal_Int32
nPos = 0;
nPos < aGroupName.getLength();
nPos++)
157 if (rtl::isAsciiAlphanumeric(cChar) ||
164 lang::IllegalArgumentException aIllegal;
165 aIllegal.Message =
"group name must contain a-z, A-z, '_', ' ' only";
168 OUString sGroup(aGroupName);
176 OSL_ENSURE( xGroup.is(),
"SwXAutoTextContainer::insertNewByName: no UNO object created? How this?" );
187 if(sGroupName.isEmpty())
188 throw container::NoSuchElementException();
194 return "SwXAutoTextContainer";
204 return {
"com.sun.star.text.AutoTextContainer" };
210 return theSwXAutoTextGroupUnoTunnelId.
getSeq();
221 m_pGlossaries(pGlos),
225 OSL_ENSURE( -1 != rName.indexOf(
GLOS_DELIM ),
226 "SwXAutoTextGroup::SwXAutoTextGroup: to be constructed with a complete name only!" );
237 if (!pGlosGroup || pGlosGroup->GetError())
238 throw uno::RuntimeException();
239 const sal_uInt16
nCount = pGlosGroup->GetCount();
241 uno::Sequence< OUString > aEntryTitles(
nCount);
242 OUString *pArr = aEntryTitles.getArray();
244 for ( sal_uInt16
i = 0;
i <
nCount;
i++ )
245 pArr[
i] = pGlosGroup->GetLongName(
i);
250 const OUString& aNewElementName,
const OUString& aNewElementTitle)
254 if(aNewElementName != aElementName &&
hasByName(aNewElementName))
255 throw container::ElementExistException();
257 if(!pGlosGroup || pGlosGroup->GetError())
258 throw uno::RuntimeException();
260 const sal_uInt16 nIdx = pGlosGroup->GetIndex( aElementName);
261 if(USHRT_MAX == nIdx)
262 throw lang::IllegalArgumentException();
263 OUString aNewShort(aNewElementName);
264 OUString aNewName(aNewElementTitle);
265 sal_uInt16 nOldLongIdx = pGlosGroup->GetLongIndex( aNewShort );
266 sal_uInt16 nOldIdx = pGlosGroup->GetIndex( aNewName );
268 if ((nOldLongIdx == USHRT_MAX || nOldLongIdx == nIdx)
269 && (nOldIdx == USHRT_MAX || nOldIdx == nIdx))
271 pGlosGroup->Rename( nIdx, &aNewShort, &aNewName );
273 throw io::IOException();
291 SwPaM * pPam(
nullptr);
294 pPam = pxCursor->
GetPaM();
303 if (!pPam) {
return false; }
316 const OUString& aTitle,
const uno::Reference< text::XTextRange > & xTextRange)
320 throw container::ElementExistException();
322 throw uno::RuntimeException();
324 std::unique_ptr<SwTextBlocks> pGlosGroup;
327 const OUString& sShortName(
aName);
328 const OUString& sLongName(aTitle);
329 if (pGlosGroup && !pGlosGroup->GetError())
331 uno::Reference<lang::XUnoTunnel> xRangeTunnel( xTextRange, uno::UNO_QUERY);
332 SwXTextRange* pxRange = comphelper::getFromUnoTunnel<SwXTextRange>(xRangeTunnel);
333 OTextCursorHelper* pxCursor = comphelper::getFromUnoTunnel<OTextCursorHelper>(xRangeTunnel);
336 OUString* pOnlyText =
nullptr;
337 bool bNoAttr = !pxCursor && !pxRange;
341 pOnlyText = &sOnlyText;
346 SwDoc* pGDoc = pGlosGroup->GetDoc();
355 pGlosGroup->SetBaseURL( OUString() );
357 sal_uInt16 nRet = USHRT_MAX;
359 nRet = pGlosGroup->PutText( sShortName, sLongName, *pOnlyText );
362 pGlosGroup->ClearDoc();
363 if( pGlosGroup->BeginPutDoc( sShortName, sLongName ) )
368 nRet = pGlosGroup->PutDoc();
372 if (nRet == USHRT_MAX)
374 throw uno::RuntimeException();
379 uno::Reference< text::XAutoTextEntry > xEntry;
385 uno::Reference< text::XAutoTextEntry >();
386 OSL_ENSURE( xEntry.is(),
"SwXAutoTextGroup::insertNewByName: no UNO object created? How this?" );
389 catch (
const container::ElementExistException&)
393 catch (
const uno::RuntimeException&)
397 catch (
const uno::Exception&)
400 throw css::lang::WrappedTargetRuntimeException(
401 "Error Getting AutoText!",
402 static_cast < OWeakObject *
> (
this ),
413 if(!pGlosGroup || pGlosGroup->GetError())
414 throw container::NoSuchElementException();
416 sal_uInt16 nIdx = pGlosGroup->GetIndex(
aEntryName);
417 if ( nIdx == USHRT_MAX )
418 throw container::NoSuchElementException();
420 pGlosGroup->Delete(nIdx);
433 throw uno::RuntimeException();
435 sal_Int32 nNewDelimPos = rName.lastIndexOf(
GLOS_DELIM );
439 if (nNewDelimPos > -1)
440 aNewSuffix = rName.copy( nNewDelimPos + 1 );
442 if (nOldDelimPos > -1)
443 aOldSuffix =
m_sName.copy( nOldDelimPos + 1 );
445 sal_Int32 nNewNumeric = aNewSuffix.toInt32();
446 sal_Int32 nOldNumeric = aOldSuffix.toInt32();
448 OUString aNewPrefix( (nNewDelimPos > 1) ? rName.copy( 0, nNewDelimPos ) : rName );
449 OUString aOldPrefix( (nOldDelimPos > 1) ?
m_sName.copy( 0, nOldDelimPos ) :
m_sName );
452 ( nNewNumeric == nOldNumeric && aNewPrefix == aOldPrefix ) )
454 OUString sNewGroup(rName);
465 throw uno::RuntimeException();
475 if (!pGlosGroup || pGlosGroup->GetError())
476 throw uno::RuntimeException();
477 return static_cast<sal_Int32
>(pGlosGroup->GetCount());
484 throw uno::RuntimeException();
486 if (!pGlosGroup || pGlosGroup->GetError())
487 throw uno::RuntimeException();
488 const sal_uInt16
nCount = pGlosGroup->GetCount();
490 throw lang::IndexOutOfBoundsException();
491 return getByName(pGlosGroup->GetShortName(o3tl::narrowing<sal_uInt16>(
nIndex)));
504 if (!pGlosGroup || pGlosGroup->GetError())
505 throw uno::RuntimeException();
506 return pGlosGroup->GetCount() > 0;
514 OSL_ENSURE( xEntry.is(),
"SwXAutoTextGroup::getByName: GetAutoTextEntry is fractious!" );
516 return css::uno::Any( xEntry );
523 if (!pGlosGroup || pGlosGroup->GetError())
524 throw uno::RuntimeException();
526 const sal_uInt16
nCount = pGlosGroup->GetCount();
527 uno::Sequence< OUString > aEntryNames(
nCount);
528 OUString *pArr = aEntryNames.getArray();
530 for ( sal_uInt16
i = 0;
i <
nCount;
i++ )
531 pArr[
i] = pGlosGroup->GetShortName(
i);
540 if (!pGlosGroup || pGlosGroup->GetError())
541 throw uno::RuntimeException();
543 const sal_uInt16
nCount = pGlosGroup->GetCount();
546 OUString sCompare(pGlosGroup->GetShortName(
i));
547 if(sCompare.equalsIgnoreAsciiCase(rName))
563 const OUString& rPropertyName,
const uno::Any& aValue)
569 throw beans::UnknownPropertyException(rPropertyName);
572 if(!pGlosGroup || pGlosGroup->GetError())
573 throw uno::RuntimeException();
579 aValue >>= sNewTitle;
580 if(sNewTitle.isEmpty())
581 throw lang::IllegalArgumentException();
582 bool bChanged = sNewTitle != pGlosGroup->GetName();
583 pGlosGroup->SetName(sNewTitle);
597 throw beans::UnknownPropertyException(rPropertyName);
599 if(!pGlosGroup || pGlosGroup->GetError())
600 throw uno::RuntimeException();
606 aAny <<= pGlosGroup->GetFileName();
609 aAny <<= pGlosGroup->GetName();
616 const OUString& ,
const uno::Reference< beans::XPropertyChangeListener > & )
621 const OUString& ,
const uno::Reference< beans::XPropertyChangeListener > & )
626 const OUString& ,
const uno::Reference< beans::XVetoableChangeListener > & )
631 const OUString& ,
const uno::Reference< beans::XVetoableChangeListener > & )
644 return "SwXAutoTextGroup";
654 uno::Sequence<OUString> aRet {
"com.sun.star.text.AutoTextGroup" };
661 return theSwXAutoTextEntryUnoTunnelId.
getSeq();
670 const OUString& rEntryName) :
671 m_pGlossaries(pGlss),
672 m_sGroupName(rGroupName),
673 m_sEntryName(rEntryName)
690 if (
m_xDocSh->GetDoc()->getIDocumentState().IsModified () )
711 if (SfxEventHintId::PrepareCloseDoc == pEventHint->GetEventId())
721 if ( SfxHintId::Deinitializing == _rHint.
GetId() )
738 OSL_ENSURE(
m_xDocSh.
is(),
"SwXAutoTextEntry::GetBodyText: unexpected: no doc returned by EditGroupDoc!" );
760 const uno::Reference< text::XTextRange > & aTextPosition)
764 return mxBodyText->createTextCursorByRange ( aTextPosition );
771 mxBodyText->insertString ( xRange, aString, bAbsorb );
775 sal_Int16 nControlCharacter,
sal_Bool bAbsorb)
779 mxBodyText->insertControlCharacter ( xRange, nControlCharacter, bAbsorb );
783 const uno::Reference< text::XTextRange > & xRange,
784 const uno::Reference< text::XTextContent > & xContent,
sal_Bool bAbsorb)
792 const uno::Reference< text::XTextContent > & xContent)
802 uno::Reference< text::XText > xRet =
static_cast<text::XText*
>(
this);
852 uno::Reference<lang::XUnoTunnel> xTunnel( xTextRange, uno::UNO_QUERY);
853 SwXTextRange* pRange = comphelper::getFromUnoTunnel<SwXTextRange>(xTunnel);
854 OTextCursorHelper* pCursor = comphelper::getFromUnoTunnel<OTextCursorHelper>(xTunnel);
855 SwXText *pText = comphelper::getFromUnoTunnel<SwXText>(xTunnel);
857 SwDoc* pDoc =
nullptr;
862 else if ( pText && pText->
GetDoc() )
864 xTunnel.set(pText->
getStart(), uno::UNO_QUERY);
865 pCursor = comphelper::getFromUnoTunnel<OTextCursorHelper>(xTunnel);
871 throw uno::RuntimeException();
878 throw uno::RuntimeException();
883 InsertPaM = *pCursor->
GetPaM();
887 const bool bResult = pBlock && !pBlock->GetError()
891 throw uno::RuntimeException();
896 return "SwXAutoTextEntry";
906 uno::Sequence<OUString> aRet {
"com.sun.star.text.AutoTextEntry" };
917 { SvMacroItemId::SwStartInsGlossary,
"OnInsertStart" },
918 { SvMacroItemId::SwEndInsGlossary,
"OnInsertDone" },
919 { SvMacroItemId::NONE,
nullptr }
925 m_rAutoTextEntry(rAutoText)
935 return "SwAutoTextEventDescriptor";
943 "Strangely enough, the AutoText vanished!" );
944 OSL_ENSURE( (nEvent == SvMacroItemId::SwEndInsGlossary) ||
945 (nEvent == SvMacroItemId::SwStartInsGlossary) ,
946 "Unknown event ID" );
950 std::unique_ptr<SwTextBlocks> pBlocks(
953 "can't get autotext group; SwAutoTextEntry has illegal name?");
955 if( !pBlocks || pBlocks->GetError())
962 if( pBlocks->GetMacroTable(
nIndex, aMacroTable ) )
964 aMacroTable.
Insert( nEvent, rMacro );
965 pBlocks->SetMacroTable(
nIndex, aMacroTable );
976 OSL_ENSURE( (nEvent == SvMacroItemId::SwEndInsGlossary) ||
977 (nEvent == SvMacroItemId::SwStartInsGlossary) ,
978 "Unknown event ID" );
982 std::unique_ptr<SwTextBlocks> pBlocks(
985 "can't get autotext group; SwAutoTextEntry has illegal name?");
989 SvxMacro aEmptyMacro(sEmptyStr, sEmptyStr);
990 rMacro = aEmptyMacro;
992 if ( !pBlocks || pBlocks->GetError())
999 if( pBlocks->GetMacroTable(
nIndex, aMacroTable ) )
1008extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface*
1010 css::uno::Sequence<css::uno::Any>
const &)
@ CheckPosInFly
check if target position is in fly anchored at source range
virtual bool CopyRange(SwPaM &rPam, SwPosition &rPos, SwCopyFlags flags) const =0
Copy a selected content range to a position.
virtual void LockExpFields()=0
virtual bool IsExpFieldsLocked() const =0
virtual void UpdateExpFields(SwTextField *pField, bool bUpdateRefFields)=0
virtual void UnlockExpFields()=0
virtual void SetRedlineFlags_intern(RedlineFlags eMode)=0
Set a new redline mode.
OUString GetMainURL(DecodeMechanism eMechanism, rtl_TextEncoding eCharset=RTL_TEXTENCODING_UTF8) const
virtual const SwDoc * GetDoc() const =0
virtual const SwPaM * GetPaM() const =0
const SfxItemPropertyMapEntry * getByName(std::u16string_view rName) const
const SfxItemPropertyMap & getPropertyMap() const
css::uno::Reference< css::beans::XPropertySetInfo > const & getPropertySetInfo() const
void StartListening(SfxBroadcaster &rBroadcaster, DuplicateHandling eDuplicateHanding=DuplicateHandling::Unexpected)
void EndListening(SfxBroadcaster &rBroadcaster, bool bRemoveAllDuplicates=false)
static SvxAutoCorrCfg & Get()
bool IsSaveRelFile() const
SvxMacro & Insert(SvMacroItemId nEvent, const SvxMacro &rMacro)
const SvxMacro * Get(SvMacroItemId nEvent) const
Implement the XNameAccess for the AutoText events.
SwXAutoTextEntry & m_rAutoTextEntry
virtual void getByName(SvxMacro &rMacro, const SvMacroItemId nEvent) override
item ID of event
SwAutoTextEventDescriptor(SwXAutoTextEntry &rAutoText)
virtual void replaceByName(const SvMacroItemId nEvent, const SvxMacro &rMacro) override
event (will be copied)
virtual ~SwAutoTextEventDescriptor() override
virtual OUString SAL_CALL getImplementationName() override
virtual sal_Int32 Len() const
bool InsertGlossary(SwTextBlocks &rBlock, const OUString &rEntry, SwPaM &rPaM, SwCursorShell *pShell=nullptr)
inserts an AutoText block
IDocumentContentOperations const & getIDocumentContentOperations() const
IDocumentFieldsAccess const & getIDocumentFieldsAccess() const
IDocumentRedlineAccess const & getIDocumentRedlineAccess() const
bool NewGroupDoc(OUString &rGroupName, const OUString &rTitle)
OUString GetCompleteGroupName(std::u16string_view GroupName)
std::unique_ptr< SwTextBlocks > GetGroupDoc(const OUString &rName, bool bCreate=false)
SwDocShellRef EditGroupDoc(const OUString &rGrpName, const OUString &rShortName, bool bShow=true)
OUString GetGroupTitle(const OUString &rGroupName)
css::uno::Reference< css::text::XAutoTextEntry > GetAutoTextEntry(const OUString &_rCompleteGroupName, const OUString &_rGroupName, const OUString &_rEntryName)
returns the cached AutoTextEntry (if any) for the given group/with the given name The entry is create...
OUString const & GetGroupName(size_t)
css::uno::Reference< css::text::XAutoTextGroup > GetAutoTextGroup(std::u16string_view _rGroupName)
returns the cached AutoTextGroup (if any) for the given group name The group is created if it does no...
bool DelGroupDoc(std::u16string_view)
bool RenameGroupDoc(const OUString &sOldGroup, OUString &sNewGroup, const OUString &rNewTitle)
Marks a character position inside a document model node.
Marks a node in the document model.
SwContentNode * GetContentNode()
SwNode & GetEndOfContent() const
Regular ContentSection (i.e. the BodyText).
PaM is Point and Mark: a selection of the document model.
virtual css::uno::Reference< css::text::XAutoTextGroup > SAL_CALL insertNewByName(const OUString &aGroupName) override
virtual sal_Bool SAL_CALL hasElements() override
virtual css::uno::Sequence< OUString > SAL_CALL getElementNames() override
virtual OUString SAL_CALL getImplementationName() override
virtual css::uno::Any SAL_CALL getByName(const OUString &Name) override
virtual css::uno::Type SAL_CALL getElementType() override
virtual css::uno::Any SAL_CALL getByIndex(sal_Int32 nIndex) override
SwGlossaries * m_pGlossaries
virtual sal_Bool SAL_CALL supportsService(const OUString &ServiceName) override
virtual void SAL_CALL removeByName(const OUString &aGroupName) override
virtual sal_Bool SAL_CALL hasByName(const OUString &Name) override
virtual sal_Int32 SAL_CALL getCount() override
virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() override
virtual ~SwXAutoTextContainer() override
virtual OUString SAL_CALL getImplementationName() override
void implFlushDocument(bool _bCloseDoc=false)
ensure that the current content (which may only be in-memory so far) is flushed to the auto text grou...
virtual css::uno::Reference< css::text::XTextRange > SAL_CALL getStart() override
virtual void Notify(SfxBroadcaster &rBC, const SfxHint &rHint) override
virtual css::uno::Reference< css::text::XText > SAL_CALL getText() override
virtual OUString SAL_CALL getString() override
SwXAutoTextEntry(SwGlossaries *, const OUString &rGroupName, const OUString &rEntryName)
rtl::Reference< SwXBodyText > mxBodyText
const OUString & GetGroupName() const
virtual css::uno::Reference< css::text::XTextRange > SAL_CALL getEnd() override
virtual void SAL_CALL insertControlCharacter(const css::uno::Reference< css::text::XTextRange > &xRange, sal_Int16 nControlCharacter, sal_Bool bAbsorb) override
virtual void SAL_CALL applyTo(const css::uno::Reference< css::text::XTextRange > &xRange) override
virtual css::uno::Reference< css::container::XNameReplace > SAL_CALL getEvents() override
virtual sal_Bool SAL_CALL supportsService(const OUString &ServiceName) override
virtual css::uno::Reference< css::text::XTextCursor > SAL_CALL createTextCursor() override
virtual sal_Int64 SAL_CALL getSomething(const css::uno::Sequence< sal_Int8 > &aIdentifier) override
void disposing(std::unique_lock< std::mutex > &) override
const OUString & GetEntryName() const
virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() override
virtual void SAL_CALL insertTextContent(const css::uno::Reference< css::text::XTextRange > &xRange, const css::uno::Reference< css::text::XTextContent > &xContent, sal_Bool bAbsorb) override
static const css::uno::Sequence< sal_Int8 > & getUnoTunnelId()
const SwGlossaries * GetGlossaries() const
SwGlossaries * m_pGlossaries
virtual void SAL_CALL setString(const OUString &aString) override
virtual css::uno::Reference< css::text::XTextCursor > SAL_CALL createTextCursorByRange(const css::uno::Reference< css::text::XTextRange > &aTextPosition) override
virtual void SAL_CALL removeTextContent(const css::uno::Reference< css::text::XTextContent > &xContent) override
virtual void SAL_CALL insertString(const css::uno::Reference< css::text::XTextRange > &xRange, const OUString &aString, sal_Bool bAbsorb) override
virtual ~SwXAutoTextEntry() override
virtual void SAL_CALL removePropertyChangeListener(const OUString &aPropertyName, const css::uno::Reference< css::beans::XPropertyChangeListener > &aListener) override
SwXAutoTextGroup(const OUString &rName, SwGlossaries *pGloss)
virtual void SAL_CALL setName(const OUString &Name_) override
const SfxItemPropertySet * m_pPropSet
virtual void SAL_CALL addVetoableChangeListener(const OUString &PropertyName, const css::uno::Reference< css::beans::XVetoableChangeListener > &aListener) override
virtual void SAL_CALL removeVetoableChangeListener(const OUString &PropertyName, const css::uno::Reference< css::beans::XVetoableChangeListener > &aListener) override
SwGlossaries * m_pGlossaries
static const css::uno::Sequence< sal_Int8 > & getUnoTunnelId()
virtual css::uno::Type SAL_CALL getElementType() override
virtual OUString SAL_CALL getImplementationName() override
virtual css::uno::Sequence< OUString > SAL_CALL getTitles() override
virtual sal_Bool SAL_CALL hasByName(const OUString &Name) override
virtual css::uno::Reference< css::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo() override
virtual sal_Bool SAL_CALL supportsService(const OUString &ServiceName) override
virtual css::uno::Any SAL_CALL getByIndex(sal_Int32 nIndex) override
virtual void SAL_CALL addPropertyChangeListener(const OUString &aPropertyName, const css::uno::Reference< css::beans::XPropertyChangeListener > &xListener) override
virtual sal_Int32 SAL_CALL getCount() override
virtual sal_Bool SAL_CALL hasElements() override
virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() override
virtual void SAL_CALL removeByName(const OUString &aEntryName) override
virtual css::uno::Reference< css::text::XAutoTextEntry > SAL_CALL insertNewByName(const OUString &aName, const OUString &aTitle, const css::uno::Reference< css::text::XTextRange > &xTextRange) override
virtual css::uno::Any SAL_CALL getPropertyValue(const OUString &PropertyName) override
virtual ~SwXAutoTextGroup() override
virtual css::uno::Any SAL_CALL getByName(const OUString &Name) override
virtual css::uno::Sequence< OUString > SAL_CALL getElementNames() override
virtual void SAL_CALL setPropertyValue(const OUString &aPropertyName, const css::uno::Any &aValue) override
virtual OUString SAL_CALL getName() override
virtual sal_Int64 SAL_CALL getSomething(const css::uno::Sequence< sal_Int8 > &aIdentifier) override
virtual void SAL_CALL renameByName(const OUString &aElementName, const OUString &aNewElementName, const OUString &aNewElementTitle) override
const SwDoc * GetDoc() const
virtual css::uno::Reference< css::text::XTextRange > SAL_CALL getStart() override
const css::uno::Sequence< sal_Int8 > & getSeq() const
css::uno::Type const & get()
static std::unique_ptr< SwGlossaries > pGlossaries
SwGlossaryList * GetGlossaryList()
SW_DLLPUBLIC SwGlossaries * GetGlossaries()
::rtl::Reference< OContentHelper > xContent
sal_Int64 getSomethingImpl(const css::uno::Sequence< sal_Int8 > &rId, T *pThis, FallbackToGetSomethingOf< Base >={})
bool CPPUHELPER_DLLPUBLIC supportsService(css::lang::XServiceInfo *implementation, rtl::OUString const &name)
Any SAL_CALL getCaughtException()
constexpr std::enable_if_t< std::is_signed_v< T >, std::make_unsigned_t< T > > make_unsigned(T value)
Marks a position in the document model.
static bool lcl_CopySelToDoc(SwDoc &rInsDoc, OTextCursorHelper *pxCursor, SwXTextRange *pxRange)
const struct SvEventDescription aAutotextEvents[]
SAL_DLLPUBLIC_EXPORT css::uno::XInterface * SwXAutoTextContainer_get_implementation(css::uno::XComponentContext *, css::uno::Sequence< css::uno::Any > const &)
SwUnoPropertyMapProvider aSwMapProvider
#define PROPERTY_MAP_AUTO_TEXT_GROUP