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 
28 namespace 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 
96  {
97  return addStateTab();
98  }
99 
100  void
101  StateTabWidget::deleteViewerWidget(int index)
102  {
103  widget(index)->deleteLater();
104  }
105 
106 } // namespace armarx
107 
108 QSize
110 {
111  return QSize(400, 400);
112 }
armarx::StateTabWidget::currentStateview
StatechartView * currentStateview() const
Definition: StateTabWidget.cpp:49
StatechartView.h
index
uint8_t index
Definition: EtherCATFrame.h:59
armarx::StateTabWidget::stateview
StatechartView * stateview(int index) const
Definition: StateTabWidget.cpp:55
armarx::StateTabWidget::StateTabWidget
StateTabWidget(QWidget *parent=0)
Definition: StateTabWidget.cpp:30
armarx::StateTabWidget::addEmptyStateTab
StatechartView * addEmptyStateTab()
Definition: StateTabWidget.cpp:95
armarx::statechartmodel::StateInstancePtr
std::shared_ptr< StateInstance > StateInstancePtr
Definition: StateInstance.h:146
armarx::StateTabWidget::sizeHint
QSize sizeHint() const override
Definition: StateTabWidget.cpp:109
armarx::StatechartView
Definition: StatechartView.h:45
armarx::StateTabWidget::getStateTab
int getStateTab(statechartmodel::StatePtr state) const
Definition: StateTabWidget.cpp:61
armarx::StateTabWidget::addStateTab
StatechartView * addStateTab(statechartmodel::StatePtr state=statechartmodel::StatePtr())
Definition: StateTabWidget.cpp:81
armarx::ctrlutil::v
double v(double t, double v0, double a0, double j)
Definition: CtrlUtil.h:39
ArmarXWidgetController.h
StateTabWidget.h
armarx::statechartmodel::StatePtr
std::shared_ptr< State > StatePtr
Definition: State.h:48
armarx::StatechartView::getStateInstance
statechartmodel::StateInstancePtr getStateInstance() const
Definition: StatechartView.cpp:87
armarx::StateTabWidget::currentState
statechartmodel::StateInstancePtr currentState() const
Definition: StateTabWidget.cpp:36
armarx
This file offers overloads of toIce() and fromIce() functions for STL container types.
Definition: ArmarXTimeserver.cpp:27