xref: /aoo4110/main/sc/source/ui/inc/asciiopt.hxx (revision b1cdbd2c)
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