21 #include <tools/datetime.hxx>
39 #include <strings.hrc>
48 #include <osl/diagnose.h>
49 #include <bitmaps.hlst>
65 auto xDlg = std::make_shared<SwModelessRedlineAcceptDlg>(pBindings,
this, _pParent->GetFrameWeld());
67 xDlg->Initialize(pInfo);
83 "svx/ui/acceptrejectchangesdialog.ui",
"AcceptRejectChangesDialog")
84 , m_xContentArea(
m_xDialog->weld_content_area())
100 SwWait aWait( *pDocSh,
false );
124 if (pInfo !=
nullptr)
142 : m_xParentDlg(rParent)
143 , m_sInserted(
SwResId(STR_REDLINE_INSERTED))
144 , m_sDeleted(
SwResId(STR_REDLINE_DELETED))
145 , m_sFormated(
SwResId(STR_REDLINE_FORMATTED))
146 , m_sTableChgd(
SwResId(STR_REDLINE_TABLECHG))
147 , m_sFormatCollSet(
SwResId(STR_REDLINE_FMTCOLLSET))
148 , m_sAutoFormat(
SwResId(STR_REDLINE_AUTOFMT))
149 , m_bOnlyFormatedRedlines(false)
150 , m_bRedlnAutoFormat(bAutoFormat)
151 , m_bInhibitActivate(false)
153 , m_xPopup(pBuilder->weld_menu(
"writermenu"))
154 , m_xSortMenu(pBuilder->weld_menu(
"writersortmenu"))
228 std::unique_ptr<weld::TreeIter> xSelEntry(rTreeView.
make_iterator());
242 std::vector<OUString> aStrings;
249 bool bIsNotFormated =
false;
261 for (sal_uInt16 nStack = 1; nStack < rRedln.
GetStackCount(); nStack++)
267 std::sort(aStrings.begin(), aStrings.end());
268 aStrings.erase(std::unique(aStrings.begin(), aStrings.end()), aStrings.end());
270 for (
auto const &
i: aStrings)
273 if (pFilterPage->
SelectAuthor(sOldAuthor) == -1 && !aStrings.empty())
288 bIsNotFormated |= RedlineType::Format != rRedln.
GetType();
304 switch (rRedln.
GetType(nStack))
306 case RedlineType::Insert:
return BMP_REDLINE_INSERTED;
307 case RedlineType::Delete:
return BMP_REDLINE_DELETED;
308 case RedlineType::Format:
return BMP_REDLINE_FORMATTED;
309 case RedlineType::ParagraphFormat:
return BMP_REDLINE_FORMATTED;
310 case RedlineType::Table:
return BMP_REDLINE_TABLECHG;
311 case RedlineType::FmtColl:
return BMP_REDLINE_FMTCOLLSET;
320 switch( rRedln.
GetType(nStack) )
325 case RedlineType::ParagraphFormat:
return m_sFormated;
384 if (!pRedlineData && pBackupData)
396 if (pRedlineData != pBackupData->
pChild)
404 pBackupData = pBackupData->
pNext;
405 pRedlineData = pRedlineData->
Next();
419 bool bIsShowChangesInMargin =
SW_MOD()->GetUsrPref(
false)->IsShowChangesInMargin();
427 bool bShowDeletedTextAsComment = bIsShowChangesInMargin &&
429 const OUString sComment = bShowDeletedTextAsComment
473 [&pBackupData](
const std::unique_ptr<SwRedlineDataChild>& rChildPtr) {
return rChildPtr.get() == pBackupData; });
479 pParent->
pNext =
nullptr;
532 if (bHasRedlineAutoFormat)
537 std::pair<SwRedlineDataParentSortArr::const_iterator,bool>
const ret
550 bValidParent = bValidParent && bAutoFormatRedline;
552 bool bValidTree = bValidParent;
554 for (sal_uInt16 nStack = 1; nStack < rRedln.
GetStackCount(); nStack++)
556 pRedlineData = pRedlineData->
Next();
559 pRedlineChild->
pChild = pRedlineData;
562 if ( pLastRedlineChild )
563 pLastRedlineChild->
pNext = pRedlineChild;
565 pParent->
pNext = pRedlineChild;
570 if (bHasRedlineAutoFormat)
571 bValidChild = bValidChild && bAutoFormatRedline;
572 bValidTree |= bValidChild;
577 pData->pData = pRedlineChild;
578 pData->bDisabled =
true;
583 pData->eType = rRedln.
GetType(nStack);
585 OUString sComment = rRedln.
GetComment(nStack);
587 std::unique_ptr<weld::TreeIter> xChild(rTreeView.
make_iterator());
588 OUString
sId(OUString::number(reinterpret_cast<sal_Int64>(pData.release())));
590 false, xChild.get());
592 rTreeView.
set_image(*xChild, sImage, -1);
593 rTreeView.
set_text(*xChild, sAuthor, 1);
594 rTreeView.
set_text(*xChild, sDateEntry, 2);
595 rTreeView.
set_text(*xChild, sComment, 3);
597 pRedlineChild->
xTLBChild = std::move(xChild);
604 pLastRedlineChild = pRedlineChild;
607 if (pLastRedlineChild)
608 pLastRedlineChild->
pNext =
nullptr;
614 if (bHasRedlineAutoFormat)
624 std::vector<const weld::TreeIter*> aLBoxArr;
631 bool bChildrenRemoved =
false;
639 while( ( pCurEntry ==
nullptr ) && ( nPos > 0 ) )
657 [&pChildPtr](
const std::unique_ptr<SwRedlineDataChild>& rChildPtr) {
return rChildPtr.get() == pChildPtr; });
660 sal_uInt16 nChildren = 0;
668 bChildrenRemoved =
true;
673 aLBoxArr.push_back(pEntry);
680 for (
auto it = aLBoxArr.rbegin(); it != aLBoxArr.rend(); ++it)
702 nEnd = std::min(nEnd, (nCount - 1));
716 pSh->SwCursorShell::Push();
718 if(
nullptr == pCurrRedline )
724 pCurrRedline =
nullptr;
730 bool bIsShowChangesInMargin =
SW_MOD()->GetUsrPref(
false)->IsShowChangesInMargin();
737 pRedlineParent->
pData = pRedlineData;
738 pRedlineParent->
pNext =
nullptr;
740 bool bShowDeletedTextAsComment = bIsShowChangesInMargin &&
742 const OUString& sComment = bShowDeletedTextAsComment
745 pRedlineParent->
sComment = sComment.replace(
'\n',
' ');
747 std::unique_ptr<SwRedlineDataParent>(pRedlineParent));
750 pData->pData = pRedlineParent;
751 pData->bDisabled =
false;
756 pData->eType = rRedln.
GetType(0);
759 OUString
sId = OUString::number(reinterpret_cast<sal_Int64>(pData.release()));
760 std::unique_ptr<weld::TreeIter> xParent(rTreeView.
make_iterator());
761 rTreeView.
insert(
nullptr,
i,
nullptr, &sId,
nullptr,
nullptr,
false, xParent.get());
763 rTreeView.
set_image(*xParent, sImage, -1);
764 rTreeView.
set_text(*xParent, sAuthor, 1);
765 rTreeView.
set_text(*xParent, sDateEntry, 2);
766 rTreeView.
set_text(*xParent, sComment, 3);
768 if (pCurrRedline == &rRedln)
772 rTreeView.
select(*xParent);
777 pRedlineParent->
xTLBParent = std::move(xParent);
791 typedef std::vector<std::unique_ptr<weld::TreeIter>> ListBoxEntries_t;
792 ListBoxEntries_t aRedlines;
796 "recursive call of CallAcceptReject?");
801 auto lambda = [
this, pSh, bSelect, bAccept, &rTreeView, &nPos, &aRedlines](
weld::TreeIter& rEntry) {
802 if (!rTreeView.get_iter_depth(rEntry))
804 if (bSelect && nPos == -1)
809 bool bIsNotFormatted =
true;
820 if( RedlineType::Format == rRedln.
GetType() )
821 bIsNotFormatted =
false;
824 if (!pData->
bDisabled && bIsNotFormatted)
825 aRedlines.emplace_back(rTreeView.make_iterator(&rEntry));
832 rTreeView.selected_foreach(lambda);
834 rTreeView.all_foreach(lambda);
843 if (aRedlines.size() > 1)
849 OUString::number(aRedlines.size()));
865 for (
const auto& rRedLine : aRedlines)
869 (pSh->*FnAccRej)( nPosition );
872 if (aRedlines.size() > 1)
882 if (nPos != -1 && rTreeView.n_children())
884 if (nPos >= rTreeView.n_children())
885 nPos = rTreeView.n_children() - 1;
886 rTreeView.select(nPos);
887 rTreeView.scroll_to_row(nPos);
888 rTreeView.set_cursor(nPos);
889 SelectHdl(rTreeView);
898 return pSh->
FindRedlineOfData( *static_cast<SwRedlineDataParent*>(reinterpret_cast<RedlinData*>(
899 rTreeView.
get_id(rEntry).toInt64())->
pData)->pData );
904 CallAcceptReject(
true,
true );
909 CallAcceptReject(
false,
true );
914 CallAcceptReject(
true,
false );
919 CallAcceptReject(
false,
false );
926 Execute(SID_UNDO, SfxCallMode::SYNCHRON);
927 m_pTPView->EnableUndo(pView->
GetSlotState(SID_UNDO) !=
nullptr);
934 SvxTPFilter *pFilterTP = m_xTabPagesCTRL->GetFilterPage();
939 m_sFilterAction.clear();
946 m_aSelectTimer.Start();
952 m_aSelectTimer.Stop();
954 bool bIsNotFormated =
false;
961 if (!m_xParentDlg || m_xParentDlg->has_toplevel_focus())
964 std::unique_ptr<weld::TreeIter> xActEntry(rTreeView.
make_iterator());
988 bIsNotFormated |= RedlineType::Format != rRedln.
GetType();
1006 m_pTPView->EnableAccept( bEnable && bSel );
1007 m_pTPView->EnableReject( bEnable && bSel );
1008 m_pTPView->EnableClearFormat( bEnable && bSel && !bIsNotFormated );
1009 m_pTPView->EnableRejectAll( bEnable );
1010 m_pTPView->EnableClearFormatAll( bEnable && m_bOnlyFormatedRedlines );
1015 if (rCEvt.GetCommand() != CommandEventId::ContextMenu)
1022 std::unique_ptr<weld::TreeIter> xEntry(rTreeView.
make_iterator());
1026 std::unique_ptr<weld::TreeIter> xTopEntry(rTreeView.
make_iterator(xEntry.get()));
1042 m_xPopup->set_sensitive(
"writeredit", bEntry && pRed &&
1045 m_xPopup->set_sensitive(
"writersort", rTreeView.
n_children() != 0);
1049 for (sal_Int32
i = 0;
i < 5; ++
i)
1050 m_xSortMenu->set_active(
"writersort" + OString::number(
i),
i == nColumn);
1052 OString sCommand = m_xPopup->popup_at_rect(&rTreeView,
tools::Rectangle(rCEvt.GetMousePosPixel(),
Size(1,1)));
1054 if (sCommand ==
"writeredit")
1077 ::DialogGetRanges fnGetRange = pFact->GetDialogGetRangesFunc();
1085 SID_ATTR_POSTIT_DATE ));
1091 const char* pResId =
nullptr;
1094 case RedlineType::Insert:
1095 pResId = STR_REDLINE_INSERTED;
1097 case RedlineType::Delete:
1098 pResId = STR_REDLINE_DELETED;
1100 case RedlineType::Format:
1101 case RedlineType::ParagraphFormat:
1102 pResId = STR_REDLINE_FORMATTED;
1104 case RedlineType::Table:
1105 pResId = STR_REDLINE_TABLECHG;
1109 OUString sTitle(
SwResId(STR_REDLINE_COMMENT));
1112 pDlg->SetText(sTitle);
1116 if ( pDlg->Execute() ==
RET_OK )
1118 const SfxItemSet* pOutSet = pDlg->GetOutputItemSet();
1119 OUString sMsg(pOutSet->
Get(SID_ATTR_POSTIT_TEXT).GetValue());
1123 rTreeView.
set_text(*xEntry, sMsg.replace(
'\n',
' '), 3);
1128 pDlg.disposeAndClear();
1131 else if (!sCommand.isEmpty())
1133 int nSortMode = sCommand.copy(10).toInt32();
1135 if (nSortMode == 4 && nColumn == 4)
1141 m_pTable->HeaderBarClick(nSortMode);
1142 if (nSortMode == -1)
1150 OUString lcl_StripAcceptChgDat(OUString &rExtraString)
1155 sal_Int32
nPos = rExtraString.indexOf(
"AcceptChgDat:");
1160 sal_Int32
n1 = rExtraString.indexOf(
'(', nPos);
1163 sal_Int32
n2 = rExtraString.indexOf(
')', n1);
1167 aStr = rExtraString.copy(nPos, n2 - nPos + 1);
1168 rExtraString = rExtraString.replaceAt(nPos, n2 - nPos + 1,
"");
1169 aStr = aStr.copy(n1 - nPos + 1);
1179 if (rExtraString.isEmpty())
1182 OUString aStr = lcl_StripAcceptChgDat(rExtraString);
1186 int nCount = aStr.toInt32();
1190 std::vector<int> aEndPos;
1192 for (
int i = 0;
i < nCount; ++
i)
1194 sal_Int32 n1 = aStr.indexOf(
';');
1195 aStr = aStr.copy( n1+1 );
1196 aEndPos.push_back(aStr.toInt32());
1199 bool bUseless =
false;
1201 std::vector<int> aWidths;
1202 for (
int i = 1;
i < nCount; ++
i)
1204 aWidths.push_back(aEndPos[
i] - aEndPos[
i - 1]);
1205 if (aWidths.back() <= 0)
1221 lcl_StripAcceptChgDat(rExtraData);
1222 rExtraData +=
"AcceptChgDat:(";
1224 const int nTabCount = 4;
1226 rExtraData += OUString::number(nTabCount);
1230 std::vector<int> aWidths;
1235 for (
int i = 0;
i < nTabCount - 1; ++
i)
1238 assert(nWidth > 0 &&
"suspicious to get a value like this");
1239 aWidths.push_back(aWidths.back() + nWidth);
1242 for (
auto a : aWidths)
1244 rExtraData += OUString::number(
a);
1251 :
PanelLayout(pParent,
"ManageChangesPanel",
"modules/swriter/ui/managechangessidebar.ui")
1252 , mxContentArea(m_xBuilder->weld_container(
"content_area"))
css::uno::Reference< css::linguistic2::XProofreadingIterator > get(css::uno::Reference< css::uno::XComponentContext > const &context)
virtual void FillInfo(SfxChildWinInfo &) const
virtual void set_text(int row, const OUString &rText, int col=-1)=0
std::shared_ptr< SfxDialogController > & GetController()
SfxViewFrame * GetViewFrame() const
#define LINK(Instance, Class, Member)
sal_uInt16 GetSeqNo() const
virtual int get_iter_index_in_parent(const TreeIter &rIter) const =0
const SfxPoolItem * ExecuteList(sal_uInt16 nSlot, SfxCallMode nCall, std::initializer_list< SfxPoolItem const * > args, std::initializer_list< SfxPoolItem const * > internalargs=std::initializer_list< SfxPoolItem const * >())
const SwRangeRedline & GetRedline(SwRedlineTable::size_type nPos) const
TOOLS_DLLPUBLIC OString convertLineEnd(const OString &rIn, LineEnd eLineEnd)
virtual int count_selected_rows() const =0
void SetRejectAllClickHdl(const Link< SvxTPView *, void > &rLink)
void Initialize(SfxChildWinInfo const *pInfo)
OUString const & GetAuthorString(sal_uInt16 nPos=0) const
std::unique_ptr< SvxAcceptChgCtr > m_xTabPagesCTRL
virtual const css::uno::Sequence< sal_Int8 > & GetRedlinePassword() const =0
virtual bool iter_parent(TreeIter &rIter) const =0
virtual void copy_iterator(const TreeIter &rSource, TreeIter &rDest) const =0
std::unique_ptr< ContentProperties > pData
void FillInfo(OUString &rExtraData) const
const SwRedlineData * Next() const
const SwRangeRedline * SelNextRedline()
virtual void insert(const TreeIter *pParent, int pos, const OUString *pStr, const OUString *pId, const OUString *pIconName, VirtualDevice *pImageSurface, bool bChildrenOnDemand, TreeIter *pRet)=0
SAL_DLLPRIVATE OUString GetActionText(const SwRangeRedline &rRedln, sal_uInt16 nStack=0)
SfxDispatcher * GetDispatcher()
static SvxAbstractDialogFactory * Create()
bool IsModified() const
Changes in document?
virtual void make_unsorted()=0
virtual void Activate() override
std::unique_ptr< weld::TreeIter > xTLBParent
SwUndoId EndUndo(SwUndoId eUndoId=SwUndoId::EMPTY, const SwRewriter *pRewriter=nullptr)
Closes parenthesis of nUndoId, not used by UI.
SwDocShell * GetOldDocShell()
const SwRangeRedline * GotoRedline(SwRedlineTable::size_type nArrPos, bool bSelect)
bool HasRedlineAutoFormat() const
void EnableRejectAll(bool bFlag)
virtual bool is_selected(int pos) const =0
void EnableClearFormat(bool bFlag)
SAL_DLLPRIVATE SwRedlineTable::size_type CalcDiff(SwRedlineTable::size_type nStart, bool bChild)
virtual ~SwModelessRedlineAcceptDlg() override
virtual std::unique_ptr< TreeIter > make_iterator(const TreeIter *pOrig=nullptr) const =0
void SetRejectClickHdl(const Link< SvxTPView *, void > &rLink)
virtual int get_column_width(int nCol) const =0
Used by the UI to modify the document model.
std::unique_ptr< weld::Container > mxContentArea
std::unique_ptr< weld::Builder > m_xBuilder
void connect_changed(const Link< TreeView &, void > &rLink)
std::vector< std::unique_ptr< SwRedlineDataChild > > m_RedlineChildren
const SwView & GetView() const
const BorderLinePrimitive2D *pCandidateB assert(pCandidateA)
weld::ComboBox * GetLbAction()
const DateTime & GetTimeStamp(sal_uInt16 nPos=0) const
virtual int n_children() const =0
LineEnd GetSystemLineEnd()
virtual void set_column_fixed_widths(const std::vector< int > &rWidths)=0
virtual void selected_foreach(const std::function< bool(TreeIter &)> &func)=0
virtual OUString get_id(int pos) const =0
IMPL_LINK(SwRedlineAcceptDlg, CommandHdl, const CommandEvent &, rCEvt, bool)
virtual void Notify(SfxBroadcaster &rBC, const SfxHint &rHint) override
We need to be a SfxListener to be able to update the list of changes when we get SfxHintId::DocChange...
std::vector< std::unique_ptr< SwRedlineDataParent > > m_RedlineParents
const IDocumentRedlineAccess & getIDocumentRedlineAccess() const
Provides access to the document redline interface.
sal_uInt16 GetStackCount() const
const SwRedlineData & GetRedlineData(sal_uInt16 nPos=0) const
SFX_IMPL_MODELESSDIALOGCONTOLLER_WITHID(SvxContourDlgChildWindow, SID_CONTOUR_DLG)
bool AcceptRedline(SwRedlineTable::size_type nPos)
const SfxItemPool & GetAttrPool() const
bool IsAutoFormat() const
SAL_DLLPRIVATE SwRedlineTable::size_type GetRedlinePos(const weld::TreeIter &rEntry)
SAL_DLLPRIVATE void InitAuthors()
const SfxPoolItem * GetSlotState(sal_uInt16 nSlotId, const SfxInterface *pIF=nullptr, SfxItemSet *pStateSet=nullptr)
std::unique_ptr< SwRedlineAcceptDlg > mpImplDlg
bool SetRedlineComment(const OUString &rS)
Set comment to Redline at position.
std::unique_ptr< weld::TreeIter > xTLBChild
OUString Apply(const OUString &rStr) const
void Initialize(SfxChildWinInfo *pInfo)
SwRedlineTable::size_type GetRedlineCount() const
const SwRangeRedline * SelPrevRedline()
void EnableClearFormatAll(bool bFlag)
vector_type::size_type size_type
SwRedlineAcceptDlg(SwRedlineAcceptDlg const &)=delete
SwRedlineTable::size_type FindRedlineOfData(const SwRedlineData &) const
Search Redline for this Data and.
static SAL_DLLPRIVATE OUString GetActionImage(const SwRangeRedline &rRedln, sal_uInt16 nStack=0)
const SwRedlineDataChild * pNext
SwUndoId StartUndo(SwUndoId eUndoId=SwUndoId::EMPTY, const SwRewriter *pRewriter=nullptr)
Undo: set up Undo parenthesis, return nUndoId of this parenthesis.
void AddRule(SwUndoArg eWhat, const OUString &rWith)
const DateTime & GetTimeStamp() const
const SwRedlineData * pChild
OUString GetSelectedAuthor() const
virtual void set_active(int pos)=0
void StartListening(SfxBroadcaster &rBroadcaster, DuplicateHandling eDuplicateHanding=DuplicateHandling::Unexpected)
SvxRedlinTable * m_pTable
OUString SwResId(const char *pId)
virtual ~SwRedlineAcceptPanel() override
virtual void expand_row(const TreeIter &rIter)=0
void SetTimeout(sal_uInt64 nTimeoutMs)
void SetOldDocShell(SwDocShell *pDcSh)
std::unique_ptr< weld::Container > m_xContentArea
std::unique_ptr< SwRedlineAcceptDlg > m_xImplDlg
SwDocShell * GetDocShell()
SAL_DLLPRIVATE void InsertParents(SwRedlineTable::size_type nStart, SwRedlineTable::size_type nEnd=SwRedlineTable::npos)
IMPL_LINK_NOARG(SwRedlineAcceptDlg, AcceptHdl, SvxTPView *, void)
virtual void remove(int pos)=0
int get_checkbox_column_width() const
const OUString & GetComment(sal_uInt16 nPos=0) const
void EnableUndo(bool bFlag=true)
bool IsValidEntry(std::u16string_view rAuthor, const DateTime &rDateTime, const OUString &rComment)
const SwRangeRedline * GetCurrRedline() const
virtual void select(int pos)=0
void SetUndoClickHdl(const Link< SvxTPView *, void > &rLink)
virtual void Activate() override
SwRedlineAcceptPanel(weld::Widget *pParent)
SwWrtShell * GetWrtShellPtr() const
void CallAcceptReject(bool bSelect, bool bAccept)
void EnableReject(bool bFlag)
static void SetCareDialog(const std::shared_ptr< weld::Window > &rNew)
virtual int get_sort_column() const =0
SwChildWinWrapper * pChildWin
const SfxPoolItem & Get(sal_uInt16 nWhich, bool bSrchInParent=true) const
sal_Int32 SelectAuthor(const OUString &aString)
SwModelessRedlineAcceptDlg(SfxBindings *, SwChildWinWrapper *, weld::Window *pParent)
virtual bool get_selected(TreeIter *pIter) const =0
weld::TreeView & GetWidget()
bool RejectRedline(SwRedlineTable::size_type nPos)
void EnableAccept(bool bFlag)
bool IsCursorPtAtEnd() const
virtual bool ReInitDlg(SwDocShell *pDocSh) override
void SetAcceptAllClickHdl(const Link< SvxTPView *, void > &rLink)
Reference< XExecutableDialog > m_xDialog
RedlineType GetType(sal_uInt16 nPos=0) const
virtual void set_cursor(int pos)=0
void SetInvokeHandler(const Link< Timer *, void > &rLink)
SvxRedlinTable * GetTableControl()
virtual void set_selection_mode(SelectionMode eMode)=0
SAL_DLLPRIVATE void InsertChildren(SwRedlineDataParent *pParent, const SwRangeRedline &rRedln, bool bHasRedlineAutoFormat)
virtual void set_image(int row, const OUString &rImage, int col=-1)=0
bool m_bOnlyFormatedRedlines
const SwRedlineData * pData
void Initialize(OUString &rExtraData)
SAL_DLLPRIVATE void RemoveParents(SwRedlineTable::size_type nStart, SwRedlineTable::size_type nEnd)
void append_text(const OUString &rStr)
OUString m_sFormatCollSet
const SwRedlineDataChild * pNext
virtual void FillInfo(SfxChildWinInfo &) const override
virtual bool ReInitDlg(SwDocShell *pDocSh)
std::pair< const_iterator, bool > insert(Value &&x)
SwRedlineDataParentSortArr m_aUsedSeqNo
void InsertAuthor(const OUString &rString)
static constexpr size_type npos
virtual void connect_popup_menu(const Link< const CommandEvent &, bool > &rLink)
void Init(SwRedlineTable::size_type nStart=0)
virtual void make_sorted()=0
#define FN_REDLINE_ACCEPT
void EnableAcceptAll(bool bFlag)
void SetAcceptClickHdl(const Link< SvxTPView *, void > &rLink)
size_type erase(const Value &x)
virtual OUString get_active_text() const =0
virtual int iter_compare(const TreeIter &a, const TreeIter &b) const =0
virtual int get_iter_depth(const TreeIter &rIter) const =0
void EndAction(const bool bIdleEnd=false)
virtual void scroll_to_row(int row)=0