コード例 #1
0
class NodeMoveToDestinationGUI(NodeGUI):
    def __init__(self):
        super(NodeMoveToDestinationGUI,self).__init__()
        self.robot = NamedComboBox('Robot')
        self.layout_.addWidget(self.robot)

        self.robots_list = get_params(id="robot").data

        self.robot.add_items(self.robots_list)

        self.time = NamedField('Time Limit','0.0')
        self.tolerance = NamedField('Tolerance','0.1')
        self.layout_.addWidget(self.time)
        self.layout_.addWidget(self.tolerance)

    def generate(self,parent=None):

        if len(self.robots_list) < 1:
            return 'ERROR: no robots defined!'
        elif len(self.locations_list) < 1:
            return 'ERROR: no locations defined!'

        robot = self.robots_list[int(self.robot.get())]

        if all([self.name.full(),self.label.full(), self.time.full(), self.tolerance.full()]):
            return NodeMoveToDestination(parent,self.get_name(),self.get_label(),
                    robot,self.time.get(),self.tolerance.get())
        else:
            return 'ERROR: node not properly defined'
コード例 #2
0
class SaveParameterGUI(NodeGUI):
    def __init__(self):
        super(SaveParameterGUI, self).__init__()
        self.type_ = NamedComboBox('Item Type')
        self.file_ = NamedField('Item Name', '')
        self.layout_.addWidget(self.type_)
        self.layout_.addWidget(self.file_)
        #self.param_ = NamedComboBox('Parameter')
        self.param_ = NamedField('ROS Parameter', '')
        self.layout_.addWidget(self.param_)

        type_list = getList('')
        self.type_.add_items(type_list.entries)

        #self.param_.add_items(rosparam.get_params(''))

    def generate(self):

        if len(self.type_list.entries) > 0:
            tname = self.type_list.entries[int(self.type_.get())]
        else:
            return 'ERROR: no types found!'

        if all([self.name.full(), self.label.full()], self.file_.full()):
            return SaveParameter(self.get_name(), self.get_label(), tname,
                                 self.file_.get(), self.param_.get())
        else:
            return 'ERROR: node not properly defined'
コード例 #3
0
class NodeActionUpdatePlanningSceneGUI(NodeGUI):
    def __init__(self):
        super(NodeActionUpdatePlanningSceneGUI, self).__init__(color='purple')
        self.title.setText('UPDATE PLANNING SCENE')
        self.title.setStyleSheet('background-color:' +
                                 colors['purple'].normal + ';color:#ffffff')
        self.wait_finish = NamedField('Wait', '', 'purple')
        self.wait_finish.set_field('1')
        self.note = NoteField('(1 = true, 0 = false)', 'purple')
        self.layout_.addWidget(self.wait_finish)
        self.layout_.addWidget(self.note)

    def save_data(self, data):
        return data

    def load_data(self, data):
        pass

    def generate(self):
        if all([self.name.full(), self.wait_finish.full()]):
            return NodeActionUpdatePlanningScene(self.get_name(),
                                                 self.get_label(),
                                                 int(self.wait_finish.get()))
        else:
            rospy.logerr(
                'check that all menu items are properly selected for this node'
            )
            return 'ERROR: check that all menu items are properly selected for this node'
コード例 #4
0
 def __init__(self):
     super(NodeDecoratorWaitForSuccessGUI, self).__init__()
     self.title.setText('WAIT FOR SUCCESS LOGIC')
     self.title.setStyleSheet('background-color:#00C8FF;color:#ffffff')
     self.timeout = NamedField('Timeout', self.get_label())
     self.timeout.set_field('-1')
     self.layout_.addWidget(self.timeout)
コード例 #5
0
 def __init__(self):
     super(NodeDecoratorRepeatGUI, self).__init__()
     self.title.setText('REPEAT LOGIC')
     self.title.setStyleSheet('background-color:#00C8FF;color:#ffffff')
     self.repeat = NamedField('Repeat (-1) for infinity', self.get_label())
     self.repeat.set_field('-1')
     self.layout_.addWidget(self.repeat)
