33#include <osl/diagnose.h>
41#include <com/sun/star/text/AutoTextContainer.hpp>
42#include <com/sun/star/ui/dialogs/XFilePicker3.hpp>
43#include <com/sun/star/ui/dialogs/TemplateDescription.hpp>
66#include <officecfg/Office/Writer.hxx>
75using namespace ::
sfx2;
79 const sal_Int32 nSz = rName.getLength();
85 while( rName[nStart-1]==
' ' && nStart < nSz )
89 aBuf.append(rName[nStart-1]);
91 for( ; nStart < nSz; ++nStart )
93 if( rName[nStart-1]==
' ' && rName[nStart]!=
' ')
94 aBuf.append(rName[nStart]);
96 return aBuf.makeStringAndClear();
118 std::unique_ptr<weld::Button>
m_xOk;
129 const OUString& rOldName,
130 const OUString& rOldShort);
138 rTest = m_aNoSpaceFilter.filter(rTest);
143 : GenericDialogController(pParent->getDialog(),
"modules/swriter/ui/renameautotextdialog.ui",
"RenameAutoTextDialog")
145 , m_xNewName(m_xBuilder->weld_entry(
"newname"))
146 , m_xNewShort(m_xBuilder->weld_entry(
"newsc"))
147 , m_xOk(m_xBuilder->weld_button(
"ok"))
148 , m_xOldName(m_xBuilder->weld_entry(
"oldname"))
149 , m_xOldShort(m_xBuilder->weld_entry(
"oldsc"))
176 rTest = m_aNoSpaceFilter.filter(rTest);
192 std::unique_ptr<weld::TreeIter> xSelected(pSource->
make_iterator());
193 bool bSelected = pSource->
get_selected(xSelected.get());
211 if (pDestRootData == pSrcRootData)
215 if (bCheckForMove && !pSrcRootData->
bReadonly)
231 std::unique_ptr<weld::TreeIter> xSelected(pSource->
make_iterator());
232 bool bSelected = pSource->
get_selected(xSelected.get());
236 std::unique_ptr<weld::TreeIter> xSrcParent(pSource->
make_iterator(xSelected.get()));
240 std::unique_ptr<weld::TreeIter> xDestParent(pSource->
make_iterator(xDestEntry.get()));
247 if (pDestParent != pSrcParent)
251 OUString sSourceGroup = pSrcParent->
sGroupName
253 + OUString::number(pSrcParent->
nPathIdx);
256 OUString sTitle(pSource->
get_text(*xSelected));
257 OUString sShortName(pSource->
get_id(*xSelected));
261 + OUString::number(pDestParent->
nPathIdx);
266 sDestName, sTitle, bIsMove);
271 nullptr,
nullptr,
false,
nullptr);
274 pSource->
remove(*xSelected);
284 : DropTargetHelper(rTreeView.get_drop_target())
294 , m_sReadonlyPath(
SwResId(STR_READONLY_PATH))
295 , m_pGlossaryHdl(pGlosHdl)
297 , m_bSelection(pWrtShell->IsSelection())
300 , m_bIsDocReadOnly(false)
302 , m_xInsertTipCB(m_xBuilder->weld_check_button(
"inserttip"))
303 , m_xNameED(m_xBuilder->weld_entry(
"name"))
304 , m_xShortNameLbl(m_xBuilder->weld_label(
"shortnameft"))
305 , m_xShortNameEdit(m_xBuilder->weld_entry(
"shortname"))
306 , m_xCategoryBox(m_xBuilder->weld_tree_view(
"category"))
307 , m_xFileRelCB(m_xBuilder->weld_check_button(
"relfile"))
308 , m_xNetRelCB(m_xBuilder->weld_check_button(
"relnet"))
309 , m_xInsertBtn(m_xBuilder->weld_button(
"ok"))
310 , m_xEditBtn(m_xBuilder->weld_menu_button(
"autotext"))
311 , m_xBibBtn(m_xBuilder->weld_button(
"categories"))
312 , m_xPathBtn(m_xBuilder->weld_button(
"path"))
365OUString getCurrentGlossary()
381 std::unique_ptr<weld::TreeIter> xEntry = rBox.make_iterator();
382 if (!rBox.get_selected(xEntry.get()))
385 std::unique_ptr<weld::TreeIter> xParent = rBox.make_iterator(xEntry.get());
387 if (rBox.get_iter_depth(*xParent))
389 rBox.iter_parent(*xParent);
390 pParent = xParent.get();
393 pParent = xEntry.get();
394 GroupUserData* pGroupData = weld::fromId<GroupUserData*>(rBox.get_id(*pParent));
397 + OUString::number(pGroupData->
nPathIdx));
403 m_bIsOld = m_pGlossaryHdl->IsOld();
404 if( pParent != xEntry.get())
406 OUString
aName(rBox.get_text(*xEntry));
407 m_xNameED->set_text(
aName);
408 m_xShortNameEdit->set_text(rBox.get_id(*xEntry));
409 m_xInsertBtn->set_sensitive( !m_bIsDocReadOnly);
413 ShowAutoText(
"",
"");
415 NameModify(*m_xShortNameEdit);
426 short nRet = SfxDialogController::run();
435 if (!aGlosName.isEmpty())
456 std::u16string_view rShort)
459 std::unique_ptr<weld::TreeIter> xEntry =
m_xCategoryBox->make_iterator();
483 const OUString
aName(m_xNameED->get_text());
484 bool bNameED = &rEdit == m_xNameED.get();
485 if(
aName.isEmpty() )
488 m_xShortNameEdit->set_text(
aName);
489 m_xInsertBtn->set_sensitive(
false);
492 const bool bNotFound = !DoesBlockExist(
aName, bNameED ? OUString() : rEdit.get_text());
503 m_xShortNameEdit->set_text(m_pGlossaryHdl->GetGlossaryShortName(
aName));
506 m_xInsertBtn->set_sensitive(!bNotFound && !m_bIsDocReadOnly);
513 m_xInsertBtn->set_sensitive(!m_bIsDocReadOnly);
520 std::unique_ptr<weld::TreeIter> xEntry = rBox.make_iterator();
521 if (rBox.get_selected(xEntry.get()) && rBox.get_iter_depth(*xEntry) && !m_bIsDocReadOnly)
528 std::unique_ptr<weld::TreeIter> xEntry = m_xCategoryBox->make_iterator();
529 bool bEntry = m_xCategoryBox->get_selected(xEntry.get());
531 const OUString aEditText(m_xNameED->get_text());
532 const bool bHasEntry = !aEditText.isEmpty() && !m_xShortNameEdit->get_text().isEmpty();
533 const bool bExists =
nullptr != DoesBlockExist(aEditText, m_xShortNameEdit->get_text());
534 const bool bIsGroup = bEntry && !m_xCategoryBox->get_iter_depth(*xEntry);
535 m_xEditBtn->set_item_visible(
"new", m_bSelection && bHasEntry && !bExists);
536 m_xEditBtn->set_item_visible(
"newtext", m_bSelection && bHasEntry && !bExists);
537 m_xEditBtn->set_item_visible(
"copy", bExists && !bIsGroup);
538 m_xEditBtn->set_item_visible(
"replace", m_bSelection && bExists && !bIsGroup && !m_bIsOld );
539 m_xEditBtn->set_item_visible(
"replacetext", m_bSelection && bExists && !bIsGroup && !m_bIsOld );
540 m_xEditBtn->set_item_visible(
"edit", bExists && !bIsGroup );
541 m_xEditBtn->set_item_visible(
"rename", bExists && !bIsGroup );
542 m_xEditBtn->set_item_visible(
"delete", bExists && !bIsGroup );
543 m_xEditBtn->set_item_visible(
"macro", bExists && !bIsGroup && !m_bIsOld &&
544 !m_pGlossaryHdl->IsReadOnly() );
545 m_xEditBtn->set_item_visible(
"import", bIsGroup && !m_bIsOld && !m_pGlossaryHdl->IsReadOnly() );
550 if (rItemIdent ==
"edit")
556 else if (rItemIdent ==
"replace")
558 m_pGlossaryHdl->NewGlossary(m_xNameED->get_text(),
559 m_xShortNameEdit->get_text());
561 else if (rItemIdent ==
"replacetext")
563 m_pGlossaryHdl->NewGlossary(m_xNameED->get_text(),
564 m_xShortNameEdit->get_text(),
567 else if (rItemIdent ==
"new" || rItemIdent ==
"newtext")
569 bool bNoAttr = rItemIdent ==
"newtext";
571 const OUString
aStr(m_xNameED->get_text());
572 const OUString aShortName(m_xShortNameEdit->get_text());
573 if(m_pGlossaryHdl->HasShortName(aShortName))
576 VclMessageType::Info, VclButtonsType::Ok,
577 SwResId(STR_DOUBLE_SHORTNAME)));
579 m_xShortNameEdit->select_region(0, -1);
580 m_xShortNameEdit->grab_focus();
582 if(m_pGlossaryHdl->NewGlossary(
aStr, aShortName,
false, bNoAttr ))
584 std::unique_ptr<weld::TreeIter> xEntry = m_xCategoryBox->make_iterator();
585 if (!m_xCategoryBox->get_selected(xEntry.get()))
587 else if (m_xCategoryBox->get_iter_depth(*xEntry))
588 m_xCategoryBox->iter_parent(*xEntry);
589 m_xCategoryBox->insert(xEntry.get(), -1, &
aStr, &aShortName,
590 nullptr,
nullptr,
false,
nullptr);
592 m_xNameED->set_text(
aStr);
593 m_xShortNameEdit->set_text(aShortName);
594 NameModify(*m_xNameED);
606 else if (rItemIdent ==
"copy")
608 m_pGlossaryHdl->CopyToClipboard(*
m_pShell, m_xShortNameEdit->get_text());
610 else if (rItemIdent ==
"rename")
612 m_xShortNameEdit->set_text(m_pGlossaryHdl->GetGlossaryShortName(m_xNameED->get_text()));
613 SwNewGlosNameDlg aNewNameDlg(
this, m_xNameED->get_text(), m_xShortNameEdit->get_text());
614 if (aNewNameDlg.
run() ==
RET_OK && m_pGlossaryHdl->Rename(m_xShortNameEdit->get_text(),
618 std::unique_ptr<weld::TreeIter> xEntry = m_xCategoryBox->make_iterator();
619 if (m_xCategoryBox->get_selected(xEntry.get()))
621 std::unique_ptr<weld::TreeIter> xOldEntry = m_xCategoryBox->make_iterator(xEntry.get());
622 if (m_xCategoryBox->get_iter_depth(*xEntry))
623 m_xCategoryBox->iter_parent(*xEntry);
625 std::unique_ptr<weld::TreeIter> xNewEntry = m_xCategoryBox->make_iterator();
629 m_xCategoryBox->insert(xEntry.get(), -1, &
sName, &
sId,
630 nullptr,
nullptr,
false, xNewEntry.get());
632 m_xCategoryBox->remove(*xOldEntry);
633 m_xCategoryBox->select(*xNewEntry);
634 m_xCategoryBox->scroll_to_row(*xNewEntry);
637 GrpSelect(*m_xCategoryBox);
639 else if (rItemIdent ==
"delete")
643 else if (rItemIdent ==
"macro")
649 m_pGlossaryHdl->GetMacros(m_xShortNameEdit->get_text(), aStart, aEnd );
653 aItem.
SetMacro( SvMacroItemId::SwStartInsGlossary, aStart );
655 aItem.
SetMacro( SvMacroItemId::SwEndInsGlossary, aEnd );
663 m_pShell->GetView().GetViewFrame().GetFrame().GetFrameInterface() ));
664 if ( pMacroDlg && pMacroDlg->Execute() ==
RET_OK &&
665 (pMacroItem = pMacroDlg->GetOutputItemSet()->GetItemIfSet(
RES_FRMMACRO,
false )) )
668 m_pGlossaryHdl->SetMacros( m_xShortNameEdit->get_text(),
669 rTable.
Get( SvMacroItemId::SwStartInsGlossary ),
670 rTable.
Get( SvMacroItemId::SwEndInsGlossary ) );
673 else if (rItemIdent ==
"import")
676 FileDialogHelper aDlgHelper(TemplateDescription::FILEOPEN_SIMPLE,
678 aDlgHelper.SetContext(FileDialogHelper::WriterImportAutotext);
679 uno::Reference < XFilePicker3 > xFP = aDlgHelper.GetFilePicker();
683 std::shared_ptr<const SfxFilter> pFilter = aIter.
First();
688 xFP->appendFilter( pFilter->GetUIName(),
689 pFilter->GetWildcard().getGlob() );
690 xFP->setCurrentFilter( pFilter->GetUIName() ) ;
694 xFP->appendFilter( pFilter->GetUIName(),
695 pFilter->GetWildcard().getGlob() );
696 xFP->setCurrentFilter( pFilter->GetUIName() ) ;
699 pFilter = aIter.
Next();
704 if( m_pGlossaryHdl->ImportGlossaries( xFP->getSelectedFiles().getConstArray()[0] ))
709 VclMessageType::Info, VclButtonsType::Ok,
728 bool bIsWritable =
false;
729 sal_Int32 nIdx {sGlosPath.isEmpty() ? -1 : 0};
738 uno::Reference< XCommandEnvironment >(),
740 Any aAny = aTestContent.getPropertyValue(
"IsReadOnly" );
743 bIsWritable = !*o3tl::doAccess<bool>(aAny);
762 std::unique_ptr<weld::TreeIter> xEntry = m_xCategoryBox->make_iterator();
763 bool bEntry = m_xCategoryBox->get_iter_first(*xEntry);
765 while (!sNewGroup.isEmpty() && bEntry)
767 if (!m_xCategoryBox->get_iter_depth(*xEntry))
769 GroupUserData* pGroupData = weld::fromId<GroupUserData*>(m_xCategoryBox->get_id(*xEntry));
770 const OUString sGroup = pGroupData->
sGroupName
772 + OUString::number(pGroupData->
nPathIdx);
773 if(sGroup == sNewGroup)
775 m_xCategoryBox->select(*xEntry);
776 m_xCategoryBox->scroll_to_row(*xEntry);
777 GrpSelect(*m_xCategoryBox);
781 bEntry = m_xCategoryBox->iter_next(*xEntry);
789 VclMessageType::Question, VclButtonsType::YesNo,
792 PathHdl(*m_xPathBtn);
807 std::unique_ptr<weld::TreeIter> xSelEntry;
811 static const OUStringLiteral sMyAutoTextEnglish(
u"My AutoText");
812 const OUString sMyAutoTextTranslated(
SwResId(STR_MY_AUTOTEXT));
817 if(sGroupName.isEmpty())
823 if(sTitle == sMyAutoTextEnglish)
824 sTitle = sMyAutoTextTranslated;
826 std::unique_ptr<weld::TreeIter> xEntry =
m_xCategoryBox->make_iterator();
833 pData->nPathIdx =
static_cast< sal_uInt16
>(nPath);
838 if (sSelStr ==
pData->sGroupName && nSelPath == nPath)
850 nullptr,
nullptr,
false,
nullptr);
858 std::unique_ptr<weld::TreeIter> xSearch =
m_xCategoryBox->make_iterator();
866 if (!
pData->bReadonly)
868 xSelEntry = std::move(xSearch);
877 xSelEntry = std::move(xSearch);
900 m_xInsertTipCB->set_sensitive(!officecfg::Office::Writer::AutoFunction::Text::ShowToolTip::isReadOnly());
909 aSelText = aSelText.trim();
910 if (aSelText.getLength() > 25)
912 aSelText = aSelText.copy(0, 25);
913 if (
const sal_Int32 nBlankIndex = aSelText.lastIndexOf(
' '); nBlankIndex != -1)
914 aSelText = aSelText.copy(0, nBlankIndex);
926 OUString
aName(m_xNewName->get_text());
928 if (&rBox == m_xNewName.get())
931 bool bEnable = !
aName.isEmpty() && !m_xNewShort->get_text().isEmpty() &&
933 ||
aName == m_xOldName->get_text());
934 m_xOk->set_sensitive(bEnable);
942 && sNew != m_xOldShort->get_text())
945 VclMessageType::Info, VclButtonsType::Ok,
946 SwResId(STR_DOUBLE_SHORTNAME)));
948 m_xNewShort->grab_focus();
957 bool bCheck = rBox.get_active();
958 if (&rBox == m_xInsertTipCB.get())
960 else if (&rBox == m_xFileRelCB.get())
969 if (rKEvt.GetKeyCode().GetCode() ==
KEY_DELETE)
979 std::unique_ptr<weld::TreeIter> xEntry =
m_xCategoryBox->make_iterator();
996 pDlg->SetPath(sGlosPath);
997 if(
RET_OK == pDlg->Execute())
999 const OUString sTmp(pDlg->GetPath());
1000 if(sTmp != sGlosPath)
1021 ResumeShowAutoText();
1037 OUString sShortName;
1046 uno::Reference< XTextCursor > & xCursor =
m_xExampleFrame->GetTextCursor();
1049 if (!sShortName.isEmpty())
1052 uno::Reference< XAutoTextGroup > xGroup;
1053 if((aGroup >>= xGroup) && xGroup->hasByName(sShortName))
1055 uno::Any aEntry(xGroup->getByName(sShortName));
1056 uno::Reference< XAutoTextEntry > xEntry;
1058 xEntry->applyTo(xCursor);
1070 const OUString aTitle(
m_xNameED->get_text());
1073 std::unique_ptr<weld::TreeIter> xParent;
1074 std::unique_ptr<weld::TreeIter> xChild =
DoesBlockExist(aTitle, aShortName);
1081 const bool bExists =
nullptr != xChild;
1082 const bool bIsGroup = bEntry && !xParent;
1085 VclMessageType::Question, VclButtonsType::YesNo,
1087 if (bExists && !bIsGroup &&
RET_YES == xQuery->run())
1091 OSL_ENSURE(xChild,
"entry not found!");
Reference< XExecutableDialog > m_xDialog
static weld::MessageDialog * CreateMessageDialog(weld::Widget *pParent, VclMessageType eMessageType, VclButtonsType eButtonType, const OUString &rPrimaryMessage, const ILibreOfficeKitNotifier *pNotifier=nullptr)
OUString uppercase(const OUString &rStr, sal_Int32 nPos, sal_Int32 nCount) const
std::shared_ptr< const SfxFilter > First()
std::shared_ptr< const SfxFilter > Next()
const SfxPoolItem * Put(const SfxPoolItem &rItem, sal_uInt16 nWhich)
void AppendItem(const SfxPoolItem &)
static bool HasMacroRecorder(const SfxViewFrame &rFrame)
void Done(bool bRemove=false)
SfxViewFrame & GetViewFrame() const
constexpr tools::Long Height() const
constexpr tools::Long Width() const
void SetAutoTextPath(const OUString &rPath)
const OUString & GetAutoTextPath() const
virtual VclPtr< AbstractSvxMultiPathDialog > CreateSvxPathSelectDialog(weld::Window *pParent)=0
virtual VclPtr< SfxAbstractDialog > CreateEventConfigDialog(weld::Widget *pParent, const SfxItemSet &rAttr, const css::uno::Reference< css::frame::XFrame > &rFrame)=0
static SvxAbstractDialogFactory * Create()
void SetSaveRelNet(bool bSet)
bool IsSaveRelNet() const
void SetSaveRelFile(bool bSet)
static SvxAutoCorrCfg & Get()
bool IsAutoTextTip() const
bool IsSaveRelFile() const
void SetAutoTextTip(bool bSet)
const SvxMacroTableDtor & GetMacroTable() const
void SetMacro(SvMacroItemId nEvent, const SvxMacro &)
const SvxMacro * Get(SvMacroItemId nEvent) const
bool HasReadonlySel(bool isReplace=false) const
void GetSelectedText(OUString &rBuf, ParaBreakType nHndlParaBreak=ParaBreakType::ToBlank)
Query text within selection.
static OUString GetDefName()
std::vector< OUString > const & GetPathArray() const
std::unique_ptr< SwTextBlocks > GetGroupDoc(const OUString &rName, bool bCreate=false)
bool IsGlosPathErr() const
void UpdateGlosPath(bool bFull)
SwGlossaryDlg(const SfxViewFrame &rViewFrame, SwGlossaryHdl *pGlosHdl, SwWrtShell *pWrtShell)
SwGlossaryHdl * m_pGlossaryHdl
std::unique_ptr< weld::CheckButton > m_xFileRelCB
std::unique_ptr< weld::MenuButton > m_xEditBtn
void ResumeShowAutoText()
std::unique_ptr< SwGlossaryDropTarget > m_xDropTarget
static void SetActGroup(const OUString &rNewGroup)
OUString GetCurrGrpName() const
std::unique_ptr< weld::CheckButton > m_xInsertTipCB
std::unique_ptr< weld::Button > m_xBibBtn
void EnableShortName(bool bOn=true)
virtual short run() override
std::unique_ptr< weld::CheckButton > m_xNetRelCB
std::unique_ptr< weld::Button > m_xPathBtn
std::unique_ptr< weld::TreeView > m_xCategoryBox
std::unique_ptr< weld::Entry > m_xShortNameEdit
css::uno::Reference< css::text::XAutoTextContainer2 > m_xAutoText
void SetResumeData(const OUString &rGroup, const OUString &rShortName)
std::unique_ptr< weld::Entry > m_xNameED
void ShowAutoText(const OUString &rGroup, const OUString &rShortName)
std::unique_ptr< weld::Button > m_xInsertBtn
std::unique_ptr< SwOneExampleFrame > m_xExampleFrame
static OUString GetCurrGroup()
std::unique_ptr< weld::TreeIter > DoesBlockExist(std::u16string_view sBlock, std::u16string_view rShort)
virtual ~SwGlossaryDlg() override
bool GetResumeData(OUString &rGroup, OUString &rShortName)
std::unique_ptr< weld::CustomWeld > m_xExampleFrameWin
std::unique_ptr< weld::Label > m_xShortNameLbl
std::vector< std::unique_ptr< GroupUserData > > m_xGroupData
SwGlossaryDropTarget(weld::TreeView &rTreeView, SwGlossaryHdl *pGlosHdl)
virtual sal_Int8 AcceptDrop(const AcceptDropEvent &rEvt) override
weld::TreeView & m_rTreeView
SwGlossaryHdl * m_pGlosHdl
virtual sal_Int8 ExecuteDrop(const ExecuteDropEvent &rEvt) override
virtual short run() override
const OUString & GetCreatedGroupName() const
bool DelGlossary(const OUString &)
bool HasShortName(const OUString &rShortName) const
sal_uInt16 GetGlossaryCnt() const
bool InsertGlossary(const OUString &rName)
bool IsReadOnly(const OUString *=nullptr) const
void SetCurGroup(const OUString &aGrp, bool bApi=false, bool bAlwaysCreateNew=false)
OUString GetGlossaryShortName(std::u16string_view aName)
OUString GetGroupName(size_t, OUString *pTitle)
bool CopyOrMove(const OUString &rSourceGroupName, OUString &rSourceShortName, const OUString &rDestGroupName, const OUString &rLongName, bool bMove)
size_t GetGroupCnt() const
OUString GetGlossaryName(sal_uInt16)
static SfxEventNamesItem AddEvents(DlgEventType eType)
SwGlossaryDlg * m_pParent
OUString GetNewShort() const
std::unique_ptr< weld::Button > m_xOk
TextFilter m_aNoSpaceFilter
DECL_LINK(TextFilterHdl, OUString &, bool)
std::unique_ptr< weld::Entry > m_xOldName
std::unique_ptr< weld::Entry > m_xNewName
std::unique_ptr< weld::Entry > m_xNewShort
std::unique_ptr< weld::Entry > m_xOldShort
DECL_LINK(Rename, weld::Button &, void)
SwNewGlosNameDlg(SwGlossaryDlg *pParent, const OUString &rOldName, const OUString &rOldShort)
DECL_LINK(Modify, weld::Entry &, void)
OUString GetNewName() const
SwDocShell * GetDocShell()
Used by the UI to modify the document model.
bool HasSelection() const
const SwView & GetView() const
virtual std::unique_ptr< TreeIter > make_iterator(const TreeIter *pOrig=nullptr) const=0
virtual bool get_selected(TreeIter *pIter) const=0
virtual OUString get_text(int row, int col=-1) const=0
virtual void insert(const TreeIter *pParent, int pos, const OUString *pStr, const OUString *pId, const OUString *pIconName, VirtualDevice *pImageSurface, bool bChildrenOnDemand, TreeIter *pRet)=0
virtual TreeView * get_drag_source() const=0
virtual bool get_dest_row_at_pos(const Point &rPos, weld::TreeIter *pResult, bool bDnDMode, bool bAutoScroll=true)=0
virtual void remove(int pos)=0
virtual bool iter_parent(TreeIter &rIter) const=0
virtual int get_iter_depth(const TreeIter &rIter) const=0
virtual OUString get_id(int pos) const=0
#define FN_SET_ACT_GLOSSARY
#define FN_INSERT_GLOSSARY
weld::Window * GetFrameWeld(const SfxFrame *pFrame)
IMPL_LINK(SwNewGlosNameDlg, TextFilterHdl, OUString &, rTest, bool)
IMPL_LINK_NOARG(SwGlossaryDlg, EnableHdl, weld::Toggleable &, void)
static OUString lcl_GetValidShortCut(const OUString &rName)
constexpr TypedWhichId< SvxMacroItem > RES_FRMMACRO(114)
CharClass & GetAppCharClass()
SW_DLLPUBLIC SwGlossaries * GetGlossaries()
SW_DLLPUBLIC void SetCurrGlosGroup(const OUString &sStr)
SW_DLLPUBLIC const OUString & GetCurrGlosGroup()
constexpr OUStringLiteral FILTER_WW8
WinWord 97 filter.
constexpr OUStringLiteral FILTER_DOCX
constexpr sal_uInt16 KEY_DELETE
#define LINK(Instance, Class, Member)
std::unique_ptr< sal_Int32[]> pData
sal_Int32 getToken(const Context &rContext, const char *pToken)
SVL_DLLPUBLIC Link< OUString *, bool > const & GetMaybeFileHdl()
SVL_DLLPUBLIC OUString SmartRel2Abs(INetURLObject const &rTheBaseURIRef, OUString const &rTheRelURIRef, Link< OUString *, bool > const &rMaybeFileHdl=Link< OUString *, bool >(), bool bCheckFileExists=true, bool bIgnoreFragment=false, INetURLObject::EncodeMechanism eEncodeMechanism=INetURLObject::EncodeMechanism::WasEncoded, INetURLObject::DecodeMechanism eDecodeMechanism=INetURLObject::DecodeMechanism::ToIUri, rtl_TextEncoding eCharset=RTL_TEXTENCODING_UTF8, FSysStyle eStyle=FSysStyle::Detect)
Reference< XComponentContext > getProcessComponentContext()
sal_Int32 toInt32(std::u16string_view str, sal_Int16 radix=10)
constexpr bool starts_with(std::basic_string_view< charT, traits > sv, std::basic_string_view< charT, traits > x) noexcept
std::basic_string_view< charT, traits > getToken(std::basic_string_view< charT, traits > sv, charT delimiter, std::size_t &position)
OUString toId(const void *pValue)
OUString SwResId(TranslateId aId)
#define DND_ACTION_COPYMOVE