You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
kdiff3/src/kdiff3.h

413 lines
13 KiB

/***************************************************************************
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 <tqdialog.h>
#include <tqsplitter.h>
#include <tqscrollbar.h>
// include files for KDE
#include <tdeapplication.h>
#include <tdemainwindow.h>
#include <tdeaccel.h>
#include <tdeaction.h>
#include <kurl.h>
#include <tdeparts/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 TQScrollBar;
class TQComboBox;
class TQLineEdit;
class TQCheckBox;
class TQSplitter;
class KDiff3Part;
class DirectoryMergeWindow;
class DirectoryMergeInfo;
class ReversibleScrollBar : public TQScrollBar
{
TQ_OBJECT
bool* m_pbRightToLeftLanguage;
int m_realVal;
public:
ReversibleScrollBar( TQt::Orientation o, TQWidget* pParent, bool* pbRightToLeftLanguage )
: TQScrollBar( o, pParent )
{
m_pbRightToLeftLanguage=pbRightToLeftLanguage;
m_realVal=0;
connect( this, TQ_SIGNAL(valueChanged(int)), this, TQ_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
{
TQ_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