Ejemplo n.º 1
0
 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)
Ejemplo n.º 2
0
 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
Ejemplo n.º 5
0
 def space():
     spacer = QFrame()
     spacer.setFrameShape(QFrame.HLine)
     return spacer
Ejemplo n.º 6
0
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()
Ejemplo n.º 7
0
    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()
Ejemplo n.º 9
0
 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)