StateTabWidget.cpp
Go to the documentation of this file.
1/*
2* This file is part of ArmarX.
3*
4* ArmarX is free software; you can redistribute it and/or modify
5* it under the terms of the GNU General Public License version 2 as
6* published by the Free Software Foundation.
7*
8* ArmarX is distributed in the hope that it will be useful, but
9* WITHOUT ANY WARRANTY; without even the implied warranty of
10* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11* GNU General Public License for more details.
12*
13* You should have received a copy of the GNU General Public License
14* along with this program. If not, see <http://www.gnu.org/licenses/>.
15*
16* @package ArmarX::
17* @author Mirko Waechter ( mirko.waechter at kit dot edu)
18* @date 2014
19* @copyright http://www.gnu.org/licenses/gpl-2.0.txt
20* GNU General Public License
21*/
22
23#include "StateTabWidget.h"
24
27
28namespace armarx
29{
30 StateTabWidget::StateTabWidget(QWidget* parent) : QTabWidget(parent)
31 {
32 connect(this, SIGNAL(tabCloseRequested(int)), this, SLOT(deleteViewerWidget(int)));
33 }
34
37 {
38 StatechartView* viewer = qobject_cast<StatechartView*>(currentWidget());
39
40 if (viewer)
41 {
42 return viewer->getStateInstance();
43 }
44
46 }
47
50 {
51 return dynamic_cast<StatechartView*>(currentWidget());
52 }
53
56 {
57 return dynamic_cast<StatechartView*>(widget(index));
58 }
59
60 int
62 {
63
64 for (int i = 0; i < count(); ++i)
65 {
66 StatechartView* view = stateview(i);
67
68 if (view)
69 {
70 if (view->getStateInstance() && view->getStateInstance()->getStateClass() == state)
71 {
72 return i;
73 }
74 }
75 }
76
77 return -1;
78 }
79
82 {
83 StatechartView* v = new StatechartView(state, false);
84 addTab(v, (state) ? state->getStateName() : "NoState");
85 setCurrentIndex(count() - 1);
86 QSizePolicy p;
87 p.setVerticalStretch(5);
88 p.setVerticalPolicy(QSizePolicy::MinimumExpanding);
89 currentWidget()->setSizePolicy(p);
90 v->viewAll();
91 return v;
92 }
93
99
100 void
101 StateTabWidget::deleteViewerWidget(int index)
102 {
103 widget(index)->deleteLater();
104 }
105
106} // namespace armarx
107
108QSize
110{
111 return QSize(400, 400);
112}
uint8_t index
StateTabWidget(QWidget *parent=0)
QSize sizeHint() const override
StatechartView * addStateTab(statechartmodel::StatePtr state=statechartmodel::StatePtr())
StatechartView * addEmptyStateTab()
statechartmodel::StateInstancePtr currentState() const
StatechartView * stateview(int index) const
int getStateTab(statechartmodel::StatePtr state) const
StatechartView * currentStateview() const
statechartmodel::StateInstancePtr getStateInstance() const
std::shared_ptr< State > StatePtr
Definition State.h:48
std::shared_ptr< StateInstance > StateInstancePtr
This file offers overloads of toIce() and fromIce() functions for STL container types.