modify.hpp
Go to the documentation of this file.
1 #ifndef RAM_QT_GUIS_MODIFY_HPP
2 #define RAM_QT_GUIS_MODIFY_HPP
3 
4 #ifndef Q_MOC_RUN
5 #include <mutex>
6 
8 #include <ram_display/UpdateSelection.h>
9 #include <ram_modify_trajectory/AddPoses.h>
10 #include <ram_modify_trajectory/DeleteSelectedPoses.h>
11 #include <ram_modify_trajectory/GetPosesFromLayer.h>
12 #include <ram_modify_trajectory/GetPosesFromLayersList.h>
13 #include <ram_modify_trajectory/GetPosesFromTrajectory.h>
14 #include <ram_modify_trajectory/ModifySelectedPoses.h>
15 #include <ram_modify_trajectory/ReflectSelectedPoses.h>
16 #include <ram_modify_trajectory/ResetSelectedPoses.h>
17 #include <ram_modify_trajectory/RotateSelectedPoses.h>
18 #include <ram_modify_trajectory/ScaleSelectedPoses.h>
19 #include <ram_msgs/AdditiveManufacturingTrajectory.h>
22 #include <ram_utils/GetLayerSize.h>
23 #include <ram_utils/GetNumberOfLayersLevels.h>
24 #include <ram_utils/GetTrajectorySize.h>
25 #include <ros/ros.h>
26 #include <ros/service.h>
27 #include <rviz/panel.h>
28 #endif
29 
30 #include <QCheckBox>
31 #include <QComboBox>
32 #include <QDialogButtonBox>
33 #include <QLabel>
34 #include <QMessageBox>
35 #include <QPushButton>
36 #include <QRadioButton>
37 #include <QScrollArea>
38 #include <QSpinBox>
39 #include <QTabWidget>
40 #include <QVBoxLayout>
41 #include <QtConcurrent/QtConcurrentRun>
42 
43 namespace ram_qt_guis
44 {
45 class Modify : public rviz::Panel
46 {
47 Q_OBJECT
48  public:
49  Modify(QWidget* parent = NULL);
50  virtual ~Modify();
52  void connectToServices();
53 
54 Q_SIGNALS:
55  void displayErrorMessageBox(const QString,
56  const QString,
57  const QString);
58 
59 private:
60  void trajReceived(const ram_msgs::AdditiveManufacturingTrajectory::Ptr& msg);
61 
62  void clearLayout(QLayout* layout,
63  bool delete_widgets = true);
65  void changeGUIToRangeListSelection(const QString help_string,
66  const unsigned min,
67  const unsigned max);
68 
73  void changeGUIToScalePoses();
74  void getSelection();
75 
76 protected Q_SLOTS:
77  void selectionModeSelected();
78  void propagateSelection();
79  void operationSelected();
80  void modifyPoses();
81  void rotatePoses();
82  void reflectPoses();
83  void scalePoses();
84 
85  void load(const rviz::Config& config);
86  void save(rviz::Config config) const;
87 
88  void displayErrorBoxHandler(const QString title,
89  const QString message,
90  const QString info_msg);
91 
92  void updateTemporarySelection(std::vector<unsigned> selection);
93 
94 protected:
95  QVBoxLayout *layout_;
96  // UI for range list selection
98 
99  // Selection mode
100  QVector<QRadioButton*> selection_buttons_;
101 
102  // Modify pose UI
104 
105  // Rotate pose UI
106  QDoubleSpinBox *rotation_angle_;
107  QDoubleSpinBox *rotation_point_x_;
108  QDoubleSpinBox *rotation_point_y_;
109 
110  // Reflect pose UI
111  QDoubleSpinBox *reflect_vector_x_;
112  QDoubleSpinBox *reflect_vector_y_;
113 
114  QDoubleSpinBox *reflect_point_x_;
115  QDoubleSpinBox *reflect_point_y_;
116 
117  // scaling pose UI
118  QDoubleSpinBox *scale_factor_;
119  QDoubleSpinBox *scale_center_x_;
120  QDoubleSpinBox *scale_center_y_;
121 
122  // Operation selection
123  std::vector<QRadioButton *> operations_;
124  std::vector<QRadioButton *> geometric_operations_;
125 
126  // Selection
127  std::vector<ram_msgs::AdditiveManufacturingPose> selected_poses_;
128  unsigned selection_mode_;
129  unsigned layer_level_; // Only makes sense if selection mode is 2
130  bool is_propagating_; // Only makes sense if selection mode is 2
131  std::vector<unsigned> layers_to_propagate_; // Only makes sense if selection mode is 2
132  std::vector<unsigned> relative_indices_; // Only makes sense if selection mode is 2
133 
135 
136  // Subscribe to trajectory topic
138  std::mutex trajectory_mutex_;
139  ram_msgs::AdditiveManufacturingTrajectory trajectory_;
140 
141  // Selection visualization
143 
144  // Pose selector services
151 
152  // Modify services
160 
161 };
162 
163 }
164 
165 #endif
QDoubleSpinBox * reflect_point_y_
Definition: modify.hpp:115
#define NULL
ros::ServiceClient modify_selected_poses_client_
Definition: modify.hpp:153
void selectionModeSelected()
Definition: modify.cpp:164
QDoubleSpinBox * reflect_vector_y_
Definition: modify.hpp:112
QDoubleSpinBox * reflect_point_x_
Definition: modify.hpp:114
void changeGUIToRangeListSelection(const QString help_string, const unsigned min, const unsigned max)
Definition: modify.cpp:293
void connectToService(ros::ServiceClient &client)
Definition: modify.cpp:1010
ros::ServiceClient reset_selected_poses_client_
Definition: modify.hpp:156
void trajReceived(const ram_msgs::AdditiveManufacturingTrajectory::Ptr &msg)
Definition: modify.cpp:84
ros::ServiceClient update_selection_client_
Definition: modify.hpp:142
ros::ServiceClient get_poses_from_trajectory_client_
Definition: modify.hpp:149
ModifyPoses * modify_poses_ui_
Definition: modify.hpp:103
std::vector< unsigned > relative_indices_
Definition: modify.hpp:132
void changeGUIToOperationSelection()
Definition: modify.cpp:482
ros::NodeHandle nh_
Definition: modify.hpp:134
config
QDoubleSpinBox * rotation_point_y_
Definition: modify.hpp:108
void changeGUIToRotatePoses()
Definition: modify.cpp:803
void propagateSelection()
Definition: modify.cpp:429
std::mutex trajectory_mutex_
Definition: modify.hpp:138
unsigned layer_level_
Definition: modify.hpp:129
void operationSelected()
Definition: modify.cpp:541
void clearLayout(QLayout *layout, bool delete_widgets=true)
Definition: modify.cpp:92
ros::ServiceClient get_poses_from_layer_client_
Definition: modify.hpp:147
void connectToServices()
Definition: modify.cpp:1029
Modify(QWidget *parent=NULL)
Definition: modify.cpp:5
std::vector< unsigned > layers_to_propagate_
Definition: modify.hpp:131
void changeGUIToReflectPoses()
Definition: modify.cpp:867
unsigned selection_mode_
Definition: modify.hpp:128
void save(rviz::Config config) const
Definition: modify.cpp:1066
QVector< QRadioButton * > selection_buttons_
Definition: modify.hpp:100
QDoubleSpinBox * scale_factor_
Definition: modify.hpp:118
std::vector< QRadioButton * > operations_
Definition: modify.hpp:123
void updateTemporarySelection(std::vector< unsigned > selection)
Definition: modify.cpp:1088
ros::ServiceClient get_trajectory_size_client_
Definition: modify.hpp:150
QDoubleSpinBox * scale_center_y_
Definition: modify.hpp:120
void displayErrorBoxHandler(const QString title, const QString message, const QString info_msg)
Definition: modify.cpp:1072
ros::ServiceClient scale_selected_poses_client_
Definition: modify.hpp:159
ros::ServiceClient rotate_selected_poses_client_
Definition: modify.hpp:157
QDoubleSpinBox * rotation_point_x_
Definition: modify.hpp:107
void load(const rviz::Config &config)
Definition: modify.cpp:1054
void changeGUIToSelectionMode()
Definition: modify.cpp:116
double min(double a, double b)
ros::ServiceClient get_number_of_layers_client_
Definition: modify.hpp:146
ros::Subscriber traj_
Definition: modify.hpp:137
void displayErrorMessageBox(const QString, const QString, const QString)
std::vector< ram_msgs::AdditiveManufacturingPose > selected_poses_
Definition: modify.hpp:127
void changeGUIToModifyPoses()
Definition: modify.cpp:644
ros::ServiceClient get_layer_size_client_
Definition: modify.hpp:145
QVBoxLayout * layout_
Definition: modify.hpp:95
ros::ServiceClient reflect_selected_poses_client_
Definition: modify.hpp:158
ros::ServiceClient get_poses_from_layers_list_client_
Definition: modify.hpp:148
ros::ServiceClient add_poses_client_
Definition: modify.hpp:155
ros::ServiceClient delete_selected_poses_client_
Definition: modify.hpp:154
std::vector< QRadioButton * > geometric_operations_
Definition: modify.hpp:124
QDoubleSpinBox * reflect_vector_x_
Definition: modify.hpp:111
virtual ~Modify()
Definition: modify.cpp:80
void changeGUIToScalePoses()
Definition: modify.cpp:942
QDoubleSpinBox * rotation_angle_
Definition: modify.hpp:106
double max(double a, double b)
ram_display::UpdateSelection::Request selection
QDoubleSpinBox * scale_center_x_
Definition: modify.hpp:119
ram_msgs::AdditiveManufacturingTrajectory trajectory_
Definition: modify.hpp:139
ModifyRangeListSelection * range_list_selection_ui_
Definition: modify.hpp:97


ram_qt_guis
Author(s): Victor Lamoine - Institut Maupertuis
autogenerated on Mon Jun 10 2019 14:50:11