コード例 #6
0
class NodeActionGripperCloseGUI(NodeGUI):
    def __init__(self):
        super(NodeActionGripperCloseGUI, self).__init__(color='green')
        self.title.setText('GRIPPER CLOSE ACTION')
        self.title.setStyleSheet('background-color:' + colors['green'].normal +
                                 ';color:#ffffff')
        self.wait_finish = NamedField('Wait', '', 'green')
        self.wait_finish.set_field('1')
        self.note = NoteField('(1 = true, 0 = false)', 'green')
        self.layout_.addWidget(self.wait_finish)
        self.layout_.addWidget(self.note)

    def save_data(self, data):
        return data

    def load_data(self, data):
        pass

    def generate(self):
        if all([self.name.full(), self.wait_finish.full()]):
            return NodeActionGripper(self.get_name(), self.get_label(), False,
                                     int(self.wait_finish.get()))
        else:
            rospy.logerr(
                'check that all menu items are properly selected for this node'
            )
            return 'ERROR: check that all menu items are properly selected for this node'
コード例 #7
0
ファイル: librarian_nodes.py プロジェクト: cpaxton/librarian
class SaveParameterGUI(NodeGUI):
    def __init__(self):
        super(SaveParameterGUI,self).__init__()
        self.type_ = NamedComboBox('Item Type')
        self.file_ = NamedField('Item Name','')
        self.layout_.addWidget(self.type_)
        self.layout_.addWidget(self.file_)
        #self.param_ = NamedComboBox('Parameter')
        self.param_ = NamedField('ROS Parameter','')
        self.layout_.addWidget(self.param_)

        type_list = getList('')
        self.type_.add_items(type_list.entries)

        #self.param_.add_items(rosparam.get_params(''))

    def generate(self):

        if len(self.type_list.entries) > 0:
            tname = self.type_list.entries[int(self.type_.get())]
        else:
            return 'ERROR: no types found!'

        if all([self.name.full(),self.label.full()],self.file_.full()):
            return SaveParameter(self.get_name(),self.get_label(),
                    tname, self.file_.get(), self.param_.get())
        else:
            return 'ERROR: node not properly defined'
コード例 #8
0
 def __init__(self):
     super(NodeActionDetectObjectsGUI,self).__init__(color='purple')
     self.title.setText('DETECT OBJECTS')
     self.title.setStyleSheet('background-color:'+colors['purple'].normal+';color:#ffffff')
     self.wait_finish = NamedField('Wait', '','purple')
     self.wait_finish.set_field('1')
     self.note = NoteField('(1 = true, 0 = false)','purple')
     self.layout_.addWidget(self.wait_finish)
     self.layout_.addWidget(self.note)
コード例 #9
0
 def __init__(self):
     super(NodeActionSGripperWideModeGUI,self).__init__(color='green')
     self.title.setText('GRIPPER CLOSE ACTION')
     self.title.setStyleSheet('background-color:'+colors['green'].normal+';color:#ffffff')
     self.wait_finish = NamedField('Wait', '','green')
     self.wait_finish.set_field('1')
     self.note = NoteField('(1 = true, 0 = false)','green')
     self.layout_.addWidget(self.wait_finish)
     self.layout_.addWidget(self.note)
コード例 #10
0
    def __init__(self, color='blue'):
        super(NodeGUI, self).__init__()
        rospack = rospkg.RosPack()
        ui_path = rospack.get_path('instructor_core') + '/ui/node_gui.ui'
        uic.loadUi(ui_path, self)

        self.name = NamedField('Name', '', color)
        self.label = NamedField('Label', '', color)
        self.name_layout.addWidget(self.name)
        self.name_layout.addWidget(self.label)
コード例 #11
0
 def __init__(self):
     super(NodeActionRecordDataGUI, self).__init__(color='green')
     self.title.setText('RECORD DATA')
     self.title.setStyleSheet('background-color:' + colors['green'].normal +
                              ';color:#ffffff')
     self.wait_finish = NamedField('Wait', '', 'green')
     self.wait_finish.set_field('1')
     self.note = NoteField('(1 = true, 0 = false)', 'green')
     self.layout_.addWidget(self.wait_finish)
     self.layout_.addWidget(self.note)
コード例 #12
0
 def __init__(self):
     super(NodeActionUpdatePlanningSceneGUI, self).__init__(color='purple')
     self.title.setText('UPDATE PLANNING SCENE')
     self.title.setStyleSheet('background-color:' +
                              colors['purple'].normal + ';color:#ffffff')
     self.wait_finish = NamedField('Wait', '', 'purple')
     self.wait_finish.set_field('1')
     self.note = NoteField('(1 = true, 0 = false)', 'purple')
     self.layout_.addWidget(self.wait_finish)
     self.layout_.addWidget(self.note)
コード例 #13
0
 def __init__(self):
     super(NodePublishMessageGUI, self).__init__(color='purple')
     self.title.setText('Publish Message')
     self.title.setStyleSheet('background-color:' +
                              colors['purple'].normal + ';color:#ffffff')
     self.wait_finish = NamedField('Wait', '', 'purple')
     self.wait_finish.set_field('1')
     self.note = NoteField('(1 = true, 0 = false)', 'purple')
     self.layout_.addWidget(self.wait_finish)
     self.layout_.addWidget(self.note)
コード例 #14
0
    def __init__(self,color='blue'):
        super(NodeGUI,self).__init__()
        rospack = rospkg.RosPack()
        ui_path = rospack.get_path('instructor_core') + '/ui/node_gui.ui'
        uic.loadUi(ui_path,self)

        self.name = NamedField('Name','',color)
        self.label = NamedField('Label','',color)
        self.name_layout.addWidget(self.name)
        self.name_layout.addWidget(self.label)
コード例 #15
0
    def __init__(self):
        super(SaveParameterGUI, self).__init__()
        self.type_ = NamedComboBox('Item Type')
        self.file_ = NamedField('Item Name', '')
        self.layout_.addWidget(self.type_)
        self.layout_.addWidget(self.file_)
        #self.param_ = NamedComboBox('Parameter')
        self.param_ = NamedField('ROS Parameter', '')
        self.layout_.addWidget(self.param_)

        type_list = getList('')
        self.type_.add_items(type_list.entries)
コード例 #16
0
 def __init__(self):
     super(LoadEntryFromFileGUI, self).__init__()
     self.type_ = NamedComboBox('Item Type')
     self.file_ = NamedComboBox('Item Name')
     self.entry_ = NamedField('Item Entry', '')
     self.layout_.addWidget(self.type_)
     self.layout_.addWidget(self.file_)
     self.layout_.addWidget(self.entry_)
     self.type_list = getList('')
     self.type_.add_items(self.type_list.entries)
     self.type_.interface().currentIndexChanged.connect(self.selected)
     self.file_list = []
コード例 #17
0
ファイル: librarian_nodes.py プロジェクト: cpaxton/librarian
    def __init__(self):
        super(SaveParameterGUI,self).__init__()
        self.type_ = NamedComboBox('Item Type')
        self.file_ = NamedField('Item Name','')
        self.layout_.addWidget(self.type_)
        self.layout_.addWidget(self.file_)
        #self.param_ = NamedComboBox('Parameter')
        self.param_ = NamedField('ROS Parameter','')
        self.layout_.addWidget(self.param_)

        type_list = getList('')
        self.type_.add_items(type_list.entries)
コード例 #18
0
    def __init__(self):
        super(NodeMoveToDestinationGUI,self).__init__()
        self.robot = NamedComboBox('Robot')
        self.layout_.addWidget(self.robot)

        self.robots_list = get_params(id="robot").data

        self.robot.add_items(self.robots_list)

        self.time = NamedField('Time Limit','0.0')
        self.tolerance = NamedField('Tolerance','0.1')
        self.layout_.addWidget(self.time)
        self.layout_.addWidget(self.tolerance)
コード例 #19
0
class NodeDecoratorResetGUI(NodeGUI):
    def __init__(self):
        super(NodeDecoratorResetGUI,self).__init__()
        self.title.setText('RESET LOGIC')
        self.title.setStyleSheet('background-color:#00C8FF;color:#ffffff')
        self.reset = NamedField('Reset (-1) for infinity',self.get_label())
        self.layout_.addWidget(self.reset)

    def generate(self):
        if all([self.name.full(),self.reset.full()]):
            return beetree.NodeDecoratorReset(self.get_name(),self.get_label(),int(self.reset.get()))
        else:
            return 'ERROR: node not properly defined'
コード例 #20
0
class NodeDecoratorWaitForSuccessGUI(NodeGUI):
    def __init__(self):
        super(NodeDecoratorWaitForSuccessGUI,self).__init__()
        self.title.setText('WAIT FOR SUCCESS LOGIC')
        self.title.setStyleSheet('background-color:#00C8FF;color:#ffffff')
        self.timeout = NamedField('Timeout',self.get_label())
        self.timeout.set_field('-1')
        self.layout_.addWidget(self.timeout)

    def generate(self):
        if all([self.name.full(),self.timeout.full()]):
            return beetree.NodeDecoratorWaitForSuccess(self.get_name(),self.get_label(),int(self.timeout.get()))
        else:
            return 'ERROR: node not properly defined'
コード例 #21
0
class NodeGUI(QWidget):
    def __init__(self,color='blue'):
        super(NodeGUI,self).__init__()
        rospack = rospkg.RosPack()
        ui_path = rospack.get_path('instructor_core') + '/ui/node_gui.ui'
        uic.loadUi(ui_path,self)

        self.name = NamedField('Name','',color)
        self.label = NamedField('Label','',color)
        self.name_layout.addWidget(self.name)
        self.name_layout.addWidget(self.label)
    def reset(self):
        pass
    def generate(self):
        pass
    def get_name(self):
        return self.name.get()
    def get_label(self):
        return self.label.get()
    def save(self):
        data = {}
        for name, obj in inspect.getmembers(self):
            if isinstance(obj, NamedField):
                data[name] = {'type':'NamedField','field_name':obj.get_name(), 'value':obj.get()}
            if isinstance(obj, NamedComboBox):
                data[name] = {'type':'NamedComboBox','field_name':obj.get_name(), 'current_value':obj.get(),'index':obj.get_index(), 'values':obj.get_values()}
                pass
        data = self.save_data(data)
        return data
    def save_data(self,data):
        raise NotImplementedError('save_data is not implemented in base class NodeGUI')
    def load(self,data):
        for name, obj in inspect.getmembers(self):
            if isinstance(obj, NamedField):
                datum = data[name]
                obj.set_name(datum['field_name'])
                obj.set_field(datum['value'])
            if isinstance(obj, NamedComboBox):
                datum = data[name]
                obj.set_name(datum['field_name'])
                obj.add_items(datum['values'])
                obj.set_index(datum['index'])
                obj.set_value(datum['current_value'])
        self.load_data(data)

    def load_data(self,data):
        raise NotImplementedError('load_data is not implemented in base class NodeGUI')
        # raise NotImplementedError('load_data is not implemented in base class NodeGUI')
    def refresh_data(self):
        pass
コード例 #22
0
class NodeGUI(QWidget):
    def __init__(self,color='blue'):
        super(NodeGUI,self).__init__()
        rospack = rospkg.RosPack()
        ui_path = rospack.get_path('instructor_core') + '/ui/node_gui.ui'
        uic.loadUi(ui_path,self)

        self.name = NamedField('Name','',color)
        self.label = NamedField('Label','',color)
        self.name_layout.addWidget(self.name)
        self.name_layout.addWidget(self.label)
    def reset(self):
        pass
    def generate(self):
        pass
    def get_name(self):
        return self.name.get()
    def get_label(self):
        return self.label.get()
    def save(self):
        data = {}
        for name, obj in inspect.getmembers(self):
            if isinstance(obj, NamedField):
                data[name] = {'type':'NamedField','field_name':obj.get_name(), 'value':obj.get()}
            if isinstance(obj, NamedComboBox):
                data[name] = {'type':'NamedComboBox','field_name':obj.get_name(), 'current_value':obj.get(),'index':obj.get_index(), 'values':obj.get_values()}
                pass
        data = self.save_data(data)
        return data
    def save_data(self,data):
        return data
    def load(self,data):
        for name, obj in inspect.getmembers(self):
            if isinstance(obj, NamedField):
                datum = data[name]
                obj.set_name(datum['field_name'])
                obj.set_field(datum['value'])
            if isinstance(obj, NamedComboBox):
                datum = data[name]
                obj.set_name(datum['field_name'])
                obj.add_items(datum['values'])
                obj.set_index(datum['index'])
                obj.set_value(datum['current_value'])
        self.load_data(data)
    def load_data(self,data):
        pass
    def refresh_data(self):
        pass
コード例 #23
0
 def __init__(self):
     super(NodeDecoratorRepeatGUI,self).__init__()
     self.title.setText('REPEAT LOGIC')
     self.title.setStyleSheet('background-color:#00C8FF;color:#ffffff')
     self.repeat = NamedField('Repeat (-1) for infinity',self.get_label())
     self.repeat.set_field('-1')
     self.layout_.addWidget(self.repeat)
コード例 #24
0
    def __init__(self):
        super(NodePublishMessageGUI,self).__init__(color='purple')
        self.title.setText('Publish Message')
        self.title.setStyleSheet('background-color:'+colors['purple'].normal+';color:#ffffff')
        self.wait_finish = NamedField('Wait', '','purple')
        self.wait_finish.set_field('1')

        self.message_contents = NamedField('message','', 'purple')
        self.message_topic = NamedField('Rostopic','', 'purple')
        self.message_topic.set_field('info')

        self.note = NoteField('(1 = true, 0 = false)\nrostopic has prefix: /costar/messages/','purple')
        self.layout_.addWidget(self.message_contents)
        self.layout_.addWidget(self.message_topic)
        self.layout_.addWidget(self.wait_finish)
        self.layout_.addWidget(self.note)
コード例 #25
0
class NodeDecoratorRepeatGUI(NodeGUI):
    def __init__(self):
        super(NodeDecoratorRepeatGUI, self).__init__()
        self.title.setText('REPEAT LOGIC')
        self.title.setStyleSheet('background-color:#00C8FF;color:#ffffff')
        self.repeat = NamedField('Repeat (-1) for infinity', self.get_label())
        self.repeat.set_field('-1')
        self.layout_.addWidget(self.repeat)

    def generate(self):
        if all([self.name.full(), self.repeat.full()]):
            return beetree.NodeDecoratorRepeat(self.get_name(),
                                               self.get_label(),
                                               int(self.repeat.get()))
        else:
            return 'ERROR: check that all menu items are properly selected for this node'
コード例 #26
0
class NodeActionDetectObjectsGUI(NodeGUI):
    def __init__(self):
        super(NodeActionDetectObjectsGUI,self).__init__(color='purple')
        self.title.setText('DETECT OBJECTS')
        self.title.setStyleSheet('background-color:'+colors['purple'].normal+';color:#ffffff')
        self.wait_finish = NamedField('Wait', '','purple')
        self.wait_finish.set_field('1')
        self.note = NoteField('(1 = true, 0 = false)','purple')
        self.layout_.addWidget(self.wait_finish)
        self.layout_.addWidget(self.note)
    def generate(self):
        if all([self.name.full(),self.wait_finish.full()]):
            return NodeActionDetectObjects(self.get_name(),self.get_label(),int(self.wait_finish.get()))
        else:
            rospy.logerr('check that all menu items are properly selected for this node')
            return 'ERROR: check that all menu items are properly selected for this node'
コード例 #27
0
 def __init__(self):
     super(NodeDecoratorWaitForSuccessGUI,self).__init__()
     self.title.setText('WAIT FOR SUCCESS LOGIC')
     self.title.setStyleSheet('background-color:#00C8FF;color:#ffffff')
     self.timeout = NamedField('Timeout',self.get_label())
     self.timeout.set_field('-1')
     self.layout_.addWidget(self.timeout)
コード例 #28
0
class NodePublishMessageGUI(NodeGUI):
    def __init__(self):
        super(NodePublishMessageGUI,self).__init__(color='purple')
        self.title.setText('Publish Message')
        self.title.setStyleSheet('background-color:'+colors['purple'].normal+';color:#ffffff')
        self.wait_finish = NamedField('Wait', '','purple')
        self.wait_finish.set_field('1')

        self.message_contents = NamedField('message','', 'purple')
        self.message_topic = NamedField('Rostopic','', 'purple')
        self.message_topic.set_field('info')

        self.note = NoteField('(1 = true, 0 = false)\nrostopic has prefix: /costar/messages/','purple')
        self.layout_.addWidget(self.message_contents)
        self.layout_.addWidget(self.message_topic)
        self.layout_.addWidget(self.wait_finish)
        self.layout_.addWidget(self.note)
    
    def save_data(self,data):
        return data
    def load_data(self,data):
        pass
    def generate(self):
        if all([self.name.full(),self.wait_finish.full()]):
            full_topic_name = os.path.join('/costar/messages/',str(self.message_topic.get()))
            return NodeActionPublishMessage(self.get_name(),str(self.message_contents.get()), full_topic_name, int(self.wait_finish.get()))
        else:
            rospy.logerr('check that all menu items are properly selected for this node')
            return 'ERROR: check that all menu items are properly selected for this node'
コード例 #29
0
 def __init__(self):
     super(NodeActionGripperCloseGUI,self).__init__(color='green')
     self.title.setText('GRIPPER CLOSE ACTION')
     self.title.setStyleSheet('background-color:'+colors['green'].normal+';color:#ffffff')
     self.wait_finish = NamedField('Wait', '','green')
     self.wait_finish.set_field('1')
     self.note = NoteField('(1 = true, 0 = false)','green')
     self.layout_.addWidget(self.wait_finish)
     self.layout_.addWidget(self.note)
コード例 #30
0
ファイル: record_data.py プロジェクト: cpaxton/costar_stack
 def __init__(self):
     super(NodeActionRecordDataGUI,self).__init__(color='green')
     self.title.setText('RECORD DATA')
     self.title.setStyleSheet('background-color:'+colors['green'].normal+';color:#ffffff')
     self.wait_finish = NamedField('Wait', '','green')
     self.wait_finish.set_field('1')
     self.note = NoteField('(1 = true, 0 = false)','green')
     self.layout_.addWidget(self.wait_finish)
     self.layout_.addWidget(self.note)
コード例 #31
0
 def __init__(self):
     super(NodeActionUpdatePlanningSceneGUI,self).__init__(color='purple')
     self.title.setText('UPDATE PLANNING SCENE')
     self.title.setStyleSheet('background-color:'+colors['purple'].normal+';color:#ffffff')
     self.wait_finish = NamedField('Wait', '','purple')
     self.wait_finish.set_field('1')
     self.note = NoteField('(1 = true, 0 = false)','purple')
     self.layout_.addWidget(self.wait_finish)
     self.layout_.addWidget(self.note)
コード例 #32
0
class NodeActionGripperCloseGUI(NodeGUI):
    def __init__(self):
        super(NodeActionGripperCloseGUI,self).__init__(color='green')
        self.title.setText('GRIPPER CLOSE ACTION')
        self.title.setStyleSheet('background-color:'+colors['green'].normal+';color:#ffffff')
        self.wait_finish = NamedField('Wait', '','green')
        self.wait_finish.set_field('1')
        self.note = NoteField('(1 = true, 0 = false)','green')
        self.layout_.addWidget(self.wait_finish)
        self.layout_.addWidget(self.note)
    def save_data(self,data):
        return data
    def load_data(self,data):
        pass
    def generate(self):
        if all([self.name.full(),self.wait_finish.full()]):
            return NodeActionGripper(self.get_name(),self.get_label(),False,int(self.wait_finish.get()))
        else:
            rospy.logerr('check that all menu items are properly selected for this node')
            return 'ERROR: check that all menu items are properly selected for this node'
コード例 #33
0
class NodeDecoratorResetGUI(NodeGUI):
    def __init__(self):
        super(NodeDecoratorResetGUI,self).__init__()
        self.title.setText('RESET LOGIC')
        self.title.setStyleSheet('background-color:#00C8FF;color:#ffffff')
        self.reset = NamedField('Reset (-1) for infinity',self.get_label())
        self.layout_.addWidget(self.reset)

    def save_data(self,data):
        return data

    def load_data(self,data):
        # no data to load
        pass
        
    def generate(self):
        if all([self.name.full(),self.reset.full()]):
            return beetree.NodeDecoratorReset(self.get_name(),self.get_label(),int(self.reset.get()))
        else:
            return 'ERROR: check that all menu items are properly selected for this node'
