summaryrefslogtreecommitdiffstats
path: root/src/kdiff3.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/kdiff3.h')
-rw-r--r--src/kdiff3.h410
1 files changed, 410 insertions, 0 deletions
diff --git a/src/kdiff3.h b/src/kdiff3.h
new file mode 100644
index 0000000..72b1a79
--- /dev/null
+++ b/src/kdiff3.h
@@ -0,0 +1,410 @@
+/***************************************************************************
+ kdiff3.h - description
+ -------------------
+ begin : Don Jul 11 12:31:29 CEST 2002
+ copyright : (C) 2002-2007 by Joachim Eibl
+ email : joachim.eibl at gmx.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#ifndef KDIFF3_H
+#define KDIFF3_H
+
+#include "diff.h"
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+// include files for Qt
+#include <qdialog.h>
+#include <qsplitter.h>
+#include <qscrollbar.h>
+
+// include files for KDE
+#include <kapplication.h>
+#include <kmainwindow.h>
+#include <kaccel.h>
+#include <kaction.h>
+#include <kurl.h>
+#include <kparts/mainwindow.h>
+
+
+// forward declaration of the KDiff3 classes
+class OptionDialog;
+class FindDialog;
+class ManualDiffHelpDialog;
+class DiffTextWindow;
+class DiffTextWindowFrame;
+class MergeResultWindow;
+class WindowTitleWidget;
+class Overview;
+
+class QScrollBar;
+class QComboBox;
+class QLineEdit;
+class QCheckBox;
+class QSplitter;
+
+
+class KDiff3Part;
+class DirectoryMergeWindow;
+class DirectoryMergeInfo;
+
+
+class ReversibleScrollBar : public QScrollBar
+{
+ Q_OBJECT
+ bool* m_pbRightToLeftLanguage;
+ int m_realVal;
+public:
+ ReversibleScrollBar( Orientation o, QWidget* pParent, bool* pbRightToLeftLanguage )
+ : QScrollBar( o, pParent )
+ {
+ m_pbRightToLeftLanguage=pbRightToLeftLanguage;
+ m_realVal=0;
+ connect( this, SIGNAL(valueChanged(int)), this, SLOT(slotValueChanged(int)));
+ }
+ void setAgain(){ setValue(m_realVal); }
+public slots:
+ void slotValueChanged(int i)
+ {
+ m_realVal = i;
+ if(m_pbRightToLeftLanguage && *m_pbRightToLeftLanguage)
+ m_realVal = maxValue()-(i-minValue());
+ emit valueChanged2(m_realVal);
+ }
+ void setValue(int i)
+ {
+ if(m_pbRightToLeftLanguage && *m_pbRightToLeftLanguage)
+ QScrollBar::setValue( maxValue()-(i-minValue()) );
+ else
+ QScrollBar::setValue( i );
+ }
+signals:
+ void valueChanged2(int);
+};
+
+class KDiff3App : public QSplitter
+{
+ Q_OBJECT
+
+ public:
+ /** constructor of KDiff3App, calls all init functions to create the application.
+ */
+ KDiff3App( QWidget* parent, const char* name, KDiff3Part* pKDiff3Part );
+ ~KDiff3App();
+
+ bool isPart();
+
+ /** initializes the KActions of the application */
+ void initActions( KActionCollection* );
+
+ /** save general Options like all bar positions and status as well as the geometry
+ and the recent file list to the configuration file */
+ void saveOptions( KConfig* );
+
+ /** read general Options again and initialize all variables like the recent file list */
+ void readOptions( KConfig* );
+
+ // Finish initialisation (virtual, so that it can be called from the shell too.)
+ virtual void completeInit(const QString& fn1="", const QString& fn2="", const QString& fn3="");
+
+ /** queryClose is called by KMainWindow on each closeEvent of a window. Against the
+ * default implementation (only returns true), this calles saveModified() on the document object to ask if the document shall
+ * be saved if Modified; on cancel the closeEvent is rejected.
+ * @see KMainWindow#queryClose
+ * @see KMainWindow#closeEvent
+ */
+ virtual bool queryClose();
+ virtual bool isFileSaved();
+
+ signals:
+ void createNewInstance( const QString& fn1, const QString& fn2, const QString& fn3 );
+ protected:
+ void initDirectoryMergeActions();
+ /** sets up the statusbar for the main window by initialzing a statuslabel. */
+ void initStatusBar();
+
+ /** creates the centerwidget of the KMainWindow instance and sets it as the view */
+ void initView();
+
+ public slots:
+
+ /** open a file and load it into the document*/
+ void slotFileOpen();
+ void slotFileOpen2( QString fn1, QString fn2, QString fn3, QString ofn,
+ QString an1, QString an2, QString an3, TotalDiffStatus* pTotalDiffStatus );
+
+ void slotFileNameChanged(const QString& fileName, int winIdx);
+
+ /** save a document */
+ void slotFileSave();
+ /** save a document by a new filename*/
+ void slotFileSaveAs();
+
+ void slotFilePrint();
+
+ /** closes all open windows by calling close() on each memberList item until the list is empty, then quits the application.
+ * If queryClose() returns false because the user canceled the saveModified() dialog, the closing breaks.
+ */
+ void slotFileQuit();
+ /** put the marked text/object into the clipboard and remove
+ * it from the document
+ */
+ void slotEditCut();
+ /** put the marked text/object into the clipboard
+ */
+ void slotEditCopy();
+ /** paste the clipboard into the document
+ */
+ void slotEditPaste();
+ /** toggles the toolbar
+ */
+ void slotViewToolBar();
+ /** toggles the statusbar
+ */
+ void slotViewStatusBar();
+ /** changes the statusbar contents for the standard label permanently, used to indicate current actions.
+ * @param text the text that is displayed in the statusbar
+ */
+ void slotStatusMsg(const QString &text);
+
+ private:
+ /** the configuration object of the application */
+ //KConfig *config;
+
+ // KAction pointers to enable/disable actions
+ KAction* fileOpen;
+ KAction* fileSave;
+ KAction* fileSaveAs;
+ KAction* filePrint;
+ KAction* fileQuit;
+ KAction* fileReload;
+ KAction* editCut;
+ KAction* editCopy;
+ KAction* editPaste;
+ KAction* editSelectAll;
+ KToggleAction* viewToolBar;
+ KToggleAction* viewStatusBar;
+
+////////////////////////////////////////////////////////////////////////
+// Special KDiff3 specific stuff starts here
+ KAction *editFind;
+ KAction *editFindNext;
+
+ KAction *goCurrent;
+ KAction *goTop;
+ KAction *goBottom;
+ KAction *goPrevUnsolvedConflict;
+ KAction *goNextUnsolvedConflict;
+ KAction *goPrevConflict;
+ KAction *goNextConflict;
+ KAction *goPrevDelta;
+ KAction *goNextDelta;
+ KToggleAction *chooseA;
+ KToggleAction *chooseB;
+ KToggleAction *chooseC;
+ KToggleAction *autoAdvance;
+ KToggleAction *wordWrap;
+ KAction* splitDiff;
+ KAction* joinDiffs;
+ KAction* addManualDiffHelp;
+ KAction* clearManualDiffHelpList;
+ KToggleAction *showWhiteSpaceCharacters;
+ KToggleAction *showWhiteSpace;
+ KToggleAction *showLineNumbers;
+ KAction* chooseAEverywhere;
+ KAction* chooseBEverywhere;
+ KAction* chooseCEverywhere;
+ KAction* chooseAForUnsolvedConflicts;
+ KAction* chooseBForUnsolvedConflicts;
+ KAction* chooseCForUnsolvedConflicts;
+ KAction* chooseAForUnsolvedWhiteSpaceConflicts;
+ KAction* chooseBForUnsolvedWhiteSpaceConflicts;
+ KAction* chooseCForUnsolvedWhiteSpaceConflicts;
+ KAction* autoSolve;
+ KAction* unsolve;
+ KAction* mergeHistory;
+ KAction* mergeRegExp;
+ KToggleAction *showWindowA;
+ KToggleAction *showWindowB;
+ KToggleAction *showWindowC;
+ KAction *winFocusNext;
+ KAction *winFocusPrev;
+ KAction* winToggleSplitOrientation;
+ KToggleAction *dirShowBoth;
+ KAction *dirViewToggle;
+ KToggleAction *overviewModeNormal;
+ KToggleAction *overviewModeAB;
+ KToggleAction *overviewModeAC;
+ KToggleAction *overviewModeBC;
+
+
+ QPopupMenu* m_pMergeEditorPopupMenu;
+
+ QSplitter* m_pMainSplitter;
+ QWidget* m_pMainWidget;
+ QWidget* m_pMergeWindowFrame;
+ ReversibleScrollBar* m_pHScrollBar;
+ QScrollBar* m_pDiffVScrollBar;
+ QScrollBar* m_pMergeVScrollBar;
+
+ DiffTextWindow* m_pDiffTextWindow1;
+ DiffTextWindow* m_pDiffTextWindow2;
+ DiffTextWindow* m_pDiffTextWindow3;
+ DiffTextWindowFrame* m_pDiffTextWindowFrame1;
+ DiffTextWindowFrame* m_pDiffTextWindowFrame2;
+ DiffTextWindowFrame* m_pDiffTextWindowFrame3;
+ QSplitter* m_pDiffWindowSplitter;
+
+ MergeResultWindow* m_pMergeResultWindow;
+ WindowTitleWidget* m_pMergeResultWindowTitle;
+ bool m_bTripleDiff;
+
+ QSplitter* m_pDirectoryMergeSplitter;
+ DirectoryMergeWindow* m_pDirectoryMergeWindow;
+ DirectoryMergeInfo* m_pDirectoryMergeInfo;
+ bool m_bDirCompare;
+
+ Overview* m_pOverview;
+
+ QWidget* m_pCornerWidget;
+
+ TotalDiffStatus m_totalDiffStatus;
+
+ SourceData m_sd1;
+ SourceData m_sd2;
+ SourceData m_sd3;
+
+ QString m_outputFilename;
+ bool m_bDefaultFilename;
+
+ DiffList m_diffList12;
+ DiffList m_diffList23;
+ DiffList m_diffList13;
+
+ DiffBufferInfo m_diffBufferInfo;
+ Diff3LineList m_diff3LineList;
+ Diff3LineVector m_diff3LineVector;
+ //ManualDiffHelpDialog* m_pManualDiffHelpDialog;
+ ManualDiffHelpList m_manualDiffHelpList;
+
+ int m_neededLines;
+ int m_maxWidth;
+ int m_DTWHeight;
+ bool m_bOutputModified;
+ bool m_bFileSaved;
+ bool m_bTimerBlock; // Synchronisation
+
+ OptionDialog* m_pOptionDialog;
+ FindDialog* m_pFindDialog;
+
+ void init( bool bAuto=false, TotalDiffStatus* pTotalDiffStatus=0, bool bLoadFiles=true );
+
+ virtual bool eventFilter( QObject* o, QEvent* e );
+ virtual void resizeEvent(QResizeEvent*);
+
+ bool improveFilenames(bool bCreateNewInstance);
+
+ bool runDiff( const LineData* p1, int size1, const LineData* p2, int size2, DiffList& diffList, int winIdx1, int winIdx2 );
+ bool runDiff( const LineData* p1, int size1, const LineData* p2, int size2, DiffList& diffList );
+ bool canContinue();
+
+ void choose(int choice);
+
+ KActionCollection* actionCollection();
+ KStatusBar* statusBar();
+ KToolBar* toolBar(const char*);
+ KDiff3Part* m_pKDiff3Part;
+ KParts::MainWindow* m_pKDiff3Shell;
+ bool m_bAutoFlag;
+ bool m_bAutoMode;
+ void recalcWordWrap(int nofVisibleColumns=-1);
+
+public slots:
+ void resizeDiffTextWindow(int newWidth, int newHeight);
+ void resizeMergeResultWindow();
+ void slotRecalcWordWrap();
+
+ void showPopupMenu( const QPoint& point );
+
+ void scrollDiffTextWindow( int deltaX, int deltaY );
+ void scrollMergeResultWindow( int deltaX, int deltaY );
+ void setDiff3Line( int line );
+ void sourceMask( int srcMask, int enabledMask );
+
+ void slotDirShowBoth();
+ void slotDirViewToggle();
+
+ void slotUpdateAvailabilities();
+ void slotEditSelectAll();
+ void slotEditFind();
+ void slotEditFindNext();
+ void slotGoCurrent();
+ void slotGoTop();
+ void slotGoBottom();
+ void slotGoPrevUnsolvedConflict();
+ void slotGoNextUnsolvedConflict();
+ void slotGoPrevConflict();
+ void slotGoNextConflict();
+ void slotGoPrevDelta();
+ void slotGoNextDelta();
+ void slotChooseA();
+ void slotChooseB();
+ void slotChooseC();
+ void slotAutoSolve();
+ void slotUnsolve();
+ void slotMergeHistory();
+ void slotRegExpAutoMerge();
+ void slotChooseAEverywhere();
+ void slotChooseBEverywhere();
+ void slotChooseCEverywhere();
+ void slotChooseAForUnsolvedConflicts();
+ void slotChooseBForUnsolvedConflicts();
+ void slotChooseCForUnsolvedConflicts();
+ void slotChooseAForUnsolvedWhiteSpaceConflicts();
+ void slotChooseBForUnsolvedWhiteSpaceConflicts();
+ void slotChooseCForUnsolvedWhiteSpaceConflicts();
+ void slotConfigure();
+ void slotConfigureKeys();
+ void slotRefresh();
+ void slotSelectionEnd();
+ void slotSelectionStart();
+ void slotClipboardChanged();
+ void slotOutputModified(bool);
+ void slotAfterFirstPaint();
+ void slotMergeCurrentFile();
+ void slotReload();
+ void slotCheckIfCanContinue( bool* pbContinue );
+ void slotShowWhiteSpaceToggled();
+ void slotShowLineNumbersToggled();
+ void slotAutoAdvanceToggled();
+ void slotWordWrapToggled();
+ void slotShowWindowAToggled();
+ void slotShowWindowBToggled();
+ void slotShowWindowCToggled();
+ void slotWinFocusNext();
+ void slotWinFocusPrev();
+ void slotWinToggleSplitterOrientation();
+ void slotOverviewNormal();
+ void slotOverviewAB();
+ void slotOverviewAC();
+ void slotOverviewBC();
+ void slotSplitDiff();
+ void slotJoinDiffs();
+ void slotAddManualDiffHelp();
+ void slotClearManualDiffHelpList();
+
+ void slotNoRelevantChangesDetected();
+};
+
+#endif // KDIFF3_H