ViewerWidget.h
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 2012
19 * @copyright http://www.gnu.org/licenses/gpl-2.0.txt
20 * GNU General Public License
21 */
22 
23 #pragma once
24 
25 #include <QWidget>
26 
29 
30 #define ARMARX_VIEWER_NAME "Visualization.3D Viewer"
31 
32 class SoSeparator;
33 
34 class QComboBox;
35 class QPushButton;
36 class QLabel;
37 class QToolBar;
38 class Ui_Viewer3DWidget;
39 class Ui_ViewerWidgetConfigDialog;
40 
41 namespace armarx
42 {
43  struct CameraPose
44  {
45  float position[3];
46  float orientation[4];
47  float focalDistance = 5.f;
48  };
49 
50  struct Viewer3DInfo;
51 
52  /**
53  * \brief The Viewer3DWidget class
54  */
56  {
57  Q_OBJECT
58 
59  public:
60  explicit Viewer3DWidget(QWidget* parent = 0);
61  ~Viewer3DWidget() override;
62 
63  // inherited from ArmarXWidgetController
64  QString
65  getWidgetName() const override
66  {
67  return GetWidgetName();
68  }
69 
70  static QString
72  {
73  return ARMARX_VIEWER_NAME;
74  }
75 
76  void loadSettings(QSettings* settings) override;
77  void saveSettings(QSettings* settings) override;
78  void setMainWindow(QMainWindow* mainWindow) override;
79 
80  void postDocking() override;
81 
82  /*!
83  * \brief This mutex is used to protect 3d scene updates.
84  * \param mutex3D
85  */
86  void setMutex3D(RecursiveMutexPtr const& mutex3D) override;
87 
88  QPointer<QWidget> getCustomTitlebarWidget(QWidget* parent = 0) override;
89 
91  SoSeparator* emptyNode;
92  QPointer<QComboBox> cb3DViewers;
93  QPointer<QPushButton> sceneConfigDialogButton;
94  QPointer<QLabel> label;
95  void setNode(int index);
96 
97  public slots:
98  void select3DView(int index);
99  void sceneListUpdated(QMap<QString, Viewer3DInfo> sceneMap);
100  void configDialogOpen();
104  void configDialogPickColor(QColor color = QColor::Invalid);
105  void toggleViewingMode();
106  void viewAll();
107 
108  private:
109  Ui_Viewer3DWidget* ui;
110  QMap<QString, Viewer3DInfo> sceneMap;
111  std::vector<SoNode*> selectedViews;
112 
113  QToolBar* customToolbar;
114  QPointer<QDialog> configDialog;
115  Ui_ViewerWidgetConfigDialog* configDialogUi;
116  const std::string settingsFile;
117  QSettings settings;
118  QAction* viewingModeAction;
119 
120  std::map<QString, CameraPose> initialCameraPoses;
121 
122  // ArmarXWidgetController interface
123  public:
124  QIcon
125  getWidgetIcon() const override
126  {
127  return GetWidgetIcon();
128  }
129 
130  static QIcon
132  {
133  return QIcon(":icons/Outline-3D.png");
134  }
135 
136  // ManagedIceObject interface
137  protected:
138  void onInitComponent() override;
139  void onConnectComponent() override;
140  // ArmarXWidgetController interface
141  public:
142  void onLockWidget() override;
143  void onUnlockWidget() override;
144  };
145 
147 } // namespace armarx
armarx::ArmarXWidgetController::mutex3D
std::shared_ptr< std::recursive_mutex > mutex3D
Definition: ArmarXWidgetController.h:309
armarx::Viewer3DWidget::getCustomTitlebarWidget
QPointer< QWidget > getCustomTitlebarWidget(QWidget *parent=0) override
getTitleToolbar returns a pointer to the a toolbar widget of this controller.
Definition: ViewerWidget.cpp:322
armarx::Viewer3DWidget::onConnectComponent
void onConnectComponent() override
Pure virtual hook for the subclass.
Definition: ViewerWidget.cpp:567
armarx::Viewer3DWidget::setNode
void setNode(int index)
Definition: ViewerWidget.cpp:78
armarx::CameraPose
Definition: ViewerWidget.h:43
armarx::Viewer3DWidget::viewer
CoinViewerPtr viewer
Definition: ViewerWidget.h:90
index
uint8_t index
Definition: EtherCATFrame.h:59
armarx::Viewer3DWidget::loadSettings
void loadSettings(QSettings *settings) override
Implement to load the settings that are part of the GUI configuration.
Definition: ViewerWidget.cpp:125
armarx::Viewer3DWidget::onInitComponent
void onInitComponent() override
Pure virtual hook for the subclass.
Definition: ViewerWidget.cpp:562
armarx::CameraPose::position
float position[3]
Definition: ViewerWidget.h:45
armarx::Viewer3DWidget::onLockWidget
void onLockWidget() override
Definition: ViewerWidget.cpp:572
armarx::Viewer3DWidget::Viewer3DWidget
Viewer3DWidget(QWidget *parent=0)
Definition: ViewerWidget.cpp:56
armarx::Viewer3DWidget
The Viewer3DWidget class.
Definition: ViewerWidget.h:55
ARMARX_VIEWER_NAME
#define ARMARX_VIEWER_NAME
Definition: ViewerWidget.h:30
armarx::Viewer3DWidget::sceneConfigDialogButton
QPointer< QPushButton > sceneConfigDialogButton
Definition: ViewerWidget.h:93
armarx::Viewer3DWidget::configDialogSaveSettings
void configDialogSaveSettings()
Definition: ViewerWidget.cpp:512
armarx::Viewer3DWidget::configDialogOpen
void configDialogOpen()
Definition: ViewerWidget.cpp:455
armarx::Viewer3DWidget::configDialogApplySettings
void configDialogApplySettings()
Definition: ViewerWidget.cpp:464
armarx::Viewer3DWidget::emptyNode
SoSeparator * emptyNode
Definition: ViewerWidget.h:91
armarx::ArmarXWidgetController::RecursiveMutexPtr
std::shared_ptr< RecursiveMutex > RecursiveMutexPtr
Definition: ArmarXWidgetController.h:262
ArmarXComponentWidgetController.h
armarx::VariantType::Invalid
const VariantTypeId Invalid
Definition: Variant.h:915
armarx::Viewer3DWidget::saveSettings
void saveSettings(QSettings *settings) override
Implement to save the settings as part of the GUI configuration.
Definition: ViewerWidget.cpp:165
armarx::Viewer3DWidget::~Viewer3DWidget
~Viewer3DWidget() override
Definition: ViewerWidget.cpp:68
armarx::Viewer3DWidget::toggleViewingMode
void toggleViewingMode()
Definition: ViewerWidget.cpp:437
armarx::Viewer3DWidget::label
QPointer< QLabel > label
Definition: ViewerWidget.h:94
armarx::Viewer3DWidget::viewAll
void viewAll()
Definition: ViewerWidget.cpp:446
armarx::Viewer3DWidget::setMutex3D
void setMutex3D(RecursiveMutexPtr const &mutex3D) override
This mutex is used to protect 3d scene updates.
Definition: ViewerWidget.cpp:312
armarx::Viewer3DWidget::select3DView
void select3DView(int index)
Definition: ViewerWidget.cpp:359
armarx::Viewer3DWidget::getWidgetName
QString getWidgetName() const override
Implement this function to specify the default name of your Widget.
Definition: ViewerWidget.h:65
armarx::CameraPose::orientation
float orientation[4]
Definition: ViewerWidget.h:46
armarx::Viewer3DWidget::setMainWindow
void setMainWindow(QMainWindow *mainWindow) override
Definition: ViewerWidget.cpp:204
armarx::Viewer3DWidget::configDialogLoadSettings
void configDialogLoadSettings()
Definition: ViewerWidget.cpp:539
IceUtil::Handle
Definition: forward_declarations.h:30
armarx::Viewer3DWidget::GetWidgetName
static QString GetWidgetName()
Definition: ViewerWidget.h:71
armarx::CoinViewerPtr
std::shared_ptr< CoinViewer > CoinViewerPtr
Definition: CoinViewer.h:75
armarx::Viewer3DWidget::postDocking
void postDocking() override
postDocking is called after the widget has been docked into the main window.
Definition: ViewerWidget.cpp:216
armarx::Viewer3DWidget::GetWidgetIcon
static QIcon GetWidgetIcon()
Definition: ViewerWidget.h:131
armarx::ArmarXComponentWidgetController
Definition: ArmarXComponentWidgetController.h:38
armarx::Viewer3DWidget::getWidgetIcon
QIcon getWidgetIcon() const override
Implement this function to supply an icon for the menu.
Definition: ViewerWidget.h:125
armarx::Viewer3DWidget::cb3DViewers
QPointer< QComboBox > cb3DViewers
Definition: ViewerWidget.h:92
armarx::CameraPose::focalDistance
float focalDistance
Definition: ViewerWidget.h:47
armarx::Viewer3DInfo
Definition: ArmarXMainWindow.h:67
armarx::Viewer3DWidget::configDialogPickColor
void configDialogPickColor(QColor color=QColor::Invalid)
Definition: ViewerWidget.cpp:421
armarx::Viewer3DWidget::onUnlockWidget
void onUnlockWidget() override
Definition: ViewerWidget.cpp:580
CoinViewer.h
armarx::Viewer3DWidget::sceneListUpdated
void sceneListUpdated(QMap< QString, Viewer3DInfo > sceneMap)
Definition: ViewerWidget.cpp:377
armarx
This file offers overloads of toIce() and fromIce() functions for STL container types.
Definition: ArmarXTimeserver.cpp:27