annotate kdiff3/src-QT4/mergeresultwindow.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 236f1c9c3fbf
children
rev   line source
joachim99@69 1 /***************************************************************************
joachim99@69 2 mergeresultwindow.h - description
joachim99@69 3 -------------------
joachim99@69 4 begin : Mon Mar 18 2002
joachim99@77 5 copyright : (C) 2002-2007 by Joachim Eibl
joachim99@69 6 email : joachim.eibl at gmx.de
joachim99@69 7 ***************************************************************************/
joachim99@69 8
joachim99@69 9 /***************************************************************************
joachim99@69 10 * *
joachim99@69 11 * This program is free software; you can redistribute it and/or modify *
joachim99@69 12 * it under the terms of the GNU General Public License as published by *
joachim99@69 13 * the Free Software Foundation; either version 2 of the License, or *
joachim99@69 14 * (at your option) any later version. *
joachim99@69 15 * *
joachim99@69 16 ***************************************************************************/
joachim99@69 17
joachim99@69 18 #ifndef MERGERESULTWINDOW_H
joachim99@69 19 #define MERGERESULTWINDOW_H
joachim99@69 20
joachim99@69 21 #include "diff.h"
joachim99@69 22
joachim99@75 23 #include <QWidget>
joachim99@75 24 #include <QPixmap>
joachim99@75 25 #include <QTimer>
joachim99@80 26 #include <QStatusBar>
joachim99@69 27
joachim99@69 28 class QPainter;
joachim99@69 29
joachim99@69 30 class Overview : public QWidget
joachim99@69 31 {
joachim99@69 32 Q_OBJECT
joachim99@69 33 public:
joachim99@75 34 Overview( OptionDialog* pOptions );
joachim99@69 35
joachim99@69 36 void init( Diff3LineList* pDiff3LineList, bool bTripleDiff );
joachim99@69 37 void reset();
joachim99@69 38 void setRange( int firstLine, int pageHeight );
joachim99@69 39 void setPaintingAllowed( bool bAllowPainting );
joachim99@69 40
joachim99@69 41 enum e_OverviewMode { eOMNormal, eOMAvsB, eOMAvsC, eOMBvsC };
joachim99@69 42 void setOverviewMode( e_OverviewMode eOverviewMode );
joachim99@69 43 e_OverviewMode getOverviewMode();
joachim99@69 44
joachim99@69 45 public slots:
joachim99@69 46 void setFirstLine(int firstLine);
joachim99@69 47 void slotRedraw();
joachim99@69 48 signals:
joachim99@69 49 void setLine(int);
joachim99@69 50 private:
joachim99@69 51 const Diff3LineList* m_pDiff3LineList;
joachim99@69 52 OptionDialog* m_pOptions;
joachim99@69 53 bool m_bTripleDiff;
joachim99@69 54 int m_firstLine;
joachim99@69 55 int m_pageHeight;
joachim99@69 56 QPixmap m_pixmap;
joachim99@69 57 bool m_bPaintingAllowed;
joachim99@69 58 e_OverviewMode m_eOverviewMode;
joachim99@69 59 int m_nofLines;
joachim99@69 60
joachim99@69 61 virtual void paintEvent( QPaintEvent* e );
joachim99@69 62 virtual void mousePressEvent( QMouseEvent* e );
joachim99@69 63 virtual void mouseMoveEvent( QMouseEvent* e );
joachim99@69 64 void drawColumn( QPainter& p, e_OverviewMode eOverviewMode, int x, int w, int h, int nofLines );
joachim99@69 65 };
joachim99@69 66
joachim99@69 67
joachim99@69 68 enum e_MergeDetails
joachim99@69 69 {
joachim99@69 70 eDefault,
joachim99@69 71 eNoChange,
joachim99@69 72 eBChanged,
joachim99@69 73 eCChanged,
joachim99@69 74 eBCChanged, // conflict
joachim99@69 75 eBCChangedAndEqual, // possible conflict
joachim99@69 76 eBDeleted,
joachim99@69 77 eCDeleted,
joachim99@69 78 eBCDeleted, // possible conflict
joachim99@69 79
joachim99@69 80 eBChanged_CDeleted, // conflict
joachim99@69 81 eCChanged_BDeleted, // conflict
joachim99@69 82 eBAdded,
joachim99@69 83 eCAdded,
joachim99@69 84 eBCAdded, // conflict
joachim99@69 85 eBCAddedAndEqual // possible conflict
joachim99@69 86 };
joachim99@69 87
joachim99@69 88 void mergeOneLine( const Diff3Line& d, e_MergeDetails& mergeDetails, bool& bConflict, bool& bLineRemoved, int& src, bool bTwoInputs );
joachim99@69 89
joachim99@69 90 enum e_MergeSrcSelector
joachim99@69 91 {
joachim99@69 92 A=1,
joachim99@69 93 B=2,
joachim99@69 94 C=3
joachim99@69 95 };
joachim99@69 96
joachim99@69 97 class MergeResultWindow : public QWidget
joachim99@69 98 {
joachim99@69 99 Q_OBJECT
joachim99@69 100 public:
joachim99@69 101 MergeResultWindow(
joachim99@69 102 QWidget* pParent,
joachim99@69 103 OptionDialog* pOptionDialog,
joachim99@69 104 QStatusBar* pStatusBar
joachim99@69 105 );
joachim99@69 106
joachim99@69 107 void init(
joachim99@69 108 const LineData* pLineDataA, int sizeA,
joachim99@69 109 const LineData* pLineDataB, int sizeB,
joachim99@69 110 const LineData* pLineDataC, int sizeC,
joachim99@69 111 const Diff3LineList* pDiff3LineList,
joachim99@75 112 TotalDiffStatus* pTotalDiffStatus
joachim99@69 113 );
joachim99@69 114
joachim99@69 115 void reset();
joachim99@69 116
joachim99@80 117 bool saveDocument( const QString& fileName, QTextCodec* pEncoding, e_LineEndStyle eLineEndStyle );
joachim99@69 118 int getNrOfUnsolvedConflicts(int* pNrOfWhiteSpaceConflicts=0);
joachim99@69 119 void choose(int selector);
joachim99@69 120 void chooseGlobal(int selector, bool bConflictsOnly, bool bWhiteSpaceOnly );
joachim99@69 121
joachim99@69 122 int getNofColumns();
joachim99@69 123 int getNofLines();
joachim99@69 124 int getNofVisibleColumns();
joachim99@69 125 int getNofVisibleLines();
joachim99@69 126 QString getSelection();
joachim99@69 127 void resetSelection();
joachim99@69 128 void showNrOfConflicts();
joachim99@69 129 bool isDeltaAboveCurrent();
joachim99@69 130 bool isDeltaBelowCurrent();
joachim99@69 131 bool isConflictAboveCurrent();
joachim99@69 132 bool isConflictBelowCurrent();
joachim99@77 133 bool isUnsolvedConflictAtCurrent();
joachim99@69 134 bool isUnsolvedConflictAboveCurrent();
joachim99@69 135 bool isUnsolvedConflictBelowCurrent();
joachim99@69 136 bool findString( const QString& s, int& d3vLine, int& posInLine, bool bDirDown, bool bCaseSensitive );
joachim99@69 137 void setSelection( int firstLine, int startPos, int lastLine, int endPos );
joachim99@69 138 void setOverviewMode( Overview::e_OverviewMode eOverviewMode );
joachim99@69 139 Overview::e_OverviewMode getOverviewMode();
joachim99@69 140 public slots:
joachim99@69 141 void setFirstLine(int firstLine);
joachim99@69 142 void setFirstColumn(int firstCol);
joachim99@69 143
joachim99@69 144 void slotGoCurrent();
joachim99@69 145 void slotGoTop();
joachim99@69 146 void slotGoBottom();
joachim99@69 147 void slotGoPrevDelta();
joachim99@69 148 void slotGoNextDelta();
joachim99@69 149 void slotGoPrevUnsolvedConflict();
joachim99@69 150 void slotGoNextUnsolvedConflict();
joachim99@69 151 void slotGoPrevConflict();
joachim99@69 152 void slotGoNextConflict();
joachim99@69 153 void slotAutoSolve();
joachim99@69 154 void slotUnsolve();
joachim99@69 155 void slotMergeHistory();
joachim99@69 156 void slotRegExpAutoMerge();
joachim99@69 157 void slotSplitDiff( int firstD3lLineIdx, int lastD3lLineIdx );
joachim99@69 158 void slotJoinDiffs( int firstD3lLineIdx, int lastD3lLineIdx );
joachim99@69 159 void slotSetFastSelectorLine(int);
joachim99@69 160 void setPaintingAllowed(bool);
joachim99@69 161 void updateSourceMask();
joachim99@69 162
joachim99@69 163 signals:
joachim99@69 164 void scroll( int deltaX, int deltaY );
joachim99@75 165 void modifiedChanged(bool bModified);
joachim99@69 166 void setFastSelectorRange( int line1, int nofLines );
joachim99@69 167 void sourceMask( int srcMask, int enabledMask );
joachim99@69 168 void resizeSignal();
joachim99@69 169 void selectionEnd();
joachim99@69 170 void newSelection();
joachim99@69 171 void updateAvailabilities();
joachim99@69 172 void showPopupMenu( const QPoint& point );
joachim99@69 173 void noRelevantChangesDetected();
joachim99@69 174
joachim99@69 175 private:
joachim99@69 176 void merge(bool bAutoSolve, int defaultSelector, bool bConflictsOnly=false, bool bWhiteSpaceOnly=false );
joachim99@69 177 QString getString( int lineIdx );
joachim99@69 178
joachim99@69 179 OptionDialog* m_pOptionDialog;
joachim99@69 180
joachim99@69 181 const LineData* m_pldA;
joachim99@69 182 const LineData* m_pldB;
joachim99@69 183 const LineData* m_pldC;
joachim99@69 184 int m_sizeA;
joachim99@69 185 int m_sizeB;
joachim99@69 186 int m_sizeC;
joachim99@69 187
joachim99@69 188 const Diff3LineList* m_pDiff3LineList;
joachim99@69 189 TotalDiffStatus* m_pTotalDiffStatus;
joachim99@69 190
joachim99@69 191 bool m_bPaintingAllowed;
joachim99@69 192 int m_delayedDrawTimer;
joachim99@69 193 Overview::e_OverviewMode m_eOverviewMode;
joachim99@69 194
joachim99@69 195 private:
joachim99@69 196 class MergeEditLine
joachim99@69 197 {
joachim99@69 198 public:
joachim99@69 199 MergeEditLine(Diff3LineList::const_iterator i, int src=0){m_id3l=i; m_src=src; m_bLineRemoved=false; }
joachim99@69 200 void setConflict() { m_src=0; m_bLineRemoved=false; m_str=QString(); }
joachim99@69 201 bool isConflict() { return m_src==0 && !m_bLineRemoved && m_str.isNull(); }
joachim99@69 202 void setRemoved(int src=0) { m_src=src; m_bLineRemoved=true; m_str=QString(); }
joachim99@69 203 bool isRemoved() { return m_bLineRemoved; }
joachim99@69 204 bool isEditableText() { return !isConflict() && !isRemoved(); }
joachim99@69 205 void setString( const QString& s ){ m_str=s; m_bLineRemoved=false; m_src=0; }
joachim99@69 206 QString getString( const MergeResultWindow* );
joachim99@69 207 bool isModified() { return ! m_str.isNull() || (m_bLineRemoved && m_src==0); }
joachim99@69 208
joachim99@69 209 void setSource( int src, bool bLineRemoved ) { m_src=src; m_bLineRemoved =bLineRemoved; }
joachim99@69 210 int src() { return m_src; }
joachim99@69 211 Diff3LineList::const_iterator id3l(){return m_id3l;}
joachim99@69 212 // getString() is implemented as MergeResultWindow::getString()
joachim99@69 213 private:
joachim99@69 214 Diff3LineList::const_iterator m_id3l;
joachim99@69 215 int m_src; // 1, 2 or 3 for A, B or C respectively, or 0 when line is from neither source.
joachim99@69 216 QString m_str; // String when modified by user or null-string when orig data is used.
joachim99@69 217 bool m_bLineRemoved;
joachim99@69 218 };
joachim99@69 219
joachim99@69 220 class MergeEditLineList : private std::list<MergeEditLine>
joachim99@69 221 { // I want to know the size immediately!
joachim99@69 222 private:
joachim99@69 223 typedef std::list<MergeEditLine> BASE;
joachim99@69 224 int m_size;
joachim99@69 225 int* m_pTotalSize;
joachim99@69 226 public:
joachim99@69 227 typedef std::list<MergeEditLine>::iterator iterator;
joachim99@77 228 typedef std::list<MergeEditLine>::reverse_iterator reverse_iterator;
joachim99@69 229 typedef std::list<MergeEditLine>::const_iterator const_iterator;
joachim99@69 230 MergeEditLineList(){m_size=0; m_pTotalSize=0; }
joachim99@69 231 void clear() { ds(-m_size); BASE::clear(); }
joachim99@69 232 void push_back( const MergeEditLine& m) { ds(+1); BASE::push_back(m); }
joachim99@69 233 void push_front( const MergeEditLine& m) { ds(+1); BASE::push_front(m); }
joachim99@98 234 void pop_back() { ds(-1); BASE::pop_back(); }
joachim99@69 235 iterator erase( iterator i ) { ds(-1); return BASE::erase(i); }
joachim99@69 236 iterator insert( iterator i, const MergeEditLine& m ) { ds(+1); return BASE::insert(i,m); }
joachim99@69 237 int size(){ if (!m_pTotalSize) m_size = BASE::size(); return m_size; }
joachim99@69 238 iterator begin(){return BASE::begin();}
joachim99@69 239 iterator end(){return BASE::end();}
joachim99@77 240 reverse_iterator rbegin(){return BASE::rbegin();}
joachim99@77 241 reverse_iterator rend(){return BASE::rend();}
joachim99@69 242 MergeEditLine& front(){return BASE::front();}
joachim99@69 243 MergeEditLine& back(){return BASE::back();}
joachim99@69 244 bool empty() { return m_size==0; }
joachim99@69 245 void splice(iterator destPos, MergeEditLineList& srcList, iterator srcFirst, iterator srcLast)
joachim99@69 246 {
joachim99@69 247 int* pTotalSize = getTotalSizePtr() ? getTotalSizePtr() : srcList.getTotalSizePtr();
joachim99@69 248 srcList.setTotalSizePtr(0); // Force size-recalc after splice, because splice doesn't handle size-tracking
joachim99@69 249 setTotalSizePtr(0);
joachim99@69 250 BASE::splice( destPos, srcList, srcFirst, srcLast );
joachim99@69 251 srcList.setTotalSizePtr( pTotalSize );
joachim99@69 252 setTotalSizePtr( pTotalSize );
joachim99@69 253 }
joachim99@69 254
joachim99@69 255 void setTotalSizePtr(int* pTotalSize)
joachim99@69 256 {
joachim99@69 257 if ( pTotalSize==0 && m_pTotalSize!=0 ) { *m_pTotalSize -= size(); }
joachim99@69 258 else if ( pTotalSize!=0 && m_pTotalSize==0 ) { *pTotalSize += size(); }
joachim99@69 259 m_pTotalSize = pTotalSize;
joachim99@69 260 }
joachim99@69 261 int* getTotalSizePtr()
joachim99@69 262 {
joachim99@69 263 return m_pTotalSize;
joachim99@69 264 }
joachim99@69 265
joachim99@69 266 private:
joachim99@69 267 void ds(int deltaSize)
joachim99@69 268 {
joachim99@69 269 m_size+=deltaSize;
joachim99@69 270 if (m_pTotalSize!=0) *m_pTotalSize+=deltaSize;
joachim99@69 271 }
joachim99@69 272 };
joachim99@69 273
joachim99@69 274 friend class MergeEditLine;
joachim99@69 275
joachim99@69 276 struct MergeLine
joachim99@69 277 {
joachim99@69 278 MergeLine()
joachim99@69 279 {
joachim99@69 280 srcSelect=0; mergeDetails=eDefault; d3lLineIdx = -1; srcRangeLength=0;
joachim99@69 281 bConflict=false; bDelta=false; bWhiteSpaceConflict=false;
joachim99@69 282 }
joachim99@69 283 Diff3LineList::const_iterator id3l;
joachim99@69 284 int d3lLineIdx; // Needed to show the correct window pos.
joachim99@69 285 int srcRangeLength; // how many src-lines have this properties
joachim99@69 286 e_MergeDetails mergeDetails;
joachim99@69 287 bool bConflict;
joachim99@69 288 bool bWhiteSpaceConflict;
joachim99@69 289 bool bDelta;
joachim99@69 290 int srcSelect;
joachim99@69 291 MergeEditLineList mergeEditLineList;
joachim99@69 292 void split( MergeLine& ml2, int d3lLineIdx2 ) // The caller must insert the ml2 after this ml in the m_mergeLineList
joachim99@69 293 {
joachim99@69 294 if ( d3lLineIdx2<d3lLineIdx || d3lLineIdx2 >= d3lLineIdx + srcRangeLength )
joachim99@69 295 return; //Error
joachim99@69 296 ml2.mergeDetails = mergeDetails;
joachim99@69 297 ml2.bConflict = bConflict;
joachim99@69 298 ml2.bWhiteSpaceConflict = bWhiteSpaceConflict;
joachim99@69 299 ml2.bDelta = bDelta;
joachim99@69 300 ml2.srcSelect = srcSelect;
joachim99@69 301
joachim99@69 302 ml2.d3lLineIdx = d3lLineIdx2;
joachim99@69 303 ml2.srcRangeLength = srcRangeLength - (d3lLineIdx2-d3lLineIdx);
joachim99@69 304 srcRangeLength = d3lLineIdx2-d3lLineIdx; // current MergeLine controls fewer lines
joachim99@69 305 ml2.id3l = id3l;
joachim99@69 306 for(int i=0; i<srcRangeLength; ++i)
joachim99@69 307 ++ml2.id3l;
joachim99@69 308
joachim99@69 309 ml2.mergeEditLineList.clear();
joachim99@69 310 // Search for best place to splice
joachim99@69 311 for(MergeEditLineList::iterator i=mergeEditLineList.begin(); i!=mergeEditLineList.end();++i)
joachim99@69 312 {
joachim99@69 313 if (i->id3l()==ml2.id3l)
joachim99@69 314 {
joachim99@69 315 ml2.mergeEditLineList.splice( ml2.mergeEditLineList.begin(), mergeEditLineList, i, mergeEditLineList.end() );
joachim99@69 316 return;
joachim99@69 317 }
joachim99@69 318 }
joachim99@69 319 ml2.mergeEditLineList.setTotalSizePtr( mergeEditLineList.getTotalSizePtr() );
joachim99@69 320 ml2.mergeEditLineList.push_back(MergeEditLine(ml2.id3l));
joachim99@69 321 }
joachim99@69 322 void join( MergeLine& ml2 ) // The caller must remove the ml2 from the m_mergeLineList after this call
joachim99@69 323 {
joachim99@69 324 srcRangeLength += ml2.srcRangeLength;
joachim99@69 325 ml2.mergeEditLineList.clear();
joachim99@69 326 mergeEditLineList.clear();
joachim99@69 327 mergeEditLineList.push_back(MergeEditLine(id3l)); // Create a simple conflict
joachim99@69 328 if ( ml2.bConflict ) bConflict = true;
joachim99@69 329 if ( !ml2.bWhiteSpaceConflict ) bWhiteSpaceConflict = false;
joachim99@69 330 if ( ml2.bDelta ) bDelta = true;
joachim99@69 331 }
joachim99@69 332 };
joachim99@69 333
joachim99@69 334 private:
joachim99@69 335 static bool sameKindCheck( const MergeLine& ml1, const MergeLine& ml2 );
joachim99@69 336 struct HistoryMapEntry
joachim99@69 337 {
joachim99@69 338 MergeEditLineList mellA;
joachim99@69 339 MergeEditLineList mellB;
joachim99@69 340 MergeEditLineList mellC;
joachim99@69 341 MergeEditLineList& choice( bool bThreeInputs );
joachim99@69 342 bool staysInPlace( bool bThreeInputs, Diff3LineList::const_iterator& iHistoryEnd );
joachim99@69 343 };
joachim99@69 344 typedef std::map<QString,HistoryMapEntry> HistoryMap;
joachim99@69 345 void collectHistoryInformation( int src, Diff3LineList::const_iterator iHistoryBegin, Diff3LineList::const_iterator iHistoryEnd, HistoryMap& historyMap, std::list< HistoryMap::iterator >& hitList );
joachim99@69 346
joachim99@69 347 typedef std::list<MergeLine> MergeLineList;
joachim99@69 348 MergeLineList m_mergeLineList;
joachim99@69 349 MergeLineList::iterator m_currentMergeLineIt;
joachim99@77 350 bool isItAtEnd( bool bIncrement, MergeLineList::iterator i )
joachim99@77 351 {
joachim99@77 352 if ( bIncrement ) return i!=m_mergeLineList.end();
joachim99@77 353 else return i!=m_mergeLineList.begin();
joachim99@77 354 }
joachim99@77 355
joachim99@69 356 int m_currentPos;
joachim99@69 357 bool checkOverviewIgnore(MergeLineList::iterator &i);
joachim99@69 358
joachim99@69 359 enum e_Direction { eUp, eDown };
joachim99@69 360 enum e_EndPoint { eDelta, eConflict, eUnsolvedConflict, eLine, eEnd };
joachim99@69 361 void go( e_Direction eDir, e_EndPoint eEndPoint );
joachim99@69 362 void calcIteratorFromLineNr(
joachim99@69 363 int line,
joachim99@69 364 MergeLineList::iterator& mlIt,
joachim99@69 365 MergeEditLineList::iterator& melIt
joachim99@69 366 );
joachim99@69 367 MergeLineList::iterator splitAtDiff3LineIdx( int d3lLineIdx );
joachim99@69 368
joachim99@69 369 virtual void paintEvent( QPaintEvent* e );
joachim99@69 370
joachim99@69 371
joachim99@69 372 void myUpdate(int afterMilliSecs);
joachim99@69 373 virtual void timerEvent(QTimerEvent*);
joachim99@69 374 void writeLine(
joachim99@69 375 MyPainter& p, int line, const QString& str,
joachim99@69 376 int srcSelect, e_MergeDetails mergeDetails, int rangeMark, bool bUserModified, bool bLineRemoved, bool bWhiteSpaceConflict
joachim99@69 377 );
joachim99@69 378 void setFastSelector(MergeLineList::iterator i);
joachim99@69 379 void convertToLinePos( int x, int y, int& line, int& pos );
joachim99@69 380 virtual void mousePressEvent ( QMouseEvent* e );
joachim99@69 381 virtual void mouseDoubleClickEvent ( QMouseEvent* e );
joachim99@69 382 virtual void mouseReleaseEvent ( QMouseEvent * );
joachim99@69 383 virtual void mouseMoveEvent ( QMouseEvent * );
joachim99@69 384 virtual void resizeEvent( QResizeEvent* e );
joachim99@69 385 virtual void keyPressEvent( QKeyEvent* e );
joachim99@69 386 virtual void wheelEvent( QWheelEvent* e );
joachim99@69 387 virtual void focusInEvent( QFocusEvent* e );
joachim99@69 388
joachim99@69 389 QPixmap m_pixmap;
joachim99@69 390 int m_firstLine;
joachim99@69 391 int m_firstColumn;
joachim99@69 392 int m_nofColumns;
joachim99@69 393 int m_nofLines;
joachim99@69 394 int m_totalSize; //Same as m_nofLines, but calculated differently
joachim99@69 395 bool m_bMyUpdate;
joachim99@69 396 bool m_bInsertMode;
joachim99@69 397 bool m_bModified;
joachim99@75 398 void setModified(bool bModified=true);
joachim99@69 399
joachim99@69 400 int m_scrollDeltaX;
joachim99@69 401 int m_scrollDeltaY;
joachim99@69 402 int m_cursorXPos;
joachim99@69 403 int m_cursorYPos;
joachim99@69 404 int m_cursorOldXPos;
joachim99@69 405 bool m_bCursorOn; // blinking on and off each second
joachim99@69 406 QTimer m_cursorTimer;
joachim99@69 407 bool m_bCursorUpdate;
joachim99@69 408 QStatusBar* m_pStatusBar;
joachim99@69 409
joachim99@69 410 Selection m_selection;
joachim99@69 411
joachim99@69 412 bool deleteSelection2( QString& str, int& x, int& y,
joachim99@69 413 MergeLineList::iterator& mlIt, MergeEditLineList::iterator& melIt );
joachim99@69 414 bool doRelevantChangesExist();
joachim99@69 415 public slots:
joachim99@69 416 void deleteSelection();
joachim99@69 417 void pasteClipboard(bool bFromSelection);
joachim99@69 418 private slots:
joachim99@69 419 void slotCursorUpdate();
joachim99@69 420 };
joachim99@69 421
joachim99@75 422 class QLineEdit;
joachim99@75 423 class QTextCodec;
joachim99@75 424 class QComboBox;
joachim99@75 425 class QLabel;
joachim99@75 426 class WindowTitleWidget : public QWidget
joachim99@75 427 {
joachim99@75 428 Q_OBJECT
joachim99@75 429 private:
joachim99@75 430 QLabel* m_pLabel;
joachim99@75 431 QLineEdit* m_pFileNameLineEdit;
joachim99@75 432 //QPushButton* m_pBrowseButton;
joachim99@75 433 QLabel* m_pModifiedLabel;
joachim99@80 434 QLabel* m_pLineEndStyleLabel;
joachim99@80 435 QComboBox* m_pLineEndStyleSelector;
joachim99@75 436 QLabel* m_pEncodingLabel;
joachim99@75 437 QComboBox* m_pEncodingSelector;
joachim99@75 438 OptionDialog* m_pOptionDialog;
joachim99@75 439 public:
joachim99@75 440 WindowTitleWidget(OptionDialog* pOptionDialog);
joachim99@75 441 QTextCodec* getEncoding();
joachim99@75 442 void setFileName(const QString& fileName );
joachim99@75 443 QString getFileName();
joachim99@75 444 void setEncodings( QTextCodec* pCodecForA, QTextCodec* pCodecForB, QTextCodec* pCodecForC );
joachim99@75 445 void setEncoding( QTextCodec* pCodec );
joachim99@80 446 void setLineEndStyles( e_LineEndStyle eLineEndStyleA, e_LineEndStyle eLineEndStyleB, e_LineEndStyle eLineEndStyleC);
joachim99@80 447 e_LineEndStyle getLineEndStyle();
joachim99@75 448
joachim99@75 449 bool eventFilter( QObject* o, QEvent* e );
joachim99@75 450 public slots:
joachim99@75 451 void slotSetModified( bool bModified );
joachim99@75 452 //private slots:
joachim99@75 453 // void slotBrowseButtonClicked();
joachim99@75 454
joachim99@75 455 };
joachim99@75 456
joachim99@69 457 #endif
joachim99@69 458