PeriDyno 1.0.0
Loading...
Searching...
No Matches
PDataViewerWidget.cpp
Go to the documentation of this file.
1#include "PDataViewerWidget.h"
2
3#include <QContextMenuEvent>
4#include <QHeaderView>
5#include "Format.h"
6#include "PSimulationThread.h"
7#include "qprogressbar.h"
8
9namespace dyno
10{
11
13 QTableWidget(pParent)
14 {
15 mfield = field;
16 rowNum = mfield->size();
17 printf("Data Size = %d\n",rowNum);
18
19 this->setEditTriggers(QAbstractItemView::NoEditTriggers);
20 this->setAttribute(Qt::WA_DeleteOnClose,true);
21 //this->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
22
23 Qt::WindowFlags m_flags = windowFlags();
24 setWindowFlags(m_flags | Qt::WindowStaysOnTopHint);
25
26 this->setWindowTitle(FormatFieldWidgetName(field->getObjectName()) + " ( " + FormatFieldWidgetName(field->getTemplateName()) + " )");
27
28 horizontalHeader()->setDefaultAlignment(Qt::AlignLeft);
29 verticalHeader()->setVisible(true);
30
31 setGridStyle(Qt::SolidLine);
32
33 setAlternatingRowColors(true);
34
35 disconnect(this, 0, 0, 0);
36
38
39
40 if (mfield->getClassName() == std::string("FArrayList"))
42
43 if (mfield->getClassName() == std::string("FArray"))
45
46 if (mfield->getClassName() == std::string("FVar"))
48
49
50 switch (mTemplateType)
51 {
52 default:
53 break;
55 this->setMinimumWidth(500);
56 }
57
58
59
60 this->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
61
63 }
64
66 {
67 //printf("updateDataTable\n");
68 this->ClearDataTable();
69
70 int VisibleRowNum = mMaxViewRowCount > rowNum ? rowNum : mMaxViewRowCount;
71 this->setRowCount(VisibleRowNum);
72
73 if (mScrollBar == NULL)
74 return;
75
76
77 this->minIndex = mScrollBar->value();
79
80 printf("mScrollBar:: min: %d - max: %d \n", int(mScrollBar->minimum()), int(mScrollBar->maximum()));
81 printf("minIndex: %d\n", minIndex);
82 printf("maxIndex: %d\n", maxIndex);
83 printf("maxViewRow: %d\n", mMaxViewRowCount);
84 printf("size : %d\n", mfield->size());
85
86 if (minIndex == -1 || maxIndex == -1)
87 return;
88
89 switch (mTemplateType)
90 {
91 default:
92 break;
93
96 break;
99 break;
102 break;
103 }
104
105
106
107
108
109 for (size_t i = 0; i < rowCount(); i++)
110 {
111 setRowHeight(i,rowsHeight);
112 }
113
114
115
116
117 }
118
120 {
121
122 if (mScrollBar != NULL)
123 {
124
125 mScrollBar->setRange(0, rowNum - mMaxViewRowCount);
126 mScrollBar->setPageStep(mMaxViewRowCount);
127
128
129 this->minIndex = mScrollBar->value();
131
132 }
133
134
135 }
136
137
138 void PDataViewerWidget::resizeEvent(QResizeEvent* event)
139 {
140
141 QTableView::resizeEvent(event);
142
144
146
148
149 }
150
151
153 {
155 int t_tableH = this->height();
156 mMaxViewRowCount = std::clamp(t_tableH / rowsHeight, 1, 100);
157 }
158
160 {
161 if (AltPressed)
162 this->horizontalScrollBar()->setValue(horizontalScrollBar()->value() - (wheelEvent->angleDelta().x()/abs(wheelEvent->angleDelta().x())));
163 else
164 emit wheelDeltaAngleChange(wheelEvent->angleDelta().x());
165
166 }
167
168 void PDataViewerWidget::addItemToPosition(const QString& qstr, int row, int column,const QString& rowName,const QString& columnName, const bool resizeRow, const int height)
169 {
170
171 {
172 QTableWidgetItem* header = new QTableWidgetItem;
173 header->setText(rowName);
174 this->setVerticalHeaderItem(row, header);
175
176 if (resizeRow)
177 this->setRowHeight(row,height);
178 }
179
180 int curColumn = this->columnCount();
181 if (column + 1 > curColumn)
182 {
183 this->setColumnCount(column + 1);
184
185 QTableWidgetItem* header = new QTableWidgetItem;
186 header->setText(columnName);
187 this->setHorizontalHeaderItem(column, header);
188 }
189
190 auto item = new QTableWidgetItem;
191 item->setText(qstr);
192
193 this->setItem(row, column, item);
194
195
196 }
197
198
199
201 {
202 int rowNums = this->rowCount();
203 for (int i = 0; i < rowNums; i++)
204 {
205 this->removeRow(0);
206 }
207 }
208
210 {
211 ensurePolished();
212
213 return QTableWidget::sizeHintForColumn(column);
214 }
215
216
217
218
219
220
221}
std::string getObjectName()
Definition FBase.h:54
virtual const std::string getTemplateName()
Definition FBase.h:51
void resizeEvent(QResizeEvent *event) override
PDataViewerWidget(FBase *field, QWidget *pParent=NULL)
void wheelDeltaAngleChange(int value)
void wheelEvent(QWheelEvent *wheelEvent) override
virtual void buildVarDataTable()
virtual void buildArrayDataTable(int first, int last)
void addItemToPosition(const QString &qstr, int row, int column, const QString &rowName, const QString &columnName, const bool resizeRow=false, const int height=30)
virtual void buildArrayListDataTable(int first, int last)
int sizeHintForColumn(int column) const override
void oneFrameFinished(int frame)
static PSimulationThread * instance()
This is an implementation of AdditiveCCD based on peridyno.
Definition Array.h:25
QString FormatFieldWidgetName(std::string name)
Definition Format.cpp:9
DYN_FUNC T abs(const T &v)
Definition SimpleMath.h:81
void disconnect(Node *node, NodePort *port)
Definition NodePort.cpp:44