DUNE-DAQ
DUNE Trigger and Data Acquisition software
Toggle main menu visibility
Loading...
Searching...
No Matches
dunedaq
sourcecode
dbe
src
TableTab.cpp
Go to the documentation of this file.
1
// DUNE DAQ modification notice:
2
// This file has been modified from the original ATLAS dbe source for the DUNE DAQ project.
3
// Fork baseline commit: dbe-02-12-17 (2022-05-12).
4
// Renamed since fork: no.
5
7
#include <QHeaderView>
8
#include <QMimeData>
9
#include <QVBoxLayout>
10
#include <qevent.h>
11
13
#include "
dbe/MainWindow.hpp
"
14
#include "
dbe/TableTab.hpp
"
15
16
//------------------------------------------------------------------------------------------------------
24
dbe::TableTab::TableTab
(QWidget* parent)
25
: QWidget(parent)
26
,
this_model
(nullptr)
27
,
this_filter
(nullptr)
28
,
this_delegate
(nullptr)
29
,
this_view
(nullptr)
30
{
31
this_view
=
new
CustomTableView
();
33
QVBoxLayout* TabLayout =
new
QVBoxLayout(
this
);
34
TabLayout->addWidget(
this_view
);
35
this_view
->hide();
36
setAcceptDrops(
true
);
37
this_holder
=
dynamic_cast<
QTabWidget*
>
(parent);
38
}
39
40
dbe::TableTab::~TableTab
()
41
{
42
delete
this_model
;
43
delete
this_filter
;
44
delete
this_delegate
;
45
delete
this_view
;
46
}
47
//------------------------------------------------------------------------------------------------------
48
49
//------------------------------------------------------------------------------------------------------
50
void
51
dbe::TableTab::create_models
()
52
{
53
54
if
(
this_model
==
nullptr
) {
55
this_model
=
new
dbe::models::table
();
56
connect(
this
,
57
SIGNAL(
sig_data_dropped
(QMimeData
const
&, Qt::DropAction)),
58
this_model
,
59
SLOT(slot_data_dropped(QMimeData
const
&, Qt::DropAction)));
60
}
61
62
this_delegate
=
this_delegate
==
nullptr
?
new
CustomDelegate
() :
this_delegate
;
63
this_filter
=
this_filter
==
nullptr
?
new
dbe::models::tableselection
() :
this_filter
;
64
}
65
66
void
67
dbe::TableTab::reset_models
()
68
{
69
this_model
->ResetModel();
70
this_filter
->ResetModel();
71
}
72
73
void
74
dbe::TableTab::CreateModels
()
75
{
76
if
(
this_model
==
nullptr
) {
77
create_models
();
78
}
else
{
79
reset_models
();
80
}
81
82
connect(
this_model
, SIGNAL(ResetTab()),
this
, SLOT(
ResetTabView
()));
83
}
84
//------------------------------------------------------------------------------------------------------
85
86
//------------------------------------------------------------------------------------------------------
87
void
88
dbe::TableTab::DisconnectView
()
89
{
90
this_view
->setModel(NULL);
91
}
92
93
void
94
dbe::TableTab::ResetTableView
()
95
{
96
this_filter
->setSourceModel(
this_model
);
97
98
this_view
->setItemDelegate(
this_delegate
);
99
this_view
->setModel(
this_filter
);
100
this_view
->show();
101
102
ResizeHeaders
();
103
}
104
105
void
106
dbe::TableTab::ResizeHeaders
()
107
{
108
// TODO: at the moment the resize of columns creates too large columns when several data are in a cell
109
// the resize of rows is a little bit expensive with large tables
110
// to be re-evaluated
111
//
112
// if ( this_view->model() != nullptr )
113
// {
114
// this_view->resizeRowsToContents();
115
// this_view->resizeColumnsToContents();
116
// }
117
}
118
119
void
120
dbe::TableTab::ResetTabView
()
121
{
122
reset_models
();
123
ResetTableView
();
124
this_holder
->setTabText(
this_holder
->indexOf(
this
),
this_model
->get_class_name());
125
}
126
//------------------------------------------------------------------------------------------------------
127
128
//------------------------------------------------------------------------------------------------------
134
void
135
dbe::TableTab::dragEnterEvent
(QDragEnterEvent* event)
136
{
137
138
// If there is nothing created then create as needed
139
CreateModels
();
140
141
// Check that all mimetypes are supported
142
for
(
auto
const
& mimetype :
this_model
->mimeTypes()) {
143
if
(not event->mimeData()->hasFormat(mimetype.toStdString().c_str())) {
144
event
->ignore();
145
return
;
146
}
147
}
148
149
// Support only copy actions
150
if
(event->proposedAction() != Qt::DropAction::CopyAction) {
151
return
;
152
}
153
154
event
->acceptProposedAction();
155
156
// connect signals
157
MainWindow
* mainwin =
MainWindow::findthis
();
158
connect(
159
GetTableView
(), SIGNAL(OpenEditor(
tref
)), mainwin, SLOT(slot_launch_object_editor(
tref
)), Qt::UniqueConnection);
160
connect(
GetTableDelegate
(),
161
SIGNAL(CreateObjectEditorSignal(
tref
)),
162
mainwin,
163
SLOT(slot_launch_object_editor(
tref
)),
164
Qt::UniqueConnection);
165
}
166
//------------------------------------------------------------------------------------------------------
167
168
//------------------------------------------------------------------------------------------------------
176
void
177
dbe::TableTab::dropEvent
(QDropEvent* event)
178
{
179
emit
sig_data_dropped
(*event->mimeData(), event->proposedAction());
180
}
181
//------------------------------------------------------------------------------------------------------
182
183
//------------------------------------------------------------------------------------------------------
184
dbe::models::table
*
185
dbe::TableTab::GetTableModel
()
const
186
{
187
return
this_model
;
188
}
189
190
dbe::models::tableselection
*
191
dbe::TableTab::GetTableFilter
()
const
192
{
193
return
this_filter
;
194
}
195
196
dbe::CustomDelegate
*
197
dbe::TableTab::GetTableDelegate
()
const
198
{
199
return
this_delegate
;
200
}
201
202
dbe::CustomTableView
*
203
dbe::TableTab::GetTableView
()
const
204
{
205
return
this_view
;
206
}
207
//------------------------------------------------------------------------------------------------------
MainWindow.hpp
TableTab.hpp
dbe::CustomDelegate
Definition
CustomDelegate.hpp:16
dbe::CustomDelegate::CustomDelegate
CustomDelegate(QObject *parent=0)
Definition
CustomDelegate.cpp:17
dbe::CustomTableView
Definition
CustomTableView.hpp:24
dbe::CustomTableView::CustomTableView
CustomTableView(QWidget *parent=0)
Including QT::include <QHeaderView>.
Definition
CustomTableView.cpp:30
dbe::MainWindow
Definition
MainWindow.hpp:49
dbe::MainWindow::findthis
static MainWindow * findthis()
Definition
MainWindow.cpp:1562
dbe::TableTab::ResetTableView
void ResetTableView()
Definition
TableTab.cpp:94
dbe::TableTab::~TableTab
~TableTab()
Definition
TableTab.cpp:40
dbe::TableTab::create_models
void create_models()
Definition
TableTab.cpp:51
dbe::TableTab::this_view
CustomTableView * this_view
Definition
TableTab.hpp:44
dbe::TableTab::this_model
dbe::models::table * this_model
Definition
TableTab.hpp:41
dbe::TableTab::sig_data_dropped
void sig_data_dropped(QMimeData const &data, Qt::DropAction)
dbe::TableTab::CreateModels
void CreateModels()
Definition
TableTab.cpp:74
dbe::TableTab::this_holder
QTabWidget * this_holder
Definition
TableTab.hpp:45
dbe::TableTab::ResizeHeaders
void ResizeHeaders()
Definition
TableTab.cpp:106
dbe::TableTab::TableTab
TableTab(QWidget *parent=0)
Including Qt.
Definition
TableTab.cpp:24
dbe::TableTab::DisconnectView
void DisconnectView()
Definition
TableTab.cpp:88
dbe::TableTab::ResetTabView
void ResetTabView()
Definition
TableTab.cpp:120
dbe::TableTab::this_delegate
CustomDelegate * this_delegate
Definition
TableTab.hpp:43
dbe::TableTab::GetTableModel
dbe::models::table * GetTableModel() const
Definition
TableTab.cpp:185
dbe::TableTab::reset_models
void reset_models()
Definition
TableTab.cpp:67
dbe::TableTab::GetTableFilter
dbe::models::tableselection * GetTableFilter() const
Definition
TableTab.cpp:191
dbe::TableTab::dragEnterEvent
void dragEnterEvent(QDragEnterEvent *event) override
Definition
TableTab.cpp:135
dbe::TableTab::GetTableView
CustomTableView * GetTableView() const
Definition
TableTab.cpp:203
dbe::TableTab::dropEvent
void dropEvent(QDropEvent *event) override
Definition
TableTab.cpp:177
dbe::TableTab::GetTableDelegate
CustomDelegate * GetTableDelegate() const
Definition
TableTab.cpp:197
dbe::TableTab::this_filter
dbe::models::tableselection * this_filter
Definition
TableTab.hpp:42
dbe::models::table
Definition
table.hpp:25
dbe::models::tableselection
Definition
tableselection.hpp:24
dbe::tref
inner::configobject::tref tref
Definition
tref.hpp:36
Generated on
for DUNE-DAQ by
1.18.0