summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2018-12-03 12:35:24 +0000
committerCaolán McNamara <caolanm@redhat.com>2018-12-03 17:08:29 +0100
commit4075840e03a175081e0e16d30bf6ae72988c7fd3 (patch)
tree0f4a5de19da29ad992a7fae87999a3d2e3e94de0
parent7d22ed707aaf098c996f747ee5d4bbdae506f976 (diff)
weld OfaSwAutoFmtOptionsPage
Change-Id: Ia88fe2562dd87b33fdec0081a3adf27c8d10f407 Reviewed-on: https://gerrit.libreoffice.org/64449 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com> Tested-by: Caolán McNamara <caolanm@redhat.com>
-rw-r--r--basctl/source/basicide/bastype2.cxx2
-rw-r--r--cui/inc/strings.hrc7
-rw-r--r--cui/source/customize/cfgutil.cxx8
-rw-r--r--cui/source/inc/autocdlg.hxx17
-rw-r--r--cui/source/inc/cfgutil.hxx2
-rw-r--r--cui/source/tabpages/autocdlg.cxx309
-rw-r--r--cui/uiconfig/ui/applyautofmtpage.ui117
-rw-r--r--include/vcl/headbar.hxx2
-rw-r--r--include/vcl/weld.hxx23
-rw-r--r--vcl/source/app/salvtables.cxx88
-rw-r--r--vcl/source/window/builder.cxx22
-rw-r--r--vcl/unx/gtk3/gtk3gtkinst.cxx59
12 files changed, 399 insertions, 257 deletions
diff --git a/basctl/source/basicide/bastype2.cxx b/basctl/source/basicide/bastype2.cxx
index e75d8674a748..36c856d468c8 100644
--- a/basctl/source/basicide/bastype2.cxx
+++ b/basctl/source/basicide/bastype2.cxx
@@ -1352,7 +1352,7 @@ void SbTreeListBox::AddEntry(
std::unique_ptr<Entry>&& rUserData)
{
OUString sId(OUString::number(reinterpret_cast<sal_uInt64>(rUserData.release())));
- m_xControl->insert(pParent, -1, rText, &sId, nullptr, nullptr, &rImage, bChildrenOnDemand);
+ m_xControl->insert(pParent, -1, &rText, &sId, nullptr, nullptr, &rImage, bChildrenOnDemand);
}
void SbTreeListBox::SetEntryBitmaps(weld::TreeIter& rIter, const OUString& rImage)
diff --git a/cui/inc/strings.hrc b/cui/inc/strings.hrc
index 149dfa658519..7b4d692108c4 100644
--- a/cui/inc/strings.hrc
+++ b/cui/inc/strings.hrc
@@ -352,9 +352,10 @@
#define RID_SVXSTR_ORDINAL NC_("RID_SVXSTR_ORDINAL", "Format ordinal numbers suffixes (1st -> 1^st)")
#define RID_SVXSTR_DEL_EMPTY_PARA NC_("RID_SVXSTR_DEL_EMPTY_PARA", "Remove blank paragraphs")
#define RID_SVXSTR_USER_STYLE NC_("RID_SVXSTR_USER_STYLE", "Replace Custom Styles")
-#define RID_SVXSTR_BULLET NC_("RID_SVXSTR_BULLET", "Replace bullets with: ")
-#define RID_SVXSTR_RIGHT_MARGIN NC_("RID_SVXSTR_RIGHT_MARGIN", "Combine single line paragraphs if length greater than")
-#define RID_SVXSTR_NUM NC_("RID_SVXSTR_NUM", "Bulleted and numbered lists. Bullet symbol: ")
+#define RID_SVXSTR_BULLET NC_("RID_SVXSTR_BULLET", "Replace bullets with: %1")
+// To translators: %1 will be replaced with a percentage, e.g. "10%"
+#define RID_SVXSTR_RIGHT_MARGIN NC_("RID_SVXSTR_RIGHT_MARGIN", "Combine single line paragraphs if length greater than %1")
+#define RID_SVXSTR_NUM NC_("RID_SVXSTR_NUM", "Bulleted and numbered lists. Bullet symbol: %1")
#define RID_SVXSTR_BORDER NC_("RID_SVXSTR_BORDER", "Apply border")
#define RID_SVXSTR_CREATE_TABLE NC_("RID_SVXSTR_CREATE_TABLE", "Create table")
#define RID_SVXSTR_REPLACE_TEMPLATES NC_("RID_SVXSTR_REPLACE_TEMPLATES", "Apply Styles")
diff --git a/cui/source/customize/cfgutil.cxx b/cui/source/customize/cfgutil.cxx
index 3214e2dad021..17efb2d86497 100644
--- a/cui/source/customize/cfgutil.cxx
+++ b/cui/source/customize/cfgutil.cxx
@@ -1381,7 +1381,7 @@ void CuiConfigGroupListBox::FillScriptList(const css::uno::Reference< css::scrip
0, static_cast<void *>( theChild.get())));
OUString sId(OUString::number(reinterpret_cast<sal_Int64>(aArr.back().get())));
- m_xTreeView->insert(pParentEntry, -1, uiName, &sId, nullptr, nullptr, &aImage, bChildOnDemand);
+ m_xTreeView->insert(pParentEntry, -1, &uiName, &sId, nullptr, nullptr, &aImage, bChildOnDemand);
}
}
}
@@ -1451,7 +1451,7 @@ void CuiConfigGroupListBox::Init(const css::uno::Reference< css::uno::XComponent
static_cast<void *>(rootNode.get())));
OUString aTitle(xImp->m_sDlgMacros);
OUString sId(OUString::number(reinterpret_cast<sal_Int64>(aArr.back().get())));
- m_xTreeView->insert(nullptr, -1, aTitle, &sId, nullptr, nullptr, nullptr, true);
+ m_xTreeView->insert(nullptr, -1, &aTitle, &sId, nullptr, nullptr, nullptr, true);
}
else
{
@@ -1467,7 +1467,7 @@ void CuiConfigGroupListBox::Init(const css::uno::Reference< css::uno::XComponent
aArr.push_back( o3tl::make_unique<SfxGroupInfo_Impl>( SfxCfgKind::GROUP_STYLES, 0, nullptr ) ); // TODO last parameter should contain user data
OUString sStyle(xImp->m_aStrGroupStyles);
OUString sId(OUString::number(reinterpret_cast<sal_Int64>(aArr.back().get())));
- m_xTreeView->insert(nullptr, -1, sStyle, &sId, nullptr, nullptr, nullptr, true);
+ m_xTreeView->insert(nullptr, -1, &sStyle, &sId, nullptr, nullptr, nullptr, true);
}
m_xTreeView->thaw();
@@ -1759,7 +1759,7 @@ IMPL_LINK(CuiConfigGroupListBox, ExpandingHdl, weld::TreeIter&, rIter, bool)
SfxStyleInfo_Impl* pFamily = new SfxStyleInfo_Impl(lStyleFamily);
aArr.push_back( o3tl::make_unique<SfxGroupInfo_Impl>( SfxCfgKind::GROUP_STYLES, 0, pFamily ));
OUString sId(OUString::number(reinterpret_cast<sal_Int64>(aArr.back().get())));
- m_xTreeView->insert(&rIter, -1, pFamily->sLabel, &sId, nullptr, nullptr, nullptr, false);
+ m_xTreeView->insert(&rIter, -1, &pFamily->sLabel, &sId, nullptr, nullptr, nullptr, false);
}
}
break;
diff --git a/cui/source/inc/autocdlg.hxx b/cui/source/inc/autocdlg.hxx
index 81044a633eab..6dc3a39548f8 100644
--- a/cui/source/inc/autocdlg.hxx
+++ b/cui/source/inc/autocdlg.hxx
@@ -127,9 +127,6 @@ class OfaSwAutoFmtOptionsPage : public SfxTabPage
friend class VclPtr<OfaSwAutoFmtOptionsPage>;
using TabPage::ActivatePage;
- VclPtr<OfaACorrCheckListBox> m_pCheckLB;
- VclPtr<PushButton> m_pEditPB;
-
OUString sDeleteEmptyPara;
OUString sUseReplaceTbl;
OUString sCapitalStartWord;
@@ -157,16 +154,16 @@ class OfaSwAutoFmtOptionsPage : public SfxTabPage
vcl::Font aByInputBulletFont;
sal_uInt16 nPercent;
- std::unique_ptr<SvLBoxButtonData> m_xCheckButtonData;
+ std::unique_ptr<weld::TreeView> m_xCheckLB;
+ std::unique_ptr<weld::Button> m_xEditPB;
- DECL_LINK(SelectHdl, SvTreeListBox*, void);
- DECL_LINK(EditHdl, Button*, void);
- DECL_LINK(DoubleClickEditHdl, SvTreeListBox*, bool);
- SvTreeListEntry* CreateEntry(OUString& rTxt, sal_uInt16 nCol);
+ DECL_LINK(SelectHdl, weld::TreeView&, void);
+ DECL_LINK(EditHdl, weld::Button&, void);
+ DECL_LINK(DoubleClickEditHdl, weld::TreeView&, void);
+ void CreateEntry(const OUString& rTxt, sal_uInt16 nCol);
- OfaSwAutoFmtOptionsPage( vcl::Window* pParent,
- const SfxItemSet& rSet );
+ OfaSwAutoFmtOptionsPage(TabPageParent pParent, const SfxItemSet& rSet);
virtual ~OfaSwAutoFmtOptionsPage() override;
virtual void dispose() override;
diff --git a/cui/source/inc/cfgutil.hxx b/cui/source/inc/cfgutil.hxx
index 3161768a32d1..ff9f4aa6f1b2 100644
--- a/cui/source/inc/cfgutil.hxx
+++ b/cui/source/inc/cfgutil.hxx
@@ -140,7 +140,7 @@ public:
void append(const OUString& rId, const OUString& rStr) { m_xTreeView->append(rId, rStr); }
void append(const OUString& rId, const OUString& rStr, const OUString& rImage)
{
- m_xTreeView->insert(nullptr, -1, rStr, &rId, nullptr, nullptr, &rImage, false);
+ m_xTreeView->insert(nullptr, -1, &rStr, &rId, nullptr, nullptr, &rImage, false);
}
int n_children() const { return m_xTreeView->n_children(); }
void select(int pos) { m_xTreeView->select(pos); }
diff --git a/cui/source/tabpages/autocdlg.cxx b/cui/source/tabpages/autocdlg.cxx
index e39a9cba42d1..c1fe278513f9 100644
--- a/cui/source/tabpages/autocdlg.cxx
+++ b/cui/source/tabpages/autocdlg.cxx
@@ -405,9 +405,9 @@ enum OfaAutoFmtOptions
MERGE_SINGLE_LINE_PARA
};
-OfaSwAutoFmtOptionsPage::OfaSwAutoFmtOptionsPage( vcl::Window* pParent,
- const SfxItemSet& rSet )
- : SfxTabPage(pParent, "ApplyAutoFmtPage", "cui/ui/applyautofmtpage.ui", &rSet)
+OfaSwAutoFmtOptionsPage::OfaSwAutoFmtOptionsPage(TabPageParent pParent,
+ const SfxItemSet& rSet )
+ : SfxTabPage(pParent, "cui/ui/applyautofmtpage.ui", "ApplyAutoFmtPage", &rSet)
, sDeleteEmptyPara(CuiResId(RID_SVXSTR_DEL_EMPTY_PARA))
, sUseReplaceTbl(CuiResId(RID_SVXSTR_USE_REPLACE))
, sCapitalStartWord(CuiResId(RID_SVXSTR_CPTL_STT_WORD))
@@ -427,59 +427,30 @@ OfaSwAutoFmtOptionsPage::OfaSwAutoFmtOptionsPage( vcl::Window* pParent,
, sDelSpaceAtSttEnd(CuiResId(RID_SVXSTR_DEL_SPACES_AT_STT_END))
, sDelSpaceBetweenLines(CuiResId(RID_SVXSTR_DEL_SPACES_BETWEEN_LINES))
, nPercent(50)
+ , m_xCheckLB(m_xBuilder->weld_tree_view("list"))
+ , m_xEditPB(m_xBuilder->weld_button("edit"))
{
- get(m_pEditPB, "edit");
+ m_xCheckLB->connect_changed(LINK(this, OfaSwAutoFmtOptionsPage, SelectHdl));
+ m_xCheckLB->connect_row_activated(LINK(this, OfaSwAutoFmtOptionsPage, DoubleClickEditHdl));
- SvSimpleTableContainer* pCheckLBContainer(get<SvSimpleTableContainer>("list"));
- Size aControlSize(248 , 149);
- aControlSize = LogicToPixel(aControlSize, MapMode(MapUnit::MapAppFont));
- pCheckLBContainer->set_width_request(aControlSize.Width());
- pCheckLBContainer->set_height_request(aControlSize.Height());
- m_pCheckLB = VclPtr<OfaACorrCheckListBox>::Create(*pCheckLBContainer);
-
- m_pCheckLB->SetStyle(m_pCheckLB->GetStyle()|WB_HSCROLL| WB_VSCROLL);
-
- m_pCheckLB->SetSelectHdl(LINK(this, OfaSwAutoFmtOptionsPage, SelectHdl));
- m_pCheckLB->SetDoubleClickHdl(LINK(this, OfaSwAutoFmtOptionsPage, DoubleClickEditHdl));
-
- static long const aStaticTabs[]=
- {
- 0, 20, 40
- };
-
- m_pCheckLB->SvSimpleTable::SetTabs(SAL_N_ELEMENTS(aStaticTabs), aStaticTabs);
- OUString sHeader = get<vcl::Window>("m")->GetText() + "\t"
- + get<vcl::Window>("t")->GetText() + "\t";
- m_pCheckLB->InsertHeaderEntry(sHeader, HEADERBAR_APPEND,
- HeaderBarItemBits::CENTER | HeaderBarItemBits::FIXEDPOS | HeaderBarItemBits::FIXED);
+ std::vector<int> aWidths;
+ aWidths.push_back(m_xCheckLB->get_pixel_size(m_xCheckLB->get_column_title(0)).Width() * 2);
+ aWidths.push_back(m_xCheckLB->get_pixel_size(m_xCheckLB->get_column_title(1)).Width() * 2);
+ m_xCheckLB->set_column_fixed_widths(aWidths);
- m_pEditPB->SetClickHdl(LINK(this, OfaSwAutoFmtOptionsPage, EditHdl));
+ m_xEditPB->connect_clicked(LINK(this, OfaSwAutoFmtOptionsPage, EditHdl));
}
-SvTreeListEntry* OfaSwAutoFmtOptionsPage::CreateEntry(OUString& rTxt, sal_uInt16 nCol)
+void OfaSwAutoFmtOptionsPage::CreateEntry(const OUString& rTxt, sal_uInt16 nCol)
{
- SvTreeListEntry* pEntry = new SvTreeListEntry;
-
- if (!m_xCheckButtonData)
- {
- m_xCheckButtonData.reset(new SvLBoxButtonData(m_pCheckLB));
- m_pCheckLB->SetCheckButtonData(m_xCheckButtonData.get());
- }
-
- pEntry->AddItem(o3tl::make_unique<SvLBoxContextBmp>(Image(), Image(), false));
-
- if (nCol == CBCOL_SECOND)
- pEntry->AddItem(o3tl::make_unique<SvLBoxString>(""));
- else
- pEntry->AddItem(o3tl::make_unique<SvLBoxButton>(SvLBoxButtonKind::EnabledCheckbox, m_xCheckButtonData.get()));
-
- if (nCol == CBCOL_FIRST)
- pEntry->AddItem(o3tl::make_unique<SvLBoxString>(""));
- else
- pEntry->AddItem(o3tl::make_unique<SvLBoxButton>(SvLBoxButtonKind::EnabledCheckbox, m_xCheckButtonData.get()));
- pEntry->AddItem(o3tl::make_unique<OfaImpBrwString>(rTxt));
-
- return pEntry;
+ m_xCheckLB->insert(nullptr, -1, nullptr, nullptr, nullptr,
+ nullptr, nullptr, false);
+ const int nRow = m_xCheckLB->n_children() - 1;
+ if (nCol == CBCOL_FIRST || nCol == CBCOL_BOTH)
+ m_xCheckLB->set_toggle(nRow, false, CBCOL_FIRST);
+ if (nCol == CBCOL_SECOND || nCol == CBCOL_BOTH)
+ m_xCheckLB->set_toggle(nRow, false, CBCOL_SECOND);
+ m_xCheckLB->set_text(nRow, rTxt, 2);
}
OfaSwAutoFmtOptionsPage::~OfaSwAutoFmtOptionsPage()
@@ -487,24 +458,10 @@ OfaSwAutoFmtOptionsPage::~OfaSwAutoFmtOptionsPage()
disposeOnce();
}
-void OfaSwAutoFmtOptionsPage::dispose()
-{
- if (m_pCheckLB)
- {
- delete static_cast<ImpUserData*>(m_pCheckLB->GetUserData( REPLACE_BULLETS ));
- delete static_cast<ImpUserData*>(m_pCheckLB->GetUserData( APPLY_NUMBERING ));
- delete static_cast<ImpUserData*>(m_pCheckLB->GetUserData( MERGE_SINGLE_LINE_PARA ));
- m_xCheckButtonData.reset();
- }
- m_pCheckLB.disposeAndClear();
- m_pEditPB.clear();
- SfxTabPage::dispose();
-}
-
-VclPtr<SfxTabPage> OfaSwAutoFmtOptionsPage::Create( TabPageParent pParent,
- const SfxItemSet* rAttrSet)
+VclPtr<SfxTabPage> OfaSwAutoFmtOptionsPage::Create(TabPageParent pParent,
+ const SfxItemSet* rAttrSet)
{
- return VclPtr<OfaSwAutoFmtOptionsPage>::Create(pParent.pParent, *rAttrSet);
+ return VclPtr<OfaSwAutoFmtOptionsPage>::Create(pParent, *rAttrSet);
}
bool OfaSwAutoFmtOptionsPage::FillItemSet( SfxItemSet* )
@@ -514,51 +471,51 @@ bool OfaSwAutoFmtOptionsPage::FillItemSet( SfxItemSet* )
SvxSwAutoFormatFlags *pOpt = &pAutoCorrect->GetSwFlags();
ACFlags nFlags = pAutoCorrect->GetFlags();
- bool bCheck = m_pCheckLB->IsChecked(USE_REPLACE_TABLE);
+ bool bCheck = m_xCheckLB->get_toggle(USE_REPLACE_TABLE);
bModified |= pOpt->bAutoCorrect != bCheck;
pOpt->bAutoCorrect = bCheck;
pAutoCorrect->SetAutoCorrFlag(ACFlags::Autocorrect,
- m_pCheckLB->IsChecked(USE_REPLACE_TABLE, CBCOL_SECOND));
+ m_xCheckLB->get_toggle(USE_REPLACE_TABLE, CBCOL_SECOND));
- bCheck = m_pCheckLB->IsChecked(CORR_UPPER);
+ bCheck = m_xCheckLB->get_toggle(CORR_UPPER);
bModified |= pOpt->bCapitalStartWord != bCheck;
pOpt->bCapitalStartWord = bCheck;
pAutoCorrect->SetAutoCorrFlag(ACFlags::CapitalStartWord,
- m_pCheckLB->IsChecked(CORR_UPPER, CBCOL_SECOND));
+ m_xCheckLB->get_toggle(CORR_UPPER, CBCOL_SECOND));
- bCheck = m_pCheckLB->IsChecked(BEGIN_UPPER);
+ bCheck = m_xCheckLB->get_toggle(BEGIN_UPPER);
bModified |= pOpt->bCapitalStartSentence != bCheck;
pOpt->bCapitalStartSentence = bCheck;
pAutoCorrect->SetAutoCorrFlag(ACFlags::CapitalStartSentence,
- m_pCheckLB->IsChecked(BEGIN_UPPER, CBCOL_SECOND));
+ m_xCheckLB->get_toggle(BEGIN_UPPER, CBCOL_SECOND));
- bCheck = m_pCheckLB->IsChecked(BOLD_UNDERLINE);
+ bCheck = m_xCheckLB->get_toggle(BOLD_UNDERLINE);
bModified |= pOpt->bChgWeightUnderl != bCheck;
pOpt->bChgWeightUnderl = bCheck;
pAutoCorrect->SetAutoCorrFlag(ACFlags::ChgWeightUnderl,
- m_pCheckLB->IsChecked(BOLD_UNDERLINE, CBCOL_SECOND));
+ m_xCheckLB->get_toggle(BOLD_UNDERLINE, CBCOL_SECOND));
pAutoCorrect->SetAutoCorrFlag(ACFlags::IgnoreDoubleSpace,
- m_pCheckLB->IsChecked(IGNORE_DBLSPACE, CBCOL_SECOND));
+ m_xCheckLB->get_toggle(IGNORE_DBLSPACE, CBCOL_SECOND));
pAutoCorrect->SetAutoCorrFlag(ACFlags::CorrectCapsLock,
- m_pCheckLB->IsChecked(CORRECT_CAPS_LOCK, CBCOL_SECOND));
+ m_xCheckLB->get_toggle(CORRECT_CAPS_LOCK, CBCOL_SECOND));
- bCheck = m_pCheckLB->IsChecked(DETECT_URL);
+ bCheck = m_xCheckLB->get_toggle(DETECT_URL);
bModified |= pOpt->bSetINetAttr != bCheck;
pOpt->bSetINetAttr = bCheck;
pAutoCorrect->SetAutoCorrFlag(ACFlags::SetINetAttr,
- m_pCheckLB->IsChecked(DETECT_URL, CBCOL_SECOND));
+ m_xCheckLB->get_toggle(DETECT_URL, CBCOL_SECOND));
- bCheck = m_pCheckLB->IsChecked(DEL_EMPTY_NODE);
+ bCheck = m_xCheckLB->get_toggle(DEL_EMPTY_NODE);
bModified |= pOpt->bDelEmptyNode != bCheck;
pOpt->bDelEmptyNode = bCheck;
- bCheck = m_pCheckLB->IsChecked(REPLACE_USER_COLL);
+ bCheck = m_xCheckLB->get_toggle(REPLACE_USER_COLL);
bModified |= pOpt->bChgUserColl != bCheck;
pOpt->bChgUserColl = bCheck;
- bCheck = m_pCheckLB->IsChecked(REPLACE_BULLETS);
+ bCheck = m_xCheckLB->get_toggle(REPLACE_BULLETS);
bModified |= pOpt->bChgEnumNum != bCheck;
pOpt->bChgEnumNum = bCheck;
bModified |= aBulletFont != pOpt->aBulletFont;
@@ -571,45 +528,45 @@ bool OfaSwAutoFmtOptionsPage::FillItemSet( SfxItemSet* )
pOpt->aByInputBulletFont = aByInputBulletFont;
pOpt->cByInputBullet = sByInputBulletChar[0];
- bCheck = m_pCheckLB->IsChecked(MERGE_SINGLE_LINE_PARA);
+ bCheck = m_xCheckLB->get_toggle(MERGE_SINGLE_LINE_PARA);
bModified |= pOpt->bRightMargin != bCheck;
pOpt->bRightMargin = bCheck;
bModified |= nPercent != pOpt->nRightMargin;
pOpt->nRightMargin = static_cast<sal_uInt8>(nPercent);
- bCheck = m_pCheckLB->IsChecked(APPLY_NUMBERING, CBCOL_SECOND);
+ bCheck = m_xCheckLB->get_toggle(APPLY_NUMBERING, CBCOL_SECOND);
bModified |= pOpt->bSetNumRule != bCheck;
pOpt->bSetNumRule = bCheck;
- bCheck = m_pCheckLB->IsChecked(INSERT_BORDER, CBCOL_SECOND);
+ bCheck = m_xCheckLB->get_toggle(INSERT_BORDER, CBCOL_SECOND);
bModified |= pOpt->bSetBorder != bCheck;
pOpt->bSetBorder = bCheck;
- bCheck = m_pCheckLB->IsChecked(CREATE_TABLE, CBCOL_SECOND);
+ bCheck = m_xCheckLB->get_toggle(CREATE_TABLE, CBCOL_SECOND);
bModified |= pOpt->bCreateTable != bCheck;
pOpt->bCreateTable = bCheck;
- bCheck = m_pCheckLB->IsChecked(REPLACE_STYLES, CBCOL_SECOND);
+ bCheck = m_xCheckLB->get_toggle(REPLACE_STYLES, CBCOL_SECOND);
bModified |= pOpt->bReplaceStyles != bCheck;
pOpt->bReplaceStyles = bCheck;
- bCheck = m_pCheckLB->IsChecked(REPLACE_DASHES);
+ bCheck = m_xCheckLB->get_toggle(REPLACE_DASHES);
bModified |= pOpt->bChgToEnEmDash != bCheck;
pOpt->bChgToEnEmDash = bCheck;
pAutoCorrect->SetAutoCorrFlag(ACFlags::ChgToEnEmDash,
- m_pCheckLB->IsChecked(REPLACE_DASHES, CBCOL_SECOND));
+ m_xCheckLB->get_toggle(REPLACE_DASHES, CBCOL_SECOND));
- bCheck = m_pCheckLB->IsChecked(DEL_SPACES_AT_STT_END);
+ bCheck = m_xCheckLB->get_toggle(DEL_SPACES_AT_STT_END);
bModified |= pOpt->bAFormatDelSpacesAtSttEnd != bCheck;
pOpt->bAFormatDelSpacesAtSttEnd = bCheck;
- bCheck = m_pCheckLB->IsChecked(DEL_SPACES_AT_STT_END, CBCOL_SECOND);
+ bCheck = m_xCheckLB->get_toggle(DEL_SPACES_AT_STT_END, CBCOL_SECOND);
bModified |= pOpt->bAFormatByInpDelSpacesAtSttEnd != bCheck;
pOpt->bAFormatByInpDelSpacesAtSttEnd = bCheck;
- bCheck = m_pCheckLB->IsChecked(DEL_SPACES_BETWEEN_LINES);
+ bCheck = m_xCheckLB->get_toggle(DEL_SPACES_BETWEEN_LINES);
bModified |= pOpt->bAFormatDelSpacesBetweenLines != bCheck;
pOpt->bAFormatDelSpacesBetweenLines = bCheck;
- bCheck = m_pCheckLB->IsChecked(DEL_SPACES_BETWEEN_LINES, CBCOL_SECOND);
+ bCheck = m_xCheckLB->get_toggle(DEL_SPACES_BETWEEN_LINES, CBCOL_SECOND);
bModified |= pOpt->bAFormatByInpDelSpacesBetweenLines != bCheck;
pOpt->bAFormatByInpDelSpacesBetweenLines = bCheck;
@@ -634,98 +591,99 @@ void OfaSwAutoFmtOptionsPage::Reset( const SfxItemSet* )
SvxSwAutoFormatFlags *pOpt = &pAutoCorrect->GetSwFlags();
const ACFlags nFlags = pAutoCorrect->GetFlags();
- m_pCheckLB->SetUpdateMode(false);
- m_pCheckLB->Clear();
+ aBulletFont = pOpt->aBulletFont;
+ sBulletChar = OUString(pOpt->cBullet);
+
+ aByInputBulletFont = pOpt->aByInputBulletFont;
+ sByInputBulletChar = OUString( pOpt->cByInputBullet );
+
+ nPercent = pOpt->nRightMargin;
+ sMargin = unicode::formatPercent(nPercent, Application::GetSettings().GetUILanguageTag());
+
+ m_xCheckLB->freeze();
+ m_xCheckLB->clear();
// The following entries have to be inserted in the same order
// as in the OfaAutoFmtOptions-enum!
- m_pCheckLB->GetModel()->Insert(CreateEntry(sUseReplaceTbl, CBCOL_BOTH ));
- m_pCheckLB->GetModel()->Insert(CreateEntry(sCapitalStartWord, CBCOL_BOTH ));
- m_pCheckLB->GetModel()->Insert(CreateEntry(sCapitalStartSentence, CBCOL_BOTH ));
- m_pCheckLB->GetModel()->Insert(CreateEntry(sBoldUnder, CBCOL_BOTH ));
- m_pCheckLB->GetModel()->Insert(CreateEntry(sDetectURL, CBCOL_BOTH ));
- m_pCheckLB->GetModel()->Insert(CreateEntry(sDash, CBCOL_BOTH ));
- m_pCheckLB->GetModel()->Insert(CreateEntry(sDelSpaceAtSttEnd, CBCOL_BOTH ));
- m_pCheckLB->GetModel()->Insert(CreateEntry(sDelSpaceBetweenLines, CBCOL_BOTH ));
-
- m_pCheckLB->GetModel()->Insert(CreateEntry(sNoDblSpaces, CBCOL_SECOND));
- m_pCheckLB->GetModel()->Insert(CreateEntry(sCorrectCapsLock, CBCOL_SECOND));
- m_pCheckLB->GetModel()->Insert(CreateEntry(sNum, CBCOL_SECOND));
- m_pCheckLB->GetModel()->Insert(CreateEntry(sBorder, CBCOL_SECOND));
- m_pCheckLB->GetModel()->Insert(CreateEntry(sTable, CBCOL_SECOND));
- m_pCheckLB->GetModel()->Insert(CreateEntry(sReplaceTemplates, CBCOL_SECOND));
- m_pCheckLB->GetModel()->Insert(CreateEntry(sDeleteEmptyPara, CBCOL_FIRST ));
- m_pCheckLB->GetModel()->Insert(CreateEntry(sUserStyle, CBCOL_FIRST ));
- m_pCheckLB->GetModel()->Insert(CreateEntry(sBullet, CBCOL_FIRST ));
- m_pCheckLB->GetModel()->Insert(CreateEntry(sRightMargin, CBCOL_FIRST ));
-
- m_pCheckLB->CheckEntryPos( USE_REPLACE_TABLE, CBCOL_FIRST, pOpt->bAutoCorrect );
- m_pCheckLB->CheckEntryPos( USE_REPLACE_TABLE, CBCOL_SECOND, bool(nFlags & ACFlags::Autocorrect));
- m_pCheckLB->CheckEntryPos( CORR_UPPER, CBCOL_FIRST, pOpt->bCapitalStartWord );
- m_pCheckLB->CheckEntryPos( CORR_UPPER, CBCOL_SECOND, bool(nFlags & ACFlags::CapitalStartWord) );
- m_pCheckLB->CheckEntryPos( BEGIN_UPPER, CBCOL_FIRST, pOpt->bCapitalStartSentence );
- m_pCheckLB->CheckEntryPos( BEGIN_UPPER, CBCOL_SECOND, bool(nFlags & ACFlags::CapitalStartSentence) );
- m_pCheckLB->CheckEntryPos( BOLD_UNDERLINE, CBCOL_FIRST, pOpt->bChgWeightUnderl );
- m_pCheckLB->CheckEntryPos( BOLD_UNDERLINE, CBCOL_SECOND, bool(nFlags & ACFlags::ChgWeightUnderl) );
- m_pCheckLB->CheckEntryPos( IGNORE_DBLSPACE, CBCOL_SECOND, bool(nFlags & ACFlags::IgnoreDoubleSpace) );
- m_pCheckLB->CheckEntryPos( CORRECT_CAPS_LOCK, CBCOL_SECOND, bool(nFlags & ACFlags::CorrectCapsLock) );
- m_pCheckLB->CheckEntryPos( DETECT_URL, CBCOL_FIRST, pOpt->bSetINetAttr );
- m_pCheckLB->CheckEntryPos( DETECT_URL, CBCOL_SECOND, bool(nFlags & ACFlags::SetINetAttr) );
- m_pCheckLB->CheckEntryPos( REPLACE_DASHES, CBCOL_FIRST, pOpt->bChgToEnEmDash );
- m_pCheckLB->CheckEntryPos( REPLACE_DASHES, CBCOL_SECOND, bool(nFlags & ACFlags::ChgToEnEmDash) );
- m_pCheckLB->CheckEntryPos( DEL_SPACES_AT_STT_END, CBCOL_FIRST, pOpt->bAFormatDelSpacesAtSttEnd );
- m_pCheckLB->CheckEntryPos( DEL_SPACES_AT_STT_END, CBCOL_SECOND, pOpt->bAFormatByInpDelSpacesAtSttEnd );
- m_pCheckLB->CheckEntryPos( DEL_SPACES_BETWEEN_LINES, CBCOL_FIRST, pOpt->bAFormatDelSpacesBetweenLines );
- m_pCheckLB->CheckEntryPos( DEL_SPACES_BETWEEN_LINES, CBCOL_SECOND, pOpt->bAFormatByInpDelSpacesBetweenLines );
- m_pCheckLB->CheckEntryPos( DEL_EMPTY_NODE, CBCOL_FIRST, pOpt->bDelEmptyNode );
- m_pCheckLB->CheckEntryPos( REPLACE_USER_COLL, CBCOL_FIRST, pOpt->bChgUserColl );
- m_pCheckLB->CheckEntryPos( REPLACE_BULLETS, CBCOL_FIRST, pOpt->bChgEnumNum );
+ CreateEntry(sUseReplaceTbl, CBCOL_BOTH );
+ CreateEntry(sCapitalStartWord, CBCOL_BOTH );
+ CreateEntry(sCapitalStartSentence, CBCOL_BOTH );
+ CreateEntry(sBoldUnder, CBCOL_BOTH );
+ CreateEntry(sDetectURL, CBCOL_BOTH );
+ CreateEntry(sDash, CBCOL_BOTH );
+ CreateEntry(sDelSpaceAtSttEnd, CBCOL_BOTH );
+ CreateEntry(sDelSpaceBetweenLines, CBCOL_BOTH );
+
+ CreateEntry(sNoDblSpaces, CBCOL_SECOND);
+ CreateEntry(sCorrectCapsLock, CBCOL_SECOND);
+ CreateEntry(sNum.replaceFirst("%1", sBulletChar), CBCOL_SECOND);
+ CreateEntry(sBorder, CBCOL_SECOND);
+ CreateEntry(sTable, CBCOL_SECOND);
+ CreateEntry(sReplaceTemplates, CBCOL_SECOND);
+ CreateEntry(sDeleteEmptyPara, CBCOL_FIRST );
+ CreateEntry(sUserStyle, CBCOL_FIRST );
+ CreateEntry(sBullet.replaceFirst("%1", sByInputBulletChar), CBCOL_FIRST);
+ CreateEntry(sRightMargin.replaceFirst("%1", sMargin), CBCOL_FIRST);
+
+ m_xCheckLB->set_toggle(USE_REPLACE_TABLE, pOpt->bAutoCorrect, CBCOL_FIRST);
+ m_xCheckLB->set_toggle(USE_REPLACE_TABLE, bool(nFlags & ACFlags::Autocorrect), CBCOL_SECOND);
+ m_xCheckLB->set_toggle(CORR_UPPER, pOpt->bCapitalStartWord, CBCOL_FIRST);
+ m_xCheckLB->set_toggle(CORR_UPPER, bool(nFlags & ACFlags::CapitalStartWord), CBCOL_SECOND);
+ m_xCheckLB->set_toggle(BEGIN_UPPER, pOpt->bCapitalStartSentence, CBCOL_FIRST);
+ m_xCheckLB->set_toggle(BEGIN_UPPER, bool(nFlags & ACFlags::CapitalStartSentence), CBCOL_SECOND);
+ m_xCheckLB->set_toggle(BOLD_UNDERLINE, pOpt->bChgWeightUnderl, CBCOL_FIRST);
+ m_xCheckLB->set_toggle(BOLD_UNDERLINE, bool(nFlags & ACFlags::ChgWeightUnderl), CBCOL_SECOND);
+ m_xCheckLB->set_toggle(DETECT_URL, pOpt->bSetINetAttr, CBCOL_FIRST);
+ m_xCheckLB->set_toggle(DETECT_URL, bool(nFlags & ACFlags::SetINetAttr), CBCOL_SECOND);
+ m_xCheckLB->set_toggle(REPLACE_DASHES, pOpt->bChgToEnEmDash, CBCOL_FIRST);
+ m_xCheckLB->set_toggle(REPLACE_DASHES, bool(nFlags & ACFlags::ChgToEnEmDash), CBCOL_SECOND);
+ m_xCheckLB->set_toggle(DEL_SPACES_AT_STT_END, pOpt->bAFormatDelSpacesAtSttEnd, CBCOL_FIRST);
+ m_xCheckLB->set_toggle(DEL_SPACES_AT_STT_END, pOpt->bAFormatByInpDelSpacesAtSttEnd, CBCOL_SECOND);
+ m_xCheckLB->set_toggle(DEL_SPACES_BETWEEN_LINES, pOpt->bAFormatDelSpacesBetweenLines, CBCOL_FIRST);
+ m_xCheckLB->set_toggle(DEL_SPACES_BETWEEN_LINES, pOpt->bAFormatByInpDelSpacesBetweenLines, CBCOL_SECOND);
+ m_xCheckLB->set_toggle(IGNORE_DBLSPACE, bool(nFlags & ACFlags::IgnoreDoubleSpace), CBCOL_SECOND);
+ m_xCheckLB->set_toggle(CORRECT_CAPS_LOCK, bool(nFlags & ACFlags::CorrectCapsLock), CBCOL_SECOND);
+ m_xCheckLB->set_toggle(APPLY_NUMBERING, pOpt->bSetNumRule, CBCOL_SECOND);
+ m_xCheckLB->set_toggle(INSERT_BORDER, pOpt->bSetBorder, CBCOL_SECOND);
+ m_xCheckLB->set_toggle(CREATE_TABLE, pOpt->bCreateTable, CBCOL_SECOND);
+ m_xCheckLB->set_toggle(REPLACE_STYLES, pOpt->bReplaceStyles, CBCOL_SECOND);
+ m_xCheckLB->set_toggle(DEL_EMPTY_NODE, pOpt->bDelEmptyNode, CBCOL_FIRST);
+ m_xCheckLB->set_toggle(REPLACE_USER_COLL, pOpt->bChgUserColl, CBCOL_FIRST);
+ m_xCheckLB->set_toggle(REPLACE_BULLETS, pOpt->bChgEnumNum, CBCOL_FIRST);
+ m_xCheckLB->set_toggle(MERGE_SINGLE_LINE_PARA, pOpt->bRightMargin, CBCOL_FIRST);
- aBulletFont = pOpt->aBulletFont;
- sBulletChar = OUString(pOpt->cBullet);
ImpUserData* pUserData = new ImpUserData(&sBulletChar, &aBulletFont);
- m_pCheckLB->SetUserData( REPLACE_BULLETS, pUserData );
+ OUString sId(OUString::number(reinterpret_cast<sal_Int64>(pUserData)));
+ m_xCheckLB->set_id(REPLACE_BULLETS, sId);
- nPercent = pOpt->nRightMargin;
- sMargin = " " +
- unicode::formatPercent(nPercent, Application::GetSettings().GetUILanguageTag());
pUserData = new ImpUserData(&sMargin, nullptr);
- m_pCheckLB->SetUserData( MERGE_SINGLE_LINE_PARA, pUserData );
-
- m_pCheckLB->CheckEntryPos( APPLY_NUMBERING, CBCOL_SECOND, pOpt->bSetNumRule );
+ sId = OUString::number(reinterpret_cast<sal_Int64>(pUserData));
+ m_xCheckLB->set_id(MERGE_SINGLE_LINE_PARA, sId);
- aByInputBulletFont = pOpt->aByInputBulletFont;
- sByInputBulletChar = OUString( pOpt->cByInputBullet );
ImpUserData* pUserData2 = new ImpUserData(&sByInputBulletChar, &aByInputBulletFont);
- m_pCheckLB->SetUserData( APPLY_NUMBERING , pUserData2 );
+ sId = OUString::number(reinterpret_cast<sal_Int64>(pUserData2));
+ m_xCheckLB->set_id(APPLY_NUMBERING, sId);
- m_pCheckLB->CheckEntryPos( MERGE_SINGLE_LINE_PARA, CBCOL_FIRST, pOpt->bRightMargin );
- m_pCheckLB->CheckEntryPos( INSERT_BORDER, CBCOL_SECOND, pOpt->bSetBorder );
- m_pCheckLB->CheckEntryPos( CREATE_TABLE, CBCOL_SECOND, pOpt->bCreateTable );
- m_pCheckLB->CheckEntryPos( REPLACE_STYLES, CBCOL_SECOND, pOpt->bReplaceStyles );
-
- m_pCheckLB->SetUpdateMode(true);
+ m_xCheckLB->thaw();
}
-IMPL_LINK(OfaSwAutoFmtOptionsPage, SelectHdl, SvTreeListBox*, pBox, void)
+IMPL_LINK(OfaSwAutoFmtOptionsPage, SelectHdl, weld::TreeView&, rBox, void)
{
- m_pEditPB->Enable(nullptr != pBox->FirstSelected()->GetUserData());
+ m_xEditPB->set_sensitive(rBox.get_selected_id().toInt64() != 0);
}
-IMPL_LINK_NOARG(OfaSwAutoFmtOptionsPage, DoubleClickEditHdl, SvTreeListBox*, bool)
+IMPL_LINK_NOARG(OfaSwAutoFmtOptionsPage, DoubleClickEditHdl, weld::TreeView&, void)
{
- EditHdl(nullptr);
- return false;
+ EditHdl(*m_xEditPB);
}
-IMPL_LINK_NOARG(OfaSwAutoFmtOptionsPage, EditHdl, Button*, void)
+IMPL_LINK_NOARG(OfaSwAutoFmtOptionsPage, EditHdl, weld::Button&, void)
{
- sal_uLong nSelEntryPos = m_pCheckLB->GetSelectedEntryPos();
- if( nSelEntryPos == REPLACE_BULLETS ||
- nSelEntryPos == APPLY_NUMBERING)
+ int nSelEntryPos = m_xCheckLB->get_selected_index();
+ if (nSelEntryPos == REPLACE_BULLETS || nSelEntryPos == APPLY_NUMBERING)
{
- SvxCharacterMap aMapDlg(GetFrameWeld(), nullptr, false);
- ImpUserData* pUserData = static_cast<ImpUserData*>(m_pCheckLB->FirstSelected()->GetUserData());
+ SvxCharacterMap aMapDlg(GetDialogFrameWeld(), nullptr, false);
+ ImpUserData* pUserData = reinterpret_cast<ImpUserData*>(m_xCheckLB->get_id(nSelEntryPos).toInt64());
aMapDlg.SetCharFont(*pUserData->pFont);
aMapDlg.SetChar( (*pUserData->pString)[0] );
if (RET_OK == aMapDlg.run())
@@ -736,21 +694,24 @@ IMPL_LINK_NOARG(OfaSwAutoFmtOptionsPage, EditHdl, Button*, void)
// using the UCS4 constructor
OUString aOUStr( &aChar, 1 );
*pUserData->pString = aOUStr;
+ if (nSelEntryPos == REPLACE_BULLETS)
+ m_xCheckLB->set_text(nSelEntryPos, sNum.replaceFirst("%1", aOUStr), 2);
+ else
+ m_xCheckLB->set_text(nSelEntryPos, sBullet.replaceFirst("%1", aOUStr), 2);
}
}
else if( MERGE_SINGLE_LINE_PARA == nSelEntryPos )
{
// dialog for per cent settings
- OfaAutoFmtPrcntSet aDlg(GetFrameWeld());
+ OfaAutoFmtPrcntSet aDlg(GetDialogFrameWeld());
aDlg.GetPrcntFld().set_value(nPercent, FieldUnit::PERCENT);
if (aDlg.run() == RET_OK)
{
nPercent = static_cast<sal_uInt16>(aDlg.GetPrcntFld().get_value(FieldUnit::PERCENT));
- sMargin = " " +
- unicode::formatPercent(nPercent, Application::GetSettings().GetUILanguageTag());
+ sMargin = unicode::formatPercent(nPercent, Application::GetSettings().GetUILanguageTag());
+ m_xCheckLB->set_text(nSelEntryPos, sRightMargin.replaceFirst("%1", sMargin), 2);
}
}
- m_pCheckLB->Invalidate();
}
void OfaACorrCheckListBox::SetTabs()
@@ -2002,7 +1963,7 @@ IMPL_LINK( OfaQuoteTabPage, QuoteHdl, Button*, pBtn, void )
else if (pBtn == m_pDblEndQuotePB)
nMode = DBL_END;
// start character selection dialog
- SvxCharacterMap aMap(GetFrameWeld(), nullptr, false);
+ SvxCharacterMap aMap(GetDialogFrameWeld(), nullptr, false);
aMap.SetCharFont( OutputDevice::GetDefaultFont(DefaultFontType::LATIN_TEXT,
LANGUAGE_ENGLISH_US, GetDefaultFontFlags::OnlyOne ));
aMap.set_title(nMode < SGL_END ? CuiResId(RID_SVXSTR_STARTQUOTE) : CuiResId(RID_SVXSTR_ENDQUOTE));
@@ -2169,6 +2130,14 @@ OfaAutoCompleteTabPage::~OfaAutoCompleteTabPage()
disposeOnce();
}
+void OfaSwAutoFmtOptionsPage::dispose()
+{
+ delete reinterpret_cast<ImpUserData*>(m_xCheckLB->get_id(REPLACE_BULLETS).toInt64());
+ delete reinterpret_cast<ImpUserData*>(m_xCheckLB->get_id(APPLY_NUMBERING).toInt64());
+ delete reinterpret_cast<ImpUserData*>(m_xCheckLB->get_id(MERGE_SINGLE_LINE_PARA).toInt64());
+ SfxTabPage::dispose();
+}
+
VclPtr<SfxTabPage> OfaAutoCompleteTabPage::Create(TabPageParent pParent,
const SfxItemSet* rSet)
{
diff --git a/cui/uiconfig/ui/applyautofmtpage.ui b/cui/uiconfig/ui/applyautofmtpage.ui
index 245d95c16bc2..35637dc88194 100644
--- a/cui/uiconfig/ui/applyautofmtpage.ui
+++ b/cui/uiconfig/ui/applyautofmtpage.ui
@@ -1,7 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.22.1 -->
<interface domain="cui">
<requires lib="gtk+" version="3.18"/>
- <requires lib="LibreOffice" version="1.0"/>
+ <object class="GtkTreeStore" id="liststore1">
+ <columns>
+ <!-- column-name check1 -->
+ <column type="gboolean"/>
+ <!-- column-name check2 -->
+ <column type="gboolean"/>
+ <!-- column-name text -->
+ <column type="gchararray"/>
+ <!-- column-name id -->
+ <column type="gchararray"/>
+ </columns>
+ </object>
<object class="GtkBox" id="ApplyAutoFmtPage">
<property name="visible">True</property>
<property name="can_focus">False</property>
@@ -34,7 +46,6 @@
<packing>
<property name="left_attach">0</property>
<property name="top_attach">0</property>
- <property name="width">1</property>
<property name="height">2</property>
</packing>
</child>
@@ -42,36 +53,30 @@
<object class="GtkLabel" id="label1">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="xalign">0</property>
<property name="label" translatable="yes" context="applyautofmtpage|label1">[M]: Replace while modifying existing text</property>
+ <property name="xalign">0</property>
</object>
<packing>
<property name="left_attach">1</property>
<property name="top_attach">0</property>
- <property name="width">1</property>
- <property name="height">1</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="label2">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="xalign">0</property>
<property name="label" translatable="yes" context="applyautofmtpage|label2">[T]: AutoCorrect while typing</property>
+ <property name="xalign">0</property>
</object>
<packing>
<property name="left_attach">1</property>
<property name="top_attach">1</property>
- <property name="width">1</property>
- <property name="height">1</property>
</packing>
</child>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">1</property>
- <property name="width">1</property>
- <property name="height">1</property>
</packing>
</child>
<child>
@@ -82,54 +87,78 @@
<property name="vexpand">True</property>
<property name="column_homogeneous">True</property>
<child>
- <object class="GtkLabel" id="m">
- <property name="can_focus">False</property>
- <property name="no_show_all">True</property>
- <property name="label" translatable="yes" context="applyautofmtpage|m">[M]</property>
- </object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">0</property>
- <property name="width">1</property>
- <property name="height">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="t">
- <property name="can_focus">False</property>
- <property name="no_show_all">True</property>
- <property name="label" translatable="yes" context="applyautofmtpage|t">[T]</property>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">0</property>
- <property name="width">1</property>
- <property name="height">1</property>
- </packing>
- </child>
- <child>
- <object class="svtlo-SvSimpleTableContainer" id="list">
+ <object class="GtkScrolledWindow">
<property name="visible">True</property>
- <property name="can_focus">False</property>
+ <property name="can_focus">True</property>
<property name="hexpand">True</property>
<property name="vexpand">True</property>
- <child internal-child="selection">
- <object class="GtkTreeSelection" id="Simple Table Container-selection1"/>
+ <property name="shadow_type">in</property>
+ <child>
+ <object class="GtkTreeView" id="list">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="hexpand">True</property>
+ <property name="vexpand">True</property>
+ <property name="model">liststore1</property>
+ <property name="search_column">0</property>
+ <property name="show_expanders">False</property>
+ <child internal-child="selection">
+ <object class="GtkTreeSelection" id="Macro Library List-selection1"/>
+ </child>
+ <child>
+ <object class="GtkTreeViewColumn" id="treeviewcolumn1">
+ <property name="resizable">True</property>
+ <property name="spacing">6</property>
+ <property name="title" translatable="yes" context="applyautofmtpage|m">[M]</property>
+ <property name="alignment">0.5</property>
+ <child>
+ <object class="GtkCellRendererToggle" id="cellrenderer1"/>
+ <attributes>
+ <attribute name="active">0</attribute>
+ </attributes>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkTreeViewColumn" id="treeviewcolumn2">
+ <property name="resizable">True</property>
+ <property name="spacing">6</property>
+ <property name="title" translatable="yes" context="applyautofmtpage|t">[T]</property>
+ <property name="alignment">0.5</property>
+ <child>
+ <object class="GtkCellRendererToggle" id="cellrenderer2"/>
+ <attributes>
+ <attribute name="active">1</attribute>
+ </attributes>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkTreeViewColumn" id="treeviewcolumn3">
+ <property name="resizable">True</property>
+ <property name="spacing">6</property>
+ <child>
+ <object class="GtkCellRendererText" id="cellrenderer3"/>
+ <attributes>
+ <attribute name="text">0</attribute>
+ </attributes>
+ </child>
+ </object>
+ </child>
+ </object>
</child>
</object>
<packing>
<property name="left_attach">0</property>
- <property name="top_attach">1</property>
+ <property name="top_attach">0</property>
<property name="width">2</property>
- <property name="height">1</property>
</packing>
</child>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">0</property>
- <property name="width">1</property>
- <property name="height">1</property>
</packing>
</child>
</object>
diff --git a/include/vcl/headbar.hxx b/include/vcl/headbar.hxx
index 77d47616883f..cac9b8c4717b 100644
--- a/include/vcl/headbar.hxx
+++ b/include/vcl/headbar.hxx
@@ -75,7 +75,7 @@ HeaderBarItemBits::UPARROW An arrow pointing upwards is displayed behind
a corresponding list is sorted in ascending order.
The status of the arrow can be set/reset with SetItemBits().
HeaderBarItemBits::USERDRAW For this item, the UserDraw handler is called as well.
-HeaderBarItemBits::STDSTYLE (HeaderBarItemBits::LEFT | HeaderBarItemBits::LEFTIMAGE | HeaderBarItemBits::VCENTER | HeaderBarItemBits::CLICKABLE)
+HeaderBarItemBits::STDSTYLE (HeaderBarItemBits::LEFT | HeaderBarItemBits::LEFTIMAGE | HeaderBarItemBits::CLICKABLE)
--------------------------------------------------------------------------
diff --git a/include/vcl/weld.hxx b/include/vcl/weld.hxx
index e14c1b34ad45..00d8713d4fd1 100644
--- a/include/vcl/weld.hxx
+++ b/include/vcl/weld.hxx
@@ -410,7 +410,7 @@ protected:
bool signal_expanding(TreeIter& rIter) { return m_aExpandingHdl.Call(rIter); }
public:
- virtual void insert(weld::TreeIter* pParent, int pos, const OUString& rStr, const OUString* pId,
+ virtual void insert(weld::TreeIter* pParent, int pos, const OUString* pStr, const OUString* pId,
const OUString* pIconName, VirtualDevice* pImageSurface,
const OUString* pExpanderName, bool bChildrenOnDemand)
= 0;
@@ -420,32 +420,32 @@ public:
void insert(int pos, const OUString& rStr, const OUString* pId, const OUString* pIconName,
VirtualDevice* pImageSurface)
{
- insert(nullptr, pos, rStr, pId, pIconName, pImageSurface, nullptr, false);
+ insert(nullptr, pos, &rStr, pId, pIconName, pImageSurface, nullptr, false);
}
void insert_text(int pos, const OUString& rStr)
{
- insert(nullptr, pos, rStr, nullptr, nullptr, nullptr, nullptr, false);
+ insert(nullptr, pos, &rStr, nullptr, nullptr, nullptr, nullptr, false);
}
void append_text(const OUString& rStr)
{
- insert(nullptr, -1, rStr, nullptr, nullptr, nullptr, nullptr, false);
+ insert(nullptr, -1, &rStr, nullptr, nullptr, nullptr, nullptr, false);
}
void append(const OUString& rId, const OUString& rStr)
{
- insert(nullptr, -1, rStr, &rId, nullptr, nullptr, nullptr, false);
+ insert(nullptr, -1, &rStr, &rId, nullptr, nullptr, nullptr, false);
}
void append(const OUString& rId, const OUString& rStr, const OUString& rImage)
{
- insert(nullptr, -1, rStr, &rId, &rImage, nullptr, nullptr, false);
+ insert(nullptr, -1, &rStr, &rId, &rImage, nullptr, nullptr, false);
}
void append(weld::TreeIter* pParent, const OUString& rId, const OUString& rStr,
const OUString& rImage)
{
- insert(pParent, -1, rStr, &rId, &rImage, nullptr, nullptr, false);
+ insert(pParent, -1, &rStr, &rId, &rImage, nullptr, nullptr, false);
}
void append(const OUString& rId, const OUString& rStr, VirtualDevice& rImage)
{
- insert(nullptr, -1, rStr, &rId, nullptr, &rImage, nullptr, false);
+ insert(nullptr, -1, &rStr, &rId, nullptr, &rImage, nullptr, false);
}
void connect_changed(const Link<TreeView&, void>& rLink) { m_aChangeHdl = rLink; }
@@ -456,6 +456,11 @@ public:
virtual void select(int pos) = 0;
virtual void unselect(int pos) = 0;
virtual void remove(int pos) = 0;
+ virtual OUString get_text(int row, int col = -1) const = 0;
+ virtual void set_text(int row, const OUString& rText, int col = -1) = 0;
+ virtual void set_id(int row, const OUString& rId) = 0;
+ virtual void set_toggle(int row, bool bOn, int col = -1) = 0;
+ virtual bool get_toggle(int row, int col = -1) const = 0;
virtual void set_top_entry(int pos) = 0;
virtual std::vector<int> get_selected_rows() const = 0;
virtual void set_font_color(int pos, const Color& rColor) const = 0;
@@ -463,8 +468,6 @@ public:
virtual void set_cursor(int pos) = 0;
//by text
- virtual OUString get_text(int row, int col = -1) const = 0;
- virtual void set_text(int row, const OUString& rText, int col = -1) = 0;
virtual int find_text(const OUString& rText) const = 0;
OUString get_selected_text() const
{
diff --git a/vcl/source/app/salvtables.cxx b/vcl/source/app/salvtables.cxx
index b6c6d68d920a..3f9b13f55500 100644
--- a/vcl/source/app/salvtables.cxx
+++ b/vcl/source/app/salvtables.cxx
@@ -1823,6 +1823,7 @@ private:
// owner for UserData
std::vector<std::unique_ptr<OUString>> m_aUserData;
VclPtr<SvTabListBox> m_xTreeView;
+ SvLBoxButtonData m_aCheckButtonData;
DECL_LINK(SelectHdl, SvTreeListBox*, void);
DECL_LINK(DoubleClickHdl, SvTreeListBox*, bool);
@@ -1833,6 +1834,7 @@ public:
SalInstanceTreeView(SvTabListBox* pTreeView, bool bTakeOwnership)
: SalInstanceContainer(pTreeView, bTakeOwnership)
, m_xTreeView(pTreeView)
+ , m_aCheckButtonData(pTreeView)
{
m_xTreeView->SetNodeDefaultImages();
m_xTreeView->SetSelectHdl(LINK(this, SalInstanceTreeView, SelectHdl));
@@ -1876,7 +1878,7 @@ public:
return OUString();
}
- virtual void insert(weld::TreeIter* pParent, int pos, const OUString& rStr, const OUString* pId,
+ virtual void insert(weld::TreeIter* pParent, int pos, const OUString* pStr, const OUString* pId,
const OUString* pIconName, VirtualDevice* pImageSurface, const OUString* pExpanderName,
bool bChildrenOnDemand) override
{
@@ -1892,15 +1894,25 @@ public:
else
pUserData = nullptr;
+ bool bSimple = !pIconName && !pImageSurface && pStr;
SvTreeListEntry* pResult;
- if (!pIconName && !pImageSurface)
- pResult = m_xTreeView->InsertEntry(rStr, iter, false, nInsertPos, pUserData);
+ if (bSimple)
+ pResult = m_xTreeView->InsertEntry(*pStr, iter, false, nInsertPos, pUserData);
else
{
SvTreeListEntry* pEntry = new SvTreeListEntry;
- Image aImage(pIconName ? createImage(*pIconName) : createImage(*pImageSurface));
- pEntry->AddItem(o3tl::make_unique<SvLBoxContextBmp>(aImage, aImage, false));
- pEntry->AddItem(o3tl::make_unique<SvLBoxString>(rStr));
+ if (pIconName || pImageSurface)
+ {
+ Image aImage(pIconName ? createImage(*pIconName) : createImage(*pImageSurface));
+ pEntry->AddItem(o3tl::make_unique<SvLBoxContextBmp>(aImage, aImage, false));
+ }
+ else
+ {
+ Image aDummy;
+ pEntry->AddItem(o3tl::make_unique<SvLBoxContextBmp>(aDummy, aDummy, false));
+ }
+ if (pStr)
+ pEntry->AddItem(o3tl::make_unique<SvLBoxString>(*pStr));
pEntry->SetUserData(pUserData);
m_xTreeView->Insert(pEntry, iter, nInsertPos);
pResult = pEntry;
@@ -2059,9 +2071,15 @@ public:
++col; //skip dummy/expander column
+ // blank out missing entries
+ for (int i = pEntry->ItemCount(); i < col ; ++i)
+ pEntry->AddItem(o3tl::make_unique<SvLBoxString>(""));
+
if (static_cast<size_t>(col) == pEntry->ItemCount())
{
pEntry->AddItem(o3tl::make_unique<SvLBoxString>(rText));
+ SvViewDataEntry* pViewData = m_xTreeView->GetViewDataEntry(pEntry);
+ m_xTreeView->InitViewData(pViewData, pEntry);
}
else
{
@@ -2073,6 +2091,57 @@ public:
m_xTreeView->ModelHasEntryInvalidated(pEntry);
}
+ virtual bool get_toggle(int pos, int col) const override
+ {
+ SvTreeListEntry* pEntry = m_xTreeView->GetEntry(nullptr, pos);
+ if (col == -1)
+ return m_xTreeView->GetCheckButtonState(pEntry) == SvButtonState::Checked;
+
+ ++col; //skip dummy/expander column
+
+ if (static_cast<size_t>(col) == pEntry->ItemCount())
+ return false;
+
+ assert(col >= 0 && static_cast<size_t>(col) < pEntry->ItemCount());
+ SvLBoxItem& rItem = pEntry->GetItem(col);
+ assert(dynamic_cast<SvLBoxButton*>(&rItem));
+ return static_cast<SvLBoxButton&>(rItem).IsStateChecked();
+ }
+
+ virtual void set_toggle(int pos, bool bOn, int col) override
+ {
+ SvTreeListEntry* pEntry = m_xTreeView->GetEntry(nullptr, pos);
+ if (col == -1)
+ {
+ m_xTreeView->SetCheckButtonState(pEntry, bOn ? SvButtonState::Checked : SvButtonState::Unchecked);
+ return;
+ }
+
+ ++col; //skip dummy/expander column
+
+ // blank out missing entries
+ for (int i = pEntry->ItemCount(); i < col ; ++i)
+ pEntry->AddItem(o3tl::make_unique<SvLBoxString>(""));
+
+ if (static_cast<size_t>(col) == pEntry->ItemCount())
+ {
+ pEntry->AddItem(o3tl::make_unique<SvLBoxButton>(SvLBoxButtonKind::EnabledCheckbox,
+ &m_aCheckButtonData));
+ SvViewDataEntry* pViewData = m_xTreeView->GetViewDataEntry(pEntry);
+ m_xTreeView->InitViewData(pViewData, pEntry);
+ }
+
+ assert(col >= 0 && static_cast<size_t>(col) < pEntry->ItemCount());
+ SvLBoxItem& rItem = pEntry->GetItem(col);
+ assert(dynamic_cast<SvLBoxButton*>(&rItem));
+ if (bOn)
+ static_cast<SvLBoxButton&>(rItem).SetStateChecked();
+ else
+ static_cast<SvLBoxButton&>(rItem).SetStateUnchecked();
+
+ m_xTreeView->ModelHasEntryInvalidated(pEntry);
+ }
+
const OUString* getEntryData(int index) const
{
SvTreeListEntry* pEntry = m_xTreeView->GetEntry(nullptr, index);
@@ -2087,6 +2156,13 @@ public:
return *pRet;
}
+ virtual void set_id(int pos, const OUString& rId) override
+ {
+ SvTreeListEntry* pEntry = m_xTreeView->GetEntry(nullptr, pos);
+ m_aUserData.emplace_back(o3tl::make_unique<OUString>(rId));
+ pEntry->SetUserData(m_aUserData.back().get());
+ }
+
virtual int get_selected_index() const override
{
assert(m_xTreeView->IsUpdateMode() && "don't request selection when frozen");
diff --git a/vcl/source/window/builder.cxx b/vcl/source/window/builder.cxx
index 44795670be9c..1799efe80997 100644
--- a/vcl/source/window/builder.cxx
+++ b/vcl/source/window/builder.cxx
@@ -1111,6 +1111,18 @@ namespace
return sTooltipText;
}
+ float extractAlignment(VclBuilder::stringmap &rMap)
+ {
+ float f = 0.0;
+ VclBuilder::stringmap::iterator aFind = rMap.find(OString("alignment"));
+ if (aFind != rMap.end())
+ {
+ f = aFind->second.toFloat();
+ rMap.erase(aFind);
+ }
+ return f;
+ }
+
OUString extractTitle(VclBuilder::stringmap &rMap)
{
OUString sTitle;
@@ -1966,8 +1978,16 @@ VclPtr<vcl::Window> VclBuilder::makeObject(vcl::Window *pParent, const OString &
if (HeaderBar* pHeaderBar = pTreeView ? pTreeView->GetHeaderBar() : nullptr)
{
OUString sTitle(extractTitle(rMap));
+ HeaderBarItemBits nBits = (HeaderBarItemBits::LEFTIMAGE | HeaderBarItemBits::CLICKABLE);
+ float fAlign = extractAlignment(rMap);
+ if (fAlign == 0.0)
+ nBits |= HeaderBarItemBits::LEFT;
+ else if (fAlign == 1.0)
+ nBits |= HeaderBarItemBits::RIGHT;
+ else if (fAlign == 0.5)
+ nBits |= HeaderBarItemBits::CENTER;
auto nItemId = pHeaderBar->GetItemCount() + 1;
- pHeaderBar->InsertItem(nItemId, sTitle, 100);
+ pHeaderBar->InsertItem(nItemId, sTitle, 100, nBits);
}
}
}
diff --git a/vcl/unx/gtk3/gtk3gtkinst.cxx b/vcl/unx/gtk3/gtk3gtkinst.cxx
index 265cc49fd982..19ad71bfc4b4 100644
--- a/vcl/unx/gtk3/gtk3gtkinst.cxx
+++ b/vcl/unx/gtk3/gtk3gtkinst.cxx
@@ -4360,6 +4360,7 @@ private:
GtkTreeStore* m_pTreeStore;
std::unique_ptr<comphelper::string::NaturalStringSorter> m_xSorter;
gint m_nTextCol;
+ gint m_nToggleCol;
gint m_nImageCol;
gint m_nExpanderImageCol;
gint m_nIdCol;
@@ -4388,11 +4389,11 @@ private:
pThis->signal_row_activated();
}
- void insert_row(GtkTreeIter& iter, GtkTreeIter* parent, int pos, const OUString* pId, const OUString& rText,
+ void insert_row(GtkTreeIter& iter, GtkTreeIter* parent, int pos, const OUString* pId, const OUString* pText,
const OUString* pIconName, VirtualDevice* pDevice, const OUString* pExpanderName)
{
gtk_tree_store_insert_with_values(m_pTreeStore, &iter, parent, pos,
- m_nTextCol, OUStringToOString(rText, RTL_TEXTENCODING_UTF8).getStr(),
+ m_nTextCol, !pText ? nullptr : OUStringToOString(*pText, RTL_TEXTENCODING_UTF8).getStr(),
m_nIdCol, !pId ? nullptr : OUStringToOString(*pId, RTL_TEXTENCODING_UTF8).getStr(),
-1);
if (pIconName)
@@ -4445,6 +4446,18 @@ private:
return sRet;
}
+ bool get_bool(int pos, int col) const
+ {
+ gboolean bRet(false);
+ GtkTreeModel *pModel = GTK_TREE_MODEL(m_pTreeStore);
+ GtkTreeIter iter;
+ if (gtk_tree_model_iter_nth_child(pModel, &iter, nullptr, pos))
+ {
+ gtk_tree_model_get(pModel, &iter, col, &bRet, -1);
+ }
+ return bRet;
+ }
+
void set(int pos, int col, const OUString& rText)
{
GtkTreeModel *pModel = GTK_TREE_MODEL(m_pTreeStore);
@@ -4456,6 +4469,16 @@ private:
}
}
+ void set(int pos, int col, bool bOn)
+ {
+ GtkTreeModel *pModel = GTK_TREE_MODEL(m_pTreeStore);
+ GtkTreeIter iter;
+ if (gtk_tree_model_iter_nth_child(pModel, &iter, nullptr, pos))
+ {
+ gtk_tree_store_set(m_pTreeStore, &iter, col, bOn, -1);
+ }
+ }
+
static gboolean signalTestExpandRow(GtkTreeView*, GtkTreeIter* iter, GtkTreePath*, gpointer widget)
{
GtkInstanceTreeView* pThis = static_cast<GtkInstanceTreeView*>(widget);
@@ -4488,7 +4511,8 @@ private:
if (!bRet && bPlaceHolder)
{
GtkTreeIter subiter;
- insert_row(subiter, &iter, -1, nullptr, "<dummy>", nullptr, nullptr, nullptr);
+ OUString sDummy("<dummy>");
+ insert_row(subiter, &iter, -1, nullptr, &sDummy, nullptr, nullptr, nullptr);
}
return bRet;
@@ -4500,6 +4524,7 @@ public:
, m_pTreeView(pTreeView)
, m_pTreeStore(GTK_TREE_STORE(gtk_tree_view_get_model(m_pTreeView)))
, m_nTextCol(-1)
+ , m_nToggleCol(-1)
, m_nImageCol(-1)
, m_nExpanderImageCol(-1)
, m_nChangedSignalId(g_signal_connect(gtk_tree_view_get_selection(pTreeView), "changed",
@@ -4518,6 +4543,8 @@ public:
GtkCellRenderer* pCellRenderer = GTK_CELL_RENDERER(pRenderer->data);
if (m_nTextCol == -1 && GTK_IS_CELL_RENDERER_TEXT(pCellRenderer))
m_nTextCol = nIndex;
+ else if (m_nToggleCol == -1 && GTK_IS_CELL_RENDERER_TOGGLE(pCellRenderer))
+ m_nToggleCol = nIndex;
else if (GTK_IS_CELL_RENDERER_PIXBUF(pCellRenderer))
{
const bool bExpander = g_list_next(pRenderer) != nullptr;
@@ -4559,17 +4586,18 @@ public:
return sRet;
}
- virtual void insert(weld::TreeIter* pParent, int pos, const OUString& rText, const OUString* pId, const OUString* pIconName,
+ virtual void insert(weld::TreeIter* pParent, int pos, const OUString* pText, const OUString* pId, const OUString* pIconName,
VirtualDevice* pImageSurface, const OUString* pExpanderName, bool bChildrenOnDemand) override
{
disable_notify_events();
GtkTreeIter iter;
GtkInstanceTreeIter* pGtkIter = static_cast<GtkInstanceTreeIter*>(pParent);
- insert_row(iter, pGtkIter ? &pGtkIter->iter : nullptr, pos, pId, rText, pIconName, pImageSurface, pExpanderName);
+ insert_row(iter, pGtkIter ? &pGtkIter->iter : nullptr, pos, pId, pText, pIconName, pImageSurface, pExpanderName);
if (bChildrenOnDemand)
{
GtkTreeIter subiter;
- insert_row(subiter, &iter, -1, nullptr, "<dummy>", nullptr, nullptr, nullptr);
+ OUString sDummy("<dummy>");
+ insert_row(subiter, &iter, -1, nullptr, &sDummy, nullptr, nullptr, nullptr);
}
enable_notify_events();
}
@@ -4734,11 +4762,30 @@ public:
return set(pos, col, rText);
}
+ virtual bool get_toggle(int pos, int col) const override
+ {
+ if (col == -1)
+ return get_bool(pos, m_nToggleCol);
+ return get_bool(pos, col);
+ }
+
+ virtual void set_toggle(int pos, bool bOn, int col) override
+ {
+ if (col == -1)
+ return set(pos, m_nToggleCol, bOn);
+ return set(pos, col, bOn);
+ }
+
virtual OUString get_id(int pos) const override
{
return get(pos, m_nIdCol);
}
+ virtual void set_id(int pos, const OUString& rId) override
+ {
+ return set(pos, m_nIdCol, rId);
+ }
+
virtual int get_selected_index() const override
{
assert(gtk_tree_view_get_model(m_pTreeView) && "don't request selection when frozen");