joachim99@69: /*************************************************************************** joachim99@69: difftextwindow.h - description joachim99@69: ------------------- joachim99@69: begin : Mon Mar 18 2002 joachim99@77: copyright : (C) 2002-2007 by Joachim Eibl joachim99@69: email : joachim.eibl at gmx.de joachim99@69: ***************************************************************************/ joachim99@69: joachim99@69: /*************************************************************************** joachim99@69: * * joachim99@69: * This program is free software; you can redistribute it and/or modify * joachim99@69: * it under the terms of the GNU General Public License as published by * joachim99@69: * the Free Software Foundation; either version 2 of the License, or * joachim99@69: * (at your option) any later version. * joachim99@69: * * joachim99@69: ***************************************************************************/ joachim99@69: joachim99@69: #ifndef DIFFTEXTWINDOW_H joachim99@69: #define DIFFTEXTWINDOW_H joachim99@69: joachim99@69: #include "diff.h" joachim99@69: joachim99@75: #include joachim99@69: joachim99@69: class QStatusBar; joachim99@69: class OptionDialog; joachim99@69: class DiffTextWindowData; joachim99@69: class DiffTextWindowFrame; joachim99@69: joachim99@69: class DiffTextWindow : public QWidget joachim99@69: { joachim99@69: Q_OBJECT joachim99@69: public: joachim99@69: DiffTextWindow( joachim99@69: DiffTextWindowFrame* pParent, joachim99@69: QStatusBar* pStatusBar, joachim99@69: OptionDialog* pOptionDialog, joachim99@69: int winIdx joachim99@69: ); joachim99@69: ~DiffTextWindow(); joachim99@69: void init( joachim99@69: const QString& fileName, joachim99@92: QTextCodec* pCodec, joachim99@92: e_LineEndStyle eLineEndStyle, joachim99@69: const LineData* pLineData, joachim99@69: int size, joachim99@69: const Diff3LineVector* pDiff3LineVector, joachim99@69: const ManualDiffHelpList* pManualDiffHelpList, joachim99@69: bool bTriple joachim99@69: ); joachim99@69: void reset(); joachim99@69: void convertToLinePos( int x, int y, int& line, int& pos ); joachim99@69: joachim99@69: QString getSelection(); joachim99@69: int getFirstLine(); joachim99@69: int calcTopLineInFile( int firstLine ); joachim99@69: joachim99@69: int getNofColumns(); joachim99@69: int getNofLines(); joachim99@69: int getNofVisibleLines(); joachim99@69: int getNofVisibleColumns(); joachim99@69: joachim99@69: int convertLineToDiff3LineIdx( int line ); joachim99@69: int convertDiff3LineIdxToLine( int d3lIdx ); joachim99@69: joachim99@69: void convertD3LCoordsToLineCoords( int d3LIdx, int d3LPos, int& line, int& pos ); joachim99@69: void convertLineCoordsToD3LCoords( int line, int pos, int& d3LIdx, int& d3LPos ); joachim99@69: joachim99@69: void convertSelectionToD3LCoords(); joachim99@69: joachim99@69: bool findString( const QString& s, int& d3vLine, int& posInLine, bool bDirDown, bool bCaseSensitive ); joachim99@69: void setSelection( int firstLine, int startPos, int lastLine, int endPos, int& l, int& p ); joachim99@69: void getSelectionRange( int* firstLine, int* lastLine, e_CoordType coordType ); joachim99@69: joachim99@69: void setPaintingAllowed( bool bAllowPainting ); joachim99@69: void recalcWordWrap( bool bWordWrap, int wrapLineVectorSize, int nofVisibleColumns ); joachim99@69: void print( MyPainter& painter, const QRect& r, int firstLine, int nofLinesPerPage ); joachim99@69: signals: joachim99@69: void resizeSignal( int nofVisibleColumns, int nofVisibleLines ); joachim99@69: void scroll( int deltaX, int deltaY ); joachim99@69: void newSelection(); joachim99@69: void selectionEnd(); joachim99@69: void setFastSelectorLine( int line ); joachim99@69: void gotFocus(); joachim99@69: void lineClicked( int winIdx, int line ); joachim99@69: joachim99@69: public slots: joachim99@69: void setFirstLine( int line ); joachim99@69: void setFirstColumn( int col ); joachim99@69: void resetSelection(); joachim99@69: void setFastSelectorRange( int line1, int nofLines ); joachim99@69: joachim99@69: protected: joachim99@69: virtual void mousePressEvent ( QMouseEvent * ); joachim99@69: virtual void mouseReleaseEvent ( QMouseEvent * ); joachim99@69: virtual void mouseMoveEvent ( QMouseEvent * ); joachim99@69: virtual void mouseDoubleClickEvent ( QMouseEvent * e ); joachim99@69: joachim99@69: virtual void paintEvent( QPaintEvent* ); joachim99@69: virtual void dragEnterEvent( QDragEnterEvent* e ); joachim99@69: virtual void focusInEvent( QFocusEvent* e ); joachim99@69: joachim99@69: virtual void resizeEvent( QResizeEvent* ); joachim99@69: virtual void timerEvent(QTimerEvent*); joachim99@69: joachim99@69: private: joachim99@69: DiffTextWindowData* d; joachim99@69: void showStatusLine( int line ); joachim99@69: friend class DiffTextWindowFrame; joachim99@69: }; joachim99@69: joachim99@69: joachim99@69: class DiffTextWindowFrameData; joachim99@69: joachim99@69: class DiffTextWindowFrame : public QWidget joachim99@69: { joachim99@69: Q_OBJECT joachim99@69: public: joachim99@69: DiffTextWindowFrame( QWidget* pParent, QStatusBar* pStatusBar, OptionDialog* pOptionDialog, int winIdx ); joachim99@69: ~DiffTextWindowFrame(); joachim99@69: DiffTextWindow* getDiffTextWindow(); joachim99@69: void init(); joachim99@69: void setFirstLine(int firstLine); joachim99@69: signals: joachim99@69: void fileNameChanged(const QString&, int); joachim99@69: protected: joachim99@69: bool eventFilter( QObject*, QEvent* ); joachim99@75: //void paintEvent(QPaintEvent*); joachim99@69: private slots: joachim99@69: void slotReturnPressed(); joachim99@69: void slotBrowseButtonClicked(); joachim99@69: private: joachim99@69: DiffTextWindowFrameData* d; joachim99@69: }; joachim99@69: joachim99@69: joachim99@69: #endif joachim99@69: