annotate kdiff3/src-QT4/kdiff3.h @ 113:7bca1f1340f6 tip

Build fixes for Xcode 10 / Qt 5.12
author Chris Cannam
date Mon, 17 Dec 2018 11:13:01 +0000
parents 4e6ebbbae925
children
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@77 5 copyright : (C) 2002-2007 by Joachim Eibl
joachim99@69 6 email : joachim.eibl at 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@80 23 #include <config-kdiff3.h>
joachim99@8 24
joachim99@8 25 // include files for Qt
joachim99@75 26 #include <QSplitter>
joachim99@75 27 #include <QScrollBar>
joachim99@8 28
joachim99@8 29 // include files for KDE
joachim99@8 30 #include <kapplication.h>
joachim99@8 31 #include <kmainwindow.h>
joachim99@8 32 #include <kaction.h>
joachim99@8 33 #include <kurl.h>
joachim99@8 34 #include <kparts/mainwindow.h>
joachim99@80 35 #include <ktoggleaction.h>
joachim99@8 36
joachim99@8 37
joachim99@8 38 // forward declaration of the KDiff3 classes
joachim99@8 39 class OptionDialog;
joachim99@8 40 class FindDialog;
joachim99@69 41 class ManualDiffHelpDialog;
joachim99@69 42 class DiffTextWindow;
joachim99@69 43 class DiffTextWindowFrame;
joachim99@69 44 class MergeResultWindow;
joachim99@75 45 class WindowTitleWidget;
joachim99@69 46 class Overview;
joachim99@8 47
joachim99@8 48 class QScrollBar;
joachim99@8 49 class QSplitter;
joachim99@8 50
joachim99@8 51
joachim99@8 52 class KDiff3Part;
joachim99@8 53 class DirectoryMergeWindow;
joachim99@8 54 class DirectoryMergeInfo;
joachim99@8 55
joachim99@8 56
joachim99@68 57 class ReversibleScrollBar : public QScrollBar
joachim99@68 58 {
joachim99@68 59 Q_OBJECT
joachim99@68 60 bool* m_pbRightToLeftLanguage;
joachim99@68 61 int m_realVal;
joachim99@68 62 public:
joachim99@75 63 ReversibleScrollBar( Qt::Orientation o, bool* pbRightToLeftLanguage )
joachim99@75 64 : QScrollBar( o )
joachim99@68 65 {
joachim99@68 66 m_pbRightToLeftLanguage=pbRightToLeftLanguage;
joachim99@68 67 m_realVal=0;
joachim99@68 68 connect( this, SIGNAL(valueChanged(int)), this, SLOT(slotValueChanged(int)));
joachim99@68 69 }
joachim99@68 70 void setAgain(){ setValue(m_realVal); }
joachim99@68 71 public slots:
joachim99@68 72 void slotValueChanged(int i)
joachim99@68 73 {
joachim99@68 74 m_realVal = i;
joachim99@68 75 if(m_pbRightToLeftLanguage && *m_pbRightToLeftLanguage)
joachim99@75 76 m_realVal = maximum()-(i-minimum());
joachim99@68 77 emit valueChanged2(m_realVal);
joachim99@68 78 }
joachim99@68 79 void setValue(int i)
joachim99@68 80 {
joachim99@68 81 if(m_pbRightToLeftLanguage && *m_pbRightToLeftLanguage)
joachim99@75 82 QScrollBar::setValue( maximum()-(i-minimum()) );
joachim99@68 83 else
joachim99@68 84 QScrollBar::setValue( i );
joachim99@68 85 }
joachim99@68 86 signals:
joachim99@68 87 void valueChanged2(int);
joachim99@68 88 };
joachim99@68 89
joachim99@8 90 class KDiff3App : public QSplitter
joachim99@8 91 {
joachim99@8 92 Q_OBJECT
joachim99@8 93
joachim99@8 94 public:
joachim99@69 95 /** constructor of KDiff3App, calls all init functions to create the application.
joachim99@8 96 */
joachim99@8 97 KDiff3App( QWidget* parent, const char* name, KDiff3Part* pKDiff3Part );
joachim99@8 98 ~KDiff3App();
joachim99@8 99
joachim99@8 100 bool isPart();
joachim99@8 101
joachim99@8 102 /** initializes the KActions of the application */
joachim99@8 103 void initActions( KActionCollection* );
joachim99@8 104
joachim99@8 105 /** save general Options like all bar positions and status as well as the geometry
joachim99@8 106 and the recent file list to the configuration file */
joachim99@80 107 void saveOptions( KSharedConfigPtr );
joachim99@8 108
joachim99@8 109 /** read general Options again and initialize all variables like the recent file list */
joachim99@80 110 void readOptions( KSharedConfigPtr );
joachim99@8 111
joachim99@8 112 // Finish initialisation (virtual, so that it can be called from the shell too.)
joachim99@69 113 virtual void completeInit(const QString& fn1="", const QString& fn2="", const QString& fn3="");
joachim99@8 114
joachim99@8 115 /** queryClose is called by KMainWindow on each closeEvent of a window. Against the
joachim99@8 116 * default implementation (only returns true), this calles saveModified() on the document object to ask if the document shall
joachim99@8 117 * be saved if Modified; on cancel the closeEvent is rejected.
joachim99@8 118 * @see KMainWindow#queryClose
joachim99@8 119 * @see KMainWindow#closeEvent
joachim99@8 120 */
joachim99@8 121 virtual bool queryClose();
joachim99@69 122 virtual bool isFileSaved();
joachim99@80 123 virtual bool isDirComparison();
joachim99@8 124
joachim99@69 125 signals:
joachim99@69 126 void createNewInstance( const QString& fn1, const QString& fn2, const QString& fn3 );
joachim99@8 127 protected:
joachim99@8 128 void initDirectoryMergeActions();
joachim99@8 129 /** sets up the statusbar for the main window by initialzing a statuslabel. */
joachim99@8 130 void initStatusBar();
joachim99@8 131
joachim99@8 132 /** creates the centerwidget of the KMainWindow instance and sets it as the view */
joachim99@8 133 void initView();
joachim99@8 134
joachim99@8 135 public slots:
joachim99@8 136
joachim99@8 137 /** open a file and load it into the document*/
joachim99@8 138 void slotFileOpen();
joachim99@8 139 void slotFileOpen2( QString fn1, QString fn2, QString fn3, QString ofn,
joachim99@66 140 QString an1, QString an2, QString an3, TotalDiffStatus* pTotalDiffStatus );
joachim99@8 141
joachim99@69 142 void slotFileNameChanged(const QString& fileName, int winIdx);
joachim99@69 143
joachim99@8 144 /** save a document */
joachim99@8 145 void slotFileSave();
joachim99@8 146 /** save a document by a new filename*/
joachim99@8 147 void slotFileSaveAs();
joachim99@8 148
joachim99@69 149 void slotFilePrint();
joachim99@69 150
joachim99@8 151 /** closes all open windows by calling close() on each memberList item until the list is empty, then quits the application.
joachim99@8 152 * If queryClose() returns false because the user canceled the saveModified() dialog, the closing breaks.
joachim99@8 153 */
joachim99@8 154 void slotFileQuit();
joachim99@8 155 /** put the marked text/object into the clipboard and remove
joachim99@8 156 * it from the document
joachim99@8 157 */
joachim99@8 158 void slotEditCut();
joachim99@8 159 /** put the marked text/object into the clipboard
joachim99@8 160 */
joachim99@8 161 void slotEditCopy();
joachim99@8 162 /** paste the clipboard into the document
joachim99@8 163 */
joachim99@8 164 void slotEditPaste();
joachim99@8 165 /** toggles the toolbar
joachim99@8 166 */
joachim99@8 167 void slotViewToolBar();
joachim99@8 168 /** toggles the statusbar
joachim99@8 169 */
joachim99@8 170 void slotViewStatusBar();
joachim99@8 171 /** changes the statusbar contents for the standard label permanently, used to indicate current actions.
joachim99@8 172 * @param text the text that is displayed in the statusbar
joachim99@8 173 */
joachim99@8 174 void slotStatusMsg(const QString &text);
joachim99@8 175
joachim99@8 176 private:
joachim99@8 177 /** the configuration object of the application */
joachim99@8 178 //KConfig *config;
joachim99@8 179
joachim99@8 180 // KAction pointers to enable/disable actions
joachim99@8 181 KAction* fileOpen;
joachim99@8 182 KAction* fileSave;
joachim99@8 183 KAction* fileSaveAs;
joachim99@69 184 KAction* filePrint;
joachim99@8 185 KAction* fileQuit;
joachim99@8 186 KAction* fileReload;
joachim99@8 187 KAction* editCut;
joachim99@8 188 KAction* editCopy;
joachim99@8 189 KAction* editPaste;
joachim99@69 190 KAction* editSelectAll;
joachim99@8 191 KToggleAction* viewToolBar;
joachim99@8 192 KToggleAction* viewStatusBar;
joachim99@8 193
joachim99@8 194 ////////////////////////////////////////////////////////////////////////
joachim99@8 195 // Special KDiff3 specific stuff starts here
joachim99@8 196 KAction *editFind;
joachim99@8 197 KAction *editFindNext;
joachim99@8 198
joachim99@8 199 KAction *goCurrent;
joachim99@8 200 KAction *goTop;
joachim99@8 201 KAction *goBottom;
joachim99@8 202 KAction *goPrevUnsolvedConflict;
joachim99@8 203 KAction *goNextUnsolvedConflict;
joachim99@8 204 KAction *goPrevConflict;
joachim99@8 205 KAction *goNextConflict;
joachim99@8 206 KAction *goPrevDelta;
joachim99@8 207 KAction *goNextDelta;
joachim99@8 208 KToggleAction *chooseA;
joachim99@8 209 KToggleAction *chooseB;
joachim99@8 210 KToggleAction *chooseC;
joachim99@8 211 KToggleAction *autoAdvance;
joachim99@66 212 KToggleAction *wordWrap;
joachim99@69 213 KAction* splitDiff;
joachim99@69 214 KAction* joinDiffs;
joachim99@69 215 KAction* addManualDiffHelp;
joachim99@69 216 KAction* clearManualDiffHelpList;
joachim99@51 217 KToggleAction *showWhiteSpaceCharacters;
joachim99@8 218 KToggleAction *showWhiteSpace;
joachim99@8 219 KToggleAction *showLineNumbers;
joachim99@51 220 KAction* chooseAEverywhere;
joachim99@51 221 KAction* chooseBEverywhere;
joachim99@51 222 KAction* chooseCEverywhere;
joachim99@51 223 KAction* chooseAForUnsolvedConflicts;
joachim99@51 224 KAction* chooseBForUnsolvedConflicts;
joachim99@51 225 KAction* chooseCForUnsolvedConflicts;
joachim99@51 226 KAction* chooseAForUnsolvedWhiteSpaceConflicts;
joachim99@51 227 KAction* chooseBForUnsolvedWhiteSpaceConflicts;
joachim99@51 228 KAction* chooseCForUnsolvedWhiteSpaceConflicts;
joachim99@69 229 KAction* autoSolve;
joachim99@69 230 KAction* unsolve;
joachim99@69 231 KAction* mergeHistory;
joachim99@69 232 KAction* mergeRegExp;
joachim99@8 233 KToggleAction *showWindowA;
joachim99@8 234 KToggleAction *showWindowB;
joachim99@8 235 KToggleAction *showWindowC;
joachim99@8 236 KAction *winFocusNext;
joachim99@8 237 KAction *winFocusPrev;
joachim99@8 238 KAction* winToggleSplitOrientation;
joachim99@51 239 KToggleAction *dirShowBoth;
joachim99@51 240 KAction *dirViewToggle;
joachim99@66 241 KToggleAction *overviewModeNormal;
joachim99@66 242 KToggleAction *overviewModeAB;
joachim99@66 243 KToggleAction *overviewModeAC;
joachim99@66 244 KToggleAction *overviewModeBC;
joachim99@66 245
joachim99@8 246
joachim99@75 247 QMenu* m_pMergeEditorPopupMenu;
joachim99@8 248
joachim99@8 249 QSplitter* m_pMainSplitter;
joachim99@69 250 QWidget* m_pMainWidget;
joachim99@69 251 QWidget* m_pMergeWindowFrame;
joachim99@68 252 ReversibleScrollBar* m_pHScrollBar;
joachim99@8 253 QScrollBar* m_pDiffVScrollBar;
joachim99@8 254 QScrollBar* m_pMergeVScrollBar;
joachim99@8 255
joachim99@8 256 DiffTextWindow* m_pDiffTextWindow1;
joachim99@8 257 DiffTextWindow* m_pDiffTextWindow2;
joachim99@8 258 DiffTextWindow* m_pDiffTextWindow3;
joachim99@69 259 DiffTextWindowFrame* m_pDiffTextWindowFrame1;
joachim99@69 260 DiffTextWindowFrame* m_pDiffTextWindowFrame2;
joachim99@69 261 DiffTextWindowFrame* m_pDiffTextWindowFrame3;
joachim99@8 262 QSplitter* m_pDiffWindowSplitter;
joachim99@8 263
joachim99@8 264 MergeResultWindow* m_pMergeResultWindow;
joachim99@75 265 WindowTitleWidget* m_pMergeResultWindowTitle;
joachim99@8 266 bool m_bTripleDiff;
joachim99@8 267
joachim99@8 268 QSplitter* m_pDirectoryMergeSplitter;
joachim99@8 269 DirectoryMergeWindow* m_pDirectoryMergeWindow;
joachim99@8 270 DirectoryMergeInfo* m_pDirectoryMergeInfo;
joachim99@8 271 bool m_bDirCompare;
joachim99@8 272
joachim99@8 273 Overview* m_pOverview;
joachim99@8 274
joachim99@8 275 QWidget* m_pCornerWidget;
joachim99@51 276
joachim99@8 277 TotalDiffStatus m_totalDiffStatus;
joachim99@8 278
joachim99@8 279 SourceData m_sd1;
joachim99@8 280 SourceData m_sd2;
joachim99@8 281 SourceData m_sd3;
joachim99@8 282
joachim99@8 283 QString m_outputFilename;
joachim99@8 284 bool m_bDefaultFilename;
joachim99@8 285
joachim99@8 286 DiffList m_diffList12;
joachim99@8 287 DiffList m_diffList23;
joachim99@8 288 DiffList m_diffList13;
joachim99@8 289
joachim99@69 290 DiffBufferInfo m_diffBufferInfo;
joachim99@8 291 Diff3LineList m_diff3LineList;
joachim99@8 292 Diff3LineVector m_diff3LineVector;
joachim99@69 293 //ManualDiffHelpDialog* m_pManualDiffHelpDialog;
joachim99@69 294 ManualDiffHelpList m_manualDiffHelpList;
joachim99@8 295
joachim99@8 296 int m_neededLines;
joachim99@8 297 int m_DTWHeight;
joachim99@8 298 bool m_bOutputModified;
joachim99@69 299 bool m_bFileSaved;
joachim99@8 300 bool m_bTimerBlock; // Synchronisation
joachim99@8 301
joachim99@8 302 OptionDialog* m_pOptionDialog;
joachim99@8 303 FindDialog* m_pFindDialog;
joachim99@8 304
joachim99@69 305 void init( bool bAuto=false, TotalDiffStatus* pTotalDiffStatus=0, bool bLoadFiles=true );
joachim99@8 306
joachim99@80 307
joachim99@8 308 virtual bool eventFilter( QObject* o, QEvent* e );
joachim99@8 309 virtual void resizeEvent(QResizeEvent*);
joachim99@8 310
joachim99@69 311 bool improveFilenames(bool bCreateNewInstance);
joachim99@8 312
joachim99@69 313 bool runDiff( const LineData* p1, int size1, const LineData* p2, int size2, DiffList& diffList, int winIdx1, int winIdx2 );
joachim99@58 314 bool runDiff( const LineData* p1, int size1, const LineData* p2, int size2, DiffList& diffList );
joachim99@8 315 bool canContinue();
joachim99@8 316
joachim99@53 317 void choose(int choice);
joachim99@8 318
joachim99@8 319 KActionCollection* actionCollection();
joachim99@8 320 KStatusBar* statusBar();
joachim99@8 321 KToolBar* toolBar(const char*);
joachim99@8 322 KDiff3Part* m_pKDiff3Part;
joachim99@8 323 KParts::MainWindow* m_pKDiff3Shell;
joachim99@77 324 bool m_bAutoFlag;
joachim99@77 325 bool m_bAutoMode;
joachim99@69 326 void recalcWordWrap(int nofVisibleColumns=-1);
joachim99@92 327 void setHScrollBarRange();
joachim99@8 328
joachim99@51 329 public slots:
joachim99@8 330 void resizeDiffTextWindow(int newWidth, int newHeight);
joachim99@8 331 void resizeMergeResultWindow();
joachim99@69 332 void slotRecalcWordWrap();
joachim99@8 333
joachim99@8 334 void showPopupMenu( const QPoint& point );
joachim99@8 335
joachim99@8 336 void scrollDiffTextWindow( int deltaX, int deltaY );
joachim99@8 337 void scrollMergeResultWindow( int deltaX, int deltaY );
joachim99@8 338 void setDiff3Line( int line );
joachim99@8 339 void sourceMask( int srcMask, int enabledMask );
joachim99@8 340
joachim99@8 341 void slotDirShowBoth();
joachim99@8 342 void slotDirViewToggle();
joachim99@8 343
joachim99@8 344 void slotUpdateAvailabilities();
joachim99@69 345 void slotEditSelectAll();
joachim99@8 346 void slotEditFind();
joachim99@8 347 void slotEditFindNext();
joachim99@8 348 void slotGoCurrent();
joachim99@8 349 void slotGoTop();
joachim99@8 350 void slotGoBottom();
joachim99@8 351 void slotGoPrevUnsolvedConflict();
joachim99@8 352 void slotGoNextUnsolvedConflict();
joachim99@8 353 void slotGoPrevConflict();
joachim99@8 354 void slotGoNextConflict();
joachim99@8 355 void slotGoPrevDelta();
joachim99@8 356 void slotGoNextDelta();
joachim99@8 357 void slotChooseA();
joachim99@8 358 void slotChooseB();
joachim99@8 359 void slotChooseC();
joachim99@8 360 void slotAutoSolve();
joachim99@8 361 void slotUnsolve();
joachim99@69 362 void slotMergeHistory();
joachim99@69 363 void slotRegExpAutoMerge();
joachim99@8 364 void slotChooseAEverywhere();
joachim99@8 365 void slotChooseBEverywhere();
joachim99@8 366 void slotChooseCEverywhere();
joachim99@51 367 void slotChooseAForUnsolvedConflicts();
joachim99@51 368 void slotChooseBForUnsolvedConflicts();
joachim99@51 369 void slotChooseCForUnsolvedConflicts();
joachim99@51 370 void slotChooseAForUnsolvedWhiteSpaceConflicts();
joachim99@51 371 void slotChooseBForUnsolvedWhiteSpaceConflicts();
joachim99@51 372 void slotChooseCForUnsolvedWhiteSpaceConflicts();
joachim99@8 373 void slotConfigure();
joachim99@8 374 void slotConfigureKeys();
joachim99@8 375 void slotRefresh();
joachim99@8 376 void slotSelectionEnd();
joachim99@8 377 void slotSelectionStart();
joachim99@8 378 void slotClipboardChanged();
joachim99@75 379 void slotOutputModified(bool);
joachim99@8 380 void slotAfterFirstPaint();
joachim99@8 381 void slotMergeCurrentFile();
joachim99@8 382 void slotReload();
joachim99@8 383 void slotCheckIfCanContinue( bool* pbContinue );
joachim99@8 384 void slotShowWhiteSpaceToggled();
joachim99@8 385 void slotShowLineNumbersToggled();
joachim99@8 386 void slotAutoAdvanceToggled();
joachim99@66 387 void slotWordWrapToggled();
joachim99@8 388 void slotShowWindowAToggled();
joachim99@8 389 void slotShowWindowBToggled();
joachim99@8 390 void slotShowWindowCToggled();
joachim99@8 391 void slotWinFocusNext();
joachim99@8 392 void slotWinFocusPrev();
joachim99@8 393 void slotWinToggleSplitterOrientation();
joachim99@66 394 void slotOverviewNormal();
joachim99@66 395 void slotOverviewAB();
joachim99@66 396 void slotOverviewAC();
joachim99@66 397 void slotOverviewBC();
joachim99@69 398 void slotSplitDiff();
joachim99@69 399 void slotJoinDiffs();
joachim99@69 400 void slotAddManualDiffHelp();
joachim99@69 401 void slotClearManualDiffHelpList();
joachim99@69 402
joachim99@69 403 void slotNoRelevantChangesDetected();
joachim99@8 404 };
joachim99@8 405
joachim99@8 406 #endif // KDIFF3_H