include/vcl/weld.hxx | 1 sw/inc/dbmgr.hxx | 7 sw/source/ui/envelp/label1.cxx | 261 ++++++++++++++----------------- sw/source/ui/envelp/swuilabimp.hxx | 45 ++--- sw/source/uibase/dbui/dbmgr.cxx | 78 +++++++++ sw/uiconfig/swriter/ui/cardmediumpage.ui | 26 +-- vcl/source/app/salvtables.cxx | 5 vcl/unx/gtk3/gtk3gtkinst.cxx | 8 8 files changed, 254 insertions(+), 177 deletions(-)
New commits: commit eede8af74173293504749cfbdd0ca528b4aa7b75 Author: Caolán McNamara <caol...@redhat.com> Date: Mon Apr 23 16:55:02 2018 +0100 weld SwLabPage Change-Id: I98abbf67470fdd7be43680b02261f207a101d31c Reviewed-on: https://gerrit.libreoffice.org/53485 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 93c5b55ed644..d21c6aa96a9b 100644 --- a/include/vcl/weld.hxx +++ b/include/vcl/weld.hxx @@ -634,6 +634,7 @@ public: virtual OUString get_text() const = 0; virtual void select_region(int nStartPos, int nEndPos) = 0; virtual bool get_selection_bounds(int& rStartPos, int& rEndPos) = 0; + virtual void replace_selection(const OUString& rText) = 0; virtual void set_editable(bool bEditable) = 0; int get_height_rows(int nRows) const { diff --git a/sw/inc/dbmgr.hxx b/sw/inc/dbmgr.hxx index 863af57b4562..4af6308b6003 100644 --- a/sw/inc/dbmgr.hxx +++ b/sw/inc/dbmgr.hxx @@ -69,6 +69,7 @@ struct SwDBFormatData }; namespace weld { + class ComboBoxText; class Window; } @@ -313,13 +314,19 @@ public: /// Fill listbox with all table names of a database. bool GetTableNames(ListBox* pListBox, const OUString& rDBName ); + bool GetTableNames(weld::ComboBoxText& rBox, const OUString& rDBName); /// Fill listbox with all column names of a database table. void GetColumnNames(ListBox* pListBox, const OUString& rDBName, const OUString& rTableName); + void GetColumnNames(weld::ComboBoxText& rBox, + const OUString& rDBName, const OUString& rTableName); static void GetColumnNames(ListBox* pListBox, css::uno::Reference< css::sdbc::XConnection> const & xConnection, const OUString& rTableName); + static void GetColumnNames(weld::ComboBoxText& rBox, + css::uno::Reference< css::sdbc::XConnection> const & xConnection, + const OUString& rTableName); static sal_uLong GetColumnFormat( css::uno::Reference< css::sdbc::XDataSource> const & xSource, css::uno::Reference< css::sdbc::XConnection> const & xConnection, diff --git a/sw/source/ui/envelp/label1.cxx b/sw/source/ui/envelp/label1.cxx index e3537834932f..82bc293a2aeb 100644 --- a/sw/source/ui/envelp/label1.cxx +++ b/sw/source/ui/envelp/label1.cxx @@ -225,148 +225,129 @@ Printer *SwLabDlg::GetPrt() return nullptr; } -SwLabPage::SwLabPage(vcl::Window* pParent, const SfxItemSet& rSet) - : SfxTabPage(pParent, "CardMediumPage", - "modules/swriter/ui/cardmediumpage.ui", &rSet) +SwLabPage::SwLabPage(TabPageParent pParent, const SfxItemSet& rSet) + : SfxTabPage(pParent, "modules/swriter/ui/cardmediumpage.ui", "CardMediumPage", &rSet) , pDBManager(nullptr) , aItem(static_cast<const SwLabItem&>(rSet.Get(FN_LABEL))) -{ - WaitObject aWait( pParent ); - - get(m_pAddressFrame, "addressframe"); - get(m_pAddrBox, "address"); - get(m_pWritingEdit, "textview"); - m_pWritingEdit->set_height_request(m_pWritingEdit->GetTextHeight() * 10); - m_pWritingEdit->set_width_request(m_pWritingEdit->approximate_char_width() * 25); - get(m_pDatabaseLB, "database"); - get(m_pTableLB, "table"); - get(m_pInsertBT, "insert"); - get(m_pDBFieldLB, "field"); - get(m_pContButton, "continuous"); - get(m_pSheetButton, "sheet"); - get(m_pMakeBox, "brand"); - get(m_pTypeBox, "type"); - get(m_pFormatInfo, "formatinfo"); - get(m_pHiddenSortTypeBox, "hiddentype"); - m_pHiddenSortTypeBox->SetStyle(m_pHiddenSortTypeBox->GetStyle() | WB_SORT); - - long nListBoxWidth = approximate_char_width() * 30; - m_pTableLB->set_width_request(nListBoxWidth); - m_pDatabaseLB->set_width_request(nListBoxWidth); - m_pDBFieldLB->set_width_request(nListBoxWidth); + , m_xAddressFrame(m_xBuilder->weld_widget("addressframe")) + , m_xAddrBox(m_xBuilder->weld_check_button("address")) + , m_xWritingEdit(m_xBuilder->weld_text_view("textview")) + , m_xDatabaseLB(m_xBuilder->weld_combo_box_text("database")) + , m_xTableLB(m_xBuilder->weld_combo_box_text("table")) + , m_xInsertBT(m_xBuilder->weld_button("insert")) + , m_xDBFieldLB(m_xBuilder->weld_combo_box_text("field")) + , m_xContButton(m_xBuilder->weld_radio_button("continuous")) + , m_xSheetButton(m_xBuilder->weld_radio_button("sheet")) + , m_xMakeBox(m_xBuilder->weld_combo_box_text("brand")) + , m_xTypeBox(m_xBuilder->weld_combo_box_text("type")) + , m_xHiddenSortTypeBox(m_xBuilder->weld_combo_box_text("hiddentype")) + , m_xFormatInfo(m_xBuilder->weld_label("formatinfo")) +{ + WaitObject aWait(pParent.pParent); + + m_xWritingEdit->set_size_request(m_xWritingEdit->get_approximate_digit_width() * 30, + m_xWritingEdit->get_height_rows(10)); + m_xHiddenSortTypeBox->make_sorted(); + + long nListBoxWidth = m_xWritingEdit->get_approximate_digit_width() * 25; + m_xTableLB->set_size_request(nListBoxWidth, -1); + m_xDatabaseLB->set_size_request(nListBoxWidth, -1); + m_xDBFieldLB->set_size_request(nListBoxWidth, -1); SetExchangeSupport(); // Install handlers - m_pAddrBox->SetClickHdl (LINK(this, SwLabPage, AddrHdl )); - m_pDatabaseLB->SetSelectHdl(LINK(this, SwLabPage, DatabaseHdl )); - m_pTableLB->SetSelectHdl(LINK(this, SwLabPage, DatabaseHdl )); - m_pDBFieldLB->SetSelectHdl(LINK(this, SwLabPage, DatabaseHdl )); - m_pInsertBT->SetClickHdl (LINK(this, SwLabPage, FieldHdl )); + m_xAddrBox->connect_toggled(LINK(this, SwLabPage, AddrHdl)); + m_xDatabaseLB->connect_changed(LINK(this, SwLabPage, DatabaseHdl)); + m_xTableLB->connect_changed(LINK(this, SwLabPage, DatabaseHdl)); + m_xDBFieldLB->connect_changed(LINK(this, SwLabPage, DatabaseHdl)); + m_xInsertBT->connect_clicked(LINK(this, SwLabPage, FieldHdl)); // Disable insert button first, - // it'll be enabled if m_pDatabaseLB, m_pTableLB and m_pInsertBT are filled - m_pInsertBT->Disable(); - m_pContButton->SetClickHdl (LINK(this, SwLabPage, PageHdl )); - m_pSheetButton->SetClickHdl (LINK(this, SwLabPage, PageHdl )); - m_pMakeBox->SetSelectHdl(LINK(this, SwLabPage, MakeHdl )); - m_pTypeBox->SetSelectHdl(LINK(this, SwLabPage, TypeHdl )); + // it'll be enabled if m_xDatabaseLB, m_pTableLB and m_pInsertBT are filled + m_xInsertBT->set_sensitive(false); + m_xContButton->connect_toggled(LINK(this, SwLabPage, PageHdl)); + m_xSheetButton->connect_toggled(LINK(this, SwLabPage, PageHdl)); + m_xMakeBox->connect_changed(LINK(this, SwLabPage, MakeHdl)); + m_xTypeBox->connect_changed(LINK(this, SwLabPage, TypeHdl)); InitDatabaseBox(); } SwLabPage::~SwLabPage() { - disposeOnce(); -} - -void SwLabPage::dispose() -{ - m_pAddressFrame.clear(); - m_pAddrBox.clear(); - m_pWritingEdit.clear(); - m_pDatabaseLB.clear(); - m_pTableLB.clear(); - m_pInsertBT.clear(); - m_pDBFieldLB.clear(); - m_pContButton.clear(); - m_pSheetButton.clear(); - m_pMakeBox.clear(); - m_pTypeBox.clear(); - m_pHiddenSortTypeBox.clear(); - m_pFormatInfo.clear(); - SfxTabPage::dispose(); } void SwLabPage::SetToBusinessCard() { - SetHelpId(HID_BUSINESS_FMT_PAGE); - m_pContButton->SetHelpId(HID_BUSINESS_FMT_PAGE_CONT); - m_pSheetButton->SetHelpId(HID_BUSINESS_FMT_PAGE_SHEET); - m_pMakeBox->SetHelpId(HID_BUSINESS_FMT_PAGE_BRAND); - m_pTypeBox->SetHelpId(HID_BUSINESS_FMT_PAGE_TYPE); - m_pAddressFrame->Hide(); + m_xContainer->set_help_id(HID_BUSINESS_FMT_PAGE); + m_xContButton->set_help_id(HID_BUSINESS_FMT_PAGE_CONT); + m_xSheetButton->set_help_id(HID_BUSINESS_FMT_PAGE_SHEET); + m_xMakeBox->set_help_id(HID_BUSINESS_FMT_PAGE_BRAND); + m_xTypeBox->set_help_id(HID_BUSINESS_FMT_PAGE_TYPE); + m_xAddressFrame->hide(); }; -IMPL_LINK_NOARG(SwLabPage, AddrHdl, Button*, void) +IMPL_LINK_NOARG(SwLabPage, AddrHdl, weld::ToggleButton&, void) { OUString aWriting; - if ( m_pAddrBox->IsChecked() ) + if (m_xAddrBox->get_active()) aWriting = convertLineEnd(MakeSender(), GetSystemLineEnd()); - m_pWritingEdit->SetText( aWriting ); - m_pWritingEdit->GrabFocus(); + m_xWritingEdit->set_text(aWriting); + m_xWritingEdit->grab_focus(); } -IMPL_LINK( SwLabPage, DatabaseHdl, ListBox&, rListBox, void ) +IMPL_LINK( SwLabPage, DatabaseHdl, weld::ComboBoxText&, rListBox, void ) { - sActDBName = m_pDatabaseLB->GetSelectedEntry(); + sActDBName = m_xDatabaseLB->get_active_text(); WaitObject aObj( GetParentSwLabDlg() ); - if (&rListBox == m_pDatabaseLB) - GetDBManager()->GetTableNames(m_pTableLB, sActDBName); + if (&rListBox == m_xDatabaseLB.get()) + GetDBManager()->GetTableNames(*m_xTableLB, sActDBName); - if (&rListBox == m_pDatabaseLB || &rListBox == m_pTableLB) - GetDBManager()->GetColumnNames(m_pDBFieldLB, sActDBName, m_pTableLB->GetSelectedEntry()); + if (&rListBox == m_xDatabaseLB.get() || &rListBox == m_xTableLB.get()) + GetDBManager()->GetColumnNames(*m_xDBFieldLB, sActDBName, m_xTableLB->get_active_text()); - if (!m_pDatabaseLB->GetSelectedEntry().isEmpty() && !m_pTableLB->GetSelectedEntry().isEmpty() - && !m_pDBFieldLB->GetSelectedEntry().isEmpty()) - m_pInsertBT->Enable(true); + if (!m_xDatabaseLB->get_active_text().isEmpty() && !m_xTableLB->get_active_text().isEmpty() + && !m_xDBFieldLB->get_active_text().isEmpty()) + m_xInsertBT->set_sensitive(true); else - m_pInsertBT->Enable(false); + m_xInsertBT->set_sensitive(false); } -IMPL_LINK_NOARG(SwLabPage, FieldHdl, Button*, void) +IMPL_LINK_NOARG(SwLabPage, FieldHdl, weld::Button&, void) { - OUString aStr("<" + m_pDatabaseLB->GetSelectedEntry() + "." + - m_pTableLB->GetSelectedEntry() + "." + - (m_pTableLB->GetSelectedEntryData() == nullptr ? OUString("0") : OUString("1")) + "." + - m_pDBFieldLB->GetSelectedEntry() + ">"); - m_pWritingEdit->ReplaceSelected(aStr); - Selection aSel = m_pWritingEdit->GetSelection(); - m_pWritingEdit->GrabFocus(); - m_pWritingEdit->SetSelection(aSel); + OUString aStr("<" + m_xDatabaseLB->get_active_text() + "." + + m_xTableLB->get_active_text() + "." + + m_xTableLB->get_active_id() + "." + + m_xDBFieldLB->get_active_text() + ">"); + m_xWritingEdit->replace_selection(aStr); + int nStartPos, nEndPos; + m_xWritingEdit->get_selection_bounds(nStartPos, nEndPos); + m_xWritingEdit->grab_focus(); + m_xWritingEdit->select_region(nStartPos, nEndPos); } -IMPL_LINK_NOARG(SwLabPage, PageHdl, Button*, void) +IMPL_LINK_NOARG(SwLabPage, PageHdl, weld::ToggleButton&, void) { - m_pMakeBox->GetSelectHdl().Call(*m_pMakeBox); + MakeHdl(*m_xMakeBox); } -IMPL_LINK_NOARG(SwLabPage, MakeHdl, ListBox&, void) +IMPL_LINK_NOARG(SwLabPage, MakeHdl, weld::ComboBoxText&, void) { WaitObject aWait( GetParentSwLabDlg() ); - m_pTypeBox->Clear(); - m_pHiddenSortTypeBox->Clear(); + m_xTypeBox->clear(); + m_xHiddenSortTypeBox->clear(); GetParentSwLabDlg()->TypeIds().clear(); - const OUString aMake = m_pMakeBox->GetSelectedEntry(); + const OUString aMake = m_xMakeBox->get_active_text(); GetParentSwLabDlg()->ReplaceGroup( aMake ); aItem.m_aLstMake = aMake; - const bool bCont = m_pContButton->IsChecked(); + const bool bCont = m_xContButton->get_active(); const size_t nCount = GetParentSwLabDlg()->Recs().size(); size_t nLstType = 0; @@ -379,14 +360,14 @@ IMPL_LINK_NOARG(SwLabPage, MakeHdl, ListBox&, void) if (GetParentSwLabDlg()->Recs()[i]->m_aType == sCustom) { bInsert = true; - m_pTypeBox->InsertEntry(aType ); + m_xTypeBox->append_text(aType ); } else if (GetParentSwLabDlg()->Recs()[i]->m_bCont == bCont) { - if ( m_pHiddenSortTypeBox->GetEntryPos(aType) == LISTBOX_ENTRY_NOTFOUND ) + if (m_xHiddenSortTypeBox->find_text(aType) == -1) { bInsert = true; - m_pHiddenSortTypeBox->InsertEntry( aType ); + m_xHiddenSortTypeBox->append_text( aType ); } } if(bInsert) @@ -396,21 +377,21 @@ IMPL_LINK_NOARG(SwLabPage, MakeHdl, ListBox&, void) nLstType = GetParentSwLabDlg()->TypeIds().size(); } } - for(sal_Int32 nEntry = 0; nEntry < m_pHiddenSortTypeBox->GetEntryCount(); ++nEntry) + for (int nEntry = 0; nEntry < m_xHiddenSortTypeBox->get_count(); ++nEntry) { - m_pTypeBox->InsertEntry(m_pHiddenSortTypeBox->GetEntry(nEntry)); + m_xTypeBox->append_text(m_xHiddenSortTypeBox->get_text(nEntry)); } if (nLstType) - m_pTypeBox->SelectEntry(aItem.m_aLstType); + m_xTypeBox->set_active(aItem.m_aLstType); else - m_pTypeBox->SelectEntryPos(0); - m_pTypeBox->GetSelectHdl().Call(*m_pTypeBox); + m_xTypeBox->set_active(0); + TypeHdl(*m_xTypeBox); } -IMPL_LINK_NOARG(SwLabPage, TypeHdl, ListBox&, void) +IMPL_LINK_NOARG(SwLabPage, TypeHdl, weld::ComboBoxText&, void) { DisplayFormat(); - aItem.m_aType = m_pTypeBox->GetSelectedEntry(); + aItem.m_aType = m_xTypeBox->get_active_text(); } void SwLabPage::DisplayFormat() @@ -435,41 +416,41 @@ void SwLabPage::DisplayFormat() " x " + aField->GetText() + " (" + OUString::number( pRec->m_nCols ) + " x " + OUString::number( pRec->m_nRows ) + ")"; - m_pFormatInfo->SetText(aText); + m_xFormatInfo->set_label(aText); } SwLabRec* SwLabPage::GetSelectedEntryPos() { - OUString sSelEntry(m_pTypeBox->GetSelectedEntry()); + OUString sSelEntry(m_xTypeBox->get_active_text()); - return GetParentSwLabDlg()->GetRecord(sSelEntry, m_pContButton->IsChecked()); + return GetParentSwLabDlg()->GetRecord(sSelEntry, m_xContButton->get_active()); } void SwLabPage::InitDatabaseBox() { if( GetDBManager() ) { - m_pDatabaseLB->Clear(); + m_xDatabaseLB->clear(); css::uno::Sequence<OUString> aDataNames = SwDBManager::GetExistingDatabaseNames(); const OUString* pDataNames = aDataNames.getConstArray(); for (long i = 0; i < aDataNames.getLength(); i++) - m_pDatabaseLB->InsertEntry(pDataNames[i]); + m_xDatabaseLB->append_text(pDataNames[i]); OUString sDBName = sActDBName.getToken( 0, DB_DELIM ); OUString sTableName = sActDBName.getToken( 1, DB_DELIM ); - m_pDatabaseLB->SelectEntry(sDBName); - if( !sDBName.isEmpty() && GetDBManager()->GetTableNames(m_pTableLB, sDBName)) + m_xDatabaseLB->set_active(sDBName); + if( !sDBName.isEmpty() && GetDBManager()->GetTableNames(*m_xTableLB, sDBName)) { - m_pTableLB->SelectEntry(sTableName); - GetDBManager()->GetColumnNames(m_pDBFieldLB, sActDBName, sTableName); + m_xTableLB->set_active(sTableName); + GetDBManager()->GetColumnNames(*m_xDBFieldLB, sActDBName, sTableName); } else - m_pDBFieldLB->Clear(); + m_xDBFieldLB->clear(); } } VclPtr<SfxTabPage> SwLabPage::Create(TabPageParent pParent, const SfxItemSet* rSet) { - return VclPtr<SwLabPage>::Create(pParent.pParent, *rSet); + return VclPtr<SwLabPage>::Create(pParent, *rSet); } void SwLabPage::ActivatePage(const SfxItemSet& rSet) @@ -487,18 +468,18 @@ DeactivateRC SwLabPage::DeactivatePage(SfxItemSet* _pSet) void SwLabPage::FillItem(SwLabItem& rItem) { - rItem.m_bAddr = m_pAddrBox->IsChecked(); - rItem.m_aWriting = m_pWritingEdit->GetText(); - rItem.m_bCont = m_pContButton->IsChecked(); - rItem.m_aMake = m_pMakeBox->GetSelectedEntry(); - rItem.m_aType = m_pTypeBox->GetSelectedEntry(); + rItem.m_bAddr = m_xAddrBox->get_active(); + rItem.m_aWriting = m_xWritingEdit->get_text(); + rItem.m_bCont = m_xContButton->get_active(); + rItem.m_aMake = m_xMakeBox->get_active_text(); + rItem.m_aType = m_xTypeBox->get_active_text(); rItem.m_sDBName = sActDBName; SwLabRec* pRec = GetSelectedEntryPos(); pRec->FillItem( rItem ); - rItem.m_aLstMake = m_pMakeBox->GetSelectedEntry(); - rItem.m_aLstType = m_pTypeBox->GetSelectedEntry(); + rItem.m_aLstMake = m_xMakeBox->get_active_text(); + rItem.m_aLstType = m_xTypeBox->get_active_text(); } bool SwLabPage::FillItemSet(SfxItemSet* rSet) @@ -511,7 +492,7 @@ bool SwLabPage::FillItemSet(SfxItemSet* rSet) void SwLabPage::Reset(const SfxItemSet* rSet) { - m_pMakeBox->Clear(); + m_xMakeBox->clear(); size_t nLstGroup = 0; @@ -519,52 +500,52 @@ void SwLabPage::Reset(const SfxItemSet* rSet) for(size_t i = 0; i < nCount; ++i) { OUString& rStr = GetParentSwLabDlg()->Makes()[i]; - m_pMakeBox->InsertEntry( rStr ); + m_xMakeBox->append_text(rStr); if ( rStr == aItem.m_aLstMake) nLstGroup = i; } - m_pMakeBox->SelectEntryPos( nLstGroup ); - m_pMakeBox->GetSelectHdl().Call(*m_pMakeBox); + m_xMakeBox->set_active( nLstGroup ); + MakeHdl(*m_xMakeBox); aItem = static_cast<const SwLabItem&>( rSet->Get(FN_LABEL)); OUString sDBName = aItem.m_sDBName; OUString aWriting(convertLineEnd(aItem.m_aWriting, GetSystemLineEnd())); - m_pAddrBox->Check( aItem.m_bAddr ); - m_pWritingEdit->SetText ( aWriting ); + m_xAddrBox->set_active( aItem.m_bAddr ); + m_xWritingEdit->set_text( aWriting ); for(std::vector<OUString>::const_iterator i = GetParentSwLabDlg()->Makes().begin(); i != GetParentSwLabDlg()->Makes().end(); ++i) { - if(m_pMakeBox->GetEntryPos(*i) == LISTBOX_ENTRY_NOTFOUND) - m_pMakeBox->InsertEntry(*i); + if (m_xMakeBox->find_text(*i) == -1) + m_xMakeBox->append_text(*i); } - m_pMakeBox->SelectEntry( aItem.m_aMake ); + m_xMakeBox->set_active(aItem.m_aMake); //save the current type OUString sType(aItem.m_aType); - m_pMakeBox->GetSelectHdl().Call(*m_pMakeBox); + MakeHdl(*m_xMakeBox); aItem.m_aType = sType; //#102806# a newly added make may not be in the type ListBox already - if (m_pTypeBox->GetEntryPos(aItem.m_aType) == LISTBOX_ENTRY_NOTFOUND && !aItem.m_aMake.isEmpty()) + if (m_xTypeBox->find_text(aItem.m_aType) == -1 && !aItem.m_aMake.isEmpty()) GetParentSwLabDlg()->UpdateGroup( aItem.m_aMake ); - if (m_pTypeBox->GetEntryPos(aItem.m_aType) != LISTBOX_ENTRY_NOTFOUND) + if (m_xTypeBox->find_text(aItem.m_aType) != -1) { - m_pTypeBox->SelectEntry(aItem.m_aType); - m_pTypeBox->GetSelectHdl().Call(*m_pTypeBox); + m_xTypeBox->set_active(aItem.m_aType); + TypeHdl(*m_xTypeBox); } - if (m_pDatabaseLB->GetEntryPos(sDBName) != LISTBOX_ENTRY_NOTFOUND) + if (m_xDatabaseLB->find_text(sDBName) != -1) { - m_pDatabaseLB->SelectEntry(sDBName); - m_pDatabaseLB->GetSelectHdl().Call(*m_pDatabaseLB); + m_xDatabaseLB->set_active(sDBName); + DatabaseHdl(*m_xDatabaseLB); } if (aItem.m_bCont) - m_pContButton->Check(); + m_xContButton->set_active(true); else - m_pSheetButton->Check(); + m_xSheetButton->set_active(true); } SwPrivateDataPage::SwPrivateDataPage(vcl::Window* pParent, const SfxItemSet& rSet) diff --git a/sw/source/ui/envelp/swuilabimp.hxx b/sw/source/ui/envelp/swuilabimp.hxx index 79b2e11eb09d..88c18e0685cd 100644 --- a/sw/source/ui/envelp/swuilabimp.hxx +++ b/sw/source/ui/envelp/swuilabimp.hxx @@ -29,28 +29,26 @@ class SwLabPage : public SfxTabPage OUString sActDBName; SwLabItem aItem; - VclPtr<VclContainer> m_pAddressFrame; - - VclPtr<CheckBox> m_pAddrBox; - VclPtr<VclMultiLineEdit> m_pWritingEdit; - VclPtr<ListBox> m_pDatabaseLB; - VclPtr<ListBox> m_pTableLB; - VclPtr<PushButton> m_pInsertBT; - VclPtr<ListBox> m_pDBFieldLB; - - VclPtr<RadioButton> m_pContButton; - VclPtr<RadioButton> m_pSheetButton; - VclPtr<ListBox> m_pMakeBox; - VclPtr<ListBox> m_pTypeBox; - VclPtr<ListBox> m_pHiddenSortTypeBox; - VclPtr<FixedText> m_pFormatInfo; - - DECL_LINK(AddrHdl, Button*, void); - DECL_LINK(DatabaseHdl, ListBox&, void ); - DECL_LINK(FieldHdl, Button *, void); - DECL_LINK(PageHdl, Button *, void); - DECL_LINK(MakeHdl, ListBox&, void); - DECL_LINK(TypeHdl, ListBox&, void); + std::unique_ptr<weld::Widget> m_xAddressFrame; + std::unique_ptr<weld::CheckButton> m_xAddrBox; + std::unique_ptr<weld::TextView> m_xWritingEdit; + std::unique_ptr<weld::ComboBoxText> m_xDatabaseLB; + std::unique_ptr<weld::ComboBoxText> m_xTableLB; + std::unique_ptr<weld::Button> m_xInsertBT; + std::unique_ptr<weld::ComboBoxText> m_xDBFieldLB; + std::unique_ptr<weld::RadioButton> m_xContButton; + std::unique_ptr<weld::RadioButton> m_xSheetButton; + std::unique_ptr<weld::ComboBoxText> m_xMakeBox; + std::unique_ptr<weld::ComboBoxText> m_xTypeBox; + std::unique_ptr<weld::ComboBoxText> m_xHiddenSortTypeBox; + std::unique_ptr<weld::Label> m_xFormatInfo; + + DECL_LINK(AddrHdl, weld::ToggleButton&, void); + DECL_LINK(DatabaseHdl, weld::ComboBoxText&, void ); + DECL_LINK(FieldHdl, weld::Button&, void); + DECL_LINK(PageHdl, weld::ToggleButton&, void); + DECL_LINK(MakeHdl, weld::ComboBoxText&, void); + DECL_LINK(TypeHdl, weld::ComboBoxText&, void); void DisplayFormat (); SwLabRec* GetSelectedEntryPos(); @@ -59,10 +57,9 @@ class SwLabPage : public SfxTabPage using TabPage::DeactivatePage; public: - SwLabPage(vcl::Window* pParent, const SfxItemSet& rSet); + SwLabPage(TabPageParent pParent, const SfxItemSet& rSet); virtual ~SwLabPage() override; - virtual void dispose() override; static VclPtr<SfxTabPage> Create(TabPageParent pParent, const SfxItemSet* rSet); diff --git a/sw/source/uibase/dbui/dbmgr.cxx b/sw/source/uibase/dbui/dbmgr.cxx index 31925ff0ce64..76b2a4adfa04 100644 --- a/sw/source/uibase/dbui/dbmgr.cxx +++ b/sw/source/uibase/dbui/dbmgr.cxx @@ -752,6 +752,47 @@ bool SwDBManager::GetTableNames(ListBox* pListBox, const OUString& rDBName) return bRet; } +bool SwDBManager::GetTableNames(weld::ComboBoxText& rBox, const OUString& rDBName) +{ + bool bRet = false; + OUString sOldTableName(rBox.get_active_text()); + rBox.clear(); + SwDSParam* pParam = FindDSConnection(rDBName, false); + uno::Reference< sdbc::XConnection> xConnection; + if (pParam && pParam->xConnection.is()) + xConnection = pParam->xConnection; + else + { + if ( !rDBName.isEmpty() ) + xConnection = RegisterConnection( rDBName ); + } + if (xConnection.is()) + { + uno::Reference<sdbcx::XTablesSupplier> xTSupplier(xConnection, uno::UNO_QUERY); + if(xTSupplier.is()) + { + uno::Reference<container::XNameAccess> xTables = xTSupplier->getTables(); + uno::Sequence<OUString> aTables = xTables->getElementNames(); + const OUString* pTables = aTables.getConstArray(); + for (sal_Int32 i = 0; i < aTables.getLength(); ++i) + rBox.append("0", pTables[i]); + } + uno::Reference<sdb::XQueriesSupplier> xQSupplier(xConnection, uno::UNO_QUERY); + if(xQSupplier.is()) + { + uno::Reference<container::XNameAccess> xQueries = xQSupplier->getQueries(); + uno::Sequence<OUString> aQueries = xQueries->getElementNames(); + const OUString* pQueries = aQueries.getConstArray(); + for (sal_Int32 i = 0; i < aQueries.getLength(); i++) + rBox.append("1", pQueries[i]); + } + if (!sOldTableName.isEmpty()) + rBox.set_active(sOldTableName); + bRet = true; + } + return bRet; +} + // fill Listbox with column names of a database void SwDBManager::GetColumnNames(ListBox* pListBox, const OUString& rDBName, const OUString& rTableName) @@ -771,6 +812,24 @@ void SwDBManager::GetColumnNames(ListBox* pListBox, GetColumnNames(pListBox, xConnection, rTableName); } +void SwDBManager::GetColumnNames(weld::ComboBoxText& rBox, + const OUString& rDBName, const OUString& rTableName) +{ + SwDBData aData; + aData.sDataSource = rDBName; + aData.sCommand = rTableName; + aData.nCommandType = -1; + SwDSParam* pParam = FindDSData(aData, false); + uno::Reference< sdbc::XConnection> xConnection; + if(pParam && pParam->xConnection.is()) + xConnection = pParam->xConnection; + else + { + xConnection = RegisterConnection( rDBName ); + } + GetColumnNames(rBox, xConnection, rTableName); +} + void SwDBManager::GetColumnNames(ListBox* pListBox, uno::Reference< sdbc::XConnection> const & xConnection, const OUString& rTableName) @@ -790,6 +849,25 @@ void SwDBManager::GetColumnNames(ListBox* pListBox, } } +void SwDBManager::GetColumnNames(weld::ComboBoxText& rBox, + uno::Reference< sdbc::XConnection> const & xConnection, + const OUString& rTableName) +{ + rBox.clear(); + uno::Reference< sdbcx::XColumnsSupplier> xColsSupp = SwDBManager::GetColumnSupplier(xConnection, rTableName); + if(xColsSupp.is()) + { + uno::Reference<container::XNameAccess> xCols = xColsSupp->getColumns(); + const uno::Sequence<OUString> aColNames = xCols->getElementNames(); + const OUString* pColNames = aColNames.getConstArray(); + for (sal_Int32 nCol = 0; nCol < aColNames.getLength(); ++nCol) + { + rBox.append_text(pColNames[nCol]); + } + ::comphelper::disposeComponent( xColsSupp ); + } +} + SwDBManager::SwDBManager(SwDoc* pDoc) : m_aMergeStatus( MergeStatus::Ok ) , bInitDBFields(false) diff --git a/sw/uiconfig/swriter/ui/cardmediumpage.ui b/sw/uiconfig/swriter/ui/cardmediumpage.ui index 4705078cd20f..6b916a804a0d 100644 --- a/sw/uiconfig/swriter/ui/cardmediumpage.ui +++ b/sw/uiconfig/swriter/ui/cardmediumpage.ui @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<!-- Generated with glade 3.18.3 --> +<!-- Generated with glade 3.20.4 --> <interface domain="sw"> <requires lib="gtk+" version="3.18"/> <requires lib="LibreOffice" version="1.0"/> @@ -64,8 +64,8 @@ <property name="visible">True</property> <property name="can_focus">True</property> <property name="receives_default">False</property> - <property name="use_underline">True</property> <property name="halign">end</property> + <property name="use_underline">True</property> <property name="xalign">0</property> <property name="draw_indicator">True</property> </object> @@ -79,10 +79,10 @@ <property name="visible">True</property> <property name="can_focus">False</property> <property name="hexpand">True</property> - <property name="xalign">0</property> <property name="label" translatable="yes" context="cardmediumpage|label2">Label text:</property> <property name="use_underline">True</property> - <property name="mnemonic_widget">textview:border</property> + <property name="mnemonic_widget">textview</property> + <property name="xalign">0</property> </object> <packing> <property name="left_attach">0</property> @@ -103,7 +103,7 @@ <property name="vexpand">True</property> <property name="shadow_type">in</property> <child> - <object class="GtkTextView" id="textview:border"> + <object class="GtkTextView" id="textview"> <property name="visible">True</property> <property name="can_focus">True</property> <property name="hexpand">True</property> @@ -139,10 +139,10 @@ <object class="GtkLabel" id="label4"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="xalign">0</property> <property name="label" translatable="yes" context="cardmediumpage|label4">Database:</property> <property name="use_underline">True</property> <property name="mnemonic_widget">database</property> + <property name="xalign">0</property> </object> <packing> <property name="left_attach">0</property> @@ -177,10 +177,10 @@ <object class="GtkLabel" id="label7"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="xalign">0</property> <property name="label" translatable="yes" context="cardmediumpage|label7">Table:</property> <property name="use_underline">True</property> <property name="mnemonic_widget">table</property> + <property name="xalign">0</property> </object> <packing> <property name="left_attach">0</property> @@ -215,10 +215,10 @@ <object class="GtkLabel" id="label8"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="xalign">0</property> <property name="label" translatable="yes" context="cardmediumpage|label8">Database field:</property> <property name="use_underline">True</property> <property name="mnemonic_widget">field</property> + <property name="xalign">0</property> </object> <packing> <property name="left_attach">0</property> @@ -323,8 +323,8 @@ <property name="receives_default">False</property> <property name="use_underline">True</property> <property name="xalign">0</property> + <property name="active">True</property> <property name="draw_indicator">True</property> - <property name="group">sheet</property> </object> <packing> <property name="left_attach">0</property> @@ -365,10 +365,10 @@ <object class="GtkLabel" id="label5"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="xalign">1</property> <property name="label" translatable="yes" context="cardmediumpage|label5">Brand:</property> <property name="use_underline">True</property> <property name="mnemonic_widget">brand</property> + <property name="xalign">1</property> </object> <packing> <property name="left_attach">0</property> @@ -379,10 +379,10 @@ <object class="GtkLabel" id="label3"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="xalign">1</property> <property name="label" translatable="yes" context="cardmediumpage|label3">_Type:</property> <property name="use_underline">True</property> <property name="mnemonic_widget">type</property> + <property name="xalign">1</property> </object> <packing> <property name="left_attach">0</property> @@ -390,7 +390,7 @@ </packing> </child> <child> - <object class="VclComboBoxText" id="brand"> + <object class="GtkComboBoxText" id="brand"> <property name="visible">True</property> <property name="can_focus">False</property> <property name="hexpand">True</property> @@ -402,7 +402,7 @@ </packing> </child> <child> - <object class="VclComboBoxText" id="type"> + <object class="GtkComboBoxText" id="type"> <property name="visible">True</property> <property name="can_focus">False</property> <property name="hexpand">True</property> diff --git a/vcl/source/app/salvtables.cxx b/vcl/source/app/salvtables.cxx index a22721c52276..6ec83d72d0d8 100644 --- a/vcl/source/app/salvtables.cxx +++ b/vcl/source/app/salvtables.cxx @@ -1467,6 +1467,11 @@ public: m_xTextView->SetText(rText); } + virtual void replace_selection(const OUString& rText) override + { + m_xTextView->ReplaceSelected(rText); + } + virtual OUString get_text() const override { return m_xTextView->GetText(); diff --git a/vcl/unx/gtk3/gtk3gtkinst.cxx b/vcl/unx/gtk3/gtk3gtkinst.cxx index e205e46c61d9..a204143cf5f1 100644 --- a/vcl/unx/gtk3/gtk3gtkinst.cxx +++ b/vcl/unx/gtk3/gtk3gtkinst.cxx @@ -3401,6 +3401,14 @@ public: return sRet; } + virtual void replace_selection(const OUString& rText) override + { + GtkTextBuffer* pBuffer = gtk_text_view_get_buffer(m_pTextView); + gtk_text_buffer_delete_selection(pBuffer, false, gtk_text_view_get_editable(m_pTextView)); + OString sText(OUStringToOString(rText, RTL_TEXTENCODING_UTF8)); + gtk_text_buffer_insert_at_cursor(pBuffer, sText.getStr(), sText.getLength()); + } + virtual bool get_selection_bounds(int& rStartPos, int& rEndPos) override { GtkTextBuffer* pBuffer = gtk_text_view_get_buffer(m_pTextView); _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits