annotate kdiff3/src/kdiff3.h @ 8:86d21651c8db

KDiff3 version 0.9.70
author joachim99
date Mon, 06 Oct 2003 18:50:45 +0000
parents
children c59d5a3a8ff3
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 /***************************************************************************
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