summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2019-05-30 16:12:23 +0100
committerCaolán McNamara <caolanm@redhat.com>2019-05-31 15:12:22 +0200
commit4830a1bae89a8ed60696503e315ffd42c70dff74 (patch)
tree7bb74558e8cc2b7f26dad9e467f717a45a3b58d8
parent6340986298afe94400f1d7b0afca2a45f2f0aa86 (diff)
weld SwGlossaryDlg
Change-Id: I6b7a2cc9b9bea2da47cfe731a36fcd5d8bb4ddb6 Reviewed-on: https://gerrit.libreoffice.org/73252 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com> Tested-by: Caolán McNamara <caolanm@redhat.com>
-rw-r--r--extras/source/glade/libreoffice-catalog.xml.in3
-rwxr-xr-xsolenv/bin/native-code.py1
-rw-r--r--sw/source/ui/dialog/swdlgfact.cxx20
-rw-r--r--sw/source/ui/dialog/swdlgfact.hxx8
-rw-r--r--sw/source/ui/misc/glossary.cxx787
-rw-r--r--sw/source/uibase/inc/glossary.hxx114
-rw-r--r--sw/uiconfig/swriter/ui/autotext.ui344
7 files changed, 548 insertions, 729 deletions
diff --git a/extras/source/glade/libreoffice-catalog.xml.in b/extras/source/glade/libreoffice-catalog.xml.in
index 49f03362101c..e2304abae784 100644
--- a/extras/source/glade/libreoffice-catalog.xml.in
+++ b/extras/source/glade/libreoffice-catalog.xml.in
@@ -244,9 +244,6 @@
<glade-widget-class title="Checked Tree List" name="svxlo-SvxCheckListBox"
generic-name="Checked Tree List" parent="GtkTreeView"
icon-name="widget-gtk-treeview"/>
- <glade-widget-class title="Glossary Tree List" name="swuilo-SwGlTreeListBox"
- generic-name="Glossary Tree List" parent="GtkTreeView"
- icon-name="widget-gtk-treeview"/>
<glade-widget-class title="Sidebar Dial Control" name="svxlo-SidebarDialControl"
generic-name="Sidebar Dial Control" parent="GtkSpinner"
icon-name="widget-gtk-spinner"/>
diff --git a/solenv/bin/native-code.py b/solenv/bin/native-code.py
index 538b90da40b4..be5f753f5414 100755
--- a/solenv/bin/native-code.py
+++ b/solenv/bin/native-code.py
@@ -508,7 +508,6 @@ custom_widgets = [
'SvxTextEncodingBox',
'SvxTextEncodingBox',
'SwAddressPreview',
- 'SwGlTreeListBox',
'SwMarkPreview',
'SwNavHelpToolBox',
'TableValueSet',
diff --git a/sw/source/ui/dialog/swdlgfact.cxx b/sw/source/ui/dialog/swdlgfact.cxx
index c8f5fa5d1104..a1f3b67fe6f4 100644
--- a/sw/source/ui/dialog/swdlgfact.cxx
+++ b/sw/source/ui/dialog/swdlgfact.cxx
@@ -211,7 +211,10 @@ short AbstractSwModalRedlineAcceptDlg_Impl::Execute()
return m_xDlg->run();
}
-IMPL_ABSTDLG_BASE(AbstractGlossaryDlg_Impl);
+short AbstractGlossaryDlg_Impl::Execute()
+{
+ return m_xDlg->run();
+}
short AbstractFieldInputDlg_Impl::Execute()
{
@@ -533,12 +536,12 @@ void AbstractSwModalRedlineAcceptDlg_Impl::AcceptAll( bool bAccept )
OUString AbstractGlossaryDlg_Impl::GetCurrGrpName() const
{
- return pDlg->GetCurrGrpName();
+ return m_xDlg->GetCurrGrpName();
}
OUString AbstractGlossaryDlg_Impl::GetCurrShortName() const
{
- return pDlg->GetCurrShortName();
+ return m_xDlg->GetCurrShortName();
}
void AbstractFieldInputDlg_Impl::EndDialog(sal_Int32 n)
@@ -995,15 +998,14 @@ VclPtr<SfxAbstractApplyTabDialog> SwAbstractDialogFactory_Impl::CreateTemplateDi
SwWrtShell* pActShell,
bool bNew )
{
- return VclPtr<AbstractApplyTabController_Impl>::Create(std::make_unique<SwTemplateDlgController>(pParent, rBase, nRegion, sPage, pActShell, bNew));
+ return VclPtr<AbstractApplyTabController_Impl>::Create(std::make_unique<SwTemplateDlgController>(pParent, rBase, nRegion,
+ sPage, pActShell, bNew));
}
-VclPtr<AbstractGlossaryDlg> SwAbstractDialogFactory_Impl::CreateGlossaryDlg(SfxViewFrame* pViewFrame,
- SwGlossaryHdl* pGlosHdl,
- SwWrtShell *pWrtShell)
+VclPtr<AbstractGlossaryDlg> SwAbstractDialogFactory_Impl::CreateGlossaryDlg(SfxViewFrame* pViewFrame, SwGlossaryHdl* pGlosHdl,
+ SwWrtShell *pWrtShell)
{
- VclPtr<SwGlossaryDlg> pDlg = VclPtr<SwGlossaryDlg>::Create(pViewFrame, pGlosHdl, pWrtShell);
- return VclPtr<AbstractGlossaryDlg_Impl>::Create( pDlg );
+ return VclPtr<AbstractGlossaryDlg_Impl>::Create(std::make_unique<SwGlossaryDlg>(pViewFrame, pGlosHdl, pWrtShell));
}
VclPtr<AbstractFieldInputDlg> SwAbstractDialogFactory_Impl::CreateFieldInputDlg(weld::Widget *pParent,
diff --git a/sw/source/ui/dialog/swdlgfact.hxx b/sw/source/ui/dialog/swdlgfact.hxx
index 42f6797f2d3d..130343cf3330 100644
--- a/sw/source/ui/dialog/swdlgfact.hxx
+++ b/sw/source/ui/dialog/swdlgfact.hxx
@@ -400,7 +400,13 @@ public:
class SwGlossaryDlg;
class AbstractGlossaryDlg_Impl : public AbstractGlossaryDlg
{
- DECL_ABSTDLG_BASE(AbstractGlossaryDlg_Impl,SwGlossaryDlg)
+ std::unique_ptr<SwGlossaryDlg> m_xDlg;
+public:
+ explicit AbstractGlossaryDlg_Impl(std::unique_ptr<SwGlossaryDlg> p)
+ : m_xDlg(std::move(p))
+ {
+ }
+ virtual short Execute() override;
virtual OUString GetCurrGrpName() const override;
virtual OUString GetCurrShortName() const override;
};
diff --git a/sw/source/ui/misc/glossary.cxx b/sw/source/ui/misc/glossary.cxx
index 867ed65b89f7..31e385d91b0e 100644
--- a/sw/source/ui/misc/glossary.cxx
+++ b/sw/source/ui/misc/glossary.cxx
@@ -121,7 +121,7 @@ struct GroupUserData
class SwNewGlosNameDlg : public weld::GenericDialogController
{
TextFilter m_aNoSpaceFilter;
- VclPtr<SwGlossaryDlg> m_pParent;
+ SwGlossaryDlg* m_pParent;
std::unique_ptr<weld::Entry> m_xNewName;
std::unique_ptr<weld::Entry> m_xNewShort;
@@ -150,7 +150,7 @@ IMPL_LINK(SwNewGlosNameDlg, TextFilterHdl, OUString&, rTest, bool)
}
SwNewGlosNameDlg::SwNewGlosNameDlg(SwGlossaryDlg* pParent, const OUString& rOldName, const OUString& rOldShort)
- : GenericDialogController(pParent->GetFrameWeld(), "modules/swriter/ui/renameautotextdialog.ui", "RenameAutoTextDialog")
+ : GenericDialogController(pParent->getDialog(), "modules/swriter/ui/renameautotextdialog.ui", "RenameAutoTextDialog")
, m_pParent(pParent)
, m_xNewName(m_xBuilder->weld_entry("newname"))
, m_xNewShort(m_xBuilder->weld_entry("newsc"))
@@ -181,10 +181,15 @@ void SwGlossaryDlg::SetActGroup(const OUString &rGrp)
::SetCurrGlosGroup(rGrp);
}
+IMPL_LINK(SwGlossaryDlg, TextFilterHdl, OUString&, rTest, bool)
+{
+ rTest = m_aNoSpaceFilter.filter(rTest);
+ return true;
+}
+
SwGlossaryDlg::SwGlossaryDlg(SfxViewFrame const * pViewFrame,
- SwGlossaryHdl * pGlosHdl, SwWrtShell *pWrtShell)
- : SvxStandardDialog(&pViewFrame->GetWindow(), "AutoTextDialog",
- "modules/swriter/ui/autotext.ui")
+ SwGlossaryHdl * pGlosHdl, SwWrtShell *pWrtShell)
+ : SfxDialogController(pViewFrame->GetWindow().GetFrameWeld(), "modules/swriter/ui/autotext.ui", "AutoTextDialog")
, m_sReadonlyPath(SwResId(STR_READONLY_PATH))
, m_pGlossaryHdl(pGlosHdl)
, m_bResume(false)
@@ -193,77 +198,61 @@ SwGlossaryDlg::SwGlossaryDlg(SfxViewFrame const * pViewFrame,
, m_bIsOld(false)
, m_bIsDocReadOnly(false)
, m_pShell(pWrtShell)
-{
- get(m_pInsertTipCB, "inserttip");
- get(m_pNameED, "name");
- get(m_pShortNameLbl, "shortnameft");
- get(m_pShortNameEdit, "shortname");
- m_pShortNameEdit->SetTextFilter(&m_aNoSpaceFilter);
- get(m_pCategoryBox, "category");
- get(m_pFileRelCB, "relfile");
- get(m_pNetRelCB, "relnet");
- get(m_pInsertBtn, "insert");
- get(m_pBibBtn, "categories");
- get(m_pPathBtn, "path");
- get(m_pExampleWIN, "example");
- get(m_pEditBtn, "autotext");
+ , m_xInsertTipCB(m_xBuilder->weld_check_button("inserttip"))
+ , m_xNameED(m_xBuilder->weld_entry("name"))
+ , m_xShortNameLbl(m_xBuilder->weld_label("shortnameft"))
+ , m_xShortNameEdit(m_xBuilder->weld_entry("shortname"))
+ , m_xCategoryBox(m_xBuilder->weld_tree_view("category"))
+ , m_xFileRelCB(m_xBuilder->weld_check_button("relfile"))
+ , m_xNetRelCB(m_xBuilder->weld_check_button("relnet"))
+ , m_xInsertBtn(m_xBuilder->weld_button("ok"))
+ , m_xEditBtn(m_xBuilder->weld_menu_button("autotext"))
+ , m_xBibBtn(m_xBuilder->weld_button("categories"))
+ , m_xPathBtn(m_xBuilder->weld_button("path"))
+{
+ m_xCategoryBox->set_size_request(m_xCategoryBox->get_approximate_digit_width() * 52,
+ m_xCategoryBox->get_height_rows(12));
+
+ Link<OneExampleFrame&,void> aLink(LINK(this, SwGlossaryDlg, PreviewLoadedHdl));
+ m_xExampleFrame.reset(new OneExampleFrame(EX_SHOW_ONLINE_LAYOUT, &aLink));
+ m_xExampleFrameWin.reset(new weld::CustomWeld(*m_xBuilder, "example", *m_xExampleFrame));
+ Size aSize = m_xExampleFrame->GetDrawingArea()->get_ref_device().LogicToPixel(
+ Size(82, 124), MapMode(MapUnit::MapAppFont));
+ m_xExampleFrame->set_size_request(aSize.Width(), aSize.Height());
+
+ m_xShortNameEdit->connect_insert_text(LINK(this, SwGlossaryDlg, TextFilterHdl));
SvtLinguConfig aLocalLinguConfig;
- PopupMenu *pMenu = m_pEditBtn->GetPopupMenu();
- assert(pMenu);
- pMenu->SetActivateHdl(LINK(this,SwGlossaryDlg,EnableHdl));
- pMenu->SetSelectHdl(LINK(this,SwGlossaryDlg,MenuHdl));
- m_pEditBtn->SetSelectHdl(LINK(this,SwGlossaryDlg,EditHdl));
- m_pPathBtn->SetClickHdl(LINK(this, SwGlossaryDlg, PathHdl));
+ m_xEditBtn->connect_toggled(LINK(this, SwGlossaryDlg, EnableHdl));
+ m_xEditBtn->connect_selected(LINK(this, SwGlossaryDlg, MenuHdl));
+ m_xPathBtn->connect_clicked(LINK(this, SwGlossaryDlg, PathHdl));
- m_pNameED->SetModifyHdl(LINK(this,SwGlossaryDlg,NameModify));
- m_pShortNameEdit->SetModifyHdl(LINK(this,SwGlossaryDlg,NameModify));
+ m_xNameED->connect_changed(LINK(this,SwGlossaryDlg,NameModify));
+ m_xShortNameEdit->connect_changed(LINK(this,SwGlossaryDlg,NameModify));
- m_pCategoryBox->SetDoubleClickHdl(LINK(this,SwGlossaryDlg, NameDoubleClick));
- m_pCategoryBox->SetSelectHdl(LINK(this,SwGlossaryDlg,GrpSelect));
- m_pCategoryBox->SetDeleteHdl(LINK(this,SwGlossaryDlg,DeleteHdl));
- m_pBibBtn->SetClickHdl(LINK(this,SwGlossaryDlg,BibHdl));
+ m_xCategoryBox->connect_row_activated(LINK(this, SwGlossaryDlg, NameDoubleClick));
+ m_xCategoryBox->connect_changed(LINK(this, SwGlossaryDlg, GrpSelect));
+ m_xCategoryBox->connect_key_press(LINK(this, SwGlossaryDlg, KeyInputHdl));
+ m_xBibBtn->connect_clicked(LINK(this,SwGlossaryDlg,BibHdl));
- m_pInsertBtn->SetClickHdl(LINK(this,SwGlossaryDlg,InsertHdl));
+ m_xInsertBtn->connect_clicked(LINK(this,SwGlossaryDlg,InsertHdl));
ShowPreview();
m_bIsDocReadOnly = m_pShell->GetView().GetDocShell()->IsReadOnly() ||
m_pShell->HasReadonlySel();
if( m_bIsDocReadOnly )
- m_pInsertBtn->Enable(false);
- m_pNameED->GrabFocus();
- m_pCategoryBox->SetStyle(m_pCategoryBox->GetStyle()|WB_HASBUTTONS|WB_HASBUTTONSATROOT|WB_HSCROLL|WB_VSCROLL|WB_CLIPCHILDREN|WB_SORT);
- m_pCategoryBox->GetModel()->SetSortMode(SortAscending);
- m_pCategoryBox->SetHighlightRange(); // select over full width
- m_pCategoryBox->SetNodeDefaultImages( );
+ m_xInsertBtn->set_sensitive(false);
+ m_xNameED->grab_focus();
+ m_xCategoryBox->make_sorted();
+ m_xCategoryBox->set_sort_order(true);
Init();
}
SwGlossaryDlg::~SwGlossaryDlg()
{
- disposeOnce();
-}
-
-void SwGlossaryDlg::dispose()
-{
- m_pCategoryBox->Clear();
- m_pExampleFrame.reset();
- m_pInsertTipCB.clear();
- m_pNameED.clear();
- m_pShortNameLbl.clear();
- m_pShortNameEdit.clear();
- m_pCategoryBox.clear();
- m_pFileRelCB.clear();
- m_pNetRelCB.clear();
- m_pExampleWIN.clear();
- m_pInsertBtn.clear();
- m_pEditBtn.clear();
- m_pBibBtn.clear();
- m_pPathBtn.clear();
- SvxStandardDialog::dispose();
}
namespace
@@ -283,13 +272,22 @@ OUString getCurrentGlossary()
}
// select new group
-IMPL_LINK( SwGlossaryDlg, GrpSelect, SvTreeListBox *, pBox, void )
+IMPL_LINK(SwGlossaryDlg, GrpSelect, weld::TreeView&, rBox, void)
{
- SvTreeListEntry* pEntry = pBox->FirstSelected();
- if(!pEntry)
+ std::unique_ptr<weld::TreeIter> xEntry = rBox.make_iterator();
+ if (!rBox.get_selected(xEntry.get()))
return;
- SvTreeListEntry* pParent = pBox->GetParent(pEntry) ? pBox->GetParent(pEntry) : pEntry;
- GroupUserData* pGroupData = static_cast<GroupUserData*>(pParent->GetUserData());
+
+ std::unique_ptr<weld::TreeIter> xParent = rBox.make_iterator(xEntry.get());
+ weld::TreeIter* pParent;
+ if (rBox.get_iter_depth(*xParent))
+ {
+ rBox.iter_parent(*xParent);
+ pParent = xParent.get();
+ }
+ else
+ pParent = xEntry.get();
+ GroupUserData* pGroupData = reinterpret_cast<GroupUserData*>(rBox.get_id(*pParent).toInt64());
::SetCurrGlosGroup(pGroupData->sGroupName
+ OUStringLiteral1(GLOS_DELIM)
+ OUString::number(pGroupData->nPathIdx));
@@ -297,37 +295,44 @@ IMPL_LINK( SwGlossaryDlg, GrpSelect, SvTreeListBox *, pBox, void )
// set current text block
m_bReadOnly = m_pGlossaryHdl->IsReadOnly();
EnableShortName( !m_bReadOnly );
- m_pEditBtn->Enable(!m_bReadOnly);
+ m_xEditBtn->set_sensitive(!m_bReadOnly);
m_bIsOld = m_pGlossaryHdl->IsOld();
- if( pParent != pEntry)
+ if( pParent != xEntry.get())
{
- OUString aName(pBox->GetEntryText(pEntry));
- m_pNameED->SetText(aName);
- m_pShortNameEdit->SetText(*static_cast<OUString*>(pEntry->GetUserData()));
- m_pInsertBtn->Enable( !m_bIsDocReadOnly);
- ShowAutoText(::GetCurrGlosGroup(), m_pShortNameEdit->GetText());
+ OUString aName(rBox.get_text(*xEntry));
+ m_xNameED->set_text(aName);
+ m_xShortNameEdit->set_text(rBox.get_id(*xEntry));
+ m_xInsertBtn->set_sensitive( !m_bIsDocReadOnly);
+ ShowAutoText(::GetCurrGlosGroup(), m_xShortNameEdit->get_text());
}
else
{
- m_pNameED->SetText("");
- m_pShortNameEdit->SetText("");
- m_pShortNameEdit->Enable(false);
+ m_xNameED->set_text("");
+ m_xShortNameEdit->set_text("");
+ m_xShortNameEdit->set_sensitive(false);
ShowAutoText("", "");
}
// update controls
- NameModify(*m_pShortNameEdit);
+ NameModify(*m_xShortNameEdit);
if( SfxRequest::HasMacroRecorder( m_pShell->GetView().GetViewFrame() ) )
{
SfxRequest aReq( m_pShell->GetView().GetViewFrame(), FN_SET_ACT_GLOSSARY );
aReq.AppendItem(SfxStringItem(FN_SET_ACT_GLOSSARY, getCurrentGlossary()));
aReq.Done();
}
- Invalidate(InvalidateFlags::Update);
+}
+
+short SwGlossaryDlg::run()
+{
+ short nRet = SfxDialogController::run();
+ if (nRet == RET_OK)
+ Apply();
+ return nRet;
}
void SwGlossaryDlg::Apply()
{
- const OUString aGlosName(m_pShortNameEdit->GetText());
+ const OUString aGlosName(m_xShortNameEdit->get_text());
if (!aGlosName.isEmpty())
{
m_pGlossaryHdl->InsertGlossary(aGlosName);
@@ -343,145 +348,150 @@ void SwGlossaryDlg::Apply()
void SwGlossaryDlg::EnableShortName(bool bOn)
{
- m_pShortNameLbl->Enable(bOn);
- m_pShortNameEdit->Enable(bOn);
+ m_xShortNameLbl->set_sensitive(bOn);
+ m_xShortNameEdit->set_sensitive(bOn);
}
// does the title exist in the selected group?
-SvTreeListEntry* SwGlossaryDlg::DoesBlockExist(const OUString& rBlock,
- const OUString& rShort)
+std::unique_ptr<weld::TreeIter> SwGlossaryDlg::DoesBlockExist(const OUString& rBlock,
+ const OUString& rShort)
{
// look for possible entry in TreeListBox
- SvTreeListEntry* pEntry = m_pCategoryBox->FirstSelected();
- if(pEntry)
- {
- if(m_pCategoryBox->GetParent(pEntry))
- pEntry = m_pCategoryBox->GetParent(pEntry);
- sal_uInt32 nChildCount = m_pCategoryBox->GetChildCount( pEntry );
- for(sal_uInt32 i = 0; i < nChildCount; i++)
+ std::unique_ptr<weld::TreeIter> xEntry = m_xCategoryBox->make_iterator();
+ if (m_xCategoryBox->get_selected(xEntry.get()))
+ {
+ if (m_xCategoryBox->get_iter_depth(*xEntry))
+ m_xCategoryBox->iter_parent(*xEntry);
+ if (!m_xCategoryBox->iter_children(*xEntry))
+ return nullptr;
+ do
{
- SvTreeListEntry* pChild = m_pCategoryBox->GetEntry( pEntry, i );
- if (rBlock == m_pCategoryBox->GetEntryText(pChild) &&
+ if (rBlock == m_xCategoryBox->get_text(*xEntry) &&
(rShort.isEmpty() ||
- rShort==*static_cast<OUString*>(pChild->GetUserData()))
+ rShort == m_xCategoryBox->get_id(*xEntry))
)
{
- return pChild;
+ return xEntry;
}
}
+ while (m_xCategoryBox->iter_next_sibling(*xEntry));
}
return nullptr;
}
-IMPL_LINK( SwGlossaryDlg, NameModify, Edit&, rEdit, void )
+IMPL_LINK(SwGlossaryDlg, NameModify, weld::Entry&, rEdit, void)
{
- const OUString aName(m_pNameED->GetText());
- bool bNameED = &rEdit == m_pNameED;
+ const OUString aName(m_xNameED->get_text());
+ bool bNameED = &rEdit == m_xNameED.get();
if( aName.isEmpty() )
{
if(bNameED)
- m_pShortNameEdit->SetText(aName);
- m_pInsertBtn->Enable(false);
+ m_xShortNameEdit->set_text(aName);
+ m_xInsertBtn->set_sensitive(false);
return;
}
- const bool bNotFound = !DoesBlockExist(aName, bNameED ? OUString() : rEdit.GetText());
+ const bool bNotFound = !DoesBlockExist(aName, bNameED ? OUString() : rEdit.get_text());
if(bNameED)
{
// did the text get in to the Listbox in the Edit with a click?
if(bNotFound)
{
- m_pShortNameEdit->SetText( lcl_GetValidShortCut( aName ) );
+ m_xShortNameEdit->set_text( lcl_GetValidShortCut( aName ) );
EnableShortName();
}
else
{
- m_pShortNameEdit->SetText(m_pGlossaryHdl->GetGlossaryShortName(aName));
+ m_xShortNameEdit->set_text(m_pGlossaryHdl->GetGlossaryShortName(aName));
EnableShortName(!m_bReadOnly);
}
- m_pInsertBtn->Enable(!bNotFound && !m_bIsDocReadOnly);
+ m_xInsertBtn->set_sensitive(!bNotFound && !m_bIsDocReadOnly);
}
else
{
//ShortNameEdit
if(!bNotFound)
{
- m_pInsertBtn->Enable(!m_bIsDocReadOnly);
+ m_xInsertBtn->set_sensitive(!m_bIsDocReadOnly);
}
}
}
-IMPL_LINK( SwGlossaryDlg, NameDoubleClick, SvTreeListBox*, pBox, bool )
+IMPL_LINK( SwGlossaryDlg, NameDoubleClick, weld::TreeView&, rBox, void )
{
- SvTreeListEntry* pEntry = pBox->FirstSelected();
- if(pBox->GetParent(pEntry) && !m_bIsDocReadOnly)
- EndDialog( RET_OK );
- return false;
+ std::unique_ptr<weld::TreeIter> xEntry = rBox.make_iterator();
+ if (rBox.get_selected(xEntry.get()) && rBox.get_iter_depth(*xEntry) && !m_bIsDocReadOnly)
+ m_xDialog->response(RET_OK);
}
-IMPL_LINK( SwGlossaryDlg, EnableHdl, Menu *, pMn, bool )
-{
- SvTreeListEntry* pEntry = m_pCategoryBox->FirstSelected();
-
- const OUString aEditText(m_pNameED->GetText());
- const bool bHasEntry = !aEditText.isEmpty() && !m_pShortNameEdit->GetText().isEmpty();
- const bool bExists = nullptr != DoesBlockExist(aEditText, m_pShortNameEdit->GetText());
- const bool bIsGroup = pEntry && !m_pCategoryBox->GetParent(pEntry);
- pMn->EnableItem("new", m_bSelection && bHasEntry && !bExists);
- pMn->EnableItem("newtext", m_bSelection && bHasEntry && !bExists);
- pMn->EnableItem("copy", bExists && !bIsGroup);
- pMn->EnableItem("replace", m_bSelection && bExists && !bIsGroup && !m_bIsOld );
- pMn->EnableItem("replacetext", m_bSelection && bExists && !bIsGroup && !m_bIsOld );
- pMn->EnableItem("edit", bExists && !bIsGroup );
- pMn->EnableItem("rename", bExists && !bIsGroup );
- pMn->EnableItem("delete", bExists && !bIsGroup );
- pMn->EnableItem("macro", bExists && !bIsGroup && !m_bIsOld &&
+IMPL_LINK_NOARG( SwGlossaryDlg, EnableHdl, weld::ToggleButton&, void )
+{
+ std::unique_ptr<weld::TreeIter> xEntry = m_xCategoryBox->make_iterator();
+ bool bEntry = m_xCategoryBox->get_selected(xEntry.get());
+
+ const OUString aEditText(m_xNameED->get_text());
+ const bool bHasEntry = !aEditText.isEmpty() && !m_xShortNameEdit->get_text().isEmpty();
+ const bool bExists = nullptr != DoesBlockExist(aEditText, m_xShortNameEdit->get_text());
+ const bool bIsGroup = bEntry && !m_xCategoryBox->get_iter_depth(*xEntry);
+ m_xEditBtn->set_item_visible("new", m_bSelection && bHasEntry && !bExists);
+ m_xEditBtn->set_item_visible("newtext", m_bSelection && bHasEntry && !bExists);
+ m_xEditBtn->set_item_visible("copy", bExists && !bIsGroup);
+ m_xEditBtn->set_item_visible("replace", m_bSelection && bExists && !bIsGroup && !m_bIsOld );
+ m_xEditBtn->set_item_visible("replacetext", m_bSelection && bExists && !bIsGroup && !m_bIsOld );
+ m_xEditBtn->set_item_visible("edit", bExists && !bIsGroup );
+ m_xEditBtn->set_item_visible("rename", bExists && !bIsGroup );
+ m_xEditBtn->set_item_visible("delete", bExists && !bIsGroup );
+ m_xEditBtn->set_item_visible("macro", bExists && !bIsGroup && !m_bIsOld &&
!m_pGlossaryHdl->IsReadOnly() );
- pMn->EnableItem("import", bIsGroup && !m_bIsOld && !m_pGlossaryHdl->IsReadOnly() );
- return true;
+ m_xEditBtn->set_item_visible("import", bIsGroup && !m_bIsOld && !m_pGlossaryHdl->IsReadOnly() );
}
-IMPL_LINK( SwGlossaryDlg, MenuHdl, Menu *, pMn, bool )
+IMPL_LINK(SwGlossaryDlg, MenuHdl, const OString&, rItemIdent, void)
{
- OString sItemIdent(pMn->GetCurItemIdent());
-
- if (sItemIdent == "replace")
+ if (rItemIdent == "edit")
{
- m_pGlossaryHdl->NewGlossary(m_pNameED->GetText(),
- m_pShortNameEdit->GetText());
+ std::unique_ptr<SwTextBlocks> pGroup = ::GetGlossaries()->GetGroupDoc ( GetCurrGrpName () );
+ pGroup.reset();
+ m_xDialog->response(RET_EDIT);
}
- else if (sItemIdent == "replacetext")
+ else if (rItemIdent == "replace")
{
- m_pGlossaryHdl->NewGlossary(m_pNameED->GetText(),
- m_pShortNameEdit->GetText(),
- false, true);
+ m_pGlossaryHdl->NewGlossary(m_xNameED->get_text(),
+ m_xShortNameEdit->get_text());
}
- else if (sItemIdent == "new" || sItemIdent == "newtext")
+ else if (rItemIdent == "replacetext")
{
- bool bNoAttr = sItemIdent == "newtext";
+ m_pGlossaryHdl->NewGlossary(m_xNameED->get_text(),
+ m_xShortNameEdit->get_text(),
+ false, true);
+ }
+ else if (rItemIdent == "new" || rItemIdent == "newtext")
+ {
+ bool bNoAttr = rItemIdent == "newtext";
- const OUString aStr(m_pNameED->GetText());
- const OUString aShortName(m_pShortNameEdit->GetText());
+ const OUString aStr(m_xNameED->get_text());
+ const OUString aShortName(m_xShortNameEdit->get_text());
if(m_pGlossaryHdl->HasShortName(aShortName))
{
- std::unique_ptr<weld::MessageDialog> xInfoBox(Application::CreateMessageDialog(GetFrameWeld(),
+ std::unique_ptr<weld::MessageDialog> xInfoBox(Application::CreateMessageDialog(m_xDialog.get(),
VclMessageType::Info, VclButtonsType::Ok,
SwResId(STR_DOUBLE_SHORTNAME)));
xInfoBox->run();
- m_pShortNameEdit->SetSelection(Selection(0, SELECTION_MAX));
- m_pShortNameEdit->GrabFocus();
- return true;
+ m_xShortNameEdit->select_region(0, -1);
+ m_xShortNameEdit->grab_focus();
}
if(m_pGlossaryHdl->NewGlossary(aStr, aShortName, false, bNoAttr ))
{
- SvTreeListEntry* pEntry = m_pCategoryBox->FirstSelected();
- if(m_pCategoryBox->GetParent(pEntry))
- pEntry = m_pCategoryBox->GetParent(pEntry);
-
- SvTreeListEntry* pChild = m_pCategoryBox->InsertEntry(aStr, pEntry);
- pChild->SetUserData(new OUString(aShortName));
- m_pNameED->SetText(aStr);
- m_pShortNameEdit->SetText(aShortName);
- NameModify(*m_pNameED); // for toggling the buttons
+ std::unique_ptr<weld::TreeIter> xEntry = m_xCategoryBox->make_iterator();
+ if (!m_xCategoryBox->get_selected(xEntry.get()))
+ xEntry.reset();
+ else if (m_xCategoryBox->get_iter_depth(*xEntry))
+ m_xCategoryBox->iter_parent(*xEntry);
+ m_xCategoryBox->insert(xEntry.get(), -1, &aStr, &aShortName,
+ nullptr, nullptr, nullptr, false, nullptr);
+
+ m_xNameED->set_text(aStr);
+ m_xShortNameEdit->set_text(aShortName);
+ NameModify(*m_xNameED); // for toggling the buttons
if( SfxRequest::HasMacroRecorder( m_pShell->GetView().GetViewFrame() ) )
{
@@ -493,40 +503,48 @@ IMPL_LINK( SwGlossaryDlg, MenuHdl, Menu *, pMn, bool )
}
}
}
- else if (sItemIdent == "copy")
+ else if (rItemIdent == "copy")
{
- m_pGlossaryHdl->CopyToClipboard(*m_pShell, m_pShortNameEdit->GetText());
+ m_pGlossaryHdl->CopyToClipboard(*m_pShell, m_xShortNameEdit->get_text());
}
- else if (sItemIdent == "rename")
+ else if (rItemIdent == "rename")
{
- m_pShortNameEdit->SetText(m_pGlossaryHdl->GetGlossaryShortName(m_pNameED->GetText()));
- SwNewGlosNameDlg aNewNameDlg(this, m_pNameED->GetText(), m_pShortNameEdit->GetText());
- if (aNewNameDlg.run() == RET_OK && m_pGlossaryHdl->Rename(m_pShortNameEdit->GetText(),
+ m_xShortNameEdit->set_text(m_pGlossaryHdl->GetGlossaryShortName(m_xNameED->get_text()));
+ SwNewGlosNameDlg aNewNameDlg(this, m_xNameED->get_text(), m_xShortNameEdit->get_text());
+ if (aNewNameDlg.run() == RET_OK && m_pGlossaryHdl->Rename(m_xShortNameEdit->get_text(),
aNewNameDlg.GetNewShort(),
aNewNameDlg.GetNewName()))
{
- SvTreeListEntry* pEntry = m_pCategoryBox->FirstSelected();
- SvTreeListEntry* pNewEntry = m_pCategoryBox->InsertEntry(
- aNewNameDlg.GetNewName(), m_pCategoryBox->GetParent(pEntry));
- pNewEntry->SetUserData(new OUString(aNewNameDlg.GetNewShort()));
- delete static_cast<OUString*>(pEntry->GetUserData());
- m_pCategoryBox->GetModel()->Remove(pEntry);
- m_pCategoryBox->Select(pNewEntry);
- m_pCategoryBox->MakeVisible(pNewEntry);
+ std::unique_ptr<weld::TreeIter> xEntry = m_xCategoryBox->make_iterator();
+ m_xCategoryBox->get_selected(xEntry.get());
+ std::unique_ptr<weld::TreeIter> xOldEntry = m_xCategoryBox->make_iterator(xEntry.get());
+ if (m_xCategoryBox->get_iter_depth(*xEntry))
+ m_xCategoryBox->iter_parent(*xEntry);
+
+ std::unique_ptr<weld::TreeIter> xNewEntry = m_xCategoryBox->make_iterator();
+ OUString sId(aNewNameDlg.GetNewShort());
+ OUString sName(aNewNameDlg.GetNewName());
+
+ m_xCategoryBox->insert(xEntry.get(), -1, &sName, &sId,
+ nullptr, nullptr, nullptr, false, xNewEntry.get());
+
+ m_xCategoryBox->remove(*xOldEntry);
+ m_xCategoryBox->select(*xNewEntry);
+ m_xCategoryBox->scroll_to_row(*xNewEntry);
}
- GrpSelect(m_pCategoryBox);
+ GrpSelect(*m_xCategoryBox);
}
- else if (sItemIdent == "delete")
+ else if (rItemIdent == "delete")
{
DeleteEntry();
}
- else if (sItemIdent == "macro")
+ else if (rItemIdent == "macro")
{
SfxItemSet aSet( m_pShell->GetAttrPool(), svl::Items<RES_FRMMACRO, RES_FRMMACRO, SID_EVENTCONFIG, SID_EVENTCONFIG>{} );
SvxMacro aStart(OUString(), OUString(), STARBASIC);
SvxMacro aEnd(OUString(), OUString(), STARBASIC);
- m_pGlossaryHdl->GetMacros(m_pShortNameEdit->GetText(), aStart, aEnd );
+ m_pGlossaryHdl->GetMacros(m_xShortNameEdit->get_text(), aStart, aEnd );
SvxMacroItem aItem(RES_FRMMACRO);
if( aStart.HasMacro() )
@@ -539,22 +557,22 @@ IMPL_LINK( SwGlossaryDlg, MenuHdl, Menu *, pMn, bool )
const SfxPoolItem* pItem;
SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create();
- ScopedVclPtr<SfxAbstractDialog> pMacroDlg(pFact->CreateEventConfigDialog(GetFrameWeld(), aSet,
+ ScopedVclPtr<SfxAbstractDialog> pMacroDlg(pFact->CreateEventConfigDialog(m_xDialog.get(), aSet,
m_pShell->GetView().GetViewFrame()->GetFrame().GetFrameInterface() ));
if ( pMacroDlg && pMacroDlg->Execute() == RET_OK &&
SfxItemState::SET == pMacroDlg->GetOutputItemSet()->GetItemState( RES_FRMMACRO, false, &pItem ) )
{
const SvxMacroTableDtor& rTable = static_cast<const SvxMacroItem*>(pItem)->GetMacroTable();
- m_pGlossaryHdl->SetMacros( m_pShortNameEdit->GetText(),
+ m_pGlossaryHdl->SetMacros( m_xShortNameEdit->get_text(),
rTable.Get( SvMacroItemId::SwStartInsGlossary ),
rTable.Get( SvMacroItemId::SwEndInsGlossary ) );
}
}
- else if (sItemIdent == "import")
+ else if (rItemIdent == "import")
{
// call the FileOpenDialog do find WinWord - Files with templates
FileDialogHelper aDlgHelper(TemplateDescription::FILEOPEN_SIMPLE,
- FileDialogFlags::NONE, GetFrameWeld());
+ FileDialogFlags::NONE, m_xDialog.get());
uno::Reference < XFilePicker3 > xFP = aDlgHelper.GetFilePicker();
SvtPathOptions aPathOpt;
@@ -588,22 +606,17 @@ IMPL_LINK( SwGlossaryDlg, MenuHdl, Menu *, pMn, bool )
Init();
else
{
- std::unique_ptr<weld::MessageDialog> xInfoBox(Application::CreateMessageDialog(GetFrameWeld(),
+ std::unique_ptr<weld::MessageDialog> xInfoBox(Application::CreateMessageDialog(m_xDialog.get(),
VclMessageType::Info, VclButtonsType::Ok,
SwResId(STR_NO_GLOSSARIES)));
xInfoBox->run();
}
}
}
- else
- {
- return false;
- }
- return true;
}
// dialog manage regions
-IMPL_LINK_NOARG(SwGlossaryDlg, BibHdl, Button*, void)
+IMPL_LINK_NOARG(SwGlossaryDlg, BibHdl, weld::Button&, void)
{
SwGlossaries* pGloss = ::GetGlossaries();
if( pGloss->IsGlosPathErr() )
@@ -640,41 +653,44 @@ IMPL_LINK_NOARG(SwGlossaryDlg, BibHdl, Button*, void)
if(bIsWritable)
{
- SwGlossaryGroupDlg aDlg(GetFrameWeld(), pGloss->GetPathArray(), m_pGlossaryHdl);
+ SwGlossaryGroupDlg aDlg(m_xDialog.get(), pGloss->GetPathArray(), m_pGlossaryHdl);
if (aDlg.run() == RET_OK)
{
Init();
//if new groups were created - select one of them
const OUString sNewGroup = aDlg.GetCreatedGroupName();
- SvTreeListEntry* pEntry = m_pCategoryBox->First();
- while (!sNewGroup.isEmpty() && pEntry)
+
+ std::unique_ptr<weld::TreeIter> xEntry = m_xCategoryBox->make_iterator();
+ bool bEntry = m_xCategoryBox->get_iter_first(*xEntry);
+
+ while (!sNewGroup.isEmpty() && bEntry)
{
- if(!m_pCategoryBox->GetParent(pEntry))
+ if (!m_xCategoryBox->get_iter_depth(*xEntry))
{
- GroupUserData* pGroupData = static_cast<GroupUserData*>(pEntry->GetUserData());
+ GroupUserData* pGroupData = reinterpret_cast<GroupUserData*>(m_xCategoryBox->get_id(*xEntry).toInt64());
const OUString sGroup = pGroupData->sGroupName
+ OUStringLiteral1(GLOS_DELIM)
+ OUString::number(pGroupData->nPathIdx);
if(sGroup == sNewGroup)
{
- m_pCategoryBox->Select(pEntry);
- m_pCategoryBox->MakeVisible(pEntry);
- GrpSelect(m_pCategoryBox);
+ m_xCategoryBox->select(*xEntry);
+ m_xCategoryBox->scroll_to_row(*xEntry);
+ GrpSelect(*m_xCategoryBox);
break;
}
}
- pEntry = m_pCategoryBox->Next(pEntry);
+ bEntry = m_xCategoryBox->iter_next(*xEntry);
}
}
}
else
{
- std::unique_ptr<weld::MessageDialog> xBox(Application::CreateMessageDialog(GetFrameWeld(),
+ std::unique_ptr<weld::MessageDialog> xBox(Application::CreateMessageDialog(m_xDialog.get(),
VclMessageType::Question, VclButtonsType::YesNo,
m_sReadonlyPath));
if (RET_YES == xBox->run())
- PathHdl(m_pPathBtn);
+ PathHdl(*m_xPathBtn);
}
}
}
@@ -682,11 +698,14 @@ IMPL_LINK_NOARG(SwGlossaryDlg, BibHdl, Button*, void)
// initialisation; from Ctor and after editing regions
void SwGlossaryDlg::Init()
{
- m_pCategoryBox->SetUpdateMode( false );
- m_pCategoryBox->Clear();
+ m_xCategoryBox->freeze();
+ m_xCategoryBox->clear();
+ m_xGroupData.clear();
+ m_xCategoryBox->make_unsorted();
+
// display text block regions
const size_t nCnt = m_pGlossaryHdl->GetGroupCnt();
- SvTreeListEntry* pSelEntry = nullptr;
+ std::unique_ptr<weld::TreeIter> xSelEntry;
const OUString sSelStr(::GetCurrGlosGroup().getToken(0, GLOS_DELIM));
const sal_Int32 nSelPath = ::GetCurrGlosGroup().getToken(1, GLOS_DELIM).toInt32();
// #i66304# - "My AutoText" comes from mytexts.bau, but should be translated
@@ -704,17 +723,21 @@ void SwGlossaryDlg::Init()
sTitle = sName;
if(sTitle == sMyAutoTextEnglish)
sTitle = sMyAutoTextTranslated;
- SvTreeListEntry* pEntry = m_pCategoryBox->InsertEntry( sTitle );
+
+ std::unique_ptr<weld::TreeIter> xEntry = m_xCategoryBox->make_iterator();
+ m_xCategoryBox->append(xEntry.get());
+ m_xCategoryBox->set_text(*xEntry, sTitle, 0);
const sal_Int32 nPath = sGroupName.getToken( 0, GLOS_DELIM, nIdx ).toInt32();
GroupUserData* pData = new GroupUserData;
pData->sGroupName = sName;
pData->nPathIdx = static_cast< sal_uInt16 >(nPath);
pData->bReadonly = m_pGlossaryHdl->IsReadOnly(&sGroupName);
+ m_xGroupData.emplace_back(pData);
- pEntry->SetUserData(pData);
- if(sSelStr == pData->sGroupName && nSelPath == nPath)
- pSelEntry = pEntry;
+ m_xCategoryBox->set_id(*xEntry, OUString::number(reinterpret_cast<sal_Int64>(pData)));
+ if (sSelStr == pData->sGroupName && nSelPath == nPath)
+ xSelEntry = m_xCategoryBox->make_iterator(xEntry.get());
// fill entries for the groups
{
@@ -722,69 +745,61 @@ void SwGlossaryDlg::Init()
const sal_uInt16 nCount = m_pGlossaryHdl->GetGlossaryCnt();
for(sal_uInt16 i = 0; i < nCount; ++i)
{
- SvTreeListEntry* pChild = m_pCategoryBox->InsertEntry(
- m_pGlossaryHdl->GetGlossaryName(i), pEntry);
- pChild->SetUserData(new OUString(m_pGlossaryHdl->GetGlossaryShortName(i)));
+ OUString sEntryName = m_pGlossaryHdl->GetGlossaryName(i);
+ OUString sId = m_pGlossaryHdl->GetGlossaryShortName(i);
+ m_xCategoryBox->insert(xEntry.get(), -1, &sEntryName, &sId,
+ nullptr, nullptr, nullptr, false, nullptr);
}
}
}
// set current group and display text blocks
- if(!pSelEntry)
+ if (!xSelEntry)
{
//find a non-readonly group
- SvTreeListEntry* pSearch = m_pCategoryBox->First();
- while(pSearch)
+ std::unique_ptr<weld::TreeIter> xSearch = m_xCategoryBox->make_iterator();
+ if (m_xCategoryBox->get_iter_first(*xSearch))
{
- if(!m_pCategoryBox->GetParent(pSearch))
+ do
{
- GroupUserData* pData = static_cast<GroupUserData*>(pSearch->GetUserData());
- if(!pData->bReadonly)
+ if (!m_xCategoryBox->get_iter_depth(*xSearch))
{
- pSelEntry = pSearch;
- break;
+ GroupUserData* pData = reinterpret_cast<GroupUserData*>(m_xCategoryBox->get_id(*xSearch).toInt64());
+ if (!pData->bReadonly)
+ {
+ xSelEntry = std::move(xSearch);
+ break;
+ }
}
}
- pSearch = m_pCategoryBox->Next(pSearch);
+ while (m_xCategoryBox->iter_next(*xSearch));
+ }
+ if (!xSelEntry)
+ {
+ xSelEntry = std::move(xSearch);
+ if (!m_xCategoryBox->get_iter_first(*xSelEntry))
+ xSelEntry.reset();
}
- if(!pSelEntry)
- pSelEntry = m_pCategoryBox->GetEntry(0);
- }
- if(pSelEntry)
- {
- m_pCategoryBox->Expand(pSelEntry);
- m_pCategoryBox->Select(pSelEntry);
- m_pCategoryBox->MakeVisible(pSelEntry);
- GrpSelect(m_pCategoryBox);
}
- //JP 16.11.99: the SvxTreeListBox has a Bug. The Box don't recalc the
- // outputsize, when all entries are inserted. The result is, that
- // the Focus/Highlight rectangle is to large and painted over the
- // HScrollbar. -> Fix: call the resize
- m_pCategoryBox->Resize();
- m_pCategoryBox->GetModel()->Resort();
- m_pCategoryBox->SetUpdateMode( true );
- m_pCategoryBox->Update();
+ m_xCategoryBox->make_sorted();
+ m_xCategoryBox->thaw();
- const SvxAutoCorrCfg& rCfg = SvxAutoCorrCfg::Get();
- m_pFileRelCB->Check( rCfg.IsSaveRelFile() );
- m_pFileRelCB->SetClickHdl(LINK(this, SwGlossaryDlg, CheckBoxHdl));
- m_pNetRelCB->Check( rCfg.IsSaveRelNet() );
- m_pNetRelCB->SetClickHdl(LINK(this, SwGlossaryDlg, CheckBoxHdl));
- m_pInsertTipCB->Check( rCfg.IsAutoTextTip() );
- m_pInsertTipCB->Enable(!officecfg::Office::Writer::AutoFunction::Text::ShowToolTip::isReadOnly());
- m_pInsertTipCB->SetClickHdl(LINK(this, SwGlossaryDlg, CheckBoxHdl));
-}
-
-IMPL_LINK_NOARG(SwGlossaryDlg, EditHdl, MenuButton *, void)
-{
-// EndDialog must not be called in MenuHdl
- if (m_pEditBtn->GetCurItemIdent() == "edit")
+ if (xSelEntry)
{
- std::unique_ptr<SwTextBlocks> pGroup = ::GetGlossaries()->GetGroupDoc ( GetCurrGrpName () );
- pGroup.reset();
- EndDialog(RET_EDIT);
+ m_xCategoryBox->expand_row(*xSelEntry);
+ m_xCategoryBox->select(*xSelEntry);
+ m_xCategoryBox->scroll_to_row(*xSelEntry);
+ GrpSelect(*m_xCategoryBox);
}
+
+ const SvxAutoCorrCfg& rCfg = SvxAutoCorrCfg::Get();
+ m_xFileRelCB->set_active( rCfg.IsSaveRelFile() );
+ m_xFileRelCB->connect_toggled(LINK(this, SwGlossaryDlg, CheckBoxHdl));
+ m_xNetRelCB->set_active( rCfg.IsSaveRelNet() );
+ m_xNetRelCB->connect_toggled(LINK(this, SwGlossaryDlg, CheckBoxHdl));
+ m_xInsertTipCB->set_active( rCfg.IsAutoTextTip() );
+ m_xInsertTipCB->set_sensitive(!officecfg::Office::Writer::AutoFunction::Text::ShowToolTip::isReadOnly());
+ m_xInsertTipCB->connect_toggled(LINK(this, SwGlossaryDlg, CheckBoxHdl));
}
// KeyInput for ShortName - Edits without Spaces
@@ -818,234 +833,46 @@ IMPL_LINK_NOARG(SwNewGlosNameDlg, Rename, weld::Button&, void)
m_xDialog->response(RET_OK);
}
-IMPL_LINK( SwGlossaryDlg, CheckBoxHdl, Button *, pBox, void )
+IMPL_LINK(SwGlossaryDlg, CheckBoxHdl, weld::ToggleButton&, rBox, void)
{
SvxAutoCorrCfg& rCfg = SvxAutoCorrCfg::Get();
- bool bCheck = static_cast<CheckBox*>(pBox)->IsChecked();
- if (pBox == m_pInsertTipCB)
+ bool bCheck = rBox.get_active();
+ if (&rBox == m_xInsertTipCB.get())
rCfg.SetAutoTextTip(bCheck);
- else if(pBox == m_pFileRelCB)
+ else if (&rBox == m_xFileRelCB.get())
rCfg.SetSaveRelFile(bCheck);
else
rCfg.SetSaveRelNet(bCheck);
rCfg.Commit();
}
-// TreeListBox for groups and blocks
-SwGlTreeListBox::SwGlTreeListBox(vcl::Window* pParent, WinBits nBits)
- : SvTreeListBox(pParent, nBits)
- , sReadonly(SwResId(SW_STR_READONLY)),
- pDragEntry(nullptr)
-{
- SetDragDropMode( DragDropMode::CTRL_MOVE|DragDropMode::CTRL_COPY );
-}
-
-Size SwGlTreeListBox::GetOptimalSize() const
-{
- return LogicToPixel(Size(212, 84), MapMode(MapUnit::MapAppFont));
-}
-
-VCL_BUILDER_FACTORY_ARGS(SwGlTreeListBox, WB_BORDER | WB_TABSTOP)
-
-void SwGlTreeListBox::Clear()
-{
- SvTreeListEntry* pEntry = First();
- while(pEntry)
- {
- if(GetParent(pEntry))
- delete static_cast<OUString*>(pEntry->GetUserData());
- else
- delete static_cast<GroupUserData*>(pEntry->GetUserData());
- pEntry = Next(pEntry);
- }
- SvTreeListBox::Clear();
-}
-
-void SwGlTreeListBox::RequestHelp( const HelpEvent& rHEvt )
+IMPL_LINK(SwGlossaryDlg, KeyInputHdl, const KeyEvent&, rKEvt, bool)
{
- Point aPos( ScreenToOutputPixel( rHEvt.GetMousePosPixel() ));
- SvTreeListEntry* pEntry = GetEntry( aPos );
- // there's only help for groups' names
- if(pEntry)
+ if (rKEvt.GetKeyCode().GetCode() == KEY_DELETE)
{
- SvLBoxTab* pTab;
- SvLBoxItem* pItem = GetItem( pEntry, aPos.X(), &pTab );
- if(pItem)
- {
- aPos = GetEntryPosition( pEntry );
- Size aSize(pItem->GetWidth(this, pEntry), pItem->GetHeight(this, pEntry));
- aPos.setX( GetTabPos( pEntry, pTab ) );
-
- if((aPos.X() + aSize.Width()) > GetSizePixel().Width())
- aSize.setWidth( GetSizePixel().Width() - aPos.X() );
- aPos = OutputToScreenPixel(aPos);
- tools::Rectangle aItemRect( aPos, aSize );
- OUString sMsg;
- if(!GetParent(pEntry))
- {
- GroupUserData* pData = static_cast<GroupUserData*>(pEntry->GetUserData());
- const std::vector<OUString> & rPathArr = ::GetGlossaries()->GetPathArray();
- if( !rPathArr.empty() )
- {
- INetURLObject aTmp(rPathArr[pData->nPathIdx]
- + "/"
- + pData->sGroupName
- + SwGlossaries::GetExtension());
- sMsg = aTmp.GetPath();
-
- if(pData->bReadonly)
- {
- sMsg += " (" + sReadonly + ")";
- }
- }
- }
- else
- sMsg = *static_cast<OUString*>(pEntry->GetUserData());
- Help::ShowQuickHelp( this, aItemRect, sMsg,
- QuickHelpFlags::Left|QuickHelpFlags::VCenter );
- }
- }
-}
-
-DragDropMode SwGlTreeListBox::NotifyStartDrag(
- TransferDataContainer& /*rContainer*/,
- SvTreeListEntry* pEntry )
-{
- DragDropMode eRet;
- pDragEntry = pEntry;
- if(!GetParent(pEntry))
- eRet = DragDropMode::NONE;
- else
- {
- SwGlossaryDlg* pDlg = static_cast<SwGlossaryDlg*>(GetParentDialog());
- SvTreeListEntry* pParent = GetParent(pEntry);
-
- GroupUserData* pGroupData = static_cast<GroupUserData*>(pParent->GetUserData());
- OUString sEntry = pGroupData->sGroupName
- + OUStringLiteral1(GLOS_DELIM)
- + OUString::number(pGroupData->nPathIdx);
- sal_Int8 nDragOption = DND_ACTION_COPY;
- eRet = DragDropMode::CTRL_COPY;
- if(!pDlg->m_pGlossaryHdl->IsReadOnly(&sEntry))
- {
- eRet |= DragDropMode::CTRL_MOVE;
- nDragOption |= DND_ACTION_MOVE;
- }
- SetDragOptions( nDragOption );
- }
- return eRet;
-}
-
-bool SwGlTreeListBox::NotifyAcceptDrop( SvTreeListEntry* pEntry)
-{
- // TODO: Readonly - check still missing!
- SvTreeListEntry* pSrcParent = GetParent(pEntry) ? GetParent(pEntry) : pEntry;
- SvTreeListEntry* pDestParent =
- GetParent(pDragEntry ) ? GetParent(pDragEntry ) : pDragEntry ;
- return pDestParent != pSrcParent;
-
-}
-
-TriState SwGlTreeListBox::NotifyMoving( SvTreeListEntry* pTarget,
- SvTreeListEntry* pEntry,
- SvTreeListEntry*& /*rpNewParent*/,
- sal_uLong& /*rNewChildPos*/
- )
-{
- return NotifyCopyingOrMoving(pTarget, pEntry, true);
-}
-
-TriState SwGlTreeListBox::NotifyCopying( SvTreeListEntry* pTarget,
- SvTreeListEntry* pEntry,
- SvTreeListEntry*& /*rpNewParent*/,
- sal_uLong& /*rNewChildPos*/
- )
-{
- return NotifyCopyingOrMoving(pTarget, pEntry, false);
-}
-
-TriState SwGlTreeListBox::NotifyCopyingOrMoving(
- SvTreeListEntry* pTarget,
- SvTreeListEntry* pEntry,
- bool bIsMove)
-{
- pDragEntry = nullptr;
- // 1. move in different groups?
- // 2. allowed to write to both groups?
- if(!pTarget) // move to the beginning
- {
- pTarget = GetEntry(0);
- }
- SvTreeListEntry* pSrcParent = GetParent(pEntry);
- SvTreeListEntry* pDestParent =
- GetParent(pTarget) ? GetParent(pTarget) : pTarget;
- if(pDestParent != pSrcParent)
- {
- SwGlossaryDlg* pDlg = static_cast<SwGlossaryDlg*>(GetParentDialog());
- SwWait aWait( *pDlg->m_pShell->GetView().GetDocShell(), true );
-
- GroupUserData* pGroupData = static_cast<GroupUserData*>(pSrcParent->GetUserData());
- OUString sSourceGroup = pGroupData->sGroupName
- + OUStringLiteral1(GLOS_DELIM)
- + OUString::number(pGroupData->nPathIdx);
-
- pDlg->m_pGlossaryHdl->SetCurGroup(sSourceGroup);
- OUString sTitle(GetEntryText(pEntry));
- OUString sShortName(*static_cast<OUString*>(pEntry->GetUserData()));
-
- GroupUserData* pDestData = static_cast<GroupUserData*>(pDestParent->GetUserData());
- OUString sDestName = pDestData->sGroupName
- + OUStringLiteral1(GLOS_DELIM)
- + OUString::number(pDestData->nPathIdx);
-
- const bool bRet = pDlg->m_pGlossaryHdl->CopyOrMove( sSourceGroup, sShortName,
- sDestName, sTitle, bIsMove );
- if(bRet)
- {
- SvTreeListEntry* pChild = InsertEntry(sTitle, pDestParent);
- pChild->SetUserData(new OUString(sShortName));
- if (bIsMove)
- {
- GetModel()->Remove(pEntry);
- }
- }
- }
- return TRISTATE_FALSE; // otherwise the entry is being set automatically
-}
-
-void SwGlTreeListBox::ExpandedHdl()
-{
- Invalidate(InvalidateFlags::Update);
- SvTreeListBox::ExpandedHdl();
-}
-
-void SwGlTreeListBox::KeyInput( const KeyEvent& rKEvt )
-{
- if(m_aDeleteHdl.IsSet() && rKEvt.GetKeyCode().GetCode() == KEY_DELETE)
- {
- m_aDeleteHdl.Call(nullptr);
- return;
+ DeleteEntry();
+ return true;
}
- SvTreeListBox::KeyInput( rKEvt );
+ return false;
}
OUString SwGlossaryDlg::GetCurrGrpName() const
{
- SvTreeListEntry* pEntry = m_pCategoryBox->FirstSelected();
- if(pEntry)
+ std::unique_ptr<weld::TreeIter> xEntry = m_xCategoryBox->make_iterator();
+ if (m_xCategoryBox->get_selected(xEntry.get()))
{
- pEntry =
- m_pCategoryBox->GetParent(pEntry) ? m_pCategoryBox->GetParent(pEntry) : pEntry;
- GroupUserData* pGroupData = static_cast<GroupUserData*>(pEntry->GetUserData());
+ if (m_xCategoryBox->get_iter_depth(*xEntry))
+ m_xCategoryBox->iter_parent(*xEntry);
+ GroupUserData* pGroupData = reinterpret_cast<GroupUserData*>(m_xCategoryBox->get_id(*xEntry).toInt64());
return pGroupData->sGroupName + OUStringLiteral1(GLOS_DELIM) + OUString::number(pGroupData->nPathIdx);
}
return OUString();
}
-IMPL_LINK_NOARG( SwGlossaryDlg, PathHdl, Button *, void )
+IMPL_LINK_NOARG( SwGlossaryDlg, PathHdl, weld::Button&, void )
{
SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create();
- ScopedVclPtr<AbstractSvxMultiPathDialog> pDlg(pFact->CreateSvxPathSelectDialog(GetFrameWeld()));
+ ScopedVclPtr<AbstractSvxMultiPathDialog> pDlg(pFact->CreateSvxPathSelectDialog(m_xDialog.get()));
SvtPathOptions aPathOpt;
const OUString sGlosPath( aPathOpt.GetAutoTextPath() );
pDlg->SetPath(sGlosPath);
@@ -1061,41 +888,28 @@ IMPL_LINK_NOARG( SwGlossaryDlg, PathHdl, Button *, void )
}
}
-IMPL_LINK_NOARG(SwGlossaryDlg, InsertHdl, Button*, void)
-{
- EndDialog(RET_OK);
-}
-
-IMPL_LINK_NOARG(SwGlossaryDlg, DeleteHdl, SwGlTreeListBox*, void)
+IMPL_LINK_NOARG(SwGlossaryDlg, InsertHdl, weld::Button&, void)
{
- DeleteEntry();
+ m_xDialog->response(RET_OK);
}
void SwGlossaryDlg::ShowPreview()
{
- //create example
- if (!m_pExampleFrame)
- {
- Link<SwOneExampleFrame&,void> aLink(LINK(this, SwGlossaryDlg, PreviewLoadedHdl));
- m_pExampleFrame.reset(new SwOneExampleFrame( *m_pExampleWIN,
- EX_SHOW_ONLINE_LAYOUT, &aLink ));
- }
-
- ShowAutoText(::GetCurrGlosGroup(), m_pShortNameEdit->GetText());
+ ShowAutoText(::GetCurrGlosGroup(), m_xShortNameEdit->get_text());
};
-IMPL_LINK_NOARG(SwGlossaryDlg, PreviewLoadedHdl, SwOneExampleFrame&, void)
+IMPL_LINK_NOARG(SwGlossaryDlg, PreviewLoadedHdl, OneExampleFrame&, void)
{
ResumeShowAutoText();
}
void SwGlossaryDlg::ShowAutoText(const OUString& rGroup, const OUString& rShortName)
{
- if(m_pExampleWIN->IsVisible())
+ if (m_xExampleFrameWin->get_visible())
{
SetResumeData(rGroup, rShortName);
//try to make an Undo()
- m_pExampleFrame->ClearDocument();
+ m_xExampleFrame->ClearDocument();
}
}
@@ -1103,7 +917,7 @@ void SwGlossaryDlg::ResumeShowAutoText()
{
OUString sGroup;
OUString sShortName;
- if(GetResumeData(sGroup, sShortName) && m_pExampleWIN->IsVisible())
+ if(GetResumeData(sGroup, sShortName) && m_xExampleFrameWin->get_visible())
{
if(!m_xAutoText.is())
{
@@ -1111,7 +925,7 @@ void SwGlossaryDlg::ResumeShowAutoText()
m_xAutoText = text::AutoTextContainer::create( comphelper::getProcessComponentContext() );
}
- uno::Reference< XTextCursor > & xCursor = m_pExampleFrame->GetTextCursor();
+ uno::Reference< XTextCursor > & xCursor = m_xExampleFrame->GetTextCursor();
if(xCursor.is())
{
if (!sShortName.isEmpty())
@@ -1134,27 +948,34 @@ void SwGlossaryDlg::ResumeShowAutoText()
void SwGlossaryDlg::DeleteEntry()
{
- SvTreeListEntry* pEntry = m_pCategoryBox->FirstSelected();
+ bool bEntry = m_xCategoryBox->get_selected(nullptr);
+
+ const OUString aTitle(m_xNameED->get_text());
+ const OUString aShortName(m_xShortNameEdit->get_text());
+
+ std::unique_ptr<weld::TreeIter> xParent;
+ std::unique_ptr<weld::TreeIter> xChild = DoesBlockExist(aTitle, aShortName);
+ if (xChild && m_xCategoryBox->get_iter_depth(*xChild))
+ {
+ xParent = m_xCategoryBox->make_iterator(xChild.get());
+ m_xCategoryBox->iter_parent(*xParent);
+ }
- const OUString aTitle(m_pNameED->GetText());
- const OUString aShortName(m_pShortNameEdit->GetText());
- SvTreeListEntry* pChild = DoesBlockExist(aTitle, aShortName);
- SvTreeListEntry* pParent = pChild ? m_pCategoryBox->GetParent(pChild) : nullptr;
- const bool bExists = nullptr != pChild;
- const bool bIsGroup = pEntry && !pParent;
+ const bool bExists = nullptr != xChild;
+ const bool bIsGroup = bEntry && !xParent;
- std::unique_ptr<weld::MessageDialog> xQuery(Application::CreateMessageDialog(GetFrameWeld(),
+ std::unique_ptr<weld::MessageDialog> xQuery(Application::CreateMessageDialog(m_xDialog.get(),
VclMessageType::Question, VclButtonsType::YesNo,
SwResId(STR_QUERY_DELETE)));
if (bExists && !bIsGroup && RET_YES == xQuery->run())
{
if (!aTitle.isEmpty() && m_pGlossaryHdl->DelGlossary(aShortName))
{
- OSL_ENSURE(pChild, "entry not found!");
- m_pCategoryBox->Select(pParent);
- m_pCategoryBox->GetModel()->Remove(pChild);
- m_pNameED->SetText(OUString());
- NameModify(*m_pNameED);
+ OSL_ENSURE(xChild, "entry not found!");
+ m_xCategoryBox->select(*xParent);
+ m_xCategoryBox->remove(*xChild);
+ m_xNameED->set_text(OUString());
+ NameModify(*m_xNameED);
}
}
}
diff --git a/sw/source/uibase/inc/glossary.hxx b/sw/source/uibase/inc/glossary.hxx
index 9394fc7aaad8..b9aed7adec9b 100644
--- a/sw/source/uibase/inc/glossary.hxx
+++ b/sw/source/uibase/inc/glossary.hxx
@@ -21,7 +21,8 @@
#include <vcl/edit.hxx>
#include <vcl/treelistbox.hxx>
-#include <svx/stddlg.hxx>
+#include <vcl/customweld.hxx>
+#include <vcl/weld.hxx>
#include <vcl/button.hxx>
#include <vcl/fixed.hxx>
@@ -33,78 +34,24 @@
#include "actctrl.hxx"
+struct GroupUserData;
class SwGlossaryHdl;
class SwNewGlosNameDlg;
class SwWrtShell;
class SfxViewFrame;
class PopupMenu;
class Menu;
+class OneExampleFrame;
const short RET_EDIT = 100;
-class SwGlTreeListBox : public SvTreeListBox
-{
- const OUString sReadonly;
-
- SvTreeListEntry* pDragEntry;
-
- Link<SwGlTreeListBox*,void> m_aDeleteHdl;
-
- virtual DragDropMode NotifyStartDrag( TransferDataContainer& rContainer,
- SvTreeListEntry* ) override;
- virtual bool NotifyAcceptDrop( SvTreeListEntry* ) override;
-
- virtual TriState NotifyMoving( SvTreeListEntry* pTarget,
- SvTreeListEntry* pEntry,
- SvTreeListEntry*& rpNewParent,
- sal_uLong& rNewChildPos
- ) override;
- virtual TriState NotifyCopying( SvTreeListEntry* pTarget,
- SvTreeListEntry* pEntry,
- SvTreeListEntry*& rpNewParent,
- sal_uLong& rNewChildPos) override;
-
- TriState NotifyCopyingOrMoving( SvTreeListEntry* pTarget,
- SvTreeListEntry* pEntry,
- bool bIsMove);
-public:
- SwGlTreeListBox(vcl::Window* pParent, WinBits nBits);
-
- virtual void RequestHelp( const HelpEvent& rHEvt ) override;
- virtual Size GetOptimalSize() const override;
- void Clear();
-
- virtual void ExpandedHdl() override;
-
- virtual void KeyInput( const KeyEvent& rKEvt ) override;
-
- void SetDeleteHdl( const Link<SwGlTreeListBox*,void>& rLink ) { m_aDeleteHdl = rLink; }
-};
-
-class SwOneExampleFrame;
-class SwGlossaryDlg : public SvxStandardDialog
+class SwGlossaryDlg : public SfxDialogController
{
friend class SwNewGlosNameDlg;
- friend class SwGlTreeListBox;
-
- VclPtr<CheckBox> m_pInsertTipCB;
- VclPtr<Edit> m_pNameED;
- VclPtr<FixedText> m_pShortNameLbl;
- TextFilter m_aNoSpaceFilter;
- VclPtr<Edit> m_pShortNameEdit;
- VclPtr<SwGlTreeListBox> m_pCategoryBox;
- VclPtr<CheckBox> m_pFileRelCB;
- VclPtr<CheckBox> m_pNetRelCB;
- VclPtr<vcl::Window> m_pExampleWIN;
- VclPtr<PushButton> m_pInsertBtn;
- VclPtr<MenuButton> m_pEditBtn;
- VclPtr<PushButton> m_pBibBtn;
- VclPtr<PushButton> m_pPathBtn;
OUString const m_sReadonlyPath;
css::uno::Reference< css::text::XAutoTextContainer2 > m_xAutoText;
- std::unique_ptr<SwOneExampleFrame> m_pExampleFrame;
SwGlossaryHdl* m_pGlossaryHdl;
@@ -119,25 +66,42 @@ class SwGlossaryDlg : public SvxStandardDialog
SwWrtShell* m_pShell;
+ std::vector<std::unique_ptr<GroupUserData>> m_xGroupData;
+
+ std::unique_ptr<weld::CheckButton> m_xInsertTipCB;
+ std::unique_ptr<weld::Entry> m_xNameED;
+ std::unique_ptr<weld::Label> m_xShortNameLbl;
+ TextFilter m_aNoSpaceFilter;
+ std::unique_ptr<weld::Entry> m_xShortNameEdit;
+ std::unique_ptr<weld::TreeView> m_xCategoryBox;
+ std::unique_ptr<weld::CheckButton> m_xFileRelCB;
+ std::unique_ptr<weld::CheckButton> m_xNetRelCB;
+ std::unique_ptr<weld::Button> m_xInsertBtn;
+ std::unique_ptr<weld::MenuButton> m_xEditBtn;
+ std::unique_ptr<weld::Button> m_xBibBtn;
+ std::unique_ptr<weld::Button> m_xPathBtn;
+ std::unique_ptr<OneExampleFrame> m_xExampleFrame;
+ std::unique_ptr<weld::CustomWeld> m_xExampleFrameWin;
+
void EnableShortName(bool bOn = true);
void ShowPreview();
- DECL_LINK( NameModify, Edit&, void );
- DECL_LINK( NameDoubleClick, SvTreeListBox*, bool );
- DECL_LINK( GrpSelect, SvTreeListBox *, void );
- DECL_LINK( MenuHdl, Menu *, bool );
- DECL_LINK( EnableHdl, Menu *, bool );
- DECL_LINK( BibHdl, Button *, void );
- DECL_LINK( EditHdl, MenuButton *, void );
- DECL_LINK( InsertHdl, Button *, void );
- DECL_LINK( PathHdl, Button *, void );
- DECL_LINK( CheckBoxHdl, Button*, void );
- DECL_LINK( PreviewLoadedHdl, SwOneExampleFrame&, void );
- DECL_LINK( DeleteHdl, SwGlTreeListBox*, void );
-
- virtual void Apply() override;
+ DECL_LINK( NameModify, weld::Entry&, void );
+ DECL_LINK( NameDoubleClick, weld::TreeView&, void );
+ DECL_LINK( GrpSelect, weld::TreeView&, void );
+ DECL_LINK( MenuHdl, const OString&, void );
+ DECL_LINK( EnableHdl, weld::ToggleButton&, void );
+ DECL_LINK( BibHdl, weld::Button&, void );
+ DECL_LINK( InsertHdl, weld::Button&, void );
+ DECL_LINK( PathHdl, weld::Button&, void );
+ DECL_LINK( CheckBoxHdl, weld::ToggleButton&, void );
+ DECL_LINK( PreviewLoadedHdl, OneExampleFrame&, void );
+ DECL_LINK( KeyInputHdl, const KeyEvent&, bool );
+ DECL_LINK( TextFilterHdl, OUString&, bool );
+
+ void Apply();
void Init();
- SvTreeListEntry* DoesBlockExist(const OUString& sBlock, const OUString& rShort);
+ std::unique_ptr<weld::TreeIter> DoesBlockExist(const OUString& sBlock, const OUString& rShort);
void ShowAutoText(const OUString& rGroup, const OUString& rShortName);
void ResumeShowAutoText();
@@ -149,12 +113,12 @@ class SwGlossaryDlg : public SvxStandardDialog
void DeleteEntry();
public:
SwGlossaryDlg(SfxViewFrame const * pViewFrame, SwGlossaryHdl* pGlosHdl, SwWrtShell *pWrtShell);
+ virtual short run() override;
virtual ~SwGlossaryDlg() override;
- virtual void dispose() override;
OUString GetCurrGrpName() const;
OUString GetCurrShortName() const
{
- return m_pShortNameEdit->GetText();
+ return m_xShortNameEdit->get_text();
}
static OUString GetCurrGroup();
static void SetActGroup(const OUString& rNewGroup);
diff --git a/sw/uiconfig/swriter/ui/autotext.ui b/sw/uiconfig/swriter/ui/autotext.ui
index 4966c47d6b1b..b811128e9a53 100644
--- a/sw/uiconfig/swriter/ui/autotext.ui
+++ b/sw/uiconfig/swriter/ui/autotext.ui
@@ -1,13 +1,128 @@
<?xml version="1.0" encoding="UTF-8"?>
-<!-- Generated with glade 3.18.3 -->
+<!-- Generated with glade 3.22.1 -->
<interface domain="sw">
<requires lib="gtk+" version="3.18"/>
- <requires lib="LibreOffice" version="1.0"/>
+ <object class="GtkMenu" id="editmenu">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkMenuItem" id="new">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes" context="autotext|new">_New</property>
+ <property name="use_underline">True</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkMenuItem" id="newtext">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes" context="autotext|newtext">New (text only)</property>
+ <property name="use_underline">True</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkMenuItem" id="copy">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes" context="autotext|copy">_Copy</property>
+ <property name="use_underline">True</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkMenuItem" id="replace">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes" context="autotext|replace">Replace</property>
+ <property name="use_underline">True</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkMenuItem" id="replacetext">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes" context="autotext|replacetext">Rep_lace (text only)</property>
+ <property name="use_underline">True</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkMenuItem" id="rename">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes" context="autotext|rename">Rename...</property>
+ <property name="use_underline">True</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkMenuItem" id="delete">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes" context="autotext|delete">_Delete</property>
+ <property name="use_underline">True</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSeparatorMenuItem" id="menuitem2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkMenuItem" id="edit">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes" context="autotext|edit">_Edit</property>
+ <property name="use_underline">True</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSeparatorMenuItem" id="menuitem1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkMenuItem" id="macro">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes" context="autotext|macro">_Macro...</property>
+ <property name="use_underline">True</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSeparatorMenuItem" id="menuitem4">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkMenuItem" id="import">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes" context="autotext|import">_Import...</property>
+ <property name="use_underline">True</property>
+ </object>
+ </child>
+ </object>
+ <object class="GtkTreeStore" id="liststore1">
+ <columns>
+ <!-- column-name text -->
+ <column type="gchararray"/>
+ <!-- column-name id -->
+ <column type="gchararray"/>
+ </columns>
+ </object>
<object class="GtkDialog" id="AutoTextDialog">
<property name="can_focus">False</property>
<property name="border_width">6</property>
<property name="title" translatable="yes" context="autotext|AutoTextDialog">AutoText</property>
+ <property name="modal">True</property>
+ <property name="default_width">0</property>
+ <property name="default_height">0</property>
<property name="type_hint">dialog</property>
+ <child>
+ <placeholder/>
+ </child>
<child internal-child="vbox">
<object class="GtkBox" id="dialog-vbox1">
<property name="can_focus">False</property>
@@ -18,14 +133,17 @@
<property name="can_focus">False</property>
<property name="layout_style">end</property>
<child>
- <object class="GtkButton" id="insert">
- <property name="label" translatable="yes" context="autotext|insert">_Insert</property>
+ <object class="GtkMenuButton" id="autotext">
+ <property name="label" translatable="yes" context="autotext|autotext">AutoTe_xt</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
- <property name="can_default">True</property>
- <property name="has_default">True</property>
<property name="receives_default">True</property>
<property name="use_underline">True</property>
+ <property name="draw_indicator">True</property>
+ <property name="popup">editmenu</property>
+ <child>
+ <placeholder/>
+ </child>
</object>
<packing>
<property name="expand">False</property>
@@ -34,12 +152,12 @@
</packing>
</child>
<child>
- <object class="GtkButton" id="close">
- <property name="label">gtk-close</property>
+ <object class="GtkButton" id="categories">
+ <property name="label" translatable="yes" context="autotext|categories">Cat_egories...</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
- <property name="use_stock">True</property>
+ <property name="use_underline">True</property>
</object>
<packing>
<property name="expand">False</property>
@@ -48,27 +166,26 @@
</packing>
</child>
<child>
- <object class="GtkButton" id="help">
- <property name="label">gtk-help</property>
+ <object class="GtkButton" id="path">
+ <property name="label" translatable="yes" context="autotext|path">_Path...</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
- <property name="use_stock">True</property>
+ <property name="use_underline">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
- <property name="secondary">True</property>
</packing>
</child>
<child>
- <object class="GtkButton" id="autotext:editmenu">
- <property name="label" translatable="yes" context="autotext|autotext">AutoTe_xt</property>
+ <object class="GtkButton" id="close">
+ <property name="label">gtk-close</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
- <property name="use_underline">True</property>
+ <property name="use_stock">True</property>
</object>
<packing>
<property name="expand">False</property>
@@ -77,10 +194,12 @@
</packing>
</child>
<child>
- <object class="GtkButton" id="categories">
- <property name="label" translatable="yes" context="autotext|categories">Cat_egories...</property>
+ <object class="GtkButton" id="ok">
+ <property name="label" translatable="yes" context="autotext|insert">_Insert</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
+ <property name="can_default">True</property>
+ <property name="has_default">True</property>
<property name="receives_default">True</property>
<property name="use_underline">True</property>
</object>
@@ -91,17 +210,18 @@
</packing>
</child>
<child>
- <object class="GtkButton" id="path">
- <property name="label" translatable="yes" context="autotext|path">_Path...</property>
+ <object class="GtkButton" id="help">
+ <property name="label">gtk-help</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
- <property name="use_underline">True</property>
+ <property name="use_stock">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">5</property>
+ <property name="secondary">True</property>
</packing>
</child>
</object>
@@ -185,6 +305,7 @@
<packing>
<property name="left_attach">0</property>
<property name="top_attach">1</property>
+ <property name="width">2</property>
</packing>
</child>
<child>
@@ -281,20 +402,44 @@
</packing>
</child>
<child>
- <object class="swuilo-SwGlTreeListBox" id="category">
+ <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="Glossary Tree List-selection1"/>
- </child>
- <accessibility>
- <relation type="labelled-by" target="inserttip"/>
- </accessibility>
- <child internal-child="accessible">
- <object class="AtkObject" id="category-atkobject">
- <property name="AtkObject::accessible-name" translatable="yes" context="autotext|category-atkobject">Category</property>
+ <property name="shadow_type">in</property>
+ <child>
+ <object class="GtkTreeView" id="category">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="hexpand">True</property>
+ <property name="vexpand">True</property>
+ <property name="model">liststore1</property>
+ <property name="headers_visible">False</property>
+ <property name="headers_clickable">False</property>
+ <property name="show_expanders">True</property>
+ <property name="search_column">0</property>
+ <child internal-child="selection">
+ <object class="GtkTreeSelection" id="treeview-selection1"/>
+ </child>
+ <child>
+ <object class="GtkTreeViewColumn" id="treeviewcolumn1">
+ <child>
+ <object class="GtkCellRendererText" id="cellrenderertext1"/>
+ <attributes>
+ <attribute name="text">0</attribute>
+ </attributes>
+ </child>
+ </object>
+ </child>
+ <accessibility>
+ <relation type="labelled-by" target="inserttip"/>
+ </accessibility>
+ <child internal-child="accessible">
+ <object class="AtkObject" id="category-atkobject">
+ <property name="AtkObject::accessible-name" translatable="yes" context="autotext|category-atkobject">Category</property>
+ </object>
+ </child>
</object>
</child>
</object>
@@ -318,26 +463,17 @@
<property name="hexpand">True</property>
<property name="vexpand">True</property>
<child>
- <object class="GtkDrawingArea" id="dummy">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="hexpand">True</property>
- <property name="vexpand">True</property>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkBox" id="example">
+ <object class="GtkDrawingArea" id="example">
<property name="visible">True</property>
<property name="can_focus">False</property>
+ <property name="events">GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_STRUCTURE_MASK</property>
+ <property name="no_show_all">True</property>
<property name="hexpand">True</property>
<property name="vexpand">True</property>
- <property name="orientation">vertical</property>
- <child>
- <placeholder/>
+ <child internal-child="accessible">
+ <object class="AtkObject" id="example-atkobject">
+ <property name="AtkObject::accessible-name" translatable="yes" context="autotext|example-atkobject">Preview</property>
+ </object>
</child>
</object>
<packing>
@@ -351,9 +487,6 @@
<property name="top_attach">0</property>
</packing>
</child>
- <child>
- <placeholder/>
- </child>
</object>
<packing>
<property name="expand">False</property>
@@ -364,114 +497,11 @@
</object>
</child>
<action-widgets>
- <action-widget response="101">insert</action-widget>
- <action-widget response="-7">close</action-widget>
- <action-widget response="-11">help</action-widget>
- <action-widget response="102">autotext:editmenu</action-widget>
<action-widget response="103">categories</action-widget>
<action-widget response="104">path</action-widget>
+ <action-widget response="-7">close</action-widget>
+ <action-widget response="-5">ok</action-widget>
+ <action-widget response="-11">help</action-widget>
</action-widgets>
</object>
- <object class="GtkMenu" id="editmenu">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <child>
- <object class="GtkMenuItem" id="new">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes" context="autotext|new">_New</property>
- <property name="use_underline">True</property>
- </object>
- </child>
- <child>
- <object class="GtkMenuItem" id="newtext">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes" context="autotext|newtext">New (text only)</property>
- <property name="use_underline">True</property>
- </object>
- </child>
- <child>
- <object class="GtkMenuItem" id="copy">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes" context="autotext|copy">_Copy</property>
- <property name="use_underline">True</property>
- </object>
- </child>
- <child>
- <object class="GtkMenuItem" id="replace">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes" context="autotext|replace">Replace</property>
- <property name="use_underline">True</property>
- </object>
- </child>
- <child>
- <object class="GtkMenuItem" id="replacetext">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes" context="autotext|replacetext">Rep_lace (text only)</property>
- <property name="use_underline">True</property>
- </object>
- </child>
- <child>
- <object class="GtkMenuItem" id="rename">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes" context="autotext|rename">Rename...</property>
- <property name="use_underline">True</property>
- </object>
- </child>
- <child>
- <object class="GtkMenuItem" id="delete">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes" context="autotext|delete">_Delete</property>
- <property name="use_underline">True</property>
- </object>
- </child>
- <child>
- <object class="GtkSeparatorMenuItem" id="menuitem2">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- </object>
- </child>
- <child>
- <object class="GtkMenuItem" id="edit">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes" context="autotext|edit">_Edit</property>
- <property name="use_underline">True</property>
- </object>
- </child>
- <child>
- <object class="GtkSeparatorMenuItem" id="menuitem1">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- </object>
- </child>
- <child>
- <object class="GtkMenuItem" id="macro">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes" context="autotext|macro">_Macro...</property>
- <property name="use_underline">True</property>
- </object>
- </child>
- <child>
- <object class="GtkSeparatorMenuItem" id="menuitem4">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- </object>
- </child>
- <child>
- <object class="GtkMenuItem" id="import">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes" context="autotext|import">_Import...</property>
- <property name="use_underline">True</property>
- </object>
- </child>
- </object>
</interface>