include/vcl/weld.hxx | 1 sw/source/uibase/utlui/gloslst.cxx | 72 ++++++++++--------------- sw/uiconfig/swriter/ui/selectautotextdialog.ui | 47 ++++++++++++++-- 3 files changed, 74 insertions(+), 46 deletions(-)
New commits: commit 7d99b161852b4da3b5a2f97efe629d4f7c3a52e9 Author: Caolán McNamara <caol...@redhat.com> Date: Fri Apr 13 17:46:42 2018 +0100 weld SwGlossDecideDlg Change-Id: I34a90e842d0b7d5635879e52e9ffb56239aebac2 Reviewed-on: https://gerrit.libreoffice.org/52848 Tested-by: Jenkins <c...@libreoffice.org> Reviewed-by: Caolán McNamara <caol...@redhat.com> Tested-by: Caolán McNamara <caol...@redhat.com> diff --git a/include/vcl/weld.hxx b/include/vcl/weld.hxx index 160512969950..97bea2941fac 100644 --- a/include/vcl/weld.hxx +++ b/include/vcl/weld.hxx @@ -732,6 +732,7 @@ public: static bool runAsync(const std::shared_ptr<DialogController>& rController, const std::function<void(sal_Int32)>&); void set_title(const OUString& rTitle) { getDialog()->set_title(rTitle); } + OUString get_title() const { return getConstDialog()->get_title(); } void set_help_id(const OString& rHelpId) { getDialog()->set_help_id(rHelpId); } OString get_help_id() const { return getConstDialog()->get_help_id(); } virtual ~DialogController(); diff --git a/sw/source/uibase/utlui/gloslst.cxx b/sw/source/uibase/utlui/gloslst.cxx index 0d1662e039de..5501394c9440 100644 --- a/sw/source/uibase/utlui/gloslst.cxx +++ b/sw/source/uibase/utlui/gloslst.cxx @@ -22,6 +22,7 @@ #include <vcl/button.hxx> #include <vcl/fixed.hxx> #include <vcl/lstbox.hxx> +#include <vcl/weld.hxx> #include <svl/fstathelper.hxx> #include <unotools/pathoptions.hxx> #include <unotools/transliterationwrapper.hxx> @@ -32,6 +33,7 @@ #include <glosdoc.hxx> #include <gloslst.hxx> #include <swunohelper.hxx> +#include <view.hxx> #include <vector> @@ -48,53 +50,39 @@ struct TripleString OUString sShort; }; -class SwGlossDecideDlg : public ModalDialog +class SwGlossDecideDlg : public weld::GenericDialogController { - VclPtr<OKButton> m_pOk; - VclPtr<ListBox> m_pListLB; + std::unique_ptr<weld::Button> m_xOk; + std::unique_ptr<weld::TreeView> m_xListLB; - DECL_LINK(DoubleClickHdl, ListBox&, void); - DECL_LINK(SelectHdl, ListBox&, void); + DECL_LINK(DoubleClickHdl, weld::TreeView&, void); + DECL_LINK(SelectHdl, weld::TreeView&, void); public: - explicit SwGlossDecideDlg(vcl::Window* pParent); - virtual ~SwGlossDecideDlg() override; - virtual void dispose() override; + explicit SwGlossDecideDlg(weld::Window* pParent); - ListBox& GetListBox() {return *m_pListLB;} + weld::TreeView& GetTreeView() {return *m_xListLB;} }; -SwGlossDecideDlg::SwGlossDecideDlg(vcl::Window* pParent) - : ModalDialog(pParent, "SelectAutoTextDialog", - "modules/swriter/ui/selectautotextdialog.ui") +SwGlossDecideDlg::SwGlossDecideDlg(weld::Window* pParent) + : GenericDialogController(pParent, "modules/swriter/ui/selectautotextdialog.ui", "SelectAutoTextDialog") + , m_xOk(m_xBuilder->weld_button("ok")) + , m_xListLB(m_xBuilder->weld_tree_view("treeview")) { - get(m_pOk, "ok"); - get(m_pListLB, "treeview"); - m_pListLB->set_height_request(m_pListLB->GetTextHeight() * 10); - m_pListLB->SetDoubleClickHdl(LINK(this, SwGlossDecideDlg, DoubleClickHdl)); - m_pListLB->SetSelectHdl(LINK(this, SwGlossDecideDlg, SelectHdl)); + m_xListLB->set_size_request(m_xListLB->get_approximate_digit_width() * 32, + m_xListLB->get_height_rows(8)); + m_xListLB->connect_row_activated(LINK(this, SwGlossDecideDlg, DoubleClickHdl)); + m_xListLB->connect_changed(LINK(this, SwGlossDecideDlg, SelectHdl)); } -SwGlossDecideDlg::~SwGlossDecideDlg() +IMPL_LINK_NOARG(SwGlossDecideDlg, DoubleClickHdl, weld::TreeView&, void) { - disposeOnce(); + m_xDialog->response(RET_OK); } -void SwGlossDecideDlg::dispose() +IMPL_LINK_NOARG(SwGlossDecideDlg, SelectHdl, weld::TreeView&, void) { - m_pOk.clear(); - m_pListLB.clear(); - ModalDialog::dispose(); -} - -IMPL_LINK_NOARG(SwGlossDecideDlg, DoubleClickHdl, ListBox&, void) -{ - EndDialog(RET_OK); -} - -IMPL_LINK_NOARG(SwGlossDecideDlg, SelectHdl, ListBox&, void) -{ - m_pOk->Enable(LISTBOX_ENTRY_NOTFOUND != m_pListLB->GetSelectedEntryPos()); + m_xOk->set_sensitive(m_xListLB->get_selected_index() != -1); } SwGlossaryList::SwGlossaryList() : @@ -155,19 +143,19 @@ bool SwGlossaryList::GetShortName(const OUString& rLongName, } else if(1 < nCount) { - ScopedVclPtrInstance< SwGlossDecideDlg > aDlg(nullptr); - OUString sTitle = aDlg->GetText() + " " + aTripleStrings.front().sBlock; - aDlg->SetText(sTitle); + SwView *pView = ::GetActiveView(); + SwGlossDecideDlg aDlg(pView ? pView->GetFrameWeld() : nullptr); + OUString sTitle = aDlg.get_title() + " " + aTripleStrings.front().sBlock; + aDlg.set_title(sTitle); - ListBox& rLB = aDlg->GetListBox(); + weld::TreeView& rLB = aDlg.GetTreeView(); for(std::vector<TripleString>::const_iterator i = aTripleStrings.begin(); i != aTripleStrings.end(); ++i) - rLB.InsertEntry(i->sGroup.getToken(0, GLOS_DELIM)); + rLB.append_text(i->sGroup.getToken(0, GLOS_DELIM)); - rLB.SelectEntryPos(0); - if(RET_OK == aDlg->Execute() && - LISTBOX_ENTRY_NOTFOUND != rLB.GetSelectedEntryPos()) + rLB.select(0); + if (aDlg.run() == RET_OK && rLB.get_selected_index() != -1) { - const TripleString& rTriple(aTripleStrings[rLB.GetSelectedEntryPos()]); + const TripleString& rTriple(aTripleStrings[rLB.get_selected_index()]); rShortName = rTriple.sShort; rGroupName = rTriple.sGroup; bRet = true; diff --git a/sw/uiconfig/swriter/ui/selectautotextdialog.ui b/sw/uiconfig/swriter/ui/selectautotextdialog.ui index 85c1a977b632..9f465a86ecd4 100644 --- a/sw/uiconfig/swriter/ui/selectautotextdialog.ui +++ b/sw/uiconfig/swriter/ui/selectautotextdialog.ui @@ -1,10 +1,22 @@ <?xml version="1.0" encoding="UTF-8"?> +<!-- Generated with glade 3.20.4 --> <interface domain="sw"> - <!-- interface-requires gtk+ 3.0 --> + <requires lib="gtk+" version="3.0"/> + <object class="GtkListStore" id="liststore1"> + <columns> + <!-- column-name text --> + <column type="gchararray"/> + <!-- column-name id --> + <column type="gchararray"/> + </columns> + </object> <object class="GtkDialog" id="SelectAutoTextDialog"> <property name="can_focus">False</property> <property name="border_width">6</property> <property name="title" translatable="yes" context="selectautotextdialog|SelectAutoTextDialog">Select 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 internal-child="vbox"> <object class="GtkBox" id="dialog-vbox1"> @@ -57,6 +69,7 @@ <property name="expand">False</property> <property name="fill">True</property> <property name="position">2</property> + <property name="secondary">True</property> </packing> </child> </object> @@ -82,13 +95,36 @@ <property name="top_padding">6</property> <property name="left_padding">12</property> <child> - <object class="GtkTreeView" id="treeview:border"> + <object class="GtkScrolledWindow"> <property name="visible">True</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="treeview-selection1"/> + <property name="shadow_type">in</property> + <child> + <object class="GtkTreeView" id="treeview"> + <property name="visible">True</property> + <property name="can_focus">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="search_column">0</property> + <property name="show_expanders">False</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> + </object> </child> </object> </child> @@ -118,5 +154,8 @@ <action-widget response="-6">cancel</action-widget> <action-widget response="-11">help</action-widget> </action-widgets> + <child> + <placeholder/> + </child> </object> </interface> _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits