Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035 import sys
00036
00037 import rospy
00038 from rqt_launch.launch_widget import LaunchWidget
00039 from rqt_py_common.plugin_container_widget import PluginContainerWidget
00040 from rqt_py_common.rqt_roscomm_util import RqtRoscommUtil
00041
00042
00043 class LaunchMain(object):
00044 def __init__(self, plugin_context):
00045 super(LaunchMain, self).__init__()
00046 self._plugin_context = plugin_context
00047
00048 self._main_launch_widget = LaunchWidget(self)
00049 self._mainwidget = PluginContainerWidget(self._main_launch_widget,
00050 True, False)
00051
00052 self._run_id = None
00053 self._node_controllers = []
00054
00055
00056
00057 def get_widget(self):
00058 return self._mainwidget
00059
00060 def set_node_controllers(self, node_controllers):
00061 self._node_controllers = node_controllers
00062
00063 def load_params(self):
00064 self._main_launch_widget.load_parameters()
00065
00066 def start_all(self):
00067 '''
00068 Checks nodes that's set (via self.set_node_controllers) one by one and
00069 starts one if each node is not running.
00070 Then disable START ALL button and enable STOP ALL button.
00071 '''
00072 for n in self._node_controllers:
00073 if not n.is_node_running():
00074 n.start(restart=False)
00075
00076
00077 self._main_launch_widget._pushbutton_start_all.setEnabled(False)
00078 self._main_launch_widget._pushbutton_stop_all.setEnabled(True)
00079
00080 def stop_all(self):
00081 '''
00082 Checks nodes that's set (via self.set_node_controllers) one by one and
00083 stops one if each node is running.
00084 Then enable START ALL button and disable STOP ALL button.
00085 '''
00086 for n in self._node_controllers:
00087 if n.is_node_running():
00088 n.stop()
00089
00090
00091 self._main_launch_widget._pushbutton_start_all.setEnabled(True)
00092 self._main_launch_widget._pushbutton_stop_all.setEnabled(False)
00093
00094 def check_process_statuses(self):
00095 for n in self._node_controllers:
00096 n.check_process_status()
00097
00098 def shutdown(self):
00099 rospy.logdebug('Launchmain.shutdown')
00100 self.stop_all()
00101
00102 def save_settings(self, plugin_settings, instance_settings):
00103 self._mainwidget.save_settings(plugin_settings, instance_settings)
00104
00105 def restore_settings(self, plugin_settings, instance_settings):
00106 self._mainwidget.restore_settings(plugin_settings, instance_settings)
00107
00108
00109 if __name__ == '__main__':
00110
00111
00112 from rqt_gui.main import Main
00113 main = Main()
00114 sys.exit(main.main(sys.argv, standalone='rqt_launch'))