File indexing completed on 2024-05-12 05:52:05
0001 /* 0002 SPDX-FileCopyrightText: 2022 Waqar Ahmed <waqar.17a@gmail.com> 0003 SPDX-License-Identifier: LGPL-2.0-or-later 0004 */ 0005 #pragma once 0006 0007 #include <QWidget> 0008 0009 class LineNumArea final : public QWidget 0010 { 0011 Q_OBJECT 0012 public: 0013 explicit LineNumArea(class DiffEditor *parent); 0014 0015 int lineNumAreaWidth() const; 0016 QSize sizeHint() const override; 0017 0018 void setLineNumData(std::vector<int> leftLineNos, std::vector<int> rightLineNos); 0019 void setMaxLineNum(int n) 0020 { 0021 maxLineNum = n; 0022 } 0023 0024 int lineNumForBlock(int block) 0025 { 0026 auto it = std::find(m_lineToNumA.begin(), m_lineToNumA.end(), block); 0027 if (it == m_lineToNumA.end()) { 0028 return 0; 0029 } 0030 return *it; 0031 } 0032 0033 int blockForLineNum(int lineNo) 0034 { 0035 auto it = std::find(m_lineToNumA.begin(), m_lineToNumA.end(), lineNo); 0036 return std::distance(m_lineToNumA.begin(), it); 0037 } 0038 0039 protected: 0040 void paintEvent(QPaintEvent *event) override; 0041 void mousePressEvent(QMouseEvent *e) override; 0042 0043 private: 0044 void drawLineNumber(QPainter &painter, QRect rect, int blockNumber, int num, const struct LineNumColors &c); 0045 0046 class DiffEditor *const textEdit; 0047 // QColor m_currentLineColor; 0048 // QBrush m_currentLineBgColor; 0049 QColor m_otherLinesColor; 0050 QColor m_borderColor; 0051 std::vector<int> m_lineToNumA; 0052 std::vector<int> m_lineToNumB; 0053 int maxLineNum = 0; 0054 };