joachim99@8
|
1 /***************************************************************************
|
joachim99@8
|
2 kdiff3.h - description
|
joachim99@8
|
3 -------------------
|
joachim99@8
|
4 begin : Don Jul 11 12:31:29 CEST 2002
|
joachim99@8
|
5 copyright : (C) 2002 by Joachim Eibl
|
joachim99@8
|
6 email : joachim.eibl@gmx.de
|
joachim99@8
|
7 ***************************************************************************/
|
joachim99@8
|
8
|
joachim99@8
|
9 /***************************************************************************
|
joachim99@8
|
10 * *
|
joachim99@8
|
11 * This program is free software; you can redistribute it and/or modify *
|
joachim99@8
|
12 * it under the terms of the GNU General Public License as published by *
|
joachim99@8
|
13 * the Free Software Foundation; either version 2 of the License, or *
|
joachim99@8
|
14 * (at your option) any later version. *
|
joachim99@8
|
15 * *
|
joachim99@8
|
16 ***************************************************************************/
|
joachim99@8
|
17
|
joachim99@8
|
18 /***************************************************************************
|
joachim99@8
|
19 * $Log$
|
joachim99@8
|
20 * Revision 1.1 2003/10/06 18:38:48 joachim99
|
joachim99@8
|
21 * KDiff3 version 0.9.70
|
joachim99@8
|
22 * *
|
joachim99@8
|
23 ***************************************************************************/
|
joachim99@8
|
24
|
joachim99@8
|
25 #ifndef KDIFF3_H
|
joachim99@8
|
26 #define KDIFF3_H
|
joachim99@8
|
27
|
joachim99@8
|
28 #include "diff.h"
|
joachim99@8
|
29
|
joachim99@8
|
30 #ifdef HAVE_CONFIG_H
|
joachim99@8
|
31 #include <config.h>
|
joachim99@8
|
32 #endif
|
joachim99@8
|
33
|
joachim99@8
|
34 // include files for Qt
|
joachim99@8
|
35 #include <qdialog.h>
|
joachim99@8
|
36 #include <qsplitter.h>
|
joachim99@8
|
37
|
joachim99@8
|
38 // include files for KDE
|
joachim99@8
|
39 #include <kapplication.h>
|
joachim99@8
|
40 #include <kmainwindow.h>
|
joachim99@8
|
41 #include <kaccel.h>
|
joachim99@8
|
42 #include <kaction.h>
|
joachim99@8
|
43 #include <kurl.h>
|
joachim99@8
|
44 #include <kparts/mainwindow.h>
|
joachim99@8
|
45
|
joachim99@8
|
46
|
joachim99@8
|
47 // forward declaration of the KDiff3 classes
|
joachim99@8
|
48 class OptionDialog;
|
joachim99@8
|
49 class FindDialog;
|
joachim99@8
|
50
|
joachim99@8
|
51 class QScrollBar;
|
joachim99@8
|
52 class QComboBox;
|
joachim99@8
|
53 class QLineEdit;
|
joachim99@8
|
54 class QCheckBox;
|
joachim99@8
|
55 class QSplitter;
|
joachim99@8
|
56
|
joachim99@8
|
57
|
joachim99@8
|
58 class KDiff3Part;
|
joachim99@8
|
59 class DirectoryMergeWindow;
|
joachim99@8
|
60 class DirectoryMergeInfo;
|
joachim99@8
|
61
|
joachim99@8
|
62
|
joachim99@8
|
63 class KDiff3App : public QSplitter
|
joachim99@8
|
64 {
|
joachim99@8
|
65 Q_OBJECT
|
joachim99@8
|
66
|
joachim99@8
|
67 public:
|
joachim99@8
|
68 /** construtor of KDiff3App, calls all init functions to create the application.
|
joachim99@8
|
69 */
|
joachim99@8
|
70 KDiff3App( QWidget* parent, const char* name, KDiff3Part* pKDiff3Part );
|
joachim99@8
|
71 ~KDiff3App();
|
joachim99@8
|
72
|
joachim99@8
|
73 bool isPart();
|
joachim99@8
|
74
|
joachim99@8
|
75 /** initializes the KActions of the application */
|
joachim99@8
|
76 void initActions( KActionCollection* );
|
joachim99@8
|
77
|
joachim99@8
|
78 /** save general Options like all bar positions and status as well as the geometry
|
joachim99@8
|
79 and the recent file list to the configuration file */
|
joachim99@8
|
80 void saveOptions( KConfig* );
|
joachim99@8
|
81
|
joachim99@8
|
82 /** read general Options again and initialize all variables like the recent file list */
|
joachim99@8
|
83 void readOptions( KConfig* );
|
joachim99@8
|
84
|
joachim99@8
|
85 // Finish initialisation (virtual, so that it can be called from the shell too.)
|
joachim99@8
|
86 virtual void completeInit();
|
joachim99@8
|
87
|
joachim99@8
|
88 /** queryClose is called by KMainWindow on each closeEvent of a window. Against the
|
joachim99@8
|
89 * default implementation (only returns true), this calles saveModified() on the document object to ask if the document shall
|
joachim99@8
|
90 * be saved if Modified; on cancel the closeEvent is rejected.
|
joachim99@8
|
91 * @see KMainWindow#queryClose
|
joachim99@8
|
92 * @see KMainWindow#closeEvent
|
joachim99@8
|
93 */
|
joachim99@8
|
94 virtual bool queryClose();
|
joachim99@8
|
95
|
joachim99@8
|
96 protected:
|
joachim99@8
|
97 void initDirectoryMergeActions();
|
joachim99@8
|
98 /** sets up the statusbar for the main window by initialzing a statuslabel. */
|
joachim99@8
|
99 void initStatusBar();
|
joachim99@8
|
100
|
joachim99@8
|
101 /** creates the centerwidget of the KMainWindow instance and sets it as the view */
|
joachim99@8
|
102 void initView();
|
joachim99@8
|
103
|
joachim99@8
|
104 public slots:
|
joachim99@8
|
105
|
joachim99@8
|
106 /** open a file and load it into the document*/
|
joachim99@8
|
107 void slotFileOpen();
|
joachim99@8
|
108 void slotFileOpen2( QString fn1, QString fn2, QString fn3, QString ofn,
|
joachim99@8
|
109 QString an1, QString an2, QString an3 );
|
joachim99@8
|
110
|
joachim99@8
|
111 /** save a document */
|
joachim99@8
|
112 void slotFileSave();
|
joachim99@8
|
113 /** save a document by a new filename*/
|
joachim99@8
|
114 void slotFileSaveAs();
|
joachim99@8
|
115
|
joachim99@8
|
116 /** closes all open windows by calling close() on each memberList item until the list is empty, then quits the application.
|
joachim99@8
|
117 * If queryClose() returns false because the user canceled the saveModified() dialog, the closing breaks.
|
joachim99@8
|
118 */
|
joachim99@8
|
119 void slotFileQuit();
|
joachim99@8
|
120 /** put the marked text/object into the clipboard and remove
|
joachim99@8
|
121 * it from the document
|
joachim99@8
|
122 */
|
joachim99@8
|
123 void slotEditCut();
|
joachim99@8
|
124 /** put the marked text/object into the clipboard
|
joachim99@8
|
125 */
|
joachim99@8
|
126 void slotEditCopy();
|
joachim99@8
|
127 /** paste the clipboard into the document
|
joachim99@8
|
128 */
|
joachim99@8
|
129 void slotEditPaste();
|
joachim99@8
|
130 /** toggles the toolbar
|
joachim99@8
|
131 */
|
joachim99@8
|
132 void slotViewToolBar();
|
joachim99@8
|
133 /** toggles the statusbar
|
joachim99@8
|
134 */
|
joachim99@8
|
135 void slotViewStatusBar();
|
joachim99@8
|
136 /** changes the statusbar contents for the standard label permanently, used to indicate current actions.
|
joachim99@8
|
137 * @param text the text that is displayed in the statusbar
|
joachim99@8
|
138 */
|
joachim99@8
|
139 void slotStatusMsg(const QString &text);
|
joachim99@8
|
140
|
joachim99@8
|
141 private:
|
joachim99@8
|
142 /** the configuration object of the application */
|
joachim99@8
|
143 //KConfig *config;
|
joachim99@8
|
144
|
joachim99@8
|
145 // KAction pointers to enable/disable actions
|
joachim99@8
|
146 KAction* fileOpen;
|
joachim99@8
|
147 KAction* fileSave;
|
joachim99@8
|
148 KAction* fileSaveAs;
|
joachim99@8
|
149 KAction* fileQuit;
|
joachim99@8
|
150 KAction* fileReload;
|
joachim99@8
|
151 KAction* editCut;
|
joachim99@8
|
152 KAction* editCopy;
|
joachim99@8
|
153 KAction* editPaste;
|
joachim99@8
|
154 KToggleAction* viewToolBar;
|
joachim99@8
|
155 KToggleAction* viewStatusBar;
|
joachim99@8
|
156
|
joachim99@8
|
157 ////////////////////////////////////////////////////////////////////////
|
joachim99@8
|
158 // Special KDiff3 specific stuff starts here
|
joachim99@8
|
159 KAction *editFind;
|
joachim99@8
|
160 KAction *editFindNext;
|
joachim99@8
|
161 KAction *dirOpen;
|
joachim99@8
|
162 KAction *dirStartOperation;
|
joachim99@8
|
163 KAction *dirCompareCurrent;
|
joachim99@8
|
164 KAction *dirMergeCurrent;
|
joachim99@8
|
165 KToggleAction *dirShowBoth;
|
joachim99@8
|
166 KAction *dirViewToggle;
|
joachim99@8
|
167 KAction *dirRescan;
|
joachim99@8
|
168 KAction* dirChooseAEverywhere;
|
joachim99@8
|
169 KAction* dirChooseBEverywhere;
|
joachim99@8
|
170 KAction* dirChooseCEverywhere;
|
joachim99@8
|
171 KAction* dirAutoChoiceEverywhere;
|
joachim99@8
|
172 KAction* dirDoNothingEverywhere;
|
joachim99@8
|
173 KAction* dirFoldAll;
|
joachim99@8
|
174 KAction* dirUnfoldAll;
|
joachim99@8
|
175
|
joachim99@8
|
176 KAction *goCurrent;
|
joachim99@8
|
177 KAction *goTop;
|
joachim99@8
|
178 KAction *goBottom;
|
joachim99@8
|
179 KAction *goPrevUnsolvedConflict;
|
joachim99@8
|
180 KAction *goNextUnsolvedConflict;
|
joachim99@8
|
181 KAction *goPrevConflict;
|
joachim99@8
|
182 KAction *goNextConflict;
|
joachim99@8
|
183 KAction *goPrevDelta;
|
joachim99@8
|
184 KAction *goNextDelta;
|
joachim99@8
|
185 KToggleAction *chooseA;
|
joachim99@8
|
186 KToggleAction *chooseB;
|
joachim99@8
|
187 KToggleAction *chooseC;
|
joachim99@8
|
188 KToggleAction *autoAdvance;
|
joachim99@8
|
189 KToggleAction *showWhiteSpace;
|
joachim99@8
|
190 KToggleAction *showLineNumbers;
|
joachim99@8
|
191 KAction *chooseAEverywhere;
|
joachim99@8
|
192 KAction *chooseBEverywhere;
|
joachim99@8
|
193 KAction *chooseCEverywhere;
|
joachim99@8
|
194 KAction *autoSolve;
|
joachim99@8
|
195 KAction *unsolve;
|
joachim99@8
|
196 KToggleAction *showWindowA;
|
joachim99@8
|
197 KToggleAction *showWindowB;
|
joachim99@8
|
198 KToggleAction *showWindowC;
|
joachim99@8
|
199 KAction *winFocusNext;
|
joachim99@8
|
200 KAction *winFocusPrev;
|
joachim99@8
|
201 KAction* winToggleSplitOrientation;
|
joachim99@8
|
202
|
joachim99@8
|
203 QPopupMenu* m_pMergeEditorPopupMenu;
|
joachim99@8
|
204
|
joachim99@8
|
205 QSplitter* m_pMainSplitter;
|
joachim99@8
|
206 QFrame* m_pMainWidget;
|
joachim99@8
|
207 QFrame* m_pMergeWindowFrame;
|
joachim99@8
|
208 QScrollBar* m_pHScrollBar;
|
joachim99@8
|
209 QScrollBar* m_pDiffVScrollBar;
|
joachim99@8
|
210 QScrollBar* m_pMergeVScrollBar;
|
joachim99@8
|
211
|
joachim99@8
|
212 DiffTextWindow* m_pDiffTextWindow1;
|
joachim99@8
|
213 DiffTextWindow* m_pDiffTextWindow2;
|
joachim99@8
|
214 DiffTextWindow* m_pDiffTextWindow3;
|
joachim99@8
|
215 QSplitter* m_pDiffWindowSplitter;
|
joachim99@8
|
216
|
joachim99@8
|
217 MergeResultWindow* m_pMergeResultWindow;
|
joachim99@8
|
218 bool m_bTripleDiff;
|
joachim99@8
|
219
|
joachim99@8
|
220 QSplitter* m_pDirectoryMergeSplitter;
|
joachim99@8
|
221 DirectoryMergeWindow* m_pDirectoryMergeWindow;
|
joachim99@8
|
222 DirectoryMergeInfo* m_pDirectoryMergeInfo;
|
joachim99@8
|
223 bool m_bDirCompare;
|
joachim99@8
|
224
|
joachim99@8
|
225 Overview* m_pOverview;
|
joachim99@8
|
226
|
joachim99@8
|
227 QWidget* m_pCornerWidget;
|
joachim99@8
|
228
|
joachim99@8
|
229 TotalDiffStatus m_totalDiffStatus;
|
joachim99@8
|
230
|
joachim99@8
|
231 SourceData m_sd1;
|
joachim99@8
|
232 SourceData m_sd2;
|
joachim99@8
|
233 SourceData m_sd3;
|
joachim99@8
|
234
|
joachim99@8
|
235 SourceData m_sdlm1; // SourceData for Line Matching only.
|
joachim99@8
|
236 SourceData m_sdlm2;
|
joachim99@8
|
237 SourceData m_sdlm3;
|
joachim99@8
|
238
|
joachim99@8
|
239 QString m_outputFilename;
|
joachim99@8
|
240 bool m_bDefaultFilename;
|
joachim99@8
|
241
|
joachim99@8
|
242 DiffList m_diffList12;
|
joachim99@8
|
243 DiffList m_diffList23;
|
joachim99@8
|
244 DiffList m_diffList13;
|
joachim99@8
|
245
|
joachim99@8
|
246 Diff3LineList m_diff3LineList;
|
joachim99@8
|
247 Diff3LineVector m_diff3LineVector;
|
joachim99@8
|
248
|
joachim99@8
|
249 int m_neededLines;
|
joachim99@8
|
250 int m_maxWidth;
|
joachim99@8
|
251 int m_DTWHeight;
|
joachim99@8
|
252 bool m_bOutputModified;
|
joachim99@8
|
253 bool m_bTimerBlock; // Synchronisation
|
joachim99@8
|
254
|
joachim99@8
|
255 OptionDialog* m_pOptionDialog;
|
joachim99@8
|
256 FindDialog* m_pFindDialog;
|
joachim99@8
|
257
|
joachim99@8
|
258 void init( bool bAuto=false );
|
joachim99@8
|
259
|
joachim99@8
|
260 virtual bool eventFilter( QObject* o, QEvent* e );
|
joachim99@8
|
261 virtual void resizeEvent(QResizeEvent*);
|
joachim99@8
|
262
|
joachim99@8
|
263 bool improveFilenames();
|
joachim99@8
|
264
|
joachim99@8
|
265 bool runDiff( LineData* p1, int size1, LineData* p2, int size2, DiffList& diffList );
|
joachim99@8
|
266 bool canContinue();
|
joachim99@8
|
267
|
joachim99@8
|
268
|
joachim99@8
|
269 KActionCollection* actionCollection();
|
joachim99@8
|
270 KStatusBar* statusBar();
|
joachim99@8
|
271 KToolBar* toolBar(const char*);
|
joachim99@8
|
272 KDiff3Part* m_pKDiff3Part;
|
joachim99@8
|
273 KParts::MainWindow* m_pKDiff3Shell;
|
joachim99@8
|
274 bool m_bAuto;
|
joachim99@8
|
275
|
joachim99@8
|
276 private slots:
|
joachim99@8
|
277 void resizeDiffTextWindow(int newWidth, int newHeight);
|
joachim99@8
|
278 void resizeMergeResultWindow();
|
joachim99@8
|
279
|
joachim99@8
|
280 void showPopupMenu( const QPoint& point );
|
joachim99@8
|
281
|
joachim99@8
|
282 void scrollDiffTextWindow( int deltaX, int deltaY );
|
joachim99@8
|
283 void scrollMergeResultWindow( int deltaX, int deltaY );
|
joachim99@8
|
284 void setDiff3Line( int line );
|
joachim99@8
|
285 void sourceMask( int srcMask, int enabledMask );
|
joachim99@8
|
286
|
joachim99@8
|
287 void slotDirShowBoth();
|
joachim99@8
|
288 void slotDirViewToggle();
|
joachim99@8
|
289
|
joachim99@8
|
290 void slotUpdateAvailabilities();
|
joachim99@8
|
291 void slotEditFind();
|
joachim99@8
|
292 void slotEditFindNext();
|
joachim99@8
|
293 void slotGoCurrent();
|
joachim99@8
|
294 void slotGoTop();
|
joachim99@8
|
295 void slotGoBottom();
|
joachim99@8
|
296 void slotGoPrevUnsolvedConflict();
|
joachim99@8
|
297 void slotGoNextUnsolvedConflict();
|
joachim99@8
|
298 void slotGoPrevConflict();
|
joachim99@8
|
299 void slotGoNextConflict();
|
joachim99@8
|
300 void slotGoPrevDelta();
|
joachim99@8
|
301 void slotGoNextDelta();
|
joachim99@8
|
302 void slotChooseA();
|
joachim99@8
|
303 void slotChooseB();
|
joachim99@8
|
304 void slotChooseC();
|
joachim99@8
|
305 void slotAutoSolve();
|
joachim99@8
|
306 void slotUnsolve();
|
joachim99@8
|
307 void slotChooseAEverywhere();
|
joachim99@8
|
308 void slotChooseBEverywhere();
|
joachim99@8
|
309 void slotChooseCEverywhere();
|
joachim99@8
|
310 void slotConfigure();
|
joachim99@8
|
311 void slotConfigureKeys();
|
joachim99@8
|
312 void slotRefresh();
|
joachim99@8
|
313 void slotSelectionEnd();
|
joachim99@8
|
314 void slotSelectionStart();
|
joachim99@8
|
315 void slotClipboardChanged();
|
joachim99@8
|
316 void slotOutputModified();
|
joachim99@8
|
317 void slotAfterFirstPaint();
|
joachim99@8
|
318 void slotMergeCurrentFile();
|
joachim99@8
|
319 void slotReload();
|
joachim99@8
|
320 void slotCheckIfCanContinue( bool* pbContinue );
|
joachim99@8
|
321 void slotShowWhiteSpaceToggled();
|
joachim99@8
|
322 void slotShowLineNumbersToggled();
|
joachim99@8
|
323 void slotAutoAdvanceToggled();
|
joachim99@8
|
324 void slotShowWindowAToggled();
|
joachim99@8
|
325 void slotShowWindowBToggled();
|
joachim99@8
|
326 void slotShowWindowCToggled();
|
joachim99@8
|
327 void slotWinFocusNext();
|
joachim99@8
|
328 void slotWinFocusPrev();
|
joachim99@8
|
329 void slotWinToggleSplitterOrientation();
|
joachim99@8
|
330 };
|
joachim99@8
|
331
|
joachim99@8
|
332
|
joachim99@8
|
333 class OpenDialog : public QDialog
|
joachim99@8
|
334 {
|
joachim99@8
|
335 Q_OBJECT
|
joachim99@8
|
336 public:
|
joachim99@8
|
337 OpenDialog(
|
joachim99@8
|
338 QWidget* pParent, const QString& n1, const QString& n2, const QString& n3,
|
joachim99@8
|
339 bool bMerge, const QString& outputName, const char* slotConfigure, OptionDialog* pOptions );
|
joachim99@8
|
340
|
joachim99@8
|
341 QComboBox* m_lineA;
|
joachim99@8
|
342 QComboBox* m_lineB;
|
joachim99@8
|
343 QComboBox* m_lineC;
|
joachim99@8
|
344 QComboBox* m_lineOut;
|
joachim99@8
|
345
|
joachim99@8
|
346 QCheckBox* m_pMerge;
|
joachim99@8
|
347 virtual void accept();
|
joachim99@8
|
348 private:
|
joachim99@8
|
349 OptionDialog* m_pOptions;
|
joachim99@8
|
350 void selectURL( QComboBox* pLine, bool bDir, int i, bool bSave );
|
joachim99@8
|
351 private slots:
|
joachim99@8
|
352 void selectFileA();
|
joachim99@8
|
353 void selectFileB();
|
joachim99@8
|
354 void selectFileC();
|
joachim99@8
|
355 void selectDirA();
|
joachim99@8
|
356 void selectDirB();
|
joachim99@8
|
357 void selectDirC();
|
joachim99@8
|
358 void selectOutputName();
|
joachim99@8
|
359 void selectOutputDir();
|
joachim99@8
|
360 void internalSlot(int);
|
joachim99@8
|
361 signals:
|
joachim99@8
|
362 void internalSignal(bool);
|
joachim99@8
|
363 };
|
joachim99@8
|
364
|
joachim99@8
|
365 class FindDialog : public QDialog
|
joachim99@8
|
366 {
|
joachim99@8
|
367 Q_OBJECT
|
joachim99@8
|
368 public:
|
joachim99@8
|
369 FindDialog(QWidget* pParent);
|
joachim99@8
|
370
|
joachim99@8
|
371 signals:
|
joachim99@8
|
372 void findNext();
|
joachim99@8
|
373
|
joachim99@8
|
374 public:
|
joachim99@8
|
375 QLineEdit* m_pSearchString;
|
joachim99@8
|
376 QCheckBox* m_pSearchInA;
|
joachim99@8
|
377 QCheckBox* m_pSearchInB;
|
joachim99@8
|
378 QCheckBox* m_pSearchInC;
|
joachim99@8
|
379 QCheckBox* m_pSearchInOutput;
|
joachim99@8
|
380 QCheckBox* m_pCaseSensitive;
|
joachim99@8
|
381
|
joachim99@8
|
382 int currentLine;
|
joachim99@8
|
383 int currentPos;
|
joachim99@8
|
384 int currentWindow;
|
joachim99@8
|
385 };
|
joachim99@8
|
386 #endif // KDIFF3_H
|