Guitar
FileDiffSliderWidget.h
Go to the documentation of this file.
1 #ifndef FILEDIFFSLIDERWIDGET_H
2 #define FILEDIFFSLIDERWIDGET_H
3 
5 #include "MainWindow.h"
6 #include "Theme.h"
7 #include <QPixmap>
8 #include <QWidget>
9 #include <functional>
10 
12 using TextDiffLineList = QList<Document::Line>;
13 
14 enum class DiffPane {
15  Left,
16  Right,
17 };
18 
19 using fn_pixmap_maker_t = std::function<QPixmap (DiffPane, int, int)>;
20 
21 class FileDiffSliderWidget : public QWidget {
22  Q_OBJECT
23 private:
24  struct Private;
25  Private *m;
26 
27  void scroll_(int pos);
28  QPixmap makeDiffPixmap(DiffPane pane, int width, int height);
29  void setValue(int v);
30  void internalSetValue(int v);
31 public:
32  explicit FileDiffSliderWidget(QWidget *parent = nullptr);
33  ~FileDiffSliderWidget() override;
34 
35  void clear(bool v);
36  void setScrollPos(int total, int value, int size);
37  void init(fn_pixmap_maker_t const &pixmap_maker, const ThemePtr &theme);
38  void updatePixmap();
39  static QPixmap makeDiffPixmap(int width, int height, TextDiffLineList const &lines, ThemePtr theme);
40 protected:
41  void paintEvent(QPaintEvent *) override;
42  void resizeEvent(QResizeEvent *) override;
43  void mousePressEvent(QMouseEvent *) override;
44  void mouseMoveEvent(QMouseEvent *) override;
45  void wheelEvent(QWheelEvent *event) override;
46 signals:
47  void valueChanged(int value);
48  void scrollByWheel(int lines);
49 };
50 
51 #endif // FILEDIFFSLIDERWIDGET_H
misc::drawFrame
static void drawFrame(QPainter *pr, int x, int y, int w, int h, QColor color_topleft, QColor color_bottomright=QColor())
矩形のフレームを描画する。
Definition: misc.cpp:303
Document::Line::Normal
@ Normal
Definition: AbstractCharacterBasedApplication.h:39
TextDiffLineList
QList< Document::Line > TextDiffLineList
Definition: FileDiffSliderWidget.h:12
DiffPane::Left
@ Left
Document::Line::Del
@ Del
Definition: AbstractCharacterBasedApplication.h:41
FileDiffSliderWidget::resizeEvent
void resizeEvent(QResizeEvent *) override
Definition: FileDiffSliderWidget.cpp:132
FileDiffSliderWidget::m
Private * m
Definition: FileDiffSliderWidget.h:24
FileDiffSliderWidget::Private
Definition: FileDiffSliderWidget.cpp:10
FileDiffSliderWidget::valueChanged
void valueChanged(int value)
ThemePtr
std::shared_ptr< AbstractTheme > ThemePtr
Definition: Theme.h:33
FileDiffSliderWidget::Private::scroll_total
int scroll_total
Definition: FileDiffSliderWidget.cpp:12
FileDiffSliderWidget::clear
void clear(bool v)
Definition: FileDiffSliderWidget.cpp:194
FileDiffSliderWidget::Private::theme
ThemePtr theme
Definition: FileDiffSliderWidget.cpp:19
Document::Line::Type
Type
Definition: AbstractCharacterBasedApplication.h:37
FileDiffSliderWidget::Private::left_pixmap
QPixmap left_pixmap
Definition: FileDiffSliderWidget.cpp:15
Theme.h
FileDiffSliderWidget::setScrollPos
void setScrollPos(int total, int value, int size)
Definition: FileDiffSliderWidget.cpp:202
FileDiffSliderWidget::mousePressEvent
void mousePressEvent(QMouseEvent *) override
Definition: FileDiffSliderWidget.cpp:163
FileDiffSliderWidget::Private::visible
bool visible
Definition: FileDiffSliderWidget.cpp:11
misc.h
TextEditorTheme.h
DiffPane::Right
@ Right
FileDiffSliderWidget::scrollByWheel
void scrollByWheel(int lines)
FileDiffSliderWidget::Private::scroll_value
int scroll_value
Definition: FileDiffSliderWidget.cpp:13
AbstractCharacterBasedApplication.h
FileDiffSliderWidget::Private::wheel_delta
int wheel_delta
Definition: FileDiffSliderWidget.cpp:17
FileDiffSliderWidget::scroll_
void scroll_(int pos)
Definition: FileDiffSliderWidget.cpp:156
FileDiffSliderWidget::Private::right_pixmap
QPixmap right_pixmap
Definition: FileDiffSliderWidget.cpp:16
FileDiffSliderWidget::makeDiffPixmap
QPixmap makeDiffPixmap(DiffPane pane, int width, int height)
Definition: FileDiffSliderWidget.cpp:39
DiffPane
DiffPane
Definition: FileDiffSliderWidget.h:14
MainWindow.h
FileDiffSliderWidget::updatePixmap
void updatePixmap()
Definition: FileDiffSliderWidget.cpp:47
FileDiffSliderWidget
Definition: FileDiffSliderWidget.h:21
Document::Line::Unknown
@ Unknown
Definition: AbstractCharacterBasedApplication.h:38
FileDiffSliderWidget::Private::scroll_page_size
int scroll_page_size
Definition: FileDiffSliderWidget.cpp:14
FileDiffSliderWidget::paintEvent
void paintEvent(QPaintEvent *) override
Definition: FileDiffSliderWidget.cpp:98
FileDiffSliderWidget::init
void init(fn_pixmap_maker_t const &pixmap_maker, const ThemePtr &theme)
Definition: FileDiffSliderWidget.cpp:33
fn_pixmap_maker_t
std::function< QPixmap(DiffPane, int, int)> fn_pixmap_maker_t
Definition: FileDiffSliderWidget.h:19
FileDiffSliderWidget::Private::pixmap_maker
fn_pixmap_maker_t pixmap_maker
Definition: FileDiffSliderWidget.cpp:18
FileDiffSliderWidget.h
FileDiffSliderWidget::FileDiffSliderWidget
FileDiffSliderWidget(QWidget *parent=nullptr)
Definition: FileDiffSliderWidget.cpp:22
FileDiffSliderWidget::~FileDiffSliderWidget
~FileDiffSliderWidget() override
Definition: FileDiffSliderWidget.cpp:28
ApplicationGlobal.h
Document::Line
Definition: AbstractCharacterBasedApplication.h:36
Document::Line::Add
@ Add
Definition: AbstractCharacterBasedApplication.h:40
FileDiffSliderWidget::internalSetValue
void internalSetValue(int v)
Definition: FileDiffSliderWidget.cpp:137
FileDiffSliderWidget::setValue
void setValue(int v)
Definition: FileDiffSliderWidget.cpp:149
FileDiffSliderWidget::wheelEvent
void wheelEvent(QWheelEvent *event) override
Definition: FileDiffSliderWidget.cpp:177
FileDiffSliderWidget::mouseMoveEvent
void mouseMoveEvent(QMouseEvent *) override
Definition: FileDiffSliderWidget.cpp:170