1#include "robodktools.h"
5bool ItemValid(
const Item item){
6 return item !=
nullptr;
11QDockWidget* AddDockWidget(QMainWindow *mw, QWidget *widget,
const QString &strtitle, Qt::DockWidgetAreas allowed, Qt::DockWidgetArea add_where,
bool closable,
bool delete_on_close){
12 QDockWidget *dockwidget =
new QDockWidget(strtitle, mw);
13 dockwidget->setObjectName(strtitle);
15 QDockWidget::DockWidgetFeatures features =
16 QDockWidget::DockWidgetMovable | QDockWidget::DockWidgetFloatable;
19 features.setFlag(QDockWidget::DockWidgetClosable);
22 dockwidget->setFeatures(features);
23 dockwidget->setWidget(widget);
25 dockwidget->setAttribute(Qt::WA_DeleteOnClose);
27 dockwidget->setAllowedAreas(allowed);
28 qDebug() <<
"Adding new docked window: " << strtitle;
29 mw->addDockWidget(add_where, dockwidget);
30 if (add_where == Qt::NoDockWidgetArea){
31 dockwidget->setFloating(
true);
34 dockwidget->setVisible(
true);
38void string_2_doubles(
const QString &str,
double *values,
int *size_inout,
const QString &separator) {
39#if (QT_VERSION < QT_VERSION_CHECK(5, 14, 0))
40 QString::SplitBehavior behavior = QString::SkipEmptyParts;
42 Qt::SplitBehavior behavior = Qt::SkipEmptyParts;
48 QRegularExpression rx(separator);
50 QStringList strfloats = line.split(rx, behavior);
51 *size_inout = qMin(strfloats.size(), *size_inout);
53 for (
int i=0; i<strfloats.size(); i++){
54 strnum = strfloats.at(i);
55 strnum = strnum.trimmed();
56 double aux = strnum.toDouble(&isok);
58 values[countok] = aux;
59 countok = countok + 1;
61 if (countok >= *size_inout){
62 *size_inout = countok;
66 *size_inout = countok;
69QString doubles_2_string(
const double *array,
int size,
int precision,
const QString &separator){
71 for (
int i=0; i<size-1; i++){
72 QString num_str = QString::number(array[i],
'f',precision);
74 txt.append(separator);
76 QString num_str = QString::number(array[size-1],
'f',precision);
The Item class represents an item in RoboDK station. An item can be a robot, a frame,...