def beginGui(self,obj): self.parent = QScrollArea() self.frame = QFrame(self.parent) if obj.layout == "vertical": self.tl = QVBoxLayout() else: self.tl = QHBoxLayout() self.__increase_nesting_level(self.frame,self.tl)
def beginRosLabel(self,obj): pm,lm = self.__get_immediate_parent() fr = QFrame(pm) layout = QGridLayout() nlb = QLabel(obj.label_name + ":",fr) nlb.setToolTip(obj.topic_name) layout.addWidget(nlb,1,1) layout.addWidget(RosLabel(fr,obj.label_name,obj.topic_name,obj.topic_type,obj.topic_field),1,2) fr.setLayout(layout) lm.addWidget(fr)
def setup_group_frame(self, group): layout = QVBoxLayout() # grid for buttons for named targets grid = QGridLayout() grid.setSpacing(1) self.button_group = QButtonGroup(self) row = 0 column = 0 named_targets = self.get_named_targets(group) for target in named_targets: button = QPushButton(target) self.button_group.addButton(button) grid.addWidget(button, row, column) column += 1 if column >= self.MAX_COLUMNS: row += 1 column = 0 self.button_group.buttonClicked.connect(self._handle_button_clicked) # grid for show joint value and move arm buttons/text field joint_values_grid = QGridLayout() joint_values_grid.setSpacing(1) button_show_joint_values = QPushButton('Current Joint Values') button_show_joint_values.clicked[bool].connect( self._handle_show_joint_values_clicked) line_edit = QLineEdit() self.text_joint_values.append(line_edit) button_move_to = QPushButton('Move to') button_move_to.clicked[bool].connect(self._handle_move_to_clicked) joint_values_grid.addWidget(button_show_joint_values, 0, 1) joint_values_grid.addWidget(line_edit, 0, 2) joint_values_grid.addWidget(button_move_to, 0, 3) layout.addLayout(grid) line = QFrame() line.setFrameShape(QFrame.HLine) line.setFrameShadow(QFrame.Sunken) layout.addWidget(line) layout.addLayout(joint_values_grid) frame = QFrame() frame.setLayout(layout) return frame
def create_joint_plot_widget(self, joint): joint_setting_file = os.path.join(rospkg.RosPack().get_path('march_rqt_gait_generator'), 'resource', 'joint_setting.ui') joint_plot_widget = QFrame() loadUi(joint_setting_file, joint_plot_widget) show_velocity_plot = self.velocity_plot_check_box.isChecked() show_effort_plot = self.effort_plot_check_box.isChecked() joint_plot = JointPlot(joint, show_velocity_plot, show_effort_plot) joint_plot_widget.Plot.addItem(joint_plot) # Disable scrolling horizontally joint_plot_widget.Table.horizontalScrollBar().setDisabled(True) joint_plot_widget.Table.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch) joint_plot_widget.Table.controller = JointTableController(joint_plot_widget.Table, joint) return joint_plot_widget
def space(): spacer = QFrame() spacer.setFrameShape(QFrame.HLine) return spacer
class pyqtTraverse(Traverser.Traverser): def __init__(self): self.parent = None self.nesting_stack = [] def beginGui(self,obj): self.parent = QScrollArea() self.frame = QFrame(self.parent) if obj.layout == "vertical": self.tl = QVBoxLayout() else: self.tl = QHBoxLayout() self.__increase_nesting_level(self.frame,self.tl) def endGui(self,obj): parent,layout = self.__get_immediate_parent() self.frame.setLayout(layout) self.parent.setWidget(self.frame) self.parent.show() def beginGroup(self,obj): parent,layout = self.__get_immediate_parent() panel = QGroupBox(obj.name,parent) if obj.layout == "grid": l = QGridLayout() elif obj.layout == "vertical": l = QVBoxLayout() else: l = QHBoxLayout() self.__increase_nesting_level(panel, l) def endGroup(self,obj): parent,layout = self.__get_immediate_parent() parent.setLayout(layout) self.__decrease_nesting_level() p1,l1 = self.__get_immediate_parent() l1.addWidget(parent) def beginRosLabel(self,obj): pm,lm = self.__get_immediate_parent() fr = QFrame(pm) layout = QGridLayout() nlb = QLabel(obj.label_name + ":",fr) nlb.setToolTip(obj.topic_name) layout.addWidget(nlb,1,1) layout.addWidget(RosLabel(fr,obj.label_name,obj.topic_name,obj.topic_type,obj.topic_field),1,2) fr.setLayout(layout) lm.addWidget(fr) def endRosLabel(self,obj): pass def beginRosToggleButton(self,obj): pm,lm = self.__get_immediate_parent() btn = RosToggleButton(pm, obj.btn_name, obj.topic_name, obj.topic_type, obj.topic_field, obj.toggle_dict) lm.addWidget(btn) pass def endRosToggleButton(self,obj): pass def beginRosSlider(self,obj): pm,lm = self.__get_immediate_parent() slider = RosSlider(pm,obj.label_name, obj.topic_name, obj.topic_type, obj.topic_field, obj.min_max_tuple, obj.default ) lm.addWidget(slider) pass def endRosSlider(self,obj): pass def beginRosPlot(self,obj): pm,lm = self.__get_immediate_parent() plot = RosPlot(pm,obj.label_name, obj.topic_name, obj.topic_type, obj.topic_field, obj.buffer_size ) lm.addWidget(plot) def endRosPlot(self,obj): pass def beginRosMsgView(self,obj): pm,lm = self.__get_immediate_parent() fr = RosMsgView(pm, obj.grp_name, obj.topic_name, obj.topic_type, obj.topic_fields) lm.addWidget(fr) pass def endRosMsgView(self,obj): pass def __get_immediate_parent(self): l = len(self.nesting_stack) return self.nesting_stack[l-1] def __increase_nesting_level(self,parent,container): self.nesting_stack.append((parent,container)) def __decrease_nesting_level(self): self.nesting_stack.pop()
def create_joint_setting(self, joint): joint_setting_file = os.path.join( rospkg.RosPack().get_path('march_rqt_gait_generator'), 'resource', 'joint_setting.ui') joint_setting = QFrame() loadUi(joint_setting_file, joint_setting) show_velocity_markers = self.velocity_markers_check_box.isChecked() joint_setting_plot = JointSettingPlot(joint, self.gait.duration, show_velocity_markers) joint_setting.Plot.addItem(joint_setting_plot) joint_setting.Table = user_interface_controller.update_table( joint_setting.Table, joint, self.gait.duration) # Disable scrolling horizontally joint_setting.Table.horizontalScrollBar().setDisabled(True) joint_setting.Table.horizontalHeader().setSectionResizeMode( QHeaderView.Stretch) def update_joint_ui(): user_interface_controller.update_ui_elements( joint, table=joint_setting.Table, plot=joint_setting_plot, duration=self.gait.duration, show_velocity_markers=self.velocity_markers_check_box. isChecked()) self.publish_preview() def add_setpoint(joint, time, position, button): if button == QtCore.Qt.ControlModifier: joint.add_interpolated_setpoint(time) else: joint.add_setpoint(ModifiableSetpoint(time, position, 0)) self.undo_button.clicked.connect(update_joint_ui) self.redo_button.clicked.connect(update_joint_ui) self.invert_button.clicked.connect(update_joint_ui) self.velocity_markers_check_box.stateChanged.connect(lambda: [ joint.set_setpoints( user_interface_controller.plot_to_setpoints(joint_setting_plot) ), update_joint_ui(), ]) # Connect a function to update the model and to update the table. joint_setting_plot.plot_item.sigPlotChanged.connect(lambda: [ joint.set_setpoints( user_interface_controller.plot_to_setpoints(joint_setting_plot) ), update_joint_ui(), ]) joint_setting_plot.add_setpoint.connect( lambda time, position, button: [ add_setpoint(joint, time, position, button), update_joint_ui(), ]) joint_setting_plot.remove_setpoint.connect(lambda index: [ joint.save_setpoints(), joint.remove_setpoint(index), update_joint_ui(), ]) joint_setting.Table.itemChanged.connect(lambda: [ joint.set_setpoints( user_interface_controller.table_to_setpoints(joint_setting. Table)), user_interface_controller. update_ui_elements(joint, table=None, plot=joint_setting_plot, duration=self.gait.duration, show_velocity_markers=self. velocity_markers_check_box.isChecked()), self.publish_preview(), ]) return joint_setting
def __init__(self, context): super(FakeMotionRendererPlugin, self).__init__(context) self.setObjectName('FakeMotionRendererPlugin') self._widget = QWidget() if context.serial_number() > 1: self._widget.setWindowTitle( self._widget.windowTitle() + (' (%d)' % context.serial_number())) ui_file = os.path.join(rospkg.RosPack().get_path('motion_renderer'), 'resource', 'fake_motion_renderer.ui') loadUi(ui_file, self._widget) self._widget.resizeEvent = self.widget_resized context.add_widget(self._widget) self.frame = QFrame() self.vtkWidget = QVTKRenderWindowInteractor(self.frame) self._widget.verticalLayout.addWidget(self.vtkWidget) self._widget.update() self.ren = vtk.vtkRenderer() self.vtkWidget.GetRenderWindow().AddRenderer(self.ren) self.iren = self.vtkWidget.GetRenderWindow().GetInteractor() self.vtkWidget.GetRenderWindow().SetLineSmoothing(2) self.vtkWidget.GetRenderWindow().SetPointSmoothing(2) # self.vtkWidget.GetRenderWindow().SetPolygonSmoothing(2) self.vtkWidget.GetRenderWindow().AlphaBitPlanesOn() self.vtkWidget.GetRenderWindow().SetMultiSamples(32) self.eye_ball = [] self.eye_ball.append(self.add_eye_ball(pose=[-0.8, 0.0, 0.0], orientation=[90, 0, 0])) self.eye_ball.append(self.add_eye_ball(pose=[0.8, 0.0, 0.0], orientation=[90, 0, 0])) self.eye_lid = [] self.eye_lid.append(self.add_eye_lid(pose=[-0.8, 0.0, 0.0], orientation=[90, 0, 0])) self.eye_lid.append(self.add_eye_lid(pose=[0.8, 0.0, 0.0], orientation=[90, 0, 0])) self.eye_brow = [] self.eye_brow.append(self.add_eye_brow(pose=[-0.8, 0.55, 0.4], orientation=[0, 0, 0])) self.eye_brow.append(self.add_eye_brow(pose=[0.8, 0.55, 0.4], orientation=[0, 0, 0])) # Initial Pose and Rotation for Eyeball self.eye_ball[0].RotateZ(-2.0) self.eye_ball[1].RotateZ(2.0) self.eye_lid[0][0].RotateX(-30) self.eye_lid[0][1].RotateX(30) self.eye_lid[1][0].RotateX(-30) self.eye_lid[1][1].RotateX(30) self.subtitle = vtk.vtkTextActor() self.subtitle.SetInput('대화가 나타남.') self.subtitle.GetTextProperty().SetFontFamily(vtk.VTK_FONT_FILE) self.subtitle.GetTextProperty().SetFontFile('/usr/share/fonts/truetype/nanum/NanumBarunGothic.ttf') self.subtitle.GetTextProperty().SetColor(1, 1, 1) self.subtitle.GetTextProperty().SetJustificationToCentered() self.subtitle.GetTextProperty().SetBackgroundColor(0.5, 0.2, 1) self.subtitle.GetTextProperty().ShadowOn() self.subtitle.GetTextProperty().SetFontSize(26) self.subtitle.GetProperty().SetOpacity(0.5) self.ren.AddActor2D(self.subtitle) self.ren.SetBackground(0.1, 0.2, 0.3) camera = vtk.vtkCamera(); camera.SetPosition(0, 0, 5); camera.SetFocalPoint(0, 0, 0); self.iren.RemoveAllObservers() self.ren.SetActiveCamera(camera); self.iren.Initialize() self.iren.Start()
def add_space(row): spacer = QFrame() spacer.setFrameShape(QFrame.HLine) #self._layout.addWidget (spacer, row, 0, 1, 4) self._layout.addWidget(spacer, row, 1, 1, 2)