1*b1cdbd2cSJim Jagielski /************************************************************** 2*b1cdbd2cSJim Jagielski * 3*b1cdbd2cSJim Jagielski * Licensed to the Apache Software Foundation (ASF) under one 4*b1cdbd2cSJim Jagielski * or more contributor license agreements. See the NOTICE file 5*b1cdbd2cSJim Jagielski * distributed with this work for additional information 6*b1cdbd2cSJim Jagielski * regarding copyright ownership. The ASF licenses this file 7*b1cdbd2cSJim Jagielski * to you under the Apache License, Version 2.0 (the 8*b1cdbd2cSJim Jagielski * "License"); you may not use this file except in compliance 9*b1cdbd2cSJim Jagielski * with the License. You may obtain a copy of the License at 10*b1cdbd2cSJim Jagielski * 11*b1cdbd2cSJim Jagielski * http://www.apache.org/licenses/LICENSE-2.0 12*b1cdbd2cSJim Jagielski * 13*b1cdbd2cSJim Jagielski * Unless required by applicable law or agreed to in writing, 14*b1cdbd2cSJim Jagielski * software distributed under the License is distributed on an 15*b1cdbd2cSJim Jagielski * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*b1cdbd2cSJim Jagielski * KIND, either express or implied. See the License for the 17*b1cdbd2cSJim Jagielski * specific language governing permissions and limitations 18*b1cdbd2cSJim Jagielski * under the License. 19*b1cdbd2cSJim Jagielski * 20*b1cdbd2cSJim Jagielski *************************************************************/ 21*b1cdbd2cSJim Jagielski 22*b1cdbd2cSJim Jagielski 23*b1cdbd2cSJim Jagielski 24*b1cdbd2cSJim Jagielski // ============================================================================ 25*b1cdbd2cSJim Jagielski 26*b1cdbd2cSJim Jagielski #ifndef SC_ASCIIOPT_HXX 27*b1cdbd2cSJim Jagielski #define SC_ASCIIOPT_HXX 28*b1cdbd2cSJim Jagielski 29*b1cdbd2cSJim Jagielski #include <tools/string.hxx> 30*b1cdbd2cSJim Jagielski #ifndef _DIALOG_HXX //autogen 31*b1cdbd2cSJim Jagielski #include <vcl/dialog.hxx> 32*b1cdbd2cSJim Jagielski #endif 33*b1cdbd2cSJim Jagielski #ifndef _BUTTON_HXX //autogen 34*b1cdbd2cSJim Jagielski #include <vcl/button.hxx> 35*b1cdbd2cSJim Jagielski #endif 36*b1cdbd2cSJim Jagielski #ifndef _FIXED_HXX //autogen 37*b1cdbd2cSJim Jagielski #include <vcl/fixed.hxx> 38*b1cdbd2cSJim Jagielski #endif 39*b1cdbd2cSJim Jagielski #ifndef _LSTBOX_HXX //autogen 40*b1cdbd2cSJim Jagielski #include <vcl/lstbox.hxx> 41*b1cdbd2cSJim Jagielski #endif 42*b1cdbd2cSJim Jagielski #ifndef _COMBOBOX_HXX //autogen 43*b1cdbd2cSJim Jagielski #include <vcl/combobox.hxx> 44*b1cdbd2cSJim Jagielski #endif 45*b1cdbd2cSJim Jagielski #ifndef _FIELD_HXX //autogen 46*b1cdbd2cSJim Jagielski #include <vcl/field.hxx> 47*b1cdbd2cSJim Jagielski #endif 48*b1cdbd2cSJim Jagielski #include <tools/stream.hxx> 49*b1cdbd2cSJim Jagielski #include <svx/txencbox.hxx> 50*b1cdbd2cSJim Jagielski #include "csvtablebox.hxx" 51*b1cdbd2cSJim Jagielski #include "i18npool/lang.h" 52*b1cdbd2cSJim Jagielski 53*b1cdbd2cSJim Jagielski // ============================================================================ 54*b1cdbd2cSJim Jagielski 55*b1cdbd2cSJim Jagielski class ScAsciiOptions 56*b1cdbd2cSJim Jagielski { 57*b1cdbd2cSJim Jagielski private: 58*b1cdbd2cSJim Jagielski sal_Bool bFixedLen; 59*b1cdbd2cSJim Jagielski String aFieldSeps; 60*b1cdbd2cSJim Jagielski sal_Bool bMergeFieldSeps; 61*b1cdbd2cSJim Jagielski bool bQuotedFieldAsText; 62*b1cdbd2cSJim Jagielski bool bDetectSpecialNumber; 63*b1cdbd2cSJim Jagielski sal_Unicode cTextSep; 64*b1cdbd2cSJim Jagielski CharSet eCharSet; 65*b1cdbd2cSJim Jagielski LanguageType eLang; 66*b1cdbd2cSJim Jagielski sal_Bool bCharSetSystem; 67*b1cdbd2cSJim Jagielski long nStartRow; 68*b1cdbd2cSJim Jagielski sal_uInt16 nInfoCount; 69*b1cdbd2cSJim Jagielski xub_StrLen* pColStart; //! TODO replace with vector 70*b1cdbd2cSJim Jagielski sal_uInt8* pColFormat; //! TODO replace with vector 71*b1cdbd2cSJim Jagielski 72*b1cdbd2cSJim Jagielski public: 73*b1cdbd2cSJim Jagielski ScAsciiOptions(); 74*b1cdbd2cSJim Jagielski ScAsciiOptions(const ScAsciiOptions& rOpt); 75*b1cdbd2cSJim Jagielski ~ScAsciiOptions(); 76*b1cdbd2cSJim Jagielski 77*b1cdbd2cSJim Jagielski static const sal_Unicode cDefaultTextSep = '"'; 78*b1cdbd2cSJim Jagielski 79*b1cdbd2cSJim Jagielski ScAsciiOptions& operator=( const ScAsciiOptions& rCpy ); 80*b1cdbd2cSJim Jagielski 81*b1cdbd2cSJim Jagielski sal_Bool operator==( const ScAsciiOptions& rCmp ) const; 82*b1cdbd2cSJim Jagielski 83*b1cdbd2cSJim Jagielski void ReadFromString( const String& rString ); 84*b1cdbd2cSJim Jagielski String WriteToString() const; 85*b1cdbd2cSJim Jagielski 86*b1cdbd2cSJim Jagielski void InterpretColumnList( const String& rString ); 87*b1cdbd2cSJim Jagielski GetCharSet() const88*b1cdbd2cSJim Jagielski CharSet GetCharSet() const { return eCharSet; } GetCharSetSystem() const89*b1cdbd2cSJim Jagielski sal_Bool GetCharSetSystem() const { return bCharSetSystem; } GetFieldSeps() const90*b1cdbd2cSJim Jagielski const String& GetFieldSeps() const { return aFieldSeps; } IsMergeSeps() const91*b1cdbd2cSJim Jagielski sal_Bool IsMergeSeps() const { return bMergeFieldSeps; } IsQuotedAsText() const92*b1cdbd2cSJim Jagielski bool IsQuotedAsText() const { return bQuotedFieldAsText; } IsDetectSpecialNumber() const93*b1cdbd2cSJim Jagielski bool IsDetectSpecialNumber() const { return bDetectSpecialNumber; } GetTextSep() const94*b1cdbd2cSJim Jagielski sal_Unicode GetTextSep() const { return cTextSep; } IsFixedLen() const95*b1cdbd2cSJim Jagielski sal_Bool IsFixedLen() const { return bFixedLen; } GetInfoCount() const96*b1cdbd2cSJim Jagielski sal_uInt16 GetInfoCount() const { return nInfoCount; } GetColStart() const97*b1cdbd2cSJim Jagielski const xub_StrLen* GetColStart() const { return pColStart; } GetColFormat() const98*b1cdbd2cSJim Jagielski const sal_uInt8* GetColFormat() const { return pColFormat; } GetStartRow() const99*b1cdbd2cSJim Jagielski long GetStartRow() const { return nStartRow; } GetLanguage() const100*b1cdbd2cSJim Jagielski LanguageType GetLanguage() const { return eLang; } 101*b1cdbd2cSJim Jagielski SetCharSet(CharSet eNew)102*b1cdbd2cSJim Jagielski void SetCharSet( CharSet eNew ) { eCharSet = eNew; } SetCharSetSystem(sal_Bool bSet)103*b1cdbd2cSJim Jagielski void SetCharSetSystem( sal_Bool bSet ) { bCharSetSystem = bSet; } SetFixedLen(sal_Bool bSet)104*b1cdbd2cSJim Jagielski void SetFixedLen( sal_Bool bSet ) { bFixedLen = bSet; } SetFieldSeps(const String & rStr)105*b1cdbd2cSJim Jagielski void SetFieldSeps( const String& rStr ) { aFieldSeps = rStr; } SetMergeSeps(sal_Bool bSet)106*b1cdbd2cSJim Jagielski void SetMergeSeps( sal_Bool bSet ) { bMergeFieldSeps = bSet; } SetQuotedAsText(bool bSet)107*b1cdbd2cSJim Jagielski void SetQuotedAsText(bool bSet) { bQuotedFieldAsText = bSet; } SetDetectSpecialNumber(bool bSet)108*b1cdbd2cSJim Jagielski void SetDetectSpecialNumber(bool bSet) { bDetectSpecialNumber = bSet; } SetTextSep(sal_Unicode c)109*b1cdbd2cSJim Jagielski void SetTextSep( sal_Unicode c ) { cTextSep = c; } SetStartRow(long nRow)110*b1cdbd2cSJim Jagielski void SetStartRow( long nRow) { nStartRow= nRow; } SetLanguage(LanguageType e)111*b1cdbd2cSJim Jagielski void SetLanguage(LanguageType e) { eLang = e; } 112*b1cdbd2cSJim Jagielski 113*b1cdbd2cSJim Jagielski void SetColInfo( sal_uInt16 nCount, const xub_StrLen* pStart, const sal_uInt8* pFormat ); 114*b1cdbd2cSJim Jagielski void SetColumnInfo( const ScCsvExpDataVec& rDataVec ); 115*b1cdbd2cSJim Jagielski }; 116*b1cdbd2cSJim Jagielski 117*b1cdbd2cSJim Jagielski 118*b1cdbd2cSJim Jagielski //CHINA001 // ============================================================================ 119*b1cdbd2cSJim Jagielski //CHINA001 120*b1cdbd2cSJim Jagielski //CHINA001 class ScImportAsciiDlg : public ModalDialog 121*b1cdbd2cSJim Jagielski //CHINA001 { 122*b1cdbd2cSJim Jagielski //CHINA001 SvStream* pDatStream; 123*b1cdbd2cSJim Jagielski //CHINA001 sal_uLong* pRowPosArray; 124*b1cdbd2cSJim Jagielski //CHINA001 sal_uLong* pRowPosArrayUnicode; 125*b1cdbd2cSJim Jagielski //CHINA001 sal_uInt16 nArrayEndPos; 126*b1cdbd2cSJim Jagielski //CHINA001 sal_uInt16 nArrayEndPosUnicode; 127*b1cdbd2cSJim Jagielski //CHINA001 sal_uLong nStreamPos; 128*b1cdbd2cSJim Jagielski //CHINA001 sal_uLong nStreamPosUnicode; 129*b1cdbd2cSJim Jagielski //CHINA001 sal_Bool bVFlag; 130*b1cdbd2cSJim Jagielski //CHINA001 131*b1cdbd2cSJim Jagielski //CHINA001 FixedLine aFlFieldOpt; 132*b1cdbd2cSJim Jagielski //CHINA001 FixedText aFtCharSet; 133*b1cdbd2cSJim Jagielski //CHINA001 SvxTextEncodingBox aLbCharSet; 134*b1cdbd2cSJim Jagielski //CHINA001 135*b1cdbd2cSJim Jagielski //CHINA001 FixedText aFtRow; 136*b1cdbd2cSJim Jagielski //CHINA001 NumericField aNfRow; 137*b1cdbd2cSJim Jagielski //CHINA001 138*b1cdbd2cSJim Jagielski //CHINA001 FixedLine aFlSepOpt; 139*b1cdbd2cSJim Jagielski //CHINA001 RadioButton aRbFixed; 140*b1cdbd2cSJim Jagielski //CHINA001 RadioButton aRbSeparated; 141*b1cdbd2cSJim Jagielski //CHINA001 142*b1cdbd2cSJim Jagielski //CHINA001 CheckBox aCkbTab; 143*b1cdbd2cSJim Jagielski //CHINA001 CheckBox aCkbSemicolon; 144*b1cdbd2cSJim Jagielski //CHINA001 CheckBox aCkbComma; 145*b1cdbd2cSJim Jagielski //CHINA001 CheckBox aCkbSpace; 146*b1cdbd2cSJim Jagielski //CHINA001 CheckBox aCkbOther; 147*b1cdbd2cSJim Jagielski //CHINA001 Edit aEdOther; 148*b1cdbd2cSJim Jagielski //CHINA001 CheckBox aCkbAsOnce; 149*b1cdbd2cSJim Jagielski //CHINA001 FixedText aFtTextSep; 150*b1cdbd2cSJim Jagielski //CHINA001 ComboBox aCbTextSep; 151*b1cdbd2cSJim Jagielski //CHINA001 152*b1cdbd2cSJim Jagielski //CHINA001 FixedLine aFlWidth; 153*b1cdbd2cSJim Jagielski //CHINA001 FixedText aFtType; 154*b1cdbd2cSJim Jagielski //CHINA001 ListBox aLbType; 155*b1cdbd2cSJim Jagielski //CHINA001 156*b1cdbd2cSJim Jagielski //CHINA001 ScCsvTableBox maTableBox; 157*b1cdbd2cSJim Jagielski //CHINA001 158*b1cdbd2cSJim Jagielski //CHINA001 OKButton aBtnOk; 159*b1cdbd2cSJim Jagielski //CHINA001 CancelButton aBtnCancel; 160*b1cdbd2cSJim Jagielski //CHINA001 HelpButton aBtnHelp; 161*b1cdbd2cSJim Jagielski //CHINA001 162*b1cdbd2cSJim Jagielski //CHINA001 String aCharSetUser; 163*b1cdbd2cSJim Jagielski //CHINA001 String aColumnUser; 164*b1cdbd2cSJim Jagielski //CHINA001 String aFldSepList; 165*b1cdbd2cSJim Jagielski //CHINA001 String aTextSepList; 166*b1cdbd2cSJim Jagielski //CHINA001 167*b1cdbd2cSJim Jagielski //CHINA001 // aPreviewLine contains the byte string as read from the file 168*b1cdbd2cSJim Jagielski //CHINA001 ByteString aPreviewLine[ CSV_PREVIEW_LINES ]; 169*b1cdbd2cSJim Jagielski //CHINA001 // same for Unicode 170*b1cdbd2cSJim Jagielski //CHINA001 String aPreviewLineUnicode[ CSV_PREVIEW_LINES ]; 171*b1cdbd2cSJim Jagielski //CHINA001 172*b1cdbd2cSJim Jagielski //CHINA001 CharSet meCharSet; /// Selected char set. 173*b1cdbd2cSJim Jagielski //CHINA001 bool mbCharSetSystem; /// Is System char set selected? 174*b1cdbd2cSJim Jagielski //CHINA001 175*b1cdbd2cSJim Jagielski //CHINA001 public: 176*b1cdbd2cSJim Jagielski //CHINA001 ScImportAsciiDlg( 177*b1cdbd2cSJim Jagielski //CHINA001 Window* pParent, String aDatName, 178*b1cdbd2cSJim Jagielski //CHINA001 SvStream* pInStream, sal_Unicode cSep = '\t' ); 179*b1cdbd2cSJim Jagielski //CHINA001 ~ScImportAsciiDlg(); 180*b1cdbd2cSJim Jagielski //CHINA001 181*b1cdbd2cSJim Jagielski //CHINA001 void GetOptions( ScAsciiOptions& rOpt ); 182*b1cdbd2cSJim Jagielski //CHINA001 183*b1cdbd2cSJim Jagielski //CHINA001 private: 184*b1cdbd2cSJim Jagielski //CHINA001 /** Sets the selected char set data to meCharSet and mbCharSetSystem. */ 185*b1cdbd2cSJim Jagielski //CHINA001 void SetSelectedCharSet(); 186*b1cdbd2cSJim Jagielski //CHINA001 /** Returns all separator characters in a string. */ 187*b1cdbd2cSJim Jagielski //CHINA001 String GetSeparators() const; 188*b1cdbd2cSJim Jagielski //CHINA001 189*b1cdbd2cSJim Jagielski //CHINA001 /** Enables or disables all separator checkboxes and edit fields. */ 190*b1cdbd2cSJim Jagielski //CHINA001 void SetupSeparatorCtrls(); 191*b1cdbd2cSJim Jagielski //CHINA001 192*b1cdbd2cSJim Jagielski //CHINA001 void UpdateVertical( bool bSwitchToFromUnicode = false ); 193*b1cdbd2cSJim Jagielski //CHINA001 194*b1cdbd2cSJim Jagielski //CHINA001 DECL_LINK( CharSetHdl, SvxTextEncodingBox* ); 195*b1cdbd2cSJim Jagielski //CHINA001 DECL_LINK( FirstRowHdl, NumericField* ); 196*b1cdbd2cSJim Jagielski //CHINA001 DECL_LINK( RbSepFixHdl, RadioButton* ); 197*b1cdbd2cSJim Jagielski //CHINA001 DECL_LINK( SeparatorHdl, Control* ); 198*b1cdbd2cSJim Jagielski //CHINA001 DECL_LINK( LbColTypeHdl, ListBox* ); 199*b1cdbd2cSJim Jagielski //CHINA001 DECL_LINK( UpdateTextHdl, ScCsvTableBox* ); 200*b1cdbd2cSJim Jagielski //CHINA001 DECL_LINK( ColTypeHdl, ScCsvTableBox* ); 201*b1cdbd2cSJim Jagielski //CHINA001 }; 202*b1cdbd2cSJim Jagielski //CHINA001 203*b1cdbd2cSJim Jagielski //CHINA001 204*b1cdbd2cSJim Jagielski // ============================================================================ 205*b1cdbd2cSJim Jagielski 206*b1cdbd2cSJim Jagielski #endif 207*b1cdbd2cSJim Jagielski 208