コード例 #34
0
class NodeActionUpdatePlanningSceneGUI(NodeGUI):
    def __init__(self):
        super(NodeActionUpdatePlanningSceneGUI,self).__init__(color='purple')
        self.title.setText('UPDATE PLANNING SCENE')
        self.title.setStyleSheet('background-color:'+colors['purple'].normal+';color:#ffffff')
        self.wait_finish = NamedField('Wait', '','purple')
        self.wait_finish.set_field('1')
        self.note = NoteField('(1 = true, 0 = false)','purple')
        self.layout_.addWidget(self.wait_finish)
        self.layout_.addWidget(self.note)

    def save_data(self,data):
        return data
    def load_data(self,data):
        pass
    def generate(self):
        if all([self.name.full(),self.wait_finish.full()]):
            return NodeActionUpdatePlanningScene(self.get_name(),self.get_label(),int(self.wait_finish.get()))
        else:
            rospy.logerr('check that all menu items are properly selected for this node')
            return 'ERROR: check that all menu items are properly selected for this node'
コード例 #35
0
ファイル: librarian_nodes.py プロジェクト: cpaxton/librarian
 def __init__(self):
     super(LoadEntryFromFileGUI,self).__init__()
     self.type_ = NamedComboBox('Item Type')
     self.file_ = NamedComboBox('Item Name')
     self.entry_ = NamedField('Item Entry','')
     self.layout_.addWidget(self.type_)
     self.layout_.addWidget(self.file_)
     self.layout_.addWidget(self.entry_)
     self.type_list = getList('')
     self.type_.add_items(self.type_list.entries)
     self.type_.interface().currentIndexChanged.connect(self.selected)
     self.file_list = []
コード例 #36
0
class NodeDecoratorWaitForSuccessGUI(NodeGUI):
    def __init__(self):
        super(NodeDecoratorWaitForSuccessGUI,self).__init__()
        self.title.setText('WAIT FOR SUCCESS LOGIC')
        self.title.setStyleSheet('background-color:#00C8FF;color:#ffffff')
        self.timeout = NamedField('Timeout',self.get_label())
        self.timeout.set_field('-1')
        self.layout_.addWidget(self.timeout)

    def save_data(self,data):
        return data

    def load_data(self,data):
        # no data to load
        pass

    def generate(self):
        if all([self.name.full(),self.timeout.full()]):
            return beetree.NodeDecoratorWaitForSuccess(self.get_name(),self.get_label(),int(self.timeout.get()))
        else:
            return 'ERROR: check that all menu items are properly selected for this node'
コード例 #37
0
class NodeDecoratorWaitForSuccessGUI(NodeGUI):
    def __init__(self):
        super(NodeDecoratorWaitForSuccessGUI, self).__init__()
        self.title.setText('WAIT FOR SUCCESS LOGIC')
        self.title.setStyleSheet('background-color:#00C8FF;color:#ffffff')
        self.timeout = NamedField('Timeout', self.get_label())
        self.timeout.set_field('-1')
        self.layout_.addWidget(self.timeout)

    def save_data(self, data):
        return data

    def load_data(self, data):
        # no data to load
        pass

    def generate(self):
        if all([self.name.full(), self.timeout.full()]):
            return beetree.NodeDecoratorWaitForSuccess(self.get_name(),
                                                       self.get_label(),
                                                       int(self.timeout.get()))
        else:
            return 'ERROR: check that all menu items are properly selected for this node'
コード例 #38
0
class LoadEntryFromFileGUI(NodeGUI):
    def __init__(self):
        super(LoadEntryFromFileGUI, self).__init__()
        self.type_ = NamedComboBox('Item Type')
        self.file_ = NamedComboBox('Item Name')
        self.entry_ = NamedField('Item Entry', '')
        self.layout_.addWidget(self.type_)
        self.layout_.addWidget(self.file_)
        self.layout_.addWidget(self.entry_)
        self.type_list = getList('')
        self.type_.add_items(self.type_list.entries)
        self.type_.interface().currentIndexChanged.connect(self.selected)
        self.file_list = []

    def selected(self, t):
        value = str(t)
        self.file_list = getList(self.type_list.entries[int(self.type_.get())])
        self.file_.interface().clear()
        self.file_.add_items(self.file_list.entries)

    def generate(self):

        if len(self.file_list.entries) > 0:
            fname = self.file_list.entries[int(self.file_.get())]
        else:
            return 'ERROR: no items found!'

        if len(self.type_list.entries) > 0:
            tname = self.type_list.entries[int(self.type_.get())]
        else:
            return 'ERROR: no types found!'

        if all([self.name.full(), self.label.full(), self.entry_.full()]):
            return LoadEntry(self.get_name(), self.get_label(), tname, fname,
                             self.entry_.get())
        else:
            return 'ERROR: node not properly defined'
