diff options
-rw-r--r-- | officecfg/registry/schema/org/openoffice/Office/Calc.xcs | 14 | ||||
-rw-r--r-- | sc/source/ui/dbgui/scuiasciiopt.cxx | 235 | ||||
-rw-r--r-- | sc/source/ui/docshell/impex.cxx | 21 | ||||
-rw-r--r-- | sc/source/ui/inc/asciiopt.hxx | 3 | ||||
-rw-r--r-- | sc/source/ui/inc/scuiasciiopt.hxx | 1 | ||||
-rw-r--r-- | sc/uiconfig/scalc/ui/textimportcsv.ui | 18 |
6 files changed, 185 insertions, 107 deletions
diff --git a/officecfg/registry/schema/org/openoffice/Office/Calc.xcs b/officecfg/registry/schema/org/openoffice/Office/Calc.xcs index 42d535a6a795..2d5e7a8696e0 100644 --- a/officecfg/registry/schema/org/openoffice/Office/Calc.xcs +++ b/officecfg/registry/schema/org/openoffice/Office/Calc.xcs @@ -1177,6 +1177,13 @@ </info> <value>true</value> </prop> + <prop oor:name="SkipEmptyCells" oor:type="xs:boolean" oor:nillable="false"> + <info> + <desc>If true, Calc preserves previous content of cells when pasting empty ones. If false, Calc delete content of previous cells.</desc> + <label>SkipEmptyCells</label> + </info> + <value>true</value> + </prop> <prop oor:name="Language" oor:type="xs:int" oor:nillable="false"> <info> <desc>Language to use for CSV import. This determines how the numbers are parsed.</desc> @@ -1245,6 +1252,13 @@ </info> <value> </value> </prop> + <prop oor:name="SkipEmptyCells" oor:type="xs:boolean" oor:nillable="false"> + <info> + <desc>If true, Calc preserves previous content of cells when pasting empty ones. If false, Calc delete content of previous cells.</desc> + <label>SkipEmptyCells</label> + </info> + <value>false</value> + </prop> <prop oor:name="TextSeparators" oor:type="xs:string" oor:nillable="false"> <info> <desc>Text Separators</desc> diff --git a/sc/source/ui/dbgui/scuiasciiopt.cxx b/sc/source/ui/dbgui/scuiasciiopt.cxx index ec3604fde5c7..69cfdc65324a 100644 --- a/sc/source/ui/dbgui/scuiasciiopt.cxx +++ b/sc/source/ui/dbgui/scuiasciiopt.cxx @@ -52,18 +52,37 @@ const SCSIZE ASCIIDLG_MAXROWS = MAXROWCOUNT; using namespace com::sun::star::uno; // Defines - CSV Import Preserve Options -#define FIXED_WIDTH "FixedWidth" -#define FROM_ROW "FromRow" -#define CHAR_SET "CharSet" -#define SEPARATORS "Separators" -#define TEXT_SEPARATORS "TextSeparators" -#define MERGE_DELIMITERS "MergeDelimiters" -#define QUOTED_AS_TEXT "QuotedFieldAsText" -#define DETECT_SPECIAL_NUM "DetectSpecialNumbers" -#define LANGUAGE "Language" -#define SEP_PATH "Office.Calc/Dialogs/CSVImport" -#define SEP_PATH_CLPBRD "Office.Calc/Dialogs/ClipboardTextImport" -#define SEP_PATH_TEXT2COL "Office.Calc/Dialogs/TextToColumnsImport" +enum CSVImportOptionsIndex +{ + CSVIO_MergeDelimiters = 0, + CSVIO_Separators, + CSVIO_TextSeparators, + CSVIO_FixedWidth, + CSVIO_FromRow, + CSVIO_Text2ColSkipEmptyCells = CSVIO_FromRow, + CSVIO_CharSet, + CSVIO_QuotedAsText, + CSVIO_DetectSpecialNum, + CSVIO_Language, + CSVIO_PasteSkipEmptyCells +}; + +const ::std::vector<OUString> CSVImportOptionNames = +{ + "MergeDelimiters", + "Separators", + "TextSeparators", + "FixedWidth", + "FromRow", + "CharSet", + "QuotedFieldAsText", + "DetectSpecialNumbers", + "Language", + "SkipEmptyCells" +}; +const OUString aSep_Path = "Office.Calc/Dialogs/CSVImport"; +const OUString aSep_Path_Clpbrd = "Office.Calc/Dialogs/ClipboardTextImport"; +const OUString aSep_Path_Text2Col = "Office.Calc/Dialogs/TextToColumnsImport"; static void lcl_FillCombo( ComboBox& rCombo, const OUString& rList, sal_Unicode cSelect ) { @@ -110,129 +129,134 @@ static sal_Unicode lcl_CharFromCombo( const ComboBox& rCombo, const OUString& rL return c; } -static void load_Separators( OUString &sFieldSeparators, OUString &sTextSeparators, - bool &bMergeDelimiters, bool& bQuotedAsText, bool& bDetectSpecialNum, - bool &bFixedWidth, sal_Int32 &nFromRow, sal_Int32 &nCharSet, - sal_Int32& nLanguage, ScImportAsciiCall eCall ) +void lcl_CreatePropertiesNames ( OUString& rSepPath, Sequence<OUString>& rNames, ScImportAsciiCall eCall ) { - Sequence<Any>aValues; - const Any *pProperties; - Sequence<OUString> aNames( eCall == SC_TEXTTOCOLUMNS ? 4 : 9 ); - OUString* pNames = aNames.getArray(); - OUString aSepPath; + sal_Int32 nProperties = 0; + switch(eCall) { case SC_IMPORTFILE: - aSepPath = SEP_PATH; + rSepPath = aSep_Path; + nProperties = 9; break; case SC_PASTETEXT: - aSepPath = SEP_PATH_CLPBRD; + rSepPath = aSep_Path_Clpbrd; + nProperties = 10; break; case SC_TEXTTOCOLUMNS: default: - aSepPath = SEP_PATH_TEXT2COL; + rSepPath = aSep_Path_Text2Col; + nProperties = 5; break; } - ScLinkConfigItem aItem( aSepPath ); - - pNames[0] = MERGE_DELIMITERS; - pNames[1] = SEPARATORS; - pNames[2] = TEXT_SEPARATORS; - pNames[3] = FIXED_WIDTH; + rNames.realloc( nProperties ); + OUString* pNames = rNames.getArray(); + pNames[ CSVIO_MergeDelimiters ] = CSVImportOptionNames[ CSVIO_MergeDelimiters ]; + pNames[ CSVIO_Separators ] = CSVImportOptionNames[ CSVIO_Separators ]; + pNames[ CSVIO_TextSeparators ] = CSVImportOptionNames[ CSVIO_TextSeparators ]; + pNames[ CSVIO_FixedWidth ] = CSVImportOptionNames[ CSVIO_FixedWidth ]; if (eCall != SC_TEXTTOCOLUMNS) { - pNames[4] = FROM_ROW; - pNames[5] = CHAR_SET; - pNames[6] = QUOTED_AS_TEXT; - pNames[7] = DETECT_SPECIAL_NUM; - pNames[8] = LANGUAGE; + pNames[ CSVIO_FromRow ] = CSVImportOptionNames[ CSVIO_FromRow ]; + pNames[ CSVIO_CharSet ] = CSVImportOptionNames[ CSVIO_CharSet ]; + pNames[ CSVIO_QuotedAsText ] = CSVImportOptionNames[ CSVIO_QuotedAsText ]; + pNames[ CSVIO_DetectSpecialNum ] = CSVImportOptionNames[ CSVIO_DetectSpecialNum ]; + pNames[ CSVIO_Language ] = CSVImportOptionNames[ CSVIO_Language ]; + } + if (eCall != SC_IMPORTFILE) + { + pNames[ eCall == SC_TEXTTOCOLUMNS ? + CSVIO_Text2ColSkipEmptyCells : + CSVIO_PasteSkipEmptyCells ] = CSVImportOptionNames[ CSVIO_PasteSkipEmptyCells ]; } +} + +static void lcl_LoadSeparators( OUString& rFieldSeparators, OUString& rTextSeparators, + bool& rMergeDelimiters, bool& rQuotedAsText, bool& rDetectSpecialNum, + bool& rFixedWidth, sal_Int32& rFromRow, sal_Int32& rCharSet, + sal_Int32& rLanguage, bool& rSkipEmptyCells, ScImportAsciiCall eCall ) +{ + Sequence<Any>aValues; + const Any *pProperties; + Sequence<OUString> aNames; + OUString aSepPath; + lcl_CreatePropertiesNames ( aSepPath, aNames, eCall); + ScLinkConfigItem aItem( aSepPath ); aValues = aItem.GetProperties( aNames ); pProperties = aValues.getConstArray(); - if( pProperties[0].hasValue() ) - bMergeDelimiters = ScUnoHelpFunctions::GetBoolFromAny( pProperties[0] ); + if( pProperties[ CSVIO_MergeDelimiters ].hasValue() ) + rMergeDelimiters = ScUnoHelpFunctions::GetBoolFromAny( pProperties[ CSVIO_MergeDelimiters ] ); - if( pProperties[1].hasValue() ) - pProperties[1] >>= sFieldSeparators; + if( pProperties[ CSVIO_Separators ].hasValue() ) + pProperties[ CSVIO_Separators ] >>= rFieldSeparators; - if( pProperties[2].hasValue() ) - pProperties[2] >>= sTextSeparators; + if( pProperties[ CSVIO_TextSeparators ].hasValue() ) + pProperties[ CSVIO_TextSeparators ] >>= rTextSeparators; - if( pProperties[3].hasValue() ) - bFixedWidth = ScUnoHelpFunctions::GetBoolFromAny( pProperties[3] ); + if( pProperties[ CSVIO_FixedWidth ].hasValue() ) + rFixedWidth = ScUnoHelpFunctions::GetBoolFromAny( pProperties[ CSVIO_FixedWidth ] ); if (eCall != SC_TEXTTOCOLUMNS) { - if( pProperties[4].hasValue() ) - pProperties[4] >>= nFromRow; + if( pProperties[ CSVIO_FromRow ].hasValue() ) + pProperties[ CSVIO_FromRow ] >>= rFromRow; - if( pProperties[5].hasValue() ) - pProperties[5] >>= nCharSet; + if( pProperties[ CSVIO_CharSet ].hasValue() ) + pProperties[ CSVIO_CharSet ] >>= rCharSet; - if ( pProperties[6].hasValue() ) - pProperties[6] >>= bQuotedAsText; + if ( pProperties[ CSVIO_QuotedAsText ].hasValue() ) + pProperties[ CSVIO_QuotedAsText ] >>= rQuotedAsText; - if ( pProperties[7].hasValue() ) - pProperties[7] >>= bDetectSpecialNum; + if ( pProperties[ CSVIO_DetectSpecialNum ].hasValue() ) + pProperties[ CSVIO_DetectSpecialNum ] >>= rDetectSpecialNum; - if ( pProperties[8].hasValue() ) - pProperties[8] >>= nLanguage; + if ( pProperties[ CSVIO_Language ].hasValue() ) + pProperties[ CSVIO_Language ] >>= rLanguage; + } + if (eCall != SC_IMPORTFILE) + { + sal_Int32 nSkipEmptyCells = eCall == SC_TEXTTOCOLUMNS ? + CSVIO_Text2ColSkipEmptyCells : + CSVIO_PasteSkipEmptyCells; + if( pProperties[nSkipEmptyCells].hasValue() ) + rSkipEmptyCells = ScUnoHelpFunctions::GetBoolFromAny( pProperties[nSkipEmptyCells] ); } } -static void save_Separators( - const OUString& maSeparators, const OUString& maTxtSep, bool bMergeDelimiters, bool bQuotedAsText, +static void lcl_SaveSeparators( + const OUString& rSeparators, const OUString& rTxtSep, bool bMergeDelimiters, bool bQuotedAsText, bool bDetectSpecialNum, bool bFixedWidth, sal_Int32 nFromRow, - sal_Int32 nCharSet, sal_Int32 nLanguage, ScImportAsciiCall eCall ) + sal_Int32 nCharSet, sal_Int32 nLanguage, bool bSkipEmptyCells, ScImportAsciiCall eCall ) { - OUString sFieldSeparators = maSeparators; - OUString sTextSeparators = maTxtSep; + OUString sFieldSeparators = rSeparators; + OUString sTextSeparators = rTxtSep; Sequence<Any> aValues; Any *pProperties; - Sequence<OUString> aNames( eCall == SC_TEXTTOCOLUMNS ? 4 : 9 ); - OUString* pNames = aNames.getArray(); + Sequence<OUString> aNames; OUString aSepPath; - switch(eCall) - { - case SC_IMPORTFILE: - aSepPath = SEP_PATH; - break; - case SC_PASTETEXT: - aSepPath = SEP_PATH_CLPBRD; - break; - case SC_TEXTTOCOLUMNS: - default: - aSepPath = SEP_PATH_TEXT2COL; - break; - } + lcl_CreatePropertiesNames ( aSepPath, aNames, eCall ); ScLinkConfigItem aItem( aSepPath ); + aValues = aItem.GetProperties( aNames ); + pProperties = aValues.getArray(); - pNames[0] = MERGE_DELIMITERS; - pNames[1] = SEPARATORS; - pNames[2] = TEXT_SEPARATORS; - pNames[3] = FIXED_WIDTH; + pProperties[ CSVIO_MergeDelimiters ] <<= bMergeDelimiters; + pProperties[ CSVIO_Separators ] <<= sFieldSeparators; + pProperties[ CSVIO_TextSeparators ] <<= sTextSeparators; + pProperties[ CSVIO_FixedWidth ] <<= bFixedWidth; if (eCall != SC_TEXTTOCOLUMNS) { - pNames[4] = FROM_ROW; - pNames[5] = CHAR_SET; - pNames[6] = QUOTED_AS_TEXT; - pNames[7] = DETECT_SPECIAL_NUM; - pNames[8] = LANGUAGE; + pProperties[ CSVIO_FromRow ] <<= nFromRow; + pProperties[ CSVIO_CharSet ] <<= nCharSet; + pProperties[ CSVIO_QuotedAsText ] <<= bQuotedAsText; + pProperties[ CSVIO_DetectSpecialNum ] <<= bDetectSpecialNum; + pProperties[ CSVIO_Language ] <<= nLanguage; } - aValues = aItem.GetProperties( aNames ); - pProperties = aValues.getArray(); - pProperties[0] <<= bMergeDelimiters; - pProperties[1] <<= sFieldSeparators; - pProperties[2] <<= sTextSeparators; - pProperties[3] <<= bFixedWidth; - if (eCall != SC_TEXTTOCOLUMNS) + if (eCall != SC_IMPORTFILE) { - pProperties[4] <<= nFromRow; - pProperties[5] <<= nCharSet; - pProperties[6] <<= bQuotedAsText; - pProperties[7] <<= bDetectSpecialNum; - pProperties[8] <<= nLanguage; + pProperties[ eCall == SC_TEXTTOCOLUMNS ? + CSVIO_Text2ColSkipEmptyCells : + CSVIO_PasteSkipEmptyCells ] <<= bSkipEmptyCells; } aItem.PutProperties(aNames, aValues); @@ -275,6 +299,7 @@ ScImportAsciiDlg::ScImportAsciiDlg( vcl::Window* pParent, const OUString& aDatNa get(pCbTextSep, "textdelimiter"); get(pCkbQuotedAsText, "quotedfieldastext"); get(pCkbDetectNumber, "detectspecialnumbers"); + get(pCkbSkipEmptyCells, "skipemptycells"); get(pFtType, "textcolumntype"); get(pLbType, "columntype"); get(mpTableBox, "scrolledwindowcolumntype"); @@ -303,11 +328,13 @@ ScImportAsciiDlg::ScImportAsciiDlg( vcl::Window* pParent, const OUString& aDatNa bool bFixedWidth = false; bool bQuotedFieldAsText = false; bool bDetectSpecialNum = true; + bool bSkipEmptyCells = true; sal_Int32 nFromRow = 1; sal_Int32 nCharSet = -1; sal_Int32 nLanguage = 0; - load_Separators (sFieldSeparators, sTextSeparators, bMergeDelimiters, - bQuotedFieldAsText, bDetectSpecialNum, bFixedWidth, nFromRow, nCharSet, nLanguage, meCall); + lcl_LoadSeparators (sFieldSeparators, sTextSeparators, bMergeDelimiters, + bQuotedFieldAsText, bDetectSpecialNum, bFixedWidth, nFromRow, + nCharSet, nLanguage, bSkipEmptyCells, meCall); // load from saved settings maFieldSeparators = sFieldSeparators; @@ -317,6 +344,8 @@ ScImportAsciiDlg::ScImportAsciiDlg( vcl::Window* pParent, const OUString& aDatNa pCkbQuotedAsText->Check(); if (bDetectSpecialNum) pCkbDetectNumber->Check(); + if (bSkipEmptyCells) + pCkbSkipEmptyCells->Check(); if( bFixedWidth && !bIsTSV ) pRbFixed->Check(); if( nFromRow != 1 ) @@ -390,6 +419,7 @@ ScImportAsciiDlg::ScImportAsciiDlg( vcl::Window* pParent, const OUString& aDatNa pCkbAsOnce->SetClickHdl( aSeparatorClickHdl ); pCkbQuotedAsText->SetClickHdl( aSeparatorClickHdl ); pCkbDetectNumber->SetClickHdl( aSeparatorClickHdl ); + pCkbSkipEmptyCells->SetClickHdl( aSeparatorClickHdl ); pCkbSpace->SetClickHdl( aSeparatorClickHdl ); pCkbOther->SetClickHdl( aSeparatorClickHdl ); pEdOther->SetModifyHdl( aSeparatorHdl ); @@ -468,6 +498,12 @@ ScImportAsciiDlg::ScImportAsciiDlg( vcl::Window* pParent, const OUString& aDatNa pCkbDetectNumber->Check(); pCkbDetectNumber->Disable(); } + if (meCall == SC_IMPORTFILE) + { + //Empty cells in imported file are empty + pCkbSkipEmptyCells->Check(false); + pCkbSkipEmptyCells->Hide(); + } } ScImportAsciiDlg::~ScImportAsciiDlg() @@ -497,6 +533,7 @@ void ScImportAsciiDlg::dispose() pCbTextSep.clear(); pCkbQuotedAsText.clear(); pCkbDetectNumber.clear(); + pCkbSkipEmptyCells.clear(); pFtType.clear(); pLbType.clear(); mpTableBox.clear(); @@ -584,16 +621,18 @@ void ScImportAsciiDlg::GetOptions( ScAsciiOptions& rOpt ) rOpt.SetQuotedAsText(pCkbQuotedAsText->IsChecked()); rOpt.SetDetectSpecialNumber(pCkbDetectNumber->IsChecked()); + rOpt.SetSkipEmptyCells(pCkbSkipEmptyCells->IsChecked()); } void ScImportAsciiDlg::SaveParameters() { - save_Separators( maFieldSeparators, pCbTextSep->GetText(), pCkbAsOnce->IsChecked(), + lcl_SaveSeparators( maFieldSeparators, pCbTextSep->GetText(), pCkbAsOnce->IsChecked(), pCkbQuotedAsText->IsChecked(), pCkbDetectNumber->IsChecked(), pRbFixed->IsChecked(), static_cast<sal_Int32>(pNfRow->GetValue()), pLbCharSet->GetSelectedEntryPos(), - static_cast<sal_uInt16>(pLbCustomLang->GetSelectLanguage()), meCall ); + static_cast<sal_uInt16>(pLbCustomLang->GetSelectLanguage()), + pCkbSkipEmptyCells->IsChecked(), meCall ); } void ScImportAsciiDlg::SetSeparators() diff --git a/sc/source/ui/docshell/impex.cxx b/sc/source/ui/docshell/impex.cxx index e11fb4eec704..175f3a6b3a07 100644 --- a/sc/source/ui/docshell/impex.cxx +++ b/sc/source/ui/docshell/impex.cxx @@ -932,7 +932,7 @@ bool ScImportExport::Text2Doc( SvStream& rStrm ) static bool lcl_PutString( ScDocumentImport& rDocImport, bool bUseDocImport, SCCOL nCol, SCROW nRow, SCTAB nTab, const OUString& rStr, sal_uInt8 nColFormat, - SvNumberFormatter* pFormatter, bool bDetectNumFormat, + SvNumberFormatter* pFormatter, bool bDetectNumFormat, bool bSkipEmptyCells, const ::utl::TransliterationWrapper& rTransliteration, CalendarWrapper& rCalendar, const ::utl::TransliterationWrapper* pSecondTransliteration, CalendarWrapper* pSecondCalendar ) { @@ -940,11 +940,15 @@ static bool lcl_PutString( bool bMultiLine = false; if ( nColFormat == SC_COL_SKIP || !ValidCol(nCol) || !ValidRow(nRow) ) return bMultiLine; - if ( rStr.isEmpty() ) { - if ( bUseDocImport ) - rDocImport.setAutoInput(ScAddress(nCol, nRow, nTab), rStr ); - else - pDoc->SetString( nCol, nRow, nTab, rStr ); + if ( rStr.isEmpty() ) + { + if ( !bSkipEmptyCells ) + { // delete destination cell + if ( bUseDocImport ) + rDocImport.setAutoInput(ScAddress(nCol, nRow, nTab), rStr ); + else + pDoc->SetString( nCol, nRow, nTab, rStr ); + } return false; } @@ -1292,6 +1296,7 @@ bool ScImportExport::ExtText2Doc( SvStream& rStrm ) LanguageType eDocLang = pExtOptions->GetLanguage(); SvNumberFormatter aNumFormatter( comphelper::getProcessComponentContext(), eDocLang); bool bDetectNumFormat = pExtOptions->IsDetectSpecialNumber(); + bool bSkipEmptyCells = pExtOptions->IsSkipEmptyCells(); // For date recognition ::utl::TransliterationWrapper aTransliteration( @@ -1381,7 +1386,7 @@ bool ScImportExport::ExtText2Doc( SvStream& rStrm ) bMultiLine |= lcl_PutString( aDocImport, !mbOverwriting, nCol, nRow, nTab, aCell, nFmt, - &aNumFormatter, bDetectNumFormat, aTransliteration, aCalendar, + &aNumFormatter, bDetectNumFormat, bSkipEmptyCells, aTransliteration, aCalendar, pEnglishTransliteration.get(), pEnglishCalendar.get()); } ++nCol; @@ -1424,7 +1429,7 @@ bool ScImportExport::ExtText2Doc( SvStream& rStrm ) bMultiLine |= lcl_PutString( aDocImport, !mbOverwriting, nCol, nRow, nTab, aCell, nFmt, - &aNumFormatter, bDetectNumFormat, aTransliteration, + &aNumFormatter, bDetectNumFormat, bSkipEmptyCells, aTransliteration, aCalendar, pEnglishTransliteration.get(), pEnglishCalendar.get()); } ++nCol; diff --git a/sc/source/ui/inc/asciiopt.hxx b/sc/source/ui/inc/asciiopt.hxx index 5f1bfda2f4ff..cfb2a20660ed 100644 --- a/sc/source/ui/inc/asciiopt.hxx +++ b/sc/source/ui/inc/asciiopt.hxx @@ -33,6 +33,7 @@ private: bool bMergeFieldSeps; bool bQuotedFieldAsText; bool bDetectSpecialNumber; + bool bSkipEmptyCells; sal_Unicode cTextSep; rtl_TextEncoding eCharSet; LanguageType eLang; @@ -57,6 +58,7 @@ public: bool IsMergeSeps() const { return bMergeFieldSeps; } bool IsQuotedAsText() const { return bQuotedFieldAsText; } bool IsDetectSpecialNumber() const { return bDetectSpecialNumber; } + bool IsSkipEmptyCells() const { return bSkipEmptyCells; } sal_Unicode GetTextSep() const { return cTextSep; } bool IsFixedLen() const { return bFixedLen; } sal_uInt16 GetInfoCount() const { return mvColStart.size(); } @@ -72,6 +74,7 @@ public: void SetMergeSeps( bool bSet ) { bMergeFieldSeps = bSet; } void SetQuotedAsText(bool bSet) { bQuotedFieldAsText = bSet; } void SetDetectSpecialNumber(bool bSet) { bDetectSpecialNumber = bSet; } + void SetSkipEmptyCells(bool bSet) { bSkipEmptyCells = bSet; } void SetTextSep( sal_Unicode c ) { cTextSep = c; } void SetStartRow( long nRow) { nStartRow= nRow; } void SetLanguage(LanguageType e) { eLang = e; } diff --git a/sc/source/ui/inc/scuiasciiopt.hxx b/sc/source/ui/inc/scuiasciiopt.hxx index e25904e51569..67f87d523eb0 100644 --- a/sc/source/ui/inc/scuiasciiopt.hxx +++ b/sc/source/ui/inc/scuiasciiopt.hxx @@ -73,6 +73,7 @@ class ScImportAsciiDlg : public ModalDialog VclPtr<CheckBox> pCkbQuotedAsText; VclPtr<CheckBox> pCkbDetectNumber; + VclPtr<CheckBox> pCkbSkipEmptyCells; VclPtr<FixedText> pFtType; VclPtr<ListBox> pLbType; diff --git a/sc/uiconfig/scalc/ui/textimportcsv.ui b/sc/uiconfig/scalc/ui/textimportcsv.ui index 91b6a962938c..6605b1974471 100644 --- a/sc/uiconfig/scalc/ui/textimportcsv.ui +++ b/sc/uiconfig/scalc/ui/textimportcsv.ui @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<!-- Generated with glade 3.20.0 --> +<!-- Generated with glade 3.18.3 --> <interface domain="sc"> <requires lib="gtk+" version="3.0"/> <requires lib="LibreOffice" version="1.0"/> @@ -540,6 +540,22 @@ <property name="position">1</property> </packing> </child> + <child> + <object class="GtkCheckButton" id="skipemptycells"> + <property name="label" translatable="yes" context="textimportcsv|skipemtycells">S_kip empty cells</property> + <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="xalign">0</property> + <property name="draw_indicator">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">2</property> + </packing> + </child> </object> </child> </object> |