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 <QVBoxLayout>
8
#include <QHeaderView>
9
#include <QMimeData>
10
#include <qevent.h>
11
13
#include "
dbe/TableTab.hpp
"
14
#include "
dbe/MainWindow.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
dbe::TableTab::create_models
()
51
{
52
53
if
(
this_model
==
nullptr
)
54
{
55
this_model
=
new
dbe::models::table
();
56
connect (
this
, SIGNAL (
sig_data_dropped
( QMimeData
const
&, Qt::DropAction ) ),
57
this_model
,
58
SLOT ( slot_data_dropped ( QMimeData
const
&, Qt::DropAction ) ) );
59
}
60
61
this_delegate
=
this_delegate
==
nullptr
?
new
CustomDelegate
() :
this_delegate
;
62
this_filter
=
this_filter
==
nullptr
?
new
dbe::models::tableselection
() :
this_filter
;
63
}
64
65
void
dbe::TableTab::reset_models
()
66
{
67
this_model
->ResetModel();
68
this_filter
->ResetModel();
69
}
70
71
void
dbe::TableTab::CreateModels
()
72
{
73
if
(
this_model
==
nullptr
)
74
{
75
create_models
();
76
}
77
else
78
{
79
reset_models
();
80
}
81
82
connect (
this_model
, SIGNAL ( ResetTab() ),
this
, SLOT (
ResetTabView
() ) );
83
}
84
//------------------------------------------------------------------------------------------------------
85
86
//------------------------------------------------------------------------------------------------------
87
void
dbe::TableTab::DisconnectView
()
88
{
89
this_view
->setModel ( NULL );
90
}
91
92
void
dbe::TableTab::ResetTableView
()
93
{
94
this_filter
->setSourceModel (
this_model
);
95
96
this_view
->setItemDelegate (
this_delegate
);
97
this_view
->setModel (
this_filter
);
98
this_view
->show();
99
100
ResizeHeaders
();
101
}
102
103
void
dbe::TableTab::ResizeHeaders
()
104
{
105
// TODO: at the moment the resize of columns creates too large columns when several data are in a cell
106
// the resize of rows is a little bit expensive with large tables
107
// to be re-evaluated
108
//
109
// if ( this_view->model() != nullptr )
110
// {
111
// this_view->resizeRowsToContents();
112
// this_view->resizeColumnsToContents();
113
// }
114
}
115
116
void
dbe::TableTab::ResetTabView
()
117
{
118
reset_models
();
119
ResetTableView
();
120
this_holder
->setTabText (
this_holder
->indexOf (
this
),
this_model
->get_class_name() );
121
}
122
//------------------------------------------------------------------------------------------------------
123
124
//------------------------------------------------------------------------------------------------------
130
void
dbe::TableTab::dragEnterEvent
( QDragEnterEvent * event )
131
{
132
133
// If there is nothing created then create as needed
134
CreateModels
();
135
136
// Check that all mimetypes are supported
137
for
(
auto
const
& mimetype :
this_model
->mimeTypes() )
138
{
139
if
( not event->mimeData()->hasFormat( mimetype.toStdString().c_str() ) )
140
{
141
event
->ignore();
142
return
;
143
}
144
}
145
146
// Support only copy actions
147
if
( event->proposedAction() != Qt::DropAction::CopyAction )
148
{
149
return
;
150
}
151
152
event
->acceptProposedAction();
153
154
// connect signals
155
MainWindow
* mainwin =
MainWindow::findthis
();
156
connect (
GetTableView
(), SIGNAL ( OpenEditor (
tref
) ), mainwin,
157
SLOT ( slot_launch_object_editor (
tref
) ), Qt::UniqueConnection );
158
connect (
GetTableDelegate
(), SIGNAL ( CreateObjectEditorSignal (
tref
) ), mainwin,
159
SLOT ( slot_launch_object_editor (
tref
) ), Qt::UniqueConnection );
160
}
161
//------------------------------------------------------------------------------------------------------
162
163
//------------------------------------------------------------------------------------------------------
171
void
dbe::TableTab::dropEvent
( QDropEvent * event )
172
{
173
emit
sig_data_dropped
( *event->mimeData(), event->proposedAction() );
174
}
175
//------------------------------------------------------------------------------------------------------
176
177
//------------------------------------------------------------------------------------------------------
178
dbe::models::table
*
dbe::TableTab::GetTableModel
()
const
179
{
180
return
this_model
;
181
}
182
183
dbe::models::tableselection
*
dbe::TableTab::GetTableFilter
()
const
184
{
185
return
this_filter
;
186
}
187
188
dbe::CustomDelegate
*
dbe::TableTab::GetTableDelegate
()
const
189
{
190
return
this_delegate
;
191
}
192
193
dbe::CustomTableView
*
dbe::TableTab::GetTableView
()
const
194
{
195
return
this_view
;
196
}
197
//------------------------------------------------------------------------------------------------------
MainWindow.hpp
TableTab.hpp
dbe::CustomDelegate
Definition
CustomDelegate.hpp:17
dbe::CustomTableView
Definition
CustomTableView.hpp:23
dbe::MainWindow
Definition
MainWindow.hpp:50
dbe::MainWindow::findthis
static MainWindow * findthis()
Definition
MainWindow.cpp:1667
dbe::TableTab::ResetTableView
void ResetTableView()
Definition
TableTab.cpp:92
dbe::TableTab::~TableTab
~TableTab()
Definition
TableTab.cpp:40
dbe::TableTab::create_models
void create_models()
Definition
TableTab.cpp:50
dbe::TableTab::this_view
CustomTableView * this_view
Definition
TableTab.hpp:45
dbe::TableTab::this_model
dbe::models::table * this_model
Definition
TableTab.hpp:42
dbe::TableTab::sig_data_dropped
void sig_data_dropped(QMimeData const &data, Qt::DropAction)
dbe::TableTab::CreateModels
void CreateModels()
Definition
TableTab.cpp:71
dbe::TableTab::this_holder
QTabWidget * this_holder
Definition
TableTab.hpp:46
dbe::TableTab::ResizeHeaders
void ResizeHeaders()
Definition
TableTab.cpp:103
dbe::TableTab::TableTab
TableTab(QWidget *parent=0)
Including Qt.
Definition
TableTab.cpp:24
dbe::TableTab::DisconnectView
void DisconnectView()
Definition
TableTab.cpp:87
dbe::TableTab::ResetTabView
void ResetTabView()
Definition
TableTab.cpp:116
dbe::TableTab::this_delegate
CustomDelegate * this_delegate
Definition
TableTab.hpp:44
dbe::TableTab::GetTableModel
dbe::models::table * GetTableModel() const
Definition
TableTab.cpp:178
dbe::TableTab::reset_models
void reset_models()
Definition
TableTab.cpp:65
dbe::TableTab::GetTableFilter
dbe::models::tableselection * GetTableFilter() const
Definition
TableTab.cpp:183
dbe::TableTab::dragEnterEvent
void dragEnterEvent(QDragEnterEvent *event) override
Definition
TableTab.cpp:130
dbe::TableTab::GetTableView
CustomTableView * GetTableView() const
Definition
TableTab.cpp:193
dbe::TableTab::dropEvent
void dropEvent(QDropEvent *event) override
Definition
TableTab.cpp:171
dbe::TableTab::GetTableDelegate
CustomDelegate * GetTableDelegate() const
Definition
TableTab.cpp:188
dbe::TableTab::this_filter
dbe::models::tableselection * this_filter
Definition
TableTab.hpp:43
dbe::models::table
Definition
table.hpp:27
dbe::models::tableselection
Definition
tableselection.hpp:26
dbe::tref
inner::configobject::tref tref
Definition
tref.hpp:35
Generated on
for DUNE-DAQ by
1.17.0