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 start_all(self):
00064 '''
00065 Checks nodes that's set (via self.set_node_controllers) one by one and
00066 starts one if each node is not running.
00067 Then disable START ALL button and enable STOP ALL button.
00068 '''
00069 for n in self._node_controllers:
00070 if not n.is_node_running():
00071 n.start(restart=False)
00072
00073
00074 self._main_launch_widget._pushbutton_start_all.setEnabled(False)
00075 self._main_launch_widget._pushbutton_stop_all.setEnabled(True)
00076
00077 def stop_all(self):
00078 '''
00079 Checks nodes that's set (via self.set_node_controllers) one by one and
00080 stops one if each node is running.
00081 Then enable START ALL button and disable STOP ALL button.
00082 '''
00083 for n in self._node_controllers:
00084 if n.is_node_running():
00085 n.stop()
00086
00087
00088 self._main_launch_widget._pushbutton_start_all.setEnabled(True)
00089 self._main_launch_widget._pushbutton_stop_all.setEnabled(False)
00090
00091 def check_process_statuses(self):
00092 for n in self._node_controllers:
00093 n.check_process_status()
00094
00095 def shutdown(self):
00096 rospy.logdebug('Launchmain.shutdown')
00097 self.stop_all()
00098
00099 def save_settings(self, plugin_settings, instance_settings):
00100 self._mainwidget.save_settings(plugin_settings, instance_settings)
00101
00102 def restore_settings(self, plugin_settings, instance_settings):
00103 self._mainwidget.restore_settings(plugin_settings, instance_settings)
00104
00105
00106 if __name__ == '__main__':
00107
00108
00109 from rqt_gui.main import Main
00110 main = Main()
00111 sys.exit(main.main(sys.argv, standalone='rqt_launch'))