/*************************************************************************** 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 #ifdef HAVE_CONFIG_H #include "config.h" #endif #include "diff.h" // include files for TQt #include #include #include // include files for KDE #include #include #include #include #include #include // forward declaration of the KDiff3 classes class OptionDialog; class FindDialog; class ManualDiffHelpDialog; class DiffTextWindow; class DiffTextWindowFrame; class MergeResultWindow; class WindowTitleWidget; class Overview; class TQScrollBar; class TQComboBox; class TQLineEdit; class TQCheckBox; class TQSplitter; class KDiff3Part; class DirectoryMergeWindow; class DirectoryMergeInfo; class ReversibleScrollBar : public TQScrollBar { Q_OBJECT bool* m_pbRightToLeftLanguage; int m_realVal; public: ReversibleScrollBar( Qt::Orientation o, TQWidget* pParent, bool* pbRightToLeftLanguage ) : TQScrollBar( o, pParent ) { m_pbRightToLeftLanguage=pbRightToLeftLanguage; m_realVal=0; connect( this, TQT_SIGNAL(valueChanged(int)), this, TQT_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) TQScrollBar::setValue( maxValue()-(i-minValue()) ); else TQScrollBar::setValue( i ); } signals: void valueChanged2(int); }; class KDiff3App : public TQSplitter { Q_OBJECT public: /** constructor of KDiff3App, calls all init functions to create the application. */ KDiff3App( TQWidget* parent, const char* name, KDiff3Part* pKDiff3Part ); ~KDiff3App(); bool isPart(); /** initializes the TDEActions of the application */ void initActions( TDEActionCollection* ); /** 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( TDEConfig* ); /** read general Options again and initialize all variables like the recent file list */ void readOptions( TDEConfig* ); // Finish initialisation (virtual, so that it can be called from the shell too.) virtual void completeInit(const TQString& fn1="", const TQString& fn2="", const TQString& fn3=""); /** queryClose is called by TDEMainWindow 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 TDEMainWindow#queryClose * @see TDEMainWindow#closeEvent */ virtual bool queryClose(); virtual bool isFileSaved(); signals: void createNewInstance( const TQString& fn1, const TQString& fn2, const TQString& fn3 ); protected: void initDirectoryMergeActions(); /** sets up the statusbar for the main window by initialzing a statuslabel. */ void initStatusBar(); /** creates the centerwidget of the TDEMainWindow instance and sets it as the view */ void initView(); public slots: /** open a file and load it into the document*/ void slotFileOpen(); void slotFileOpen2( TQString fn1, TQString fn2, TQString fn3, TQString ofn, TQString an1, TQString an2, TQString an3, TotalDiffStatus* pTotalDiffStatus ); void slotFileNameChanged(const TQString& 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 TQString &text); private: /** the configuration object of the application */ //TDEConfig *config; // TDEAction pointers to enable/disable actions TDEAction* fileOpen; TDEAction* fileSave; TDEAction* fileSaveAs; TDEAction* filePrint; TDEAction* fileQuit; TDEAction* fileReload; TDEAction* editCut; TDEAction* editCopy; TDEAction* editPaste; TDEAction* editSelectAll; TDEToggleAction* viewToolBar; TDEToggleAction* viewStatusBar; //////////////////////////////////////////////////////////////////////// // Special KDiff3 specific stuff starts here TDEAction *editFind; TDEAction *editFindNext; TDEAction *goCurrent; TDEAction *goTop; TDEAction *goBottom; TDEAction *goPrevUnsolvedConflict; TDEAction *goNextUnsolvedConflict; TDEAction *goPrevConflict; TDEAction *goNextConflict; TDEAction *goPrevDelta; TDEAction *goNextDelta; TDEToggleAction *chooseA; TDEToggleAction *chooseB; TDEToggleAction *chooseC; TDEToggleAction *autoAdvance; TDEToggleAction *wordWrap; TDEAction* splitDiff; TDEAction* joinDiffs; TDEAction* addManualDiffHelp; TDEAction* clearManualDiffHelpList; TDEToggleAction *showWhiteSpaceCharacters; TDEToggleAction *showWhiteSpace; TDEToggleAction *showLineNumbers; TDEAction* chooseAEverywhere; TDEAction* chooseBEverywhere; TDEAction* chooseCEverywhere; TDEAction* chooseAForUnsolvedConflicts; TDEAction* chooseBForUnsolvedConflicts; TDEAction* chooseCForUnsolvedConflicts; TDEAction* chooseAForUnsolvedWhiteSpaceConflicts; TDEAction* chooseBForUnsolvedWhiteSpaceConflicts; TDEAction* chooseCForUnsolvedWhiteSpaceConflicts; TDEAction* autoSolve; TDEAction* unsolve; TDEAction* mergeHistory; TDEAction* mergeRegExp; TDEToggleAction *showWindowA; TDEToggleAction *showWindowB; TDEToggleAction *showWindowC; TDEAction *winFocusNext; TDEAction *winFocusPrev; TDEAction* winToggleSplitOrientation; TDEToggleAction *dirShowBoth; TDEAction *dirViewToggle; TDEToggleAction *overviewModeNormal; TDEToggleAction *overviewModeAB; TDEToggleAction *overviewModeAC; TDEToggleAction *overviewModeBC; TQPopupMenu* m_pMergeEditorPopupMenu; TQSplitter* m_pMainSplitter; TQWidget* m_pMainWidget; TQWidget* m_pMergeWindowFrame; ReversibleScrollBar* m_pHScrollBar; TQScrollBar* m_pDiffVScrollBar; TQScrollBar* m_pMergeVScrollBar; DiffTextWindow* m_pDiffTextWindow1; DiffTextWindow* m_pDiffTextWindow2; DiffTextWindow* m_pDiffTextWindow3; DiffTextWindowFrame* m_pDiffTextWindowFrame1; DiffTextWindowFrame* m_pDiffTextWindowFrame2; DiffTextWindowFrame* m_pDiffTextWindowFrame3; TQSplitter* m_pDiffWindowSplitter; MergeResultWindow* m_pMergeResultWindow; WindowTitleWidget* m_pMergeResultWindowTitle; bool m_bTripleDiff; TQSplitter* m_pDirectoryMergeSplitter; DirectoryMergeWindow* m_pDirectoryMergeWindow; DirectoryMergeInfo* m_pDirectoryMergeInfo; bool m_bDirCompare; Overview* m_pOverview; TQWidget* m_pCornerWidget; TotalDiffStatus m_totalDiffStatus; SourceData m_sd1; SourceData m_sd2; SourceData m_sd3; TQString 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( TQObject* o, TQEvent* e ); virtual void resizeEvent(TQResizeEvent*); 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); TDEActionCollection* actionCollection(); KStatusBar* statusBar(); TDEToolBar* 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 TQPoint& 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