signal_collection_widget.h
Go to the documentation of this file.
1 /*********************************************************************
2  *
3  * Software License Agreement
4  *
5  * Copyright (c) 2020,
6  * TU Dortmund - Institute of Control Theory and Systems Engineering.
7  * All rights reserved.
8  *
9  * This program is free software: you can redistribute it and/or modify
10  * it under the terms of the GNU General Public License as published by
11  * the Free Software Foundation, either version 3 of the License, or
12  * (at your option) any later version.
13  *
14  * This program is distributed in the hope that it will be useful,
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17  * GNU General Public License for more details.
18  *
19  * You should have received a copy of the GNU General Public License
20  * along with this program. If not, see <https://www.gnu.org/licenses/>.
21  *
22  * Authors: Christoph Rösmann
23  *********************************************************************/
24 
25 #ifndef SRC_GUI_INCLUDE_CORBO_GUI_SIGNAL_COLLECTION_WIDGET_H_
26 #define SRC_GUI_INCLUDE_CORBO_GUI_SIGNAL_COLLECTION_WIDGET_H_
27 
32 #include <QDateTime>
33 #include <QFileDialog>
34 #include <QHash>
35 #include <QList>
36 #include <QMenu>
37 #include <QString>
38 #include <QTreeWidget>
39 #include <QVBoxLayout>
40 #include <QWidget>
41 
42 #include <tuple>
43 
44 namespace corbo {
45 namespace gui {
46 
47 class SignalCollectionWidget : public QWidget
48 {
49  Q_OBJECT
50 
51  public:
52  explicit SignalCollectionWidget(SignalHelper::Ptr signal_helper, QWidget* parent = 0);
53  virtual ~SignalCollectionWidget();
54 
55  QSize sizeHint() const override;
56 
57  public slots:
58  void addSignal(const QString& key, SignalHelper::SignalData& signal_data);
59  void moveToRecent(const QDateTime& dtime);
60  void removeTreeItem(const QString& key, int value_idx);
61 
62  signals:
63  void requestTaskParameterBackup(int task_id);
64  void taskRemoved(int task_id);
65 
66  protected:
68  void createHistoryArea();
69 
70  void getGroupInfo(const QTreeWidget* tree, const QTreeWidgetItem* item, QString* name_out, int* id_out);
71  void removeSignal(QTreeWidget* tree, QTreeWidgetItem* item);
72 
73  void namespaceContextMenu(const QPoint& point, QTreeWidget* tree);
74  void recentGroupContextMenu(const QPoint& point, CollapsableGroupBox* group, int task_id);
75 
76  void addContextActionsSingleValueSignal(SignalWidget& signal_widget, QMenu& menu);
77  void addContextActionsMultiValueSignal(SignalInterface::Ptr signal, QMenu& menu, QMenu& menu_export);
78 
79  void addContextActionsTimeSeriesSignal(TimeSeriesSignal::Ptr ts_signal, QMenu& menu, int signal_value_idx, QMenu* menu_export = nullptr);
80  void addContextActionsTimeSeriesSignal(TimeSeriesSignal::Ptr ts_signal, QMenu& menu, QMenu* menu_export = nullptr);
81  void addContextActionsTimeSeriesSequenceSignal(TimeSeriesSequenceSignal::Ptr ts_seq_signal, QMenu& menu, int signal_value_idx,
82  QMenu* menu_export = nullptr);
83  void addContextActionsTimeSeriesSequenceSignal(TimeSeriesSequenceSignal::Ptr ts_seq_signal, QMenu& menu, QMenu* menu_export = nullptr);
84  void addContextActionsIndexedValuesSetSignal(IndexedValuesSetSignal::Ptr ivs_signal, QMenu& menu, QMenu* menu_export = nullptr);
85 
86  void addContextActionsMatrixSignal(MatrixSignal::Ptr mat_signal, QMenu& menu, QMenu* menu_export = nullptr);
87  void addContextActionsMatrixSetSignal(MatrixSetSignal::Ptr mat_set_signal, QMenu& menu, QMenu* menu_export = nullptr);
88 
89  private:
91 
92  QVBoxLayout* _main_layout;
93 
94  QVector<std::tuple<CollapsableGroupBox*, QWidget*, int>> _recent_signals; // groupbox + extended_tree_widget + task_id
97 };
98 
99 } // namespace gui
100 } // namespace corbo
101 
102 #endif // SRC_GUI_INCLUDE_CORBO_GUI_SIGNAL_COLLECTION_WIDGET_H_
void addContextActionsTimeSeriesSequenceSignal(TimeSeriesSequenceSignal::Ptr ts_seq_signal, QMenu &menu, int signal_value_idx, QMenu *menu_export=nullptr)
void namespaceContextMenu(const QPoint &point, QTreeWidget *tree)
void addContextActionsMatrixSignal(MatrixSignal::Ptr mat_signal, QMenu &menu, QMenu *menu_export=nullptr)
void addContextActionsMatrixSetSignal(MatrixSetSignal::Ptr mat_set_signal, QMenu &menu, QMenu *menu_export=nullptr)
std::shared_ptr< TimeSeriesSignal > Ptr
Definition: signals.h:247
std::shared_ptr< MatrixSetSignal > Ptr
Definition: signals.h:610
std::shared_ptr< TimeSeriesSequenceSignal > Ptr
Definition: signals.h:336
void addContextActionsTimeSeriesSignal(TimeSeriesSignal::Ptr ts_signal, QMenu &menu, int signal_value_idx, QMenu *menu_export=nullptr)
std::shared_ptr< SignalInterface > Ptr
Definition: signals.h:136
std::shared_ptr< SignalHelper > Ptr
Definition: signal_helper.h:45
void addContextActionsIndexedValuesSetSignal(IndexedValuesSetSignal::Ptr ivs_signal, QMenu &menu, QMenu *menu_export=nullptr)
void addSignal(const QString &key, SignalHelper::SignalData &signal_data)
void getGroupInfo(const QTreeWidget *tree, const QTreeWidgetItem *item, QString *name_out, int *id_out)
std::shared_ptr< MatrixSignal > Ptr
Definition: signals.h:542
QVector< std::tuple< CollapsableGroupBox *, QWidget *, int > > _recent_signals
void addContextActionsMultiValueSignal(SignalInterface::Ptr signal, QMenu &menu, QMenu &menu_export)
void removeSignal(QTreeWidget *tree, QTreeWidgetItem *item)
void removeTreeItem(const QString &key, int value_idx)
void requestTaskParameterBackup(int task_id)
SignalCollectionWidget(SignalHelper::Ptr signal_helper, QWidget *parent=0)
void addContextActionsSingleValueSignal(SignalWidget &signal_widget, QMenu &menu)
std::shared_ptr< IndexedValuesSetSignal > Ptr
Definition: signals.h:477
void recentGroupContextMenu(const QPoint &point, CollapsableGroupBox *group, int task_id)


control_box_rst
Author(s): Christoph Rösmann
autogenerated on Mon Feb 28 2022 22:07:18