joachim99@8
|
1 /*
|
joachim99@8
|
2 * kdiff3 - Text Diff And Merge Tool
|
joachim99@77
|
3 * Copyright (C) 2002-2007 Joachim Eibl, joachim.eibl at gmx.de
|
joachim99@8
|
4 *
|
joachim99@8
|
5 * This program is free software; you can redistribute it and/or modify
|
joachim99@8
|
6 * it under the terms of the GNU General Public License as published by
|
joachim99@8
|
7 * the Free Software Foundation; either version 2 of the License, or
|
joachim99@8
|
8 * (at your option) any later version.
|
joachim99@8
|
9 *
|
joachim99@8
|
10 * This program is distributed in the hope that it will be useful,
|
joachim99@8
|
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
joachim99@8
|
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
joachim99@8
|
13 * GNU General Public License for more details.
|
joachim99@8
|
14 *
|
joachim99@8
|
15 * You should have received a copy of the GNU General Public License
|
joachim99@8
|
16 * along with this program; if not, write to the Free Software
|
joachim99@69
|
17 * Foundation, Inc., 51 Franklin Steet, Fifth Floor, Boston, MA 02110-1301, USA.
|
joachim99@8
|
18 *
|
joachim99@8
|
19 */
|
joachim99@8
|
20
|
joachim99@8
|
21 #ifndef OPTION_DIALOG_H
|
joachim99@8
|
22 #define OPTION_DIALOG_H
|
joachim99@8
|
23
|
joachim99@8
|
24
|
joachim99@80
|
25 #include <kpagedialog.h>
|
joachim99@8
|
26 #include <qstringlist.h>
|
joachim99@8
|
27 #include <list>
|
joachim99@69
|
28 #include <kcmdlineargs.h>
|
joachim99@8
|
29
|
joachim99@8
|
30 class OptionItem;
|
joachim99@68
|
31 class OptionCheckBox;
|
joachim99@68
|
32 class OptionEncodingComboBox;
|
joachim99@69
|
33 class OptionLineEdit;
|
joachim99@8
|
34 class KKeyDialog;
|
joachim99@8
|
35
|
joachim99@68
|
36 enum e_LineEndStyle
|
joachim99@58
|
37 {
|
joachim99@80
|
38 eLineEndStyleUnix=0,
|
joachim99@80
|
39 eLineEndStyleDos,
|
joachim99@80
|
40 eLineEndStyleAutoDetect,
|
joachim99@80
|
41 eLineEndStyleUndefined, // only one line exists
|
joachim99@92
|
42 eLineEndStyleConflict // User must resolve manually
|
joachim99@58
|
43 };
|
joachim99@51
|
44
|
joachim99@80
|
45 class OptionDialog : public KPageDialog
|
joachim99@8
|
46 {
|
joachim99@8
|
47 Q_OBJECT
|
joachim99@8
|
48
|
joachim99@8
|
49 public:
|
joachim99@8
|
50
|
joachim99@8
|
51 OptionDialog( bool bShowDirMergeSettings, QWidget *parent = 0, char *name = 0 );
|
joachim99@8
|
52 ~OptionDialog( void );
|
joachim99@80
|
53 QString parseOptions( const QStringList& optionList );
|
joachim99@69
|
54 QString calcOptionHelp();
|
joachim99@69
|
55
|
joachim99@69
|
56 // Some settings are not available in the option dialog:
|
joachim99@69
|
57 QSize m_geometry;
|
joachim99@69
|
58 QPoint m_position;
|
joachim99@75
|
59 bool m_bMaximised;
|
joachim99@69
|
60 bool m_bShowToolBar;
|
joachim99@69
|
61 bool m_bShowStatusBar;
|
joachim99@69
|
62 int m_toolBarPos;
|
joachim99@8
|
63
|
joachim99@8
|
64 // These are the results of the option dialog.
|
joachim99@8
|
65 QFont m_font;
|
joachim99@8
|
66 bool m_bItalicForDeltas;
|
joachim99@8
|
67
|
joachim99@8
|
68 QColor m_fgColor;
|
joachim99@8
|
69 QColor m_bgColor;
|
joachim99@8
|
70 QColor m_diffBgColor;
|
joachim99@8
|
71 QColor m_colorA;
|
joachim99@8
|
72 QColor m_colorB;
|
joachim99@8
|
73 QColor m_colorC;
|
joachim99@8
|
74 QColor m_colorForConflict;
|
joachim99@8
|
75 QColor m_currentRangeBgColor;
|
joachim99@8
|
76 QColor m_currentRangeDiffBgColor;
|
joachim99@69
|
77 QColor m_oldestFileColor;
|
joachim99@69
|
78 QColor m_midAgeFileColor;
|
joachim99@69
|
79 QColor m_newestFileColor;
|
joachim99@69
|
80 QColor m_missingFileColor;
|
joachim99@69
|
81 QColor m_manualHelpRangeColor;
|
joachim99@8
|
82
|
joachim99@66
|
83 bool m_bWordWrap;
|
joachim99@68
|
84
|
joachim99@8
|
85 bool m_bReplaceTabs;
|
joachim99@8
|
86 bool m_bAutoIndentation;
|
joachim99@8
|
87 int m_tabSize;
|
joachim99@8
|
88 bool m_bAutoCopySelection;
|
joachim99@68
|
89 bool m_bSameEncoding;
|
joachim99@68
|
90 QTextCodec* m_pEncodingA;
|
joachim99@75
|
91 bool m_bAutoDetectUnicodeA;
|
joachim99@68
|
92 QTextCodec* m_pEncodingB;
|
joachim99@75
|
93 bool m_bAutoDetectUnicodeB;
|
joachim99@68
|
94 QTextCodec* m_pEncodingC;
|
joachim99@75
|
95 bool m_bAutoDetectUnicodeC;
|
joachim99@68
|
96 QTextCodec* m_pEncodingOut;
|
joachim99@75
|
97 bool m_bAutoSelectOutEncoding;
|
joachim99@68
|
98 QTextCodec* m_pEncodingPP;
|
joachim99@58
|
99 int m_lineEndStyle;
|
joachim99@8
|
100
|
joachim99@8
|
101 bool m_bPreserveCarriageReturn;
|
joachim99@8
|
102 bool m_bTryHard;
|
joachim99@51
|
103 bool m_bShowWhiteSpaceCharacters;
|
joachim99@8
|
104 bool m_bShowWhiteSpace;
|
joachim99@8
|
105 bool m_bShowLineNumbers;
|
joachim99@8
|
106 bool m_bHorizDiffWindowSplitting;
|
joachim99@80
|
107 bool m_bShowInfoDialogs;
|
joachim99@80
|
108 bool m_bDiff3AlignBC;
|
joachim99@8
|
109
|
joachim99@51
|
110 int m_whiteSpace2FileMergeDefault;
|
joachim99@51
|
111 int m_whiteSpace3FileMergeDefault;
|
joachim99@66
|
112 bool m_bIgnoreCase;
|
joachim99@8
|
113 bool m_bIgnoreNumbers;
|
joachim99@51
|
114 bool m_bIgnoreComments;
|
joachim99@8
|
115 QString m_PreProcessorCmd;
|
joachim99@8
|
116 QString m_LineMatchingPreProcessorCmd;
|
joachim99@69
|
117 bool m_bRunRegExpAutoMergeOnMergeStart;
|
joachim99@69
|
118 QString m_autoMergeRegExp;
|
joachim99@69
|
119 bool m_bRunHistoryAutoMergeOnMergeStart;
|
joachim99@69
|
120 QString m_historyStartRegExp;
|
joachim99@69
|
121 QString m_historyEntryStartRegExp;
|
joachim99@69
|
122 bool m_bHistoryMergeSorting;
|
joachim99@69
|
123 QString m_historyEntryStartSortKeyOrder;
|
joachim99@77
|
124 int m_maxNofHistoryEntries;
|
joachim99@69
|
125 QString m_IrrelevantMergeCmd;
|
joachim99@77
|
126 bool m_bAutoSaveAndQuitOnMergeWithoutConflicts;
|
joachim99@8
|
127
|
joachim99@8
|
128 bool m_bAutoAdvance;
|
joachim99@8
|
129 int m_autoAdvanceDelay;
|
joachim99@8
|
130
|
joachim99@8
|
131 QStringList m_recentAFiles;
|
joachim99@8
|
132 QStringList m_recentBFiles;
|
joachim99@8
|
133 QStringList m_recentCFiles;
|
joachim99@8
|
134
|
joachim99@8
|
135 QStringList m_recentOutputFiles;
|
joachim99@8
|
136
|
joachim99@8
|
137 // Directory Merge options
|
joachim99@8
|
138 bool m_bDmSyncMode;
|
joachim99@8
|
139 bool m_bDmRecursiveDirs;
|
joachim99@8
|
140 bool m_bDmFollowFileLinks;
|
joachim99@8
|
141 bool m_bDmFollowDirLinks;
|
joachim99@8
|
142 bool m_bDmFindHidden;
|
joachim99@8
|
143 bool m_bDmCreateBakFiles;
|
joachim99@66
|
144 bool m_bDmBinaryComparison;
|
joachim99@66
|
145 bool m_bDmFullAnalysis;
|
joachim99@8
|
146 bool m_bDmTrustDate;
|
joachim99@77
|
147 bool m_bDmTrustDateFallbackToBinary;
|
joachim99@51
|
148 bool m_bDmTrustSize;
|
joachim99@8
|
149 bool m_bDmCopyNewer;
|
joachim99@69
|
150 //bool m_bDmShowOnlyDeltas;
|
joachim99@69
|
151 bool m_bDmShowIdenticalFiles;
|
joachim99@8
|
152 bool m_bDmUseCvsIgnore;
|
joachim99@68
|
153 bool m_bDmWhiteSpaceEqual;
|
joachim99@69
|
154 bool m_bDmCaseSensitiveFilenameComparison;
|
joachim99@8
|
155 QString m_DmFilePattern;
|
joachim99@8
|
156 QString m_DmFileAntiPattern;
|
joachim99@8
|
157 QString m_DmDirAntiPattern;
|
joachim99@8
|
158
|
joachim99@58
|
159 QString m_language;
|
joachim99@68
|
160 bool m_bRightToLeftLanguage;
|
joachim99@69
|
161
|
joachim99@69
|
162 QString m_ignorableCmdLineOptions;
|
joachim99@77
|
163 bool m_bIntegrateWithClearCase;
|
joachim99@80
|
164 bool m_bEscapeKeyQuits;
|
joachim99@69
|
165
|
joachim99@80
|
166 void saveOptions(KSharedConfigPtr config);
|
joachim99@80
|
167 void readOptions(KSharedConfigPtr config);
|
joachim99@8
|
168
|
joachim99@8
|
169 void setState(); // Must be called before calling exec();
|
joachim99@8
|
170
|
joachim99@8
|
171 void addOptionItem(OptionItem*);
|
joachim99@8
|
172 KKeyDialog* m_pKeyDialog;
|
joachim99@8
|
173 protected slots:
|
joachim99@8
|
174 virtual void slotDefault( void );
|
joachim99@8
|
175 virtual void slotOk( void );
|
joachim99@8
|
176 virtual void slotApply( void );
|
joachim99@69
|
177
|
joachim99@68
|
178 void slotEncodingChanged();
|
joachim99@69
|
179 void slotHistoryMergeRegExpTester();
|
joachim99@77
|
180 void slotIntegrateWithClearCase();
|
joachim99@77
|
181 void slotRemoveClearCaseIntegration();
|
joachim99@80
|
182 signals:
|
joachim99@80
|
183 void applyDone();
|
joachim99@8
|
184 private:
|
joachim99@8
|
185 void resetToDefaults();
|
joachim99@51
|
186
|
joachim99@8
|
187 std::list<OptionItem*> m_optionItemList;
|
joachim99@51
|
188
|
joachim99@68
|
189 OptionCheckBox* m_pSameEncoding;
|
joachim99@68
|
190 OptionEncodingComboBox* m_pEncodingAComboBox;
|
joachim99@75
|
191 OptionCheckBox* m_pAutoDetectUnicodeA;
|
joachim99@68
|
192 OptionEncodingComboBox* m_pEncodingBComboBox;
|
joachim99@75
|
193 OptionCheckBox* m_pAutoDetectUnicodeB;
|
joachim99@68
|
194 OptionEncodingComboBox* m_pEncodingCComboBox;
|
joachim99@75
|
195 OptionCheckBox* m_pAutoDetectUnicodeC;
|
joachim99@68
|
196 OptionEncodingComboBox* m_pEncodingOutComboBox;
|
joachim99@75
|
197 OptionCheckBox* m_pAutoSelectOutEncoding;
|
joachim99@68
|
198 OptionEncodingComboBox* m_pEncodingPPComboBox;
|
joachim99@69
|
199 OptionCheckBox* m_pHistoryAutoMerge;
|
joachim99@69
|
200 OptionLineEdit* m_pAutoMergeRegExpLineEdit;
|
joachim99@69
|
201 OptionLineEdit* m_pHistoryStartRegExpLineEdit;
|
joachim99@69
|
202 OptionLineEdit* m_pHistoryEntryStartRegExpLineEdit;
|
joachim99@69
|
203 OptionCheckBox* m_pHistoryMergeSorting;
|
joachim99@69
|
204 OptionLineEdit* m_pHistorySortKeyOrderLineEdit;
|
joachim99@8
|
205
|
joachim99@8
|
206 private:
|
joachim99@8
|
207 void setupFontPage();
|
joachim99@8
|
208 void setupColorPage();
|
joachim99@8
|
209 void setupEditPage();
|
joachim99@8
|
210 void setupDiffPage();
|
joachim99@75
|
211 void setupMergePage();
|
joachim99@8
|
212 void setupDirectoryMergePage();
|
joachim99@8
|
213 void setupKeysPage();
|
joachim99@58
|
214 void setupRegionalPage();
|
joachim99@69
|
215 void setupIntegrationPage();
|
joachim99@51
|
216 void setupOtherOptions();
|
joachim99@8
|
217 };
|
joachim99@8
|
218
|
joachim99@8
|
219
|
joachim99@8
|
220
|
joachim99@58
|
221
|
joachim99@8
|
222 #endif
|
joachim99@8
|
223
|
joachim99@8
|
224
|
joachim99@8
|
225
|
joachim99@8
|
226
|
joachim99@8
|
227
|
joachim99@8
|
228
|
joachim99@8
|
229
|