--- officecfg/registry/schema/org/openoffice/Office/Calc.xcs 2005-07-24 17:09:34.000000000 +0530
+++ officecfg/registry/schema/org/openoffice/Office/Calc.xcs 2005-09-07 22:40:51.000000000 +0530
@@ -1041,6 +1041,59 @@
NULL
+
+
+ Contains setting for Text CSV Import
+
+
+
+ muthusuba
+ Merge Delimiter check box status
+
+
+ false
+
+
+
+ muthusuba
+ List of Separators - as a String
+
+
+ ;
+
+
+
+ muthusuba
+ Text Separators
+
+
+ "
+
+
+
+ muthusuba
+ Fixed width
+
+
+ false
+
+
+
+ muthusuba
+ From Row
+
+
+ 1
+
+
+
+ muthusuba
+ Char Set
+
+
+ -1
+
+
Contains settings that affect cell calculation.
--- sc/source/ui/dbgui/scuiasciiopt.cxx 2005-07-24 17:46:45.000000000 +0530
+++ sc/source/ui/dbgui/scuiasciiopt.cxx 2005-09-07 23:00:03.494705192 +0530
@@ -79,6 +79,12 @@
// ause
#include "editutil.hxx"
+#include
+#include
+#include
+#include "miscuno.hxx"
+
+
//! TODO make dynamic
#ifdef WIN
const SCSIZE ASCIIDLG_MAXROWS = 10000;
@@ -86,6 +92,20 @@ const SCSIZE ASCIIDLG_MAXROWS
const SCSIZE ASCIIDLG_MAXROWS = MAXROWCOUNT;
#endif
+
+using namespace rtl;
+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 SEP_PATH "Office.Calc/CSVImport"
+
+
// ============================================================================
void lcl_FillCombo( ComboBox& rCombo, const String& rList, sal_Unicode cSelect )
@@ -133,6 +153,70 @@ sal_Unicode lcl_CharFromCombo( ComboBox&
return c;
}
+static void load_Separators( OUString &sFieldSeparators, OUString &sTextSeparators,
+ bool &bMergeDelimiters, bool &bFixedWidth, sal_Int32 &nFromRow, sal_Int32 &nCharSet )
+{
+ SequenceaValues;
+ const Any *pProperties;
+ Sequence aNames(6);
+ OUString* pNames = aNames.getArray();
+ ScLinkConfigItem aItem( OUString::createFromAscii( SEP_PATH ) );
+
+ pNames[0] = OUString::createFromAscii( MERGE_DELIMITERS );
+ pNames[1] = OUString::createFromAscii( SEPARATORS );
+ pNames[2] = OUString::createFromAscii( TEXT_SEPARATORS );
+ pNames[3] = OUString::createFromAscii( FIXED_WIDTH );
+ pNames[4] = OUString::createFromAscii( FROM_ROW );
+ pNames[5] = OUString::createFromAscii( CHAR_SET );
+ aValues = aItem.GetProperties( aNames );
+ pProperties = aValues.getConstArray();
+ if( pProperties[1].hasValue() )
+ pProperties[1] >>= sFieldSeparators;
+
+ if( pProperties[2].hasValue() )
+ pProperties[2] >>= sTextSeparators;
+
+ if( pProperties[0].hasValue() )
+ bMergeDelimiters = ScUnoHelpFunctions::GetBoolFromAny( pProperties[0] );
+
+ if( pProperties[3].hasValue() )
+ bFixedWidth = ScUnoHelpFunctions::GetBoolFromAny( pProperties[3] );
+
+ if( pProperties[4].hasValue() )
+ pProperties[4] >>= nFromRow;
+
+ if( pProperties[5].hasValue() )
+ pProperties[5] >>= nCharSet;
+}
+
+static void save_Separators( String maSeparators, String maTxtSep, bool bMergeDelimiters,
+ bool bFixedWidth, sal_Int32 nFromRow, sal_Int32 nCharSet )
+{
+ OUString sFieldSeparators = OUString( maSeparators );
+ OUString sTextSeparators = OUString( maTxtSep );
+ Sequence aValues;
+ Any *pProperties;
+ Sequence aNames(6);
+ OUString* pNames = aNames.getArray();
+ ScLinkConfigItem aItem( OUString::createFromAscii( SEP_PATH ) );
+
+ pNames[0] = OUString::createFromAscii( MERGE_DELIMITERS );
+ pNames[1] = OUString::createFromAscii( SEPARATORS );
+ pNames[2] = OUString::createFromAscii( TEXT_SEPARATORS );
+ pNames[3] = OUString::createFromAscii( FIXED_WIDTH );
+ pNames[4] = OUString::createFromAscii( FROM_ROW );
+ pNames[5] = OUString::createFromAscii( CHAR_SET );
+ aValues = aItem.GetProperties( aNames );
+ pProperties = aValues.getArray();
+ pProperties[1] <<= sFieldSeparators;
+ pProperties[2] <<= sTextSeparators;
+ ScUnoHelpFunctions::SetBoolInAny( pProperties[0], bMergeDelimiters );
+ ScUnoHelpFunctions::SetBoolInAny( pProperties[3], bFixedWidth );
+ pProperties[4] <<= nFromRow;
+ pProperties[5] <<= nCharSet;
+
+ aItem.PutProperties(aNames, aValues);
+}
// ----------------------------------------------------------------------------
@@ -190,16 +274,42 @@ ScImportAsciiDlg::ScImportAsciiDlg( Wind
aName += ']';
SetText( aName );
- switch(cSep)
+
+ OUString sFieldSeparators;
+ OUString sTextSeparators;
+ bool bMergeDelimiters = false;
+ bool bFixedWidth = false;
+ sal_Int32 nFromRow = 1;
+ sal_Int32 nCharSet = -1;
+ load_Separators (sFieldSeparators, sTextSeparators, bMergeDelimiters, bFixedWidth, nFromRow, nCharSet);
+ maFieldSeparators = String(sFieldSeparators);
+
+ if( bMergeDelimiters )
+ aCkbAsOnce.Check();
+ if( bFixedWidth )
+ aRbFixed.Check();
+ if( nFromRow != 1 )
+ aNfRow.SetValue( nFromRow );
+
+ ByteString bString(maFieldSeparators,RTL_TEXTENCODING_MS_1252);
+ const sal_Char *aSep = bString.GetBuffer();
+ int i = 0;
+ int len = maFieldSeparators.Len();
+ for(i=0;i= 0 )
+ aLbCharSet.SelectEntryPos( nCharSet );
+
// *** column type ListBox ***
xub_StrLen nCount = aColumnUser.GetTokenCount();
for (xub_StrLen i=0; i