diff options
author | Caolán McNamara <caolanm@redhat.com> | 2019-02-15 12:58:05 +0000 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2019-02-15 15:54:39 +0100 |
commit | 36af12e74f4fa20712a3671c1be2a3a4b5a54e7d (patch) | |
tree | 4a342fc225f91d425be05085cb4b80711cea24d4 /sc | |
parent | 03b4d8f486d9ecdfe21a05d6bf65c396a35772f6 (diff) |
weld ScImportOptionsDlg
Change-Id: Ib8ea4726d20f0bd7f40283983fec2d5890fac382
Reviewed-on: https://gerrit.libreoffice.org/67869
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Tested-by: Caolán McNamara <caolanm@redhat.com>
Diffstat (limited to 'sc')
-rw-r--r-- | sc/inc/scabstdlg.hxx | 10 | ||||
-rw-r--r-- | sc/source/ui/attrdlg/scdlgfact.cxx | 24 | ||||
-rw-r--r-- | sc/source/ui/attrdlg/scdlgfact.hxx | 20 | ||||
-rw-r--r-- | sc/source/ui/dbgui/scuiimoptdlg.cxx | 255 | ||||
-rw-r--r-- | sc/source/ui/inc/scuiimoptdlg.hxx | 59 | ||||
-rw-r--r-- | sc/source/ui/unoobj/filtuno.cxx | 2 | ||||
-rw-r--r-- | sc/uiconfig/scalc/ui/imoptdialog.ui | 73 |
7 files changed, 240 insertions, 203 deletions
diff --git a/sc/inc/scabstdlg.hxx b/sc/inc/scabstdlg.hxx index 495d8061751b..9b16e1a26af5 100644 --- a/sc/inc/scabstdlg.hxx +++ b/sc/inc/scabstdlg.hxx @@ -510,11 +510,11 @@ public: const OUString& rTabBgColorNoColorText, //Label for no tab color const Color& rDefaultColor) = 0; //Currently selected Color - virtual VclPtr<AbstractScImportOptionsDlg> CreateScImportOptionsDlg ( bool bAscii, - const ScImportOptions* pOptions, - const OUString* pStrTitle, - bool bOnlyDbtoolsEncodings, - bool bImport = true ) = 0; + virtual VclPtr<AbstractScImportOptionsDlg> CreateScImportOptionsDlg(weld::Window* pParent, bool bAscii, + const ScImportOptions* pOptions, + const OUString* pStrTitle, + bool bOnlyDbtoolsEncodings, + bool bImport = true ) = 0; virtual VclPtr<SfxAbstractTabDialog> CreateScAttrDlg(weld::Window* pParent, const SfxItemSet* pCellAttrs) = 0; diff --git a/sc/source/ui/attrdlg/scdlgfact.cxx b/sc/source/ui/attrdlg/scdlgfact.cxx index 14d40c76febf..bd39b1bb7be3 100644 --- a/sc/source/ui/attrdlg/scdlgfact.cxx +++ b/sc/source/ui/attrdlg/scdlgfact.cxx @@ -209,7 +209,10 @@ short AbstractScTabBgColorDlg_Impl::Execute() return m_xDlg->run(); } -IMPL_ABSTDLG_BASE(AbstractScImportOptionsDlg_Impl); +short AbstractScImportOptionsDlg_Impl::Execute() +{ + return m_xDlg->run(); +} short AbstractScTextImportOptionsDlg_Impl::Execute() { @@ -691,12 +694,12 @@ void AbstractScTabBgColorDlg_Impl::GetSelectedColor( Color& rColor ) const void AbstractScImportOptionsDlg_Impl::GetImportOptions( ScImportOptions& rOptions ) const { - pDlg->GetImportOptions(rOptions); + m_xDlg->GetImportOptions(rOptions); } void AbstractScImportOptionsDlg_Impl::SaveImportOptions() const { - pDlg->SaveImportOptions(); + m_xDlg->SaveImportOptions(); } LanguageType AbstractScTextImportOptionsDlg_Impl::GetLanguageType() const @@ -967,15 +970,14 @@ VclPtr<AbstractScTabBgColorDlg> ScAbstractDialogFactory_Impl::CreateScTabBgColor return VclPtr<AbstractScTabBgColorDlg_Impl>::Create(std::make_unique<ScTabBgColorDlg>(pParent, rTitle, rTabBgColorNoColorText, rDefaultColor)); } -VclPtr<AbstractScImportOptionsDlg> ScAbstractDialogFactory_Impl::CreateScImportOptionsDlg ( - bool bAscii, - const ScImportOptions* pOptions, - const OUString* pStrTitle, - bool bOnlyDbtoolsEncodings, - bool bImport ) +VclPtr<AbstractScImportOptionsDlg> ScAbstractDialogFactory_Impl::CreateScImportOptionsDlg(weld::Window* pParent, + bool bAscii, + const ScImportOptions* pOptions, + const OUString* pStrTitle, + bool bOnlyDbtoolsEncodings, + bool bImport) { - VclPtr<ScImportOptionsDlg> pDlg = VclPtr<ScImportOptionsDlg>::Create( nullptr, bAscii, pOptions,pStrTitle, true/*bMultiByte*/,bOnlyDbtoolsEncodings, bImport ); - return VclPtr<AbstractScImportOptionsDlg_Impl>::Create( pDlg ); + return VclPtr<AbstractScImportOptionsDlg_Impl>::Create(std::make_unique<ScImportOptionsDlg>(pParent, bAscii, pOptions, pStrTitle, true/*bMultiByte*/, bOnlyDbtoolsEncodings, bImport)); } VclPtr<SfxAbstractTabDialog> ScAbstractDialogFactory_Impl::CreateScAttrDlg(weld::Window* pParent, const SfxItemSet* pCellAttrs) diff --git a/sc/source/ui/attrdlg/scdlgfact.hxx b/sc/source/ui/attrdlg/scdlgfact.hxx index f134f9a1d294..e1eb091553d6 100644 --- a/sc/source/ui/attrdlg/scdlgfact.hxx +++ b/sc/source/ui/attrdlg/scdlgfact.hxx @@ -518,7 +518,14 @@ public: class AbstractScImportOptionsDlg_Impl : public AbstractScImportOptionsDlg { - DECL_ABSTDLG_BASE( AbstractScImportOptionsDlg_Impl, ScImportOptionsDlg) +protected: + std::unique_ptr<ScImportOptionsDlg> m_xDlg; +public: + explicit AbstractScImportOptionsDlg_Impl(std::unique_ptr<ScImportOptionsDlg> p) + : m_xDlg(std::move(p)) + { + } + virtual short Execute() override; virtual void GetImportOptions( ScImportOptions& rOptions ) const override; virtual void SaveImportOptions() const override; }; @@ -691,11 +698,12 @@ public: const OUString& rTabBgColorNoColorText, //Label for no tab color const Color& rDefaultColor) override; //Currently selected Color - virtual VclPtr<AbstractScImportOptionsDlg> CreateScImportOptionsDlg ( bool bAscii, - const ScImportOptions* pOptions, - const OUString* pStrTitle, - bool bOnlyDbtoolsEncodings, - bool bImport = true ) override; + virtual VclPtr<AbstractScImportOptionsDlg> CreateScImportOptionsDlg(weld::Window* pParent, bool bAscii, + const ScImportOptions* pOptions, + const OUString* pStrTitle, + bool bOnlyDbtoolsEncodings, + bool bImport = true) override; + virtual VclPtr<SfxAbstractTabDialog> CreateScAttrDlg(weld::Window* pParent, const SfxItemSet* pCellAttrs) override; diff --git a/sc/source/ui/dbgui/scuiimoptdlg.cxx b/sc/source/ui/dbgui/scuiimoptdlg.cxx index c0db5f64ef63..9eba630d4298 100644 --- a/sc/source/ui/dbgui/scuiimoptdlg.cxx +++ b/sc/source/ui/dbgui/scuiimoptdlg.cxx @@ -88,42 +88,56 @@ OUString ScDelimiterTable::GetDelimiter( sal_Unicode nCode ) const return OUString(); } -// ScImportOptionsDlg +void ScImportOptionsDlg::FillFromTextEncodingTable(bool bExcludeImportSubsets, sal_uInt32 nExcludeInfoFlags) +{ + if (m_bIsAsciiImport) + m_xLbCharset->FillFromTextEncodingTable(bExcludeImportSubsets, nExcludeInfoFlags); + else + m_xTvCharset->FillFromTextEncodingTable(bExcludeImportSubsets, nExcludeInfoFlags); +} -ScImportOptionsDlg::ScImportOptionsDlg( - vcl::Window* pParent, - bool bAscii, - const ScImportOptions* pOptions, - const OUString* pStrTitle, - bool bMultiByte, - bool bOnlyDbtoolsEncodings, - bool bImport ) - : ModalDialog ( pParent, "ImOptDialog", - "modules/scalc/ui/imoptdialog.ui" ), - m_bIsAsciiImport( bAscii ) +void ScImportOptionsDlg::FillFromDbTextEncodingMap(bool bExcludeImportSubsets, sal_uInt32 nExcludeInfoFlags) +{ + if (m_bIsAsciiImport) + m_xLbCharset->FillFromDbTextEncodingMap(bExcludeImportSubsets, nExcludeInfoFlags); + else + m_xTvCharset->FillFromDbTextEncodingMap(bExcludeImportSubsets, nExcludeInfoFlags); +} + +// ScImportOptionsDlg +ScImportOptionsDlg::ScImportOptionsDlg(weld::Window* pParent, bool bAscii, + const ScImportOptions* pOptions, + const OUString* pStrTitle, + bool bMultiByte, bool bOnlyDbtoolsEncodings, + bool bImport) + : GenericDialogController(pParent, "modules/scalc/ui/imoptdialog.ui", "ImOptDialog") + , m_bIsAsciiImport(bAscii) + , m_xFieldFrame(m_xBuilder->weld_frame("fieldframe")) + , m_xFtCharset(m_xBuilder->weld_label("charsetft")) + , m_xEncGrid(m_xBuilder->weld_widget("grid2")) + , m_xFtFieldSep(m_xBuilder->weld_label("fieldft")) + , m_xEdFieldSep(m_xBuilder->weld_combo_box("field")) + , m_xFtTextSep(m_xBuilder->weld_label("textft")) + , m_xEdTextSep(m_xBuilder->weld_combo_box("text")) + , m_xCbShown(m_xBuilder->weld_check_button("asshown")) + , m_xCbFormulas(m_xBuilder->weld_check_button("formulas")) + , m_xCbQuoteAll(m_xBuilder->weld_check_button("quoteall")) + , m_xCbFixed(m_xBuilder->weld_check_button("fixedwidth")) + , m_xBtnOk(m_xBuilder->weld_button("ok")) + , m_xLbCharset(new TextEncodingBox(m_xBuilder->weld_combo_box("charsetdropdown"))) + , m_xTvCharset(new TextEncodingTreeView(m_xBuilder->weld_tree_view("charsetlist"))) { - get(m_pFieldFrame, "fieldframe"); - get(m_pFtCharset, "charsetft"); if (bAscii) - get(m_pLbCharset, "charsetdropdown"); + { + m_xDialog->set_help_id(m_xDialog->get_help_id() + "?config=NonTextImport"); + m_xLbCharset->show(); + } else { - get(m_pLbCharset, "charsetlist"); - m_pLbCharset->set_height_request(6 * m_pLbCharset->GetTextHeight()); - get(m_pEncGrid, "grid2"); - m_pEncGrid->set_vexpand(true); + m_xTvCharset->set_size_request(-1, m_xTvCharset->get_height_rows(6)); + m_xEncGrid->set_vexpand(true); + m_xTvCharset->show(); } - m_pLbCharset->SetStyle(m_pLbCharset->GetStyle() | WB_SORT); - m_pLbCharset->Show(); - get(m_pFtFieldSep, "fieldft"); - get(m_pEdFieldSep, "field"); - get(m_pFtTextSep, "textft"); - get(m_pEdTextSep, "text"); - get(m_pCbShown, "asshown"); - get(m_pCbFormulas, "formulas"); - get(m_pCbQuoteAll, "quoteall"); - get(m_pCbFixed, "fixedwidth"); - get(m_pBtnOk, "ok"); OUString sFieldSep(SCSTR_FIELDSEP); sFieldSep = sFieldSep.replaceFirst( "%TAB", ScResId(SCSTR_FIELDSEP_TAB) ); @@ -136,37 +150,37 @@ ScImportOptionsDlg::ScImportOptionsDlg( OUString aStr = pFieldSepTab->FirstDel(); sal_Unicode nCode; - while ( !aStr.isEmpty() ) + while (!aStr.isEmpty()) { - m_pEdFieldSep->InsertEntry( aStr ); + m_xEdFieldSep->append_text(aStr); aStr = pFieldSepTab->NextDel(); } aStr = pTextSepTab->FirstDel(); - while ( !aStr.isEmpty() ) + while (!aStr.isEmpty()) { - m_pEdTextSep->InsertEntry( aStr ); + m_xEdTextSep->append_text(aStr); aStr = pTextSepTab->NextDel(); } - m_pEdFieldSep->SetText( m_pEdFieldSep->GetEntry(0) ); - m_pEdTextSep->SetText( m_pEdTextSep->GetEntry(0) ); + m_xEdFieldSep->set_active(0); + m_xEdTextSep->set_active(0); if ( bOnlyDbtoolsEncodings ) { // Even dBase export allows multibyte now if ( bMultiByte ) - m_pLbCharset->FillFromDbTextEncodingMap( bImport ); + FillFromDbTextEncodingMap( bImport ); else - m_pLbCharset->FillFromDbTextEncodingMap( bImport, RTL_TEXTENCODING_INFO_MULTIBYTE ); + FillFromDbTextEncodingMap( bImport, RTL_TEXTENCODING_INFO_MULTIBYTE ); } else if ( !bAscii ) { //!TODO: Unicode would need work in each filter if ( bMultiByte ) - m_pLbCharset->FillFromTextEncodingTable( bImport, RTL_TEXTENCODING_INFO_UNICODE ); + FillFromTextEncodingTable( bImport, RTL_TEXTENCODING_INFO_UNICODE ); else - m_pLbCharset->FillFromTextEncodingTable( bImport, RTL_TEXTENCODING_INFO_UNICODE | + FillFromTextEncodingTable( bImport, RTL_TEXTENCODING_INFO_UNICODE | RTL_TEXTENCODING_INFO_MULTIBYTE ); } else @@ -177,20 +191,20 @@ ScImportOptionsDlg::ScImportOptionsDlg( aStr = pFieldSepTab->GetDelimiter( nCode ); if ( aStr.isEmpty() ) - m_pEdFieldSep->SetText( OUString(nCode) ); + m_xEdFieldSep->set_entry_text(OUString(nCode)); else - m_pEdFieldSep->SetText( aStr ); + m_xEdFieldSep->set_entry_text(aStr); nCode = pOptions->nTextSepCode; aStr = pTextSepTab->GetDelimiter( nCode ); if ( aStr.isEmpty() ) - m_pEdTextSep->SetText( OUString(nCode) ); + m_xEdTextSep->set_entry_text(OUString(nCode)); else - m_pEdTextSep->SetText( aStr ); + m_xEdTextSep->set_entry_text(aStr); } // all encodings allowed, even Unicode - m_pLbCharset->FillFromTextEncodingTable( bImport ); + FillFromTextEncodingTable( bImport ); } if( bAscii ) @@ -203,99 +217,76 @@ ScImportOptionsDlg::ScImportOptionsDlg( bool bQuoteAllTextCells = officecfg::Office::Calc::Dialogs::CSVExport::QuoteAllTextCells::get(); bool bFixedWidth = officecfg::Office::Calc::Dialogs::CSVExport::FixedWidth::get(); - m_pCbFixed->Show(); - m_pCbFixed->SetClickHdl( LINK( this, ScImportOptionsDlg, FixedWidthHdl ) ); - m_pCbFixed->Check( bFixedWidth ); - FixedWidthHdl(m_pCbFixed); - m_pCbShown->Show(); - m_pCbShown->Check( bSaveTrueCellContent ); - m_pCbQuoteAll->Show(); - m_pCbQuoteAll->Check( bQuoteAllTextCells ); - m_pCbFormulas->Show(); + m_xCbFixed->show(); + m_xCbFixed->connect_toggled(LINK(this, ScImportOptionsDlg, FixedWidthHdl)); + m_xCbFixed->set_active( bFixedWidth ); + FixedWidthHdl(*m_xCbFixed); + m_xCbShown->show(); + m_xCbShown->set_active( bSaveTrueCellContent ); + m_xCbQuoteAll->show(); + m_xCbQuoteAll->set_active( bQuoteAllTextCells ); + m_xCbFormulas->show(); // default option for "save formulas" no longer taken from view shell but from persisted dialog settings - m_pCbFormulas->Check( bSaveCellFormulas ); + m_xCbFormulas->set_active( bSaveCellFormulas ); // if no charset, text separator or field separator exist, keep the values from dialog initialization if (strFieldSeparator.getLength() > 0) - m_pEdFieldSep->SetText( strFieldSeparator ); + m_xEdFieldSep->set_entry_text(strFieldSeparator); if (strTextSeparator.getLength() > 0) - m_pEdTextSep->SetText( strTextSeparator ); + m_xEdTextSep->set_entry_text(strTextSeparator); if (nCharSet < 0 || nCharSet == RTL_TEXTENCODING_DONTKNOW ) - m_pLbCharset->SelectTextEncoding(pOptions ? pOptions->eCharSet : osl_getThreadTextEncoding()); + m_xLbCharset->SelectTextEncoding(pOptions ? pOptions->eCharSet : osl_getThreadTextEncoding()); else - m_pLbCharset->SelectTextEncoding(nCharSet); + m_xLbCharset->SelectTextEncoding(nCharSet); } else { - m_pFieldFrame->set_label(m_pFtCharset->GetText()); - m_pFtFieldSep->Hide(); - m_pFtTextSep->Hide(); - m_pFtCharset->Hide(); - m_pEdFieldSep->Hide(); - m_pEdTextSep->Hide(); - m_pCbFixed->Hide(); - m_pCbShown->Hide(); - m_pCbQuoteAll->Hide(); - m_pCbFormulas->Hide(); - m_pLbCharset->GrabFocus(); - m_pLbCharset->SetDoubleClickHdl( LINK( this, ScImportOptionsDlg, DoubleClickHdl ) ); - - m_pLbCharset->SelectTextEncoding(pOptions ? pOptions->eCharSet : - osl_getThreadTextEncoding()); + m_xFieldFrame->set_label(m_xFtCharset->get_label()); + m_xFtFieldSep->hide(); + m_xFtTextSep->hide(); + m_xFtCharset->hide(); + m_xEdFieldSep->hide(); + m_xEdTextSep->hide(); + m_xCbFixed->hide(); + m_xCbShown->hide(); + m_xCbQuoteAll->hide(); + m_xCbFormulas->hide(); + m_xTvCharset->grab_focus(); + m_xTvCharset->connect_row_activated(LINK(this, ScImportOptionsDlg, DoubleClickHdl)); + m_xTvCharset->SelectTextEncoding(pOptions ? pOptions->eCharSet : osl_getThreadTextEncoding()); } - // optional title: - if ( pStrTitle ) - SetText( *pStrTitle ); + if (pStrTitle) + m_xDialog->set_title(*pStrTitle); } ScImportOptionsDlg::~ScImportOptionsDlg() { - disposeOnce(); -} - -void ScImportOptionsDlg::dispose() -{ - pFieldSepTab.reset(); - pTextSepTab.reset(); - m_pEncGrid.clear(); - m_pFieldFrame.clear(); - m_pFtCharset.clear(); - m_pLbCharset.clear(); - m_pFtFieldSep.clear(); - m_pEdFieldSep.clear(); - m_pFtTextSep.clear(); - m_pEdTextSep.clear(); - m_pCbShown.clear(); - m_pCbFormulas.clear(); - m_pCbQuoteAll.clear(); - m_pCbFixed.clear(); - m_pBtnOk.clear(); - ModalDialog::dispose(); } void ScImportOptionsDlg::GetImportOptions( ScImportOptions& rOptions ) const { - rOptions.SetTextEncoding( m_pLbCharset->GetSelectTextEncoding() ); + auto nEncoding = m_bIsAsciiImport ? m_xLbCharset->GetSelectTextEncoding() : m_xTvCharset->GetSelectTextEncoding(); + rOptions.SetTextEncoding(nEncoding); - if ( m_pCbFixed->IsVisible() ) + if (m_xCbFixed->get_visible()) { - rOptions.nFieldSepCode = GetCodeFromCombo( *m_pEdFieldSep ); - rOptions.nTextSepCode = GetCodeFromCombo( *m_pEdTextSep ); - rOptions.bFixedWidth = m_pCbFixed->IsChecked(); - rOptions.bSaveAsShown = m_pCbShown->IsChecked(); - rOptions.bQuoteAllText = m_pCbQuoteAll->IsChecked(); - rOptions.bSaveFormulas = m_pCbFormulas->IsChecked(); + rOptions.nFieldSepCode = GetCodeFromCombo( *m_xEdFieldSep ); + rOptions.nTextSepCode = GetCodeFromCombo( *m_xEdTextSep ); + rOptions.bFixedWidth = m_xCbFixed->get_active(); + rOptions.bSaveAsShown = m_xCbShown->get_active(); + rOptions.bQuoteAllText = m_xCbQuoteAll->get_active(); + rOptions.bSaveFormulas = m_xCbFormulas->get_active(); } } -sal_uInt16 ScImportOptionsDlg::GetCodeFromCombo( const ComboBox& rEd ) const +sal_uInt16 ScImportOptionsDlg::GetCodeFromCombo(const weld::ComboBox& rEd) const { ScDelimiterTable* pTab; - OUString aStr( rEd.GetText() ); + OUString aStr( rEd.get_active_text() ); sal_uInt16 nCode; - if ( &rEd == m_pEdTextSep ) + if (&rEd == m_xEdTextSep.get()) pTab = pTextSepTab.get(); else pTab = pFieldSepTab.get(); @@ -315,43 +306,33 @@ sal_uInt16 ScImportOptionsDlg::GetCodeFromCombo( const ComboBox& rEd ) const return nCode; } -OString ScImportOptionsDlg::GetScreenshotId() const +IMPL_LINK_NOARG(ScImportOptionsDlg, FixedWidthHdl, weld::ToggleButton&, void) { - return (m_bIsAsciiImport) ? GetHelpId() : GetHelpId() + "?config=NonTextImport"; + bool bEnable = !m_xCbFixed->get_active(); + m_xFtFieldSep->set_sensitive( bEnable ); + m_xEdFieldSep->set_sensitive( bEnable ); + m_xFtTextSep->set_sensitive( bEnable ); + m_xEdTextSep->set_sensitive( bEnable ); + m_xCbShown->set_sensitive( bEnable ); + m_xCbQuoteAll->set_sensitive( bEnable ); } -IMPL_LINK( ScImportOptionsDlg, FixedWidthHdl, Button*, pCheckBox, void ) +IMPL_LINK_NOARG(ScImportOptionsDlg, DoubleClickHdl, weld::TreeView&, void) { - if (pCheckBox == m_pCbFixed) - { - bool bEnable = !m_pCbFixed->IsChecked(); - m_pFtFieldSep->Enable( bEnable ); - m_pEdFieldSep->Enable( bEnable ); - m_pFtTextSep->Enable( bEnable ); - m_pEdTextSep->Enable( bEnable ); - m_pCbShown->Enable( bEnable ); - m_pCbQuoteAll->Enable( bEnable ); - } -} - -IMPL_LINK( ScImportOptionsDlg, DoubleClickHdl, ListBox&, rLb, void ) -{ - if (&rLb == m_pLbCharset) - { - m_pBtnOk->Click(); - } + m_xDialog->response(RET_OK); } void ScImportOptionsDlg::SaveImportOptions() const { std::shared_ptr < comphelper::ConfigurationChanges > batch(comphelper::ConfigurationChanges::create()); - officecfg::Office::Calc::Dialogs::CSVExport::CharSet::set(m_pLbCharset->GetSelectTextEncoding(), batch); - officecfg::Office::Calc::Dialogs::CSVExport::FieldSeparator::set(m_pEdFieldSep->GetText(), batch); - officecfg::Office::Calc::Dialogs::CSVExport::TextSeparator::set(m_pEdTextSep->GetText(), batch); - officecfg::Office::Calc::Dialogs::CSVExport::FixedWidth::set(m_pCbFixed->IsChecked(), batch); - officecfg::Office::Calc::Dialogs::CSVExport::SaveCellFormulas::set(m_pCbFormulas->IsChecked(), batch); - officecfg::Office::Calc::Dialogs::CSVExport::SaveTrueCellContent::set(m_pCbShown->IsChecked(), batch); - officecfg::Office::Calc::Dialogs::CSVExport::QuoteAllTextCells::set(m_pCbQuoteAll->IsChecked(), batch); + auto nEncoding = m_bIsAsciiImport ? m_xLbCharset->GetSelectTextEncoding() : m_xTvCharset->GetSelectTextEncoding(); + officecfg::Office::Calc::Dialogs::CSVExport::CharSet::set(nEncoding, batch); + officecfg::Office::Calc::Dialogs::CSVExport::FieldSeparator::set(m_xEdFieldSep->get_active_text(), batch); + officecfg::Office::Calc::Dialogs::CSVExport::TextSeparator::set(m_xEdTextSep->get_active_text(), batch); + officecfg::Office::Calc::Dialogs::CSVExport::FixedWidth::set(m_xCbFixed->get_active(), batch); + officecfg::Office::Calc::Dialogs::CSVExport::SaveCellFormulas::set(m_xCbFormulas->get_active(), batch); + officecfg::Office::Calc::Dialogs::CSVExport::SaveTrueCellContent::set(m_xCbShown->get_active(), batch); + officecfg::Office::Calc::Dialogs::CSVExport::QuoteAllTextCells::set(m_xCbQuoteAll->get_active(), batch); batch->commit(); } diff --git a/sc/source/ui/inc/scuiimoptdlg.hxx b/sc/source/ui/inc/scuiimoptdlg.hxx index d97524a6dec6..8d9699c20375 100644 --- a/sc/source/ui/inc/scuiimoptdlg.hxx +++ b/sc/source/ui/inc/scuiimoptdlg.hxx @@ -20,57 +20,56 @@ #ifndef INCLUDED_SC_SOURCE_UI_INC_SCUIIMOPTDLG_HXX #define INCLUDED_SC_SOURCE_UI_INC_SCUIIMOPTDLG_HXX -#include <vcl/layout.hxx> -#include <vcl/dialog.hxx> +#include <vcl/weld.hxx> #include <svx/txencbox.hxx> class ScDelimiterTable; class ScImportOptions; -class ScImportOptionsDlg : public ModalDialog +class ScImportOptionsDlg : public weld::GenericDialogController { public: - ScImportOptionsDlg( vcl::Window* pParent, - bool bAscii, - const ScImportOptions* pOptions, - const OUString* pStrTitle, - bool bMultiByte, - bool bOnlyDbtoolsEncodings, - bool bImport ); + ScImportOptionsDlg(weld::Window* pParent, + bool bAscii, + const ScImportOptions* pOptions, + const OUString* pStrTitle, + bool bMultiByte, + bool bOnlyDbtoolsEncodings, + bool bImport); virtual ~ScImportOptionsDlg() override; - virtual void dispose() override; void GetImportOptions( ScImportOptions& rOptions ) const; void SaveImportOptions() const; - virtual OString GetScreenshotId() const override; private: - VclPtr<VclFrame> m_pFieldFrame; - VclPtr<FixedText> m_pFtCharset; - VclPtr<VclContainer> m_pEncGrid; - VclPtr<SvxTextEncodingBox> m_pLbCharset; - VclPtr<FixedText> m_pFtFieldSep; - VclPtr<ComboBox> m_pEdFieldSep; - VclPtr<FixedText> m_pFtTextSep; - VclPtr<ComboBox> m_pEdTextSep; - VclPtr<CheckBox> m_pCbShown; - VclPtr<CheckBox> m_pCbFormulas; - VclPtr<CheckBox> m_pCbQuoteAll; - VclPtr<CheckBox> m_pCbFixed; - VclPtr<OKButton> m_pBtnOk; - - std::unique_ptr<ScDelimiterTable> pFieldSepTab; std::unique_ptr<ScDelimiterTable> pTextSepTab; bool const m_bIsAsciiImport; + std::unique_ptr<weld::Frame> m_xFieldFrame; + std::unique_ptr<weld::Label> m_xFtCharset; + std::unique_ptr<weld::Widget> m_xEncGrid; + std::unique_ptr<weld::Label> m_xFtFieldSep; + std::unique_ptr<weld::ComboBox> m_xEdFieldSep; + std::unique_ptr<weld::Label> m_xFtTextSep; + std::unique_ptr<weld::ComboBox> m_xEdTextSep; + std::unique_ptr<weld::CheckButton> m_xCbShown; + std::unique_ptr<weld::CheckButton> m_xCbFormulas; + std::unique_ptr<weld::CheckButton> m_xCbQuoteAll; + std::unique_ptr<weld::CheckButton> m_xCbFixed; + std::unique_ptr<weld::Button> m_xBtnOk; + std::unique_ptr<TextEncodingBox> m_xLbCharset; + std::unique_ptr<TextEncodingTreeView> m_xTvCharset; + private: - sal_uInt16 GetCodeFromCombo( const ComboBox& rEd ) const; + sal_uInt16 GetCodeFromCombo( const weld::ComboBox& rEd ) const; + void FillFromTextEncodingTable(bool bExcludeImportSubsets, sal_uInt32 nExcludeInfoFlags = 0); + void FillFromDbTextEncodingMap(bool bExcludeImportSubsets, sal_uInt32 nExcludeInfoFlags = 0); - DECL_LINK( FixedWidthHdl, Button*, void ); - DECL_LINK( DoubleClickHdl, ListBox&, void ); + DECL_LINK(FixedWidthHdl, weld::ToggleButton&, void); + DECL_LINK(DoubleClickHdl, weld::TreeView&, void); }; #endif diff --git a/sc/source/ui/unoobj/filtuno.cxx b/sc/source/ui/unoobj/filtuno.cxx index 947f59869903..2de9e1d5b190 100644 --- a/sc/source/ui/unoobj/filtuno.cxx +++ b/sc/source/ui/unoobj/filtuno.cxx @@ -316,7 +316,7 @@ sal_Int16 SAL_CALL ScFilterOptionsObj::execute() } else { - ScopedVclPtr<AbstractScImportOptionsDlg> pDlg(pFact->CreateScImportOptionsDlg( + ScopedVclPtr<AbstractScImportOptionsDlg> pDlg(pFact->CreateScImportOptionsDlg(Application::GetFrameWeld(xDialogParent), bAscii, &aOptions, &aTitle, bDBEnc, !bExport)); if ( pDlg->Execute() == RET_OK ) diff --git a/sc/uiconfig/scalc/ui/imoptdialog.ui b/sc/uiconfig/scalc/ui/imoptdialog.ui index 2d065cc3bd8f..fe4526d65f32 100644 --- a/sc/uiconfig/scalc/ui/imoptdialog.ui +++ b/sc/uiconfig/scalc/ui/imoptdialog.ui @@ -1,13 +1,26 @@ <?xml version="1.0" encoding="UTF-8"?> -<!-- Generated with glade 3.18.3 --> +<!-- Generated with glade 3.22.1 --> <interface domain="sc"> <requires lib="gtk+" version="3.18"/> - <requires lib="LibreOffice" version="1.0"/> + <object class="GtkTreeStore" id="liststore1"> + <columns> + <!-- column-name text --> + <column type="gchararray"/> + <!-- column-name id --> + <column type="gchararray"/> + </columns> + </object> <object class="GtkDialog" id="ImOptDialog"> <property name="can_focus">False</property> <property name="border_width">6</property> <property name="title" translatable="yes" context="imoptdialog|ImOptDialog">Import File</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> @@ -22,6 +35,7 @@ <property name="label">gtk-ok</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_stock">True</property> @@ -37,6 +51,7 @@ <property name="label">gtk-cancel</property> <property name="visible">True</property> <property name="can_focus">True</property> + <property name="can_default">True</property> <property name="receives_default">True</property> <property name="use_stock">True</property> </object> @@ -73,10 +88,10 @@ <object class="GtkFrame" id="fieldframe"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="label_xalign">0</property> - <property name="shadow_type">none</property> <property name="hexpand">True</property> <property name="vexpand">True</property> + <property name="label_xalign">0</property> + <property name="shadow_type">none</property> <child> <object class="GtkAlignment" id="alignment1"> <property name="visible">True</property> @@ -93,9 +108,9 @@ <object class="GtkLabel" id="charsetft"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="xalign">0</property> <property name="label" translatable="yes" context="imoptdialog|charsetft">_Character set:</property> <property name="use_underline">True</property> + <property name="xalign">0</property> </object> <packing> <property name="left_attach">0</property> @@ -106,10 +121,10 @@ <object class="GtkLabel" id="fieldft"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="xalign">0</property> <property name="label" translatable="yes" context="imoptdialog|fieldft">_Field delimiter:</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> @@ -120,10 +135,10 @@ <object class="GtkLabel" id="textft"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="xalign">0</property> <property name="label" translatable="yes" context="imoptdialog|textft">Strin_g delimiter:</property> <property name="use_underline">True</property> <property name="mnemonic_widget">text</property> + <property name="xalign">0</property> </object> <packing> <property name="left_attach">0</property> @@ -202,6 +217,7 @@ <child internal-child="entry"> <object class="GtkEntry" id="comboboxtext-entry"> <property name="can_focus">False</property> + <property name="activates_default">True</property> </object> </child> </object> @@ -218,6 +234,7 @@ <child internal-child="entry"> <object class="GtkEntry" id="comboboxtext-entry2"> <property name="can_focus">True</property> + <property name="activates_default">True</property> </object> </child> </object> @@ -232,23 +249,52 @@ <property name="can_focus">False</property> <property name="hexpand">True</property> <child> - <object class="svxlo-SvxTextEncodingBox" id="charsetdropdown"> + <object class="GtkComboBoxText" id="charsetdropdown"> <property name="can_focus">False</property> <property name="no_show_all">True</property> <property name="hexpand">True</property> - </object> + </object> <packing> <property name="left_attach">0</property> <property name="top_attach">0</property> </packing> </child> <child> - <object class="svxlo-SvxTextEncodingBox" id="charsetlist:border"> - <property name="dropdown">False</property> - <property name="can_focus">False</property> - <property name="no_show_all">True</property> + <object class="GtkScrolledWindow"> + <property name="visible">True</property> + <property name="can_focus">True</property> <property name="hexpand">True</property> <property name="vexpand">True</property> + <property name="hscrollbar_policy">never</property> + <property name="shadow_type">in</property> + <child> + <object class="GtkTreeView" id="charsetlist"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="hexpand">True</property> + <property name="vexpand">True</property> + <property name="model">liststore1</property> + <property name="headers_visible">False</property> + <property name="search_column">0</property> + <property name="show_expanders">False</property> + <child internal-child="selection"> + <object class="GtkTreeSelection" id="Macro Library List-selection2"/> + </child> + <child> + <object class="GtkTreeViewColumn" id="treeviewcolumn5"> + <property name="resizable">True</property> + <property name="spacing">6</property> + <child> + <object class="GtkCellRendererText" id="cellrenderer4"/> + <attributes> + <attribute name="text">0</attribute> + </attributes> + </child> + </object> + </child> + </object> + </child> </object> <packing> <property name="left_attach">1</property> @@ -270,6 +316,7 @@ <property name="visible">True</property> <property name="can_focus">False</property> <property name="label" translatable="yes" context="imoptdialog|label">Field Options</property> + <property name="use_underline">True</property> <attributes> <attribute name="weight" value="bold"/> </attributes> |