annotate kdiff3/src/kdiff3.h @ 51:c59d5a3a8ff3

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