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'
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'
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'
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 __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)
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'
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'
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 __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)
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 __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)
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 __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)
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 __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)
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 __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)
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)
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'
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'
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
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
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 __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)
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'
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'
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)
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'
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 __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)
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)
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'
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'
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'
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 = []
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'
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'
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'
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'
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'
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 __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)