1 /*
2  * DQt - D bindings for the Qt Toolkit
3  *
4  * GNU Lesser General Public License Usage
5  * This file may be used under the terms of the GNU Lesser
6  * General Public License version 3 as published by the Free Software
7  * Foundation and appearing in the file LICENSE.LGPL3 included in the
8  * packaging of this file. Please review the following information to
9  * ensure the GNU Lesser General Public License version 3 requirements
10  * will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
11  */
12 module qt.widgets.tableview;
13 extern(C++):
14 
15 import qt.config;
16 import qt.core.abstractitemmodel;
17 import qt.core.coreevent;
18 import qt.core.itemselectionmodel;
19 import qt.core.namespace;
20 import qt.core.point;
21 import qt.core.rect;
22 import qt.core.size;
23 import qt.gui.event;
24 import qt.gui.region;
25 import qt.helpers;
26 import qt.widgets.abstractitemview;
27 import qt.widgets.headerview;
28 import qt.widgets.styleoption;
29 import qt.widgets.widget;
30 
31 /+ QT_REQUIRE_CONFIG(tableview); +/
32 
33 
34 extern(C++, class) struct QTableViewPrivate;
35 
36 /// Binding for C++ class [QTableView](https://doc.qt.io/qt-6/qtableview.html).
37 class /+ Q_WIDGETS_EXPORT +/ QTableView : QAbstractItemView
38 {
39     mixin(Q_OBJECT);
40     /+ Q_PROPERTY(bool showGrid READ showGrid WRITE setShowGrid)
41     Q_PROPERTY(Qt::PenStyle gridStyle READ gridStyle WRITE setGridStyle)
42     Q_PROPERTY(bool sortingEnabled READ isSortingEnabled WRITE setSortingEnabled)
43     Q_PROPERTY(bool wordWrap READ wordWrap WRITE setWordWrap)
44 #if QT_CONFIG(abstractbutton)
45     Q_PROPERTY(bool cornerButtonEnabled READ isCornerButtonEnabled WRITE setCornerButtonEnabled)
46 #endif +/
47 
48 public:
49     /+ explicit +/this(QWidget parent = null);
50     ~this();
51 
52     override void setModel(QAbstractItemModel model);
53     override void setRootIndex(ref const(QModelIndex) index);
54     override void setSelectionModel(QItemSelectionModel selectionModel);
55     override void doItemsLayout();
56 
57     final QHeaderView horizontalHeader() const;
58     final QHeaderView verticalHeader() const;
59     final void setHorizontalHeader(QHeaderView header);
60     final void setVerticalHeader(QHeaderView header);
61 
62     final int rowViewportPosition(int row) const;
63     final int rowAt(int y) const;
64 
65     final void setRowHeight(int row, int height);
66     final int rowHeight(int row) const;
67 
68     final int columnViewportPosition(int column) const;
69     final int columnAt(int x) const;
70 
71     final void setColumnWidth(int column, int width);
72     final int columnWidth(int column) const;
73 
74     final bool isRowHidden(int row) const;
75     final void setRowHidden(int row, bool hide);
76 
77     final bool isColumnHidden(int column) const;
78     final void setColumnHidden(int column, bool hide);
79 
80     final void setSortingEnabled(bool enable);
81     final bool isSortingEnabled() const;
82 
83     final bool showGrid() const;
84 
85     final /+ Qt:: +/qt.core.namespace.PenStyle gridStyle() const;
86     final void setGridStyle(/+ Qt:: +/qt.core.namespace.PenStyle style);
87 
88     final void setWordWrap(bool on);
89     final bool wordWrap() const;
90 
91 /+ #if QT_CONFIG(abstractbutton) +/
92     final void setCornerButtonEnabled(bool enable);
93     final bool isCornerButtonEnabled() const;
94 /+ #endif +/
95 
96     override QRect visualRect(ref const(QModelIndex) index) const;
97     override void scrollTo(ref const(QModelIndex) index, ScrollHint hint = ScrollHint.EnsureVisible);
98     override QModelIndex indexAt(ref const(QPoint) p) const;
99 
100     final void setSpan(int row, int column, int rowSpan, int columnSpan);
101     final int rowSpan(int row, int column) const;
102     final int columnSpan(int row, int column) const;
103     final void clearSpans();
104 
105 
106 public /+ Q_SLOTS +/:
107     @QSlot final void selectRow(int row);
108     @QSlot final void selectColumn(int column);
109     @QSlot final void hideRow(int row);
110     @QSlot final void hideColumn(int column);
111     @QSlot final void showRow(int row);
112     @QSlot final void showColumn(int column);
113     @QSlot final void resizeRowToContents(int row);
114     @QSlot final void resizeRowsToContents();
115     @QSlot final void resizeColumnToContents(int column);
116     @QSlot final void resizeColumnsToContents();
117     @QSlot final void sortByColumn(int column, /+ Qt:: +/qt.core.namespace.SortOrder order);
118     @QSlot final void setShowGrid(bool show);
119 
120 protected /+ Q_SLOTS +/:
121     @QSlot final void rowMoved(int row, int oldIndex, int newIndex);
122     @QSlot final void columnMoved(int column, int oldIndex, int newIndex);
123     @QSlot final void rowResized(int row, int oldHeight, int newHeight);
124     @QSlot final void columnResized(int column, int oldWidth, int newWidth);
125     @QSlot final void rowCountChanged(int oldCount, int newCount);
126     @QSlot final void columnCountChanged(int oldCount, int newCount);
127 
128 protected:
129     this(ref QTableViewPrivate , QWidget parent);
130     override void scrollContentsBy(int dx, int dy);
131 
132     override void initViewItemOption(QStyleOptionViewItem* option) const;
133     override void paintEvent(QPaintEvent e);
134 
135     override void timerEvent(QTimerEvent event);
136 
137     override int horizontalOffset() const;
138     override int verticalOffset() const;
139     override QModelIndex moveCursor(CursorAction cursorAction, /+ Qt:: +/qt.core.namespace.KeyboardModifiers modifiers);
140 
141     override void setSelection(ref const(QRect) rect, QItemSelectionModel.SelectionFlags command);
142     override QRegion visualRegionForSelection(ref const(QItemSelection) selection) const;
143     override QModelIndexList selectedIndexes() const;
144 
145     override void updateGeometries();
146 
147     override QSize viewportSizeHint() const;
148 
149     override int sizeHintForRow(int row) const;
150     override int sizeHintForColumn(int column) const;
151 
152     override void verticalScrollbarAction(int action);
153     override void horizontalScrollbarAction(int action);
154 
155     override bool isIndexHidden(ref const(QModelIndex) index) const;
156 
157     override void selectionChanged(ref const(QItemSelection) selected,
158                               ref const(QItemSelection) deselected);
159     override void currentChanged(ref const(QModelIndex) current,
160                               ref const(QModelIndex) previous);
161 
162 private:
163     /+ friend class QAccessibleItemView; +/
164     final int visualIndex(ref const(QModelIndex) index) const;
165 
166     /+ Q_DECLARE_PRIVATE(QTableView) +/
167     /+ Q_DISABLE_COPY(QTableView) +/
168     /+ Q_PRIVATE_SLOT(d_func(), void _q_selectRow(int))
169     Q_PRIVATE_SLOT(d_func(), void _q_selectColumn(int))
170     Q_PRIVATE_SLOT(d_func(), void _q_updateSpanInsertedRows(QModelIndex,int,int))
171     Q_PRIVATE_SLOT(d_func(), void _q_updateSpanInsertedColumns(QModelIndex,int,int))
172     Q_PRIVATE_SLOT(d_func(), void _q_updateSpanRemovedRows(QModelIndex,int,int))
173     Q_PRIVATE_SLOT(d_func(), void _q_updateSpanRemovedColumns(QModelIndex,int,int))
174     Q_PRIVATE_SLOT(d_func(), void _q_sortIndicatorChanged(int column, Qt::SortOrder order)) +/
175     mixin(CREATE_CONVENIENCE_WRAPPERS);
176 }
177