コード例 #39
0
ファイル: librarian_nodes.py プロジェクト: cpaxton/librarian
class LoadEntryFromFileGUI(NodeGUI):
    def __init__(self):
        super(LoadEntryFromFileGUI,self).__init__()
        self.type_ = NamedComboBox('Item Type')
        self.file_ = NamedComboBox('Item Name')
        self.entry_ = NamedField('Item Entry','')
        self.layout_.addWidget(self.type_)
        self.layout_.addWidget(self.file_)
        self.layout_.addWidget(self.entry_)
        self.type_list = getList('')
        self.type_.add_items(self.type_list.entries)
        self.type_.interface().currentIndexChanged.connect(self.selected)
        self.file_list = []

    def selected(self,t):
        value = str(t)
        self.file_list = getList(self.type_list.entries[int(self.type_.get())])
        self.file_.interface().clear()
        self.file_.add_items(self.file_list.entries)

    def generate(self):

        if len(self.file_list.entries) > 0:
            fname = self.file_list.entries[int(self.file_.get())]
        else:
            return 'ERROR: no items found!'

        if len(self.type_list.entries) > 0:
            tname = self.type_list.entries[int(self.type_.get())]
        else:
            return 'ERROR: no types found!'

        if all([self.name.full(),self.label.full(), self.entry_.full()]):
            return LoadEntry(self.get_name(),self.get_label(),
                    tname, fname, self.entry_.get())
        else:
            return 'ERROR: node not properly defined'
コード例 #40
0
class NodePublishMessageGUI(NodeGUI):
    def __init__(self):
        super(NodePublishMessageGUI, self).__init__(color='purple')
        self.title.setText('Publish Message')
        self.title.setStyleSheet('background-color:' +
                                 colors['purple'].normal + ';color:#ffffff')
        self.wait_finish = NamedField('Wait', '', 'purple')
        self.wait_finish.set_field('1')

        self.message_contents = NamedField('message', '', 'purple')
        self.message_topic = NamedField('Rostopic', '', 'purple')
        self.message_topic.set_field('info')

        self.note = NoteField(
            '(1 = true, 0 = false)\nrostopic has prefix: /costar/messages/',
            'purple')
        self.layout_.addWidget(self.message_contents)
        self.layout_.addWidget(self.message_topic)
        self.layout_.addWidget(self.wait_finish)
        self.layout_.addWidget(self.note)

    def save_data(self, data):
        return data

    def load_data(self, data):
        pass

    def generate(self):
        if all([self.name.full(), self.wait_finish.full()]):
            full_topic_name = os.path.join('/costar/messages/',
                                           str(self.message_topic.get()))
            return NodeActionPublishMessage(self.get_name(),
                                            str(self.message_contents.get()),
                                            full_topic_name,
                                            int(self.wait_finish.get()))
        else:
            rospy.logerr(
                'check that all menu items are properly selected for this node'
            )
            return 'ERROR: check that all menu items are properly selected for this node'
コード例 #41
0
    def __init__(self):
        super(NodePublishMessageGUI, self).__init__(color='purple')
        self.title.setText('Publish Message')
        self.title.setStyleSheet('background-color:' +
                                 colors['purple'].normal + ';color:#ffffff')
        self.wait_finish = NamedField('Wait', '', 'purple')
        self.wait_finish.set_field('1')

        self.message_contents = NamedField('message', '', 'purple')
        self.message_topic = NamedField('Rostopic', '', 'purple')
        self.message_topic.set_field('info')

        self.note = NoteField(
            '(1 = true, 0 = false)\nrostopic has prefix: /costar/messages/',
            'purple')
        self.layout_.addWidget(self.message_contents)
        self.layout_.addWidget(self.message_topic)
        self.layout_.addWidget(self.wait_finish)
        self.layout_.addWidget(self.note)
コード例 #42
0
 def __init__(self):
     super(NodeDecoratorIgnoreFailGUI, self).__init__()
     self.title.setText('IGNORE FAIL LOGIC')
     self.title.setStyleSheet('background-color:#00C8FF;color:#ffffff')
     self.repeat = NamedField('Repeat', self.get_label())
     self.layout_.addWidget(self.repeat)