Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
A
ArmarXGui
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Container Registry
Model registry
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Software
ArmarX
ArmarXGui
Commits
1c03f97a
Commit
1c03f97a
authored
2 years ago
by
Stefan Reither
Browse files
Options
Downloads
Patches
Plain Diff
VariantWidget: add LongVariantDataWidget
parent
67611520
No related branches found
Branches containing commit
No related tags found
Tags containing commit
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
source/ArmarXGui/libraries/VariantWidget/VariantWidget.cpp
+121
-63
121 additions, 63 deletions
source/ArmarXGui/libraries/VariantWidget/VariantWidget.cpp
with
121 additions
and
63 deletions
source/ArmarXGui/libraries/VariantWidget/VariantWidget.cpp
+
121
−
63
View file @
1c03f97a
...
...
@@ -22,21 +22,21 @@
#include
"VariantWidget.h"
#include
<QLabel>
#include
<QVBoxLayout>
#include
<QFormLayout>
#include
<QLabel>
#include
<QTableWidget>
#include
<QVBoxLayout>
#include
<ArmarXCore/core/exceptions/local/ExpressionException.h>
#include
<ArmarXCore/core/util/StringHelpers.h>
#include
<ArmarXCore/interface/observers/Timestamp.h>
#include
<ArmarXCore/interface/observers/Complex.h>
#include
<ArmarXCore/interface/observers/VariantContainers.h>
#include
<ArmarXCore/interface/observers/Matrix.h>
#include
<ArmarXCore/interface/observers/Timestamp.h>
#include
<ArmarXCore/interface/observers/VariantContainers.h>
namespace
armarx
::
VariantDataWidgets
{
class
BoolVariantDataWidget
:
public
VariantDataWidgetBase
class
BoolVariantDataWidget
:
public
VariantDataWidgetBase
{
public:
enum
class
DisplayOption
...
...
@@ -49,8 +49,7 @@ namespace armarx::VariantDataWidgets
X
};
BoolVariantDataWidget
(
const
VariantDataPtr
&
v
)
:
disp
{
DisplayOption
::
Boolalpha
}
BoolVariantDataWidget
(
const
VariantDataPtr
&
v
)
:
disp
{
DisplayOption
::
Boolalpha
}
{
auto
l
=
new
QVBoxLayout
;
l
->
setContentsMargins
(
0
,
0
,
0
,
0
);
...
...
@@ -59,7 +58,8 @@ namespace armarx::VariantDataWidgets
l
->
addWidget
(
label
);
update
(
v
);
}
void
update
(
const
VariantDataPtr
&
p
)
override
void
update
(
const
VariantDataPtr
&
p
)
override
{
BoolVariantDataPtr
v
=
BoolVariantDataPtr
::
dynamicCast
(
p
);
ARMARX_CHECK_EXPRESSION
(
v
);
...
...
@@ -85,16 +85,17 @@ namespace armarx::VariantDataWidgets
break
;
}
}
private
:
QLabel
*
label
;
DisplayOption
disp
;
};
VariantDataWidgetFactoryRegistration
<
BoolVariantDataWidget
>
registerBoolVariantDataWidget
{
BoolVariantData
::
ice_staticId
()};
VariantDataWidgetFactoryRegistration
<
BoolVariantDataWidget
>
registerBoolVariantDataWidget
{
BoolVariantData
::
ice_staticId
()};
class
DoubleVariantDataWidget
:
public
VariantDataWidgetBase
class
DoubleVariantDataWidget
:
public
VariantDataWidgetBase
{
public:
DoubleVariantDataWidget
(
const
VariantDataPtr
&
v
)
{
auto
l
=
new
QVBoxLayout
;
...
...
@@ -104,21 +105,23 @@ namespace armarx::VariantDataWidgets
l
->
addWidget
(
label
);
update
(
v
);
}
void
update
(
const
VariantDataPtr
&
p
)
override
void
update
(
const
VariantDataPtr
&
p
)
override
{
DoubleVariantDataPtr
v
=
DoubleVariantDataPtr
::
dynamicCast
(
p
);
ARMARX_CHECK_EXPRESSION
(
v
);
label
->
setText
(
QString
::
number
(
v
->
d
));
}
private
:
QLabel
*
label
;
};
VariantDataWidgetFactoryRegistration
<
DoubleVariantDataWidget
>
registerDoubleVariantDataWidget
{
DoubleVariantData
::
ice_staticId
()};
VariantDataWidgetFactoryRegistration
<
DoubleVariantDataWidget
>
registerDoubleVariantDataWidget
{
DoubleVariantData
::
ice_staticId
()};
class
FloatVariantDataWidget
:
public
VariantDataWidgetBase
class
FloatVariantDataWidget
:
public
VariantDataWidgetBase
{
public:
FloatVariantDataWidget
(
const
VariantDataPtr
&
v
)
{
auto
l
=
new
QVBoxLayout
;
...
...
@@ -128,21 +131,23 @@ namespace armarx::VariantDataWidgets
l
->
addWidget
(
label
);
update
(
v
);
}
void
update
(
const
VariantDataPtr
&
p
)
override
void
update
(
const
VariantDataPtr
&
p
)
override
{
FloatVariantDataPtr
v
=
FloatVariantDataPtr
::
dynamicCast
(
p
);
ARMARX_CHECK_EXPRESSION
(
v
);
label
->
setText
(
QString
::
number
(
v
->
f
));
}
private
:
QLabel
*
label
;
};
VariantDataWidgetFactoryRegistration
<
FloatVariantDataWidget
>
registerFloatVariantDataWidget
{
FloatVariantData
::
ice_staticId
()};
VariantDataWidgetFactoryRegistration
<
FloatVariantDataWidget
>
registerFloatVariantDataWidget
{
FloatVariantData
::
ice_staticId
()};
class
IntVariantDataWidget
:
public
VariantDataWidgetBase
class
IntVariantDataWidget
:
public
VariantDataWidgetBase
{
public:
IntVariantDataWidget
(
const
VariantDataPtr
&
v
)
{
auto
l
=
new
QVBoxLayout
;
...
...
@@ -152,21 +157,50 @@ namespace armarx::VariantDataWidgets
l
->
addWidget
(
label
);
update
(
v
);
}
void
update
(
const
VariantDataPtr
&
p
)
override
void
update
(
const
VariantDataPtr
&
p
)
override
{
IntVariantDataPtr
v
=
IntVariantDataPtr
::
dynamicCast
(
p
);
ARMARX_CHECK_EXPRESSION
(
v
);
label
->
setText
(
QString
::
number
(
v
->
n
));
}
private
:
QLabel
*
label
;
};
VariantDataWidgetFactoryRegistration
<
IntVariantDataWidget
>
registerIntVariantDataWidget
{
IntVariantData
::
ice_staticId
()};
VariantDataWidgetFactoryRegistration
<
IntVariantDataWidget
>
registerIntVariantDataWidget
{
IntVariantData
::
ice_staticId
()};
class
Stri
ngVariantDataWidget
:
public
VariantDataWidgetBase
class
Lo
ngVariantDataWidget
:
public
VariantDataWidgetBase
{
public:
LongVariantDataWidget
(
const
VariantDataPtr
&
v
)
{
auto
l
=
new
QVBoxLayout
;
l
->
setContentsMargins
(
0
,
0
,
0
,
0
);
setLayout
(
l
);
label
=
new
QLabel
;
l
->
addWidget
(
label
);
update
(
v
);
}
void
update
(
const
VariantDataPtr
&
p
)
override
{
LongVariantDataPtr
v
=
LongVariantDataPtr
::
dynamicCast
(
p
);
ARMARX_CHECK_EXPRESSION
(
v
);
label
->
setText
(
QString
::
number
(
v
->
n
));
}
private
:
QLabel
*
label
;
};
VariantDataWidgetFactoryRegistration
<
LongVariantDataWidget
>
registerLongVariantDataWidget
{
LongVariantData
::
ice_staticId
()};
class
StringVariantDataWidget
:
public
VariantDataWidgetBase
{
public:
StringVariantDataWidget
(
const
VariantDataPtr
&
v
)
{
auto
l
=
new
QVBoxLayout
;
...
...
@@ -176,23 +210,24 @@ namespace armarx::VariantDataWidgets
l
->
addWidget
(
label
);
update
(
v
);
}
void
update
(
const
VariantDataPtr
&
p
)
override
void
update
(
const
VariantDataPtr
&
p
)
override
{
StringVariantDataPtr
v
=
StringVariantDataPtr
::
dynamicCast
(
p
);
ARMARX_CHECK_EXPRESSION
(
v
);
label
->
setText
(
QString
::
fromStdString
(
v
->
s
));
}
private
:
QLabel
*
label
;
};
VariantDataWidgetFactoryRegistration
<
StringVariantDataWidget
>
registerStringVariantDataWidget
{
StringVariantData
::
ice_staticId
()};
VariantDataWidgetFactoryRegistration
<
StringVariantDataWidget
>
registerStringVariantDataWidget
{
StringVariantData
::
ice_staticId
()};
class
TimestampBaseWidget
:
public
VariantDataWidgetBase
class
TimestampBaseWidget
:
public
VariantDataWidgetBase
{
public:
TimestampBaseWidget
(
const
VariantDataPtr
&
v
)
:
suffix
{
"us"
}
TimestampBaseWidget
(
const
VariantDataPtr
&
v
)
:
suffix
{
"us"
}
{
auto
l
=
new
QVBoxLayout
;
l
->
setContentsMargins
(
0
,
0
,
0
,
0
);
...
...
@@ -201,19 +236,22 @@ namespace armarx::VariantDataWidgets
l
->
addWidget
(
label
);
update
(
v
);
}
void
update
(
const
VariantDataPtr
&
p
)
override
void
update
(
const
VariantDataPtr
&
p
)
override
{
TimestampBasePtr
v
=
TimestampBasePtr
::
dynamicCast
(
p
);
ARMARX_CHECK_EXPRESSION
(
v
);
label
->
setText
(
QString
::
number
(
v
->
timestamp
)
+
suffix
);
}
private
:
QLabel
*
label
;
QString
suffix
;
};
VariantDataWidgetFactoryRegistration
<
TimestampBaseWidget
>
registerTimestampBaseWidget
{
TimestampBase
::
ice_staticId
()};
VariantDataWidgetFactoryRegistration
<
TimestampBaseWidget
>
registerTimestampBaseWidget
{
TimestampBase
::
ice_staticId
()};
class
ComplexFloatBaseWidget
:
public
VariantDataWidgetBase
class
ComplexFloatBaseWidget
:
public
VariantDataWidgetBase
{
public:
ComplexFloatBaseWidget
(
const
VariantDataPtr
&
v
)
...
...
@@ -227,20 +265,23 @@ namespace armarx::VariantDataWidgets
l
->
addRow
(
"Imag"
,
labelI
);
update
(
v
);
}
void
update
(
const
VariantDataPtr
&
p
)
override
void
update
(
const
VariantDataPtr
&
p
)
override
{
ComplexFloatBasePtr
v
=
ComplexFloatBasePtr
::
dynamicCast
(
p
);
ARMARX_CHECK_EXPRESSION
(
v
);
labelR
->
setText
(
QString
::
number
(
v
->
real
));
labelI
->
setText
(
QString
::
number
(
v
->
imag
));
}
private
:
QLabel
*
labelR
;
QLabel
*
labelI
;
};
VariantDataWidgetFactoryRegistration
<
ComplexFloatBaseWidget
>
registerComplexFloatBaseWidget
{
ComplexFloatBase
::
ice_staticId
()};
VariantDataWidgetFactoryRegistration
<
ComplexFloatBaseWidget
>
registerComplexFloatBaseWidget
{
ComplexFloatBase
::
ice_staticId
()};
class
ComplexDoubleBaseWidget
:
public
VariantDataWidgetBase
class
ComplexDoubleBaseWidget
:
public
VariantDataWidgetBase
{
public:
ComplexDoubleBaseWidget
(
const
VariantDataPtr
&
v
)
...
...
@@ -254,20 +295,23 @@ namespace armarx::VariantDataWidgets
l
->
addRow
(
"Imag"
,
labelI
);
update
(
v
);
}
void
update
(
const
VariantDataPtr
&
p
)
override
void
update
(
const
VariantDataPtr
&
p
)
override
{
ComplexDoubleBasePtr
v
=
ComplexDoubleBasePtr
::
dynamicCast
(
p
);
ARMARX_CHECK_EXPRESSION
(
v
);
labelR
->
setText
(
QString
::
number
(
v
->
real
));
labelI
->
setText
(
QString
::
number
(
v
->
imag
));
}
private
:
QLabel
*
labelR
;
QLabel
*
labelI
;
};
VariantDataWidgetFactoryRegistration
<
ComplexDoubleBaseWidget
>
registerComplexDoubleBaseWidget
{
ComplexDoubleBase
::
ice_staticId
()};
VariantDataWidgetFactoryRegistration
<
ComplexDoubleBaseWidget
>
registerComplexDoubleBaseWidget
{
ComplexDoubleBase
::
ice_staticId
()};
class
MatrixDoubleBaseWidget
:
public
VariantDataWidgetBase
class
MatrixDoubleBaseWidget
:
public
VariantDataWidgetBase
{
public:
MatrixDoubleBaseWidget
(
const
VariantDataPtr
&
v
)
...
...
@@ -279,7 +323,8 @@ namespace armarx::VariantDataWidgets
l
->
addWidget
(
table
);
update
(
v
);
}
void
update
(
const
VariantDataPtr
&
p
)
override
void
update
(
const
VariantDataPtr
&
p
)
override
{
MatrixDoubleBasePtr
v
=
MatrixDoubleBasePtr
::
dynamicCast
(
p
);
ARMARX_CHECK_EXPRESSION
(
v
);
...
...
@@ -290,16 +335,18 @@ namespace armarx::VariantDataWidgets
for
(
int
col
=
0
;
col
<
v
->
cols
;
++
col
)
{
int
i
=
row
+
col
*
v
->
rows
;
table
->
setItem
(
row
,
col
,
new
QTableWidgetItem
{
QString
::
number
(
v
->
data
.
at
(
i
))});
table
->
setItem
(
row
,
col
,
new
QTableWidgetItem
{
QString
::
number
(
v
->
data
.
at
(
i
))});
}
}
}
private
:
QTableWidget
*
table
;
};
VariantDataWidgetFactoryRegistration
<
MatrixDoubleBaseWidget
>
registerMatrixDoubleBaseWidget
{
MatrixDoubleBase
::
ice_staticId
()};
VariantDataWidgetFactoryRegistration
<
MatrixDoubleBaseWidget
>
registerMatrixDoubleBaseWidget
{
MatrixDoubleBase
::
ice_staticId
()};
class
MatrixFloatBaseWidget
:
public
VariantDataWidgetBase
class
MatrixFloatBaseWidget
:
public
VariantDataWidgetBase
{
public:
MatrixFloatBaseWidget
(
const
VariantDataPtr
&
v
)
...
...
@@ -311,7 +358,8 @@ namespace armarx::VariantDataWidgets
l
->
addWidget
(
table
);
update
(
v
);
}
void
update
(
const
VariantDataPtr
&
p
)
override
void
update
(
const
VariantDataPtr
&
p
)
override
{
MatrixFloatBasePtr
v
=
MatrixFloatBasePtr
::
dynamicCast
(
p
);
ARMARX_CHECK_EXPRESSION
(
v
);
...
...
@@ -322,27 +370,29 @@ namespace armarx::VariantDataWidgets
for
(
int
col
=
0
;
col
<
v
->
cols
;
++
col
)
{
int
i
=
row
+
col
*
v
->
rows
;
table
->
setItem
(
row
,
col
,
new
QTableWidgetItem
{
QString
::
number
(
v
->
data
.
at
(
i
))});
table
->
setItem
(
row
,
col
,
new
QTableWidgetItem
{
QString
::
number
(
v
->
data
.
at
(
i
))});
}
}
}
private
:
QTableWidget
*
table
;
};
VariantDataWidgetFactoryRegistration
<
MatrixFloatBaseWidget
>
registerMatrixFloatBaseWidget
{
MatrixFloatBase
::
ice_staticId
()};
}
VariantDataWidgetFactoryRegistration
<
MatrixFloatBaseWidget
>
registerMatrixFloatBaseWidget
{
MatrixFloatBase
::
ice_staticId
()};
}
// namespace armarx::VariantDataWidgets
namespace
armarx
{
VariantWidget
::
VariantWidget
(
QWidget
*
parent
)
:
QWidget
{
parent
}
VariantWidget
::
VariantWidget
(
QWidget
*
parent
)
:
QWidget
{
parent
}
{
l
=
new
QFormLayout
;
setLayout
(
l
);
reset
();
}
void
VariantWidget
::
reset
(
Mode
newMode
)
void
VariantWidget
::
reset
(
Mode
newMode
)
{
if
(
mode
!=
Mode
::
Empty
)
{
...
...
@@ -369,7 +419,8 @@ namespace armarx
}
}
void
VariantWidget
::
update
(
const
VariantBasePtr
&
v
)
void
VariantWidget
::
update
(
const
VariantBasePtr
&
v
)
{
if
(
mode
!=
Mode
::
SingleEntry
)
{
...
...
@@ -378,7 +429,8 @@ namespace armarx
updateEntry
(
"SingleEntry"
,
v
);
}
void
VariantWidget
::
update
(
const
std
::
vector
<
VariantBasePtr
>&
vec
)
void
VariantWidget
::
update
(
const
std
::
vector
<
VariantBasePtr
>&
vec
)
{
if
(
mode
!=
Mode
::
Vector
)
{
...
...
@@ -390,7 +442,8 @@ namespace armarx
}
}
void
VariantWidget
::
update
(
const
std
::
map
<
std
::
string
,
VariantBasePtr
>&
map
)
void
VariantWidget
::
update
(
const
std
::
map
<
std
::
string
,
VariantBasePtr
>&
map
)
{
if
(
mode
!=
Mode
::
Map
)
{
...
...
@@ -402,7 +455,8 @@ namespace armarx
}
}
void
VariantWidget
::
updateEntry
(
const
std
::
string
&
name
,
const
VariantBasePtr
&
v
)
void
VariantWidget
::
updateEntry
(
const
std
::
string
&
name
,
const
VariantBasePtr
&
v
)
{
ARMARX_CHECK_EXPRESSION
(
layout
());
if
(
entries
.
count
(
name
))
...
...
@@ -461,11 +515,12 @@ namespace armarx
}
}
int
VariantWidget
::
getEntryRow
(
VariantWidget
::
VariantDataWidgetBase
*
entry
)
const
int
VariantWidget
::
getEntryRow
(
VariantWidget
::
VariantDataWidgetBase
*
entry
)
const
{
//i need to find the correct row.
//there is no other way than iterating over the rows and check them
for
(
int
row
=
0
;
row
<
l
->
rowCount
();
++
row
)
for
(
int
row
=
0
;
row
<
l
->
rowCount
();
++
row
)
{
QLayoutItem
*
it
=
l
->
itemAt
(
row
,
QFormLayout
::
FieldRole
);
if
(
it
&&
it
->
widget
()
==
entry
)
...
...
@@ -476,7 +531,8 @@ namespace armarx
return
-
1
;
}
VariantDataWidgets
::
VariantDataWidgetBase
*
VariantDataWidgets
::
makeVariantDataWidget
(
const
VariantBasePtr
&
p
)
VariantDataWidgets
::
VariantDataWidgetBase
*
VariantDataWidgets
::
makeVariantDataWidget
(
const
VariantBasePtr
&
p
)
{
class
ErrorMessageWidget
:
public
VariantDataWidgetBase
{
...
...
@@ -486,7 +542,7 @@ namespace armarx
setLayout
(
new
QVBoxLayout
);
setTypeName
(
".ErrorMessageWidget"
);
layout
()
->
setContentsMargins
(
0
,
0
,
0
,
0
);
QLabel
*
label
=
new
QLabel
{
QString
::
fromStdString
(
errorMessage
)};
QLabel
*
label
=
new
QLabel
{
QString
::
fromStdString
(
errorMessage
)};
layout
()
->
addWidget
(
label
);
label
->
setStyleSheet
(
"QLabel { background-color : yellow; color : red; }"
);
}
...
...
@@ -494,11 +550,11 @@ namespace armarx
if
(
!
p
)
{
return
new
ErrorMessageWidget
{
"Null VariantBasePtr"
};
return
new
ErrorMessageWidget
{
"Null VariantBasePtr"
};
}
if
(
!
p
->
data
)
{
return
new
ErrorMessageWidget
{
"Null VariantBasePtr::data"
};
return
new
ErrorMessageWidget
{
"Null VariantBasePtr::data"
};
}
auto
type
=
p
->
data
->
ice_id
();
if
(
VariantDataWidgetFactory
::
has
(
type
))
...
...
@@ -511,17 +567,19 @@ namespace armarx
}
catch
(
std
::
exception
&
e
)
{
return
new
ErrorMessageWidget
{
"VariantDataWidgetFactory for "
+
type
+
" threw exception
\n
"
+
e
.
what
()};
return
new
ErrorMessageWidget
{
"VariantDataWidgetFactory for "
+
type
+
" threw exception
\n
"
+
e
.
what
()};
}
catch
(...)
{
return
new
ErrorMessageWidget
{
"VariantDataWidgetFactory for "
+
type
+
" threw exception"
};
return
new
ErrorMessageWidget
{
"VariantDataWidgetFactory for "
+
type
+
" threw exception"
};
}
}
else
{
return
new
ErrorMessageWidget
{
"No VariantDataWidgetFactory for "
+
type
};
return
new
ErrorMessageWidget
{
"No VariantDataWidgetFactory for "
+
type
};
}
return
new
ErrorMessageWidget
{
"makeVariantDataWidget: Unknown error"
};
return
new
ErrorMessageWidget
{
"makeVariantDataWidget: Unknown error"
};
}
}
}
// namespace armarx
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment