cosmos 4.2.4-java → 4.5.0-java

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (458) hide show
  1. checksums.yaml +4 -4
  2. data/.dockerignore +2 -0
  3. data/.github/ISSUE_TEMPLATE/bug_report.md +30 -0
  4. data/.github/ISSUE_TEMPLATE/feature_request.md +19 -0
  5. data/.github/ISSUE_TEMPLATE/help---usage---general-question.md +12 -0
  6. data/.gitignore +2 -0
  7. data/.travis.yml +6 -6
  8. data/Dockerfile +69 -0
  9. data/Gemfile +1 -1
  10. data/Manifest.txt +130 -46
  11. data/README.md +9 -0
  12. data/Rakefile +57 -0
  13. data/appveyor.yml +18 -7
  14. data/autohotkey/config/targets/INST/cmd_tlm/inst_cmds.txt +1 -1
  15. data/autohotkey/config/targets/INST/cmd_tlm/inst_tlm.txt +5 -5
  16. data/autohotkey/config/targets/INST/lib/sim_inst.rb +3 -1
  17. data/autohotkey/config/tools/cmd_sequence/cmd_sequence.txt +2 -0
  18. data/autohotkey/config/tools/handbook_creator/assets/css/bootstrap-theme.css +397 -0
  19. data/autohotkey/config/tools/handbook_creator/assets/css/bootstrap-theme.min.css +7 -0
  20. data/autohotkey/config/tools/handbook_creator/assets/css/bootstrap.css +7118 -0
  21. data/autohotkey/config/tools/handbook_creator/assets/css/bootstrap.min.css +7 -0
  22. data/autohotkey/config/tools/handbook_creator/assets/fonts/glyphicons-halflings-regular.eot +0 -0
  23. data/autohotkey/config/tools/handbook_creator/assets/fonts/glyphicons-halflings-regular.svg +229 -0
  24. data/autohotkey/config/tools/handbook_creator/assets/fonts/glyphicons-halflings-regular.ttf +0 -0
  25. data/autohotkey/config/tools/handbook_creator/assets/fonts/glyphicons-halflings-regular.woff +0 -0
  26. data/autohotkey/config/tools/handbook_creator/assets/js/bootstrap.js +2006 -0
  27. data/autohotkey/config/tools/handbook_creator/assets/js/bootstrap.min.js +7 -0
  28. data/autohotkey/config/tools/table_manager/ConfigTables_def.txt +2 -4
  29. data/autohotkey/config/tools/table_manager/SubTables/OneDimensionalSubTable_def.txt +31 -0
  30. data/autohotkey/config/tools/table_manager/SubTables/TwoDimensionalSubTable_def.txt +28 -0
  31. data/autohotkey/config/tools/test_runner/test_runner.txt +1 -1
  32. data/autohotkey/config/tools/test_runner/test_runner2.txt +1 -1
  33. data/autohotkey/config/tools/test_runner/test_runner3.txt +1 -1
  34. data/autohotkey/config/tools/test_runner/test_runner4.txt +1 -1
  35. data/autohotkey/lib/cmd_sequence_exporter.rb +52 -0
  36. data/autohotkey/procedures/collect.rb +2 -2
  37. data/autohotkey/procedures/collect_util.rb +1 -1
  38. data/autohotkey/procedures/script_test.rb +1 -1
  39. data/autohotkey/tools/CmdSenderAHK2 +18 -0
  40. data/autohotkey/tools/cmd_sender.ahk +34 -6
  41. data/autohotkey/tools/cmd_sender2.ahk +4 -0
  42. data/autohotkey/tools/cmd_sequence.ahk +36 -22
  43. data/autohotkey/tools/cmd_sequence2.ahk +1 -1
  44. data/autohotkey/tools/config_editor.ahk +5 -5
  45. data/autohotkey/tools/launcher.ahk +1 -0
  46. data/autohotkey/tools/limits_monitor.ahk +1 -1
  47. data/autohotkey/tools/packet_viewer.ahk +7 -6
  48. data/autohotkey/tools/script_runner.ahk +16 -4
  49. data/autohotkey/tools/test_runner.ahk +8 -8
  50. data/bin/cosmos +38 -1
  51. data/bin/cstol_converter +1 -1
  52. data/bin/dart_util +0 -0
  53. data/bin/rubysloc +73 -28
  54. data/bin/xtce_converter +1 -1
  55. data/cosmos.gemspec +7 -9
  56. data/data/config/_interfaces.yaml +4 -0
  57. data/data/config/cmd_sequence.yaml +14 -0
  58. data/data/config/command_modifiers.yaml +16 -1
  59. data/data/config/housekeeping_params.yaml +14 -0
  60. data/data/config/interface_modifiers.yaml +14 -2
  61. data/data/config/item_modifiers.yaml +11 -1
  62. data/data/config/launcher.yaml +12 -2
  63. data/data/config/param_item_modifiers.yaml +7 -2
  64. data/data/config/parameter_modifiers.yaml +20 -0
  65. data/data/config/screen.yaml +2 -0
  66. data/data/config/script_runner.yaml +9 -0
  67. data/data/config/system.yaml +152 -28
  68. data/data/config/table_manager.yaml +7 -0
  69. data/data/config/target.yaml +12 -0
  70. data/data/config/telemetry_modifiers.yaml +19 -2
  71. data/data/config/test_runner.yaml +10 -9
  72. data/data/config/widgets.yaml +174 -11
  73. data/data/crc.txt +428 -415
  74. data/demo/Gemfile +1 -1
  75. data/demo/Launcher.bat +1 -9
  76. data/demo/Launcher2.bat +1 -0
  77. data/demo/LauncherMini.bat +1 -0
  78. data/demo/Rakefile +2 -0
  79. data/demo/config/dart/Gemfile +2 -7
  80. data/demo/config/data/crc.txt +243 -219
  81. data/demo/config/system/system.txt +42 -3
  82. data/demo/config/system/system2.txt +34 -5
  83. data/demo/config/system/system_alt_ports.txt +80 -0
  84. data/demo/config/targets/EXAMPLE/cmd_tlm_server.txt +1 -0
  85. data/demo/config/targets/INST/cmd_tlm/inst_cmds.txt +5 -4
  86. data/demo/config/targets/INST/cmd_tlm/inst_tlm.txt +12 -7
  87. data/demo/config/targets/INST/cmd_tlm/inst_tlm_override.txt +12 -0
  88. data/demo/config/targets/INST/cmd_tlm_server.txt +2 -0
  89. data/demo/config/targets/INST/lib/sim_inst.rb +15 -3
  90. data/demo/config/targets/INST/screens/adcs.txt +2 -2
  91. data/demo/config/targets/INST/screens/block.txt +1 -1
  92. data/demo/config/targets/INST/screens/commanding.txt +1 -1
  93. data/demo/config/targets/INST/screens/ground.txt +27 -5
  94. data/demo/config/targets/INST/screens/ground_error.gif +0 -0
  95. data/demo/config/{data/groundoff.gif → targets/INST/screens/ground_off.gif} +0 -0
  96. data/demo/config/{data/groundon.gif → targets/INST/screens/ground_on.gif} +0 -0
  97. data/demo/config/targets/INST/screens/limits.txt +69 -31
  98. data/demo/config/targets/INST/screens/other.txt +13 -3
  99. data/demo/config/targets/INST/screens/params.txt +54 -0
  100. data/demo/config/targets/INST/screens/satellite.gif +0 -0
  101. data/demo/config/targets/INST/target.txt +1 -0
  102. data/demo/config/tools/cmd_tlm_server/cmd_tlm_server_chain.txt +18 -0
  103. data/demo/config/tools/data_viewer/data_viewer.txt +3 -0
  104. data/demo/config/tools/handbook_creator/assets/css/bootstrap-theme.css +397 -0
  105. data/demo/config/tools/handbook_creator/assets/css/bootstrap-theme.min.css +7 -0
  106. data/demo/config/tools/handbook_creator/assets/css/bootstrap.css +7118 -0
  107. data/demo/config/tools/handbook_creator/assets/css/bootstrap.min.css +7 -0
  108. data/demo/config/tools/handbook_creator/assets/fonts/glyphicons-halflings-regular.eot +0 -0
  109. data/demo/config/tools/handbook_creator/assets/fonts/glyphicons-halflings-regular.svg +229 -0
  110. data/demo/config/tools/handbook_creator/assets/fonts/glyphicons-halflings-regular.ttf +0 -0
  111. data/demo/config/tools/handbook_creator/assets/fonts/glyphicons-halflings-regular.woff +0 -0
  112. data/demo/config/tools/handbook_creator/assets/img/ball_logo.bmp +0 -0
  113. data/demo/config/tools/handbook_creator/assets/img/ball_logo.gif +0 -0
  114. data/demo/config/tools/handbook_creator/assets/img/ball_logo.jpg +0 -0
  115. data/demo/config/tools/handbook_creator/assets/js/bootstrap.js +2006 -0
  116. data/demo/config/tools/handbook_creator/assets/js/bootstrap.min.js +7 -0
  117. data/demo/config/tools/handbook_creator/assets/js/html5shiv.js +8 -0
  118. data/demo/config/tools/handbook_creator/assets/js/jquery-1.10.2.min.js +6 -0
  119. data/demo/config/tools/handbook_creator/assets/js/respond.min.js +6 -0
  120. data/demo/config/tools/handbook_creator/default_toc.xsl +59 -59
  121. data/demo/config/tools/script_runner/script_runner.txt +1 -2
  122. data/demo/config/tools/test_runner/test_runner.txt +3 -1
  123. data/demo/lib/example_background_task.rb +1 -0
  124. data/demo/procedures/cosmos_api_test.rb +26 -22
  125. data/demo/procedures/interactive.rb +22 -0
  126. data/demo/procedures/local_screen_example.rb +51 -0
  127. data/ext/cosmos/ext/cosmos_io/cosmos_io.c +32 -4
  128. data/ext/cosmos/ext/packet/packet.c +6 -77
  129. data/ext/mkrf_conf.rb +2 -2
  130. data/extensions/vscode/.gitignore +4 -0
  131. data/extensions/vscode/.vscode/launch.json +32 -0
  132. data/extensions/vscode/.vscode/settings.json +13 -0
  133. data/extensions/vscode/.vscode/tasks.json +79 -0
  134. data/extensions/vscode/License.txt +879 -0
  135. data/extensions/vscode/README.md +9 -0
  136. data/extensions/vscode/client/License.txt +879 -0
  137. data/extensions/vscode/client/README.md +39 -0
  138. data/extensions/vscode/client/cosmos.configuration.json +23 -0
  139. data/extensions/vscode/client/images/icon.png +0 -0
  140. data/extensions/vscode/client/package-lock.json +414 -0
  141. data/extensions/vscode/client/package.json +105 -0
  142. data/extensions/vscode/client/src/extension.ts +132 -0
  143. data/extensions/vscode/client/src/screen_preview.rb +25 -0
  144. data/extensions/vscode/client/syntaxes/cosmos.tmLanguage.json +219 -0
  145. data/extensions/vscode/client/tsconfig.json +17 -0
  146. data/extensions/vscode/package-lock.json +26 -0
  147. data/extensions/vscode/package.json +35 -0
  148. data/extensions/vscode/server/License.txt +879 -0
  149. data/extensions/vscode/server/package-lock.json +236 -0
  150. data/extensions/vscode/server/package.json +29 -0
  151. data/extensions/vscode/server/src/server.ts +59 -0
  152. data/extensions/vscode/server/tsconfig.json +16 -0
  153. data/install/Gemfile +1 -1
  154. data/install/Launcher.bat +1 -9
  155. data/install/config/dart/Gemfile +3 -8
  156. data/install/config/data/crc.txt +148 -132
  157. data/install/config/system/system.txt +36 -3
  158. data/install/config/tools/handbook_creator/assets/css/bootstrap-theme.css +397 -0
  159. data/install/config/tools/handbook_creator/assets/css/bootstrap-theme.min.css +7 -0
  160. data/install/config/tools/handbook_creator/assets/css/bootstrap.css +7118 -0
  161. data/install/config/tools/handbook_creator/assets/css/bootstrap.min.css +7 -0
  162. data/install/config/tools/handbook_creator/assets/fonts/glyphicons-halflings-regular.eot +0 -0
  163. data/install/config/tools/handbook_creator/assets/fonts/glyphicons-halflings-regular.svg +229 -0
  164. data/install/config/tools/handbook_creator/assets/fonts/glyphicons-halflings-regular.ttf +0 -0
  165. data/install/config/tools/handbook_creator/assets/fonts/glyphicons-halflings-regular.woff +0 -0
  166. data/install/config/tools/handbook_creator/assets/img/ball_logo.bmp +0 -0
  167. data/install/config/tools/handbook_creator/assets/img/ball_logo.gif +0 -0
  168. data/install/config/tools/handbook_creator/assets/img/ball_logo.jpg +0 -0
  169. data/install/config/tools/handbook_creator/assets/js/bootstrap.js +2006 -0
  170. data/install/config/tools/handbook_creator/assets/js/bootstrap.min.js +7 -0
  171. data/install/config/tools/handbook_creator/assets/js/html5shiv.js +8 -0
  172. data/install/config/tools/handbook_creator/assets/js/jquery-1.10.2.min.js +6 -0
  173. data/install/config/tools/handbook_creator/assets/js/respond.min.js +6 -0
  174. data/install/config/tools/handbook_creator/default_toc.xsl +59 -59
  175. data/lib/cosmos/config/config_parser.rb +4 -5
  176. data/lib/cosmos/conversions.rb +2 -0
  177. data/lib/cosmos/conversions/packet_time_formatted_conversion.rb +38 -0
  178. data/lib/cosmos/conversions/packet_time_seconds_conversion.rb +38 -0
  179. data/lib/cosmos/core_ext/cosmos_io.rb +2 -1
  180. data/lib/cosmos/core_ext/time.rb +3 -1
  181. data/lib/cosmos/dart/config/boot.rb +1 -1
  182. data/lib/cosmos/dart/config/database.yml +2 -0
  183. data/lib/cosmos/dart/examples/dart_decom_client.rb +1 -1
  184. data/lib/cosmos/dart/examples/dart_stream_client.rb +6 -2
  185. data/lib/cosmos/dart/lib/dart_common.rb +13 -6
  186. data/lib/cosmos/dart/lib/dart_constants.rb +15 -0
  187. data/lib/cosmos/dart/lib/dart_database_cleaner.rb +2 -2
  188. data/lib/cosmos/dart/lib/dart_decom_query.rb +5 -6
  189. data/lib/cosmos/dart/lib/dart_decommutator.rb +64 -54
  190. data/lib/cosmos/dart/lib/dart_importer.rb +3 -3
  191. data/lib/cosmos/dart/lib/dart_master_query.rb +71 -0
  192. data/lib/cosmos/dart/lib/dart_packet_log_writer.rb +2 -2
  193. data/lib/cosmos/dart/lib/dart_reducer_worker_thread.rb +165 -134
  194. data/lib/cosmos/dart/processes/dart.rb +4 -2
  195. data/lib/cosmos/dart/processes/dart_decom_server.rb +3 -3
  196. data/lib/cosmos/dart/processes/dart_ingester.rb +40 -1
  197. data/lib/cosmos/dart/processes/dart_master.rb +44 -0
  198. data/lib/cosmos/dart/processes/dart_util.rb +119 -4
  199. data/lib/cosmos/dart/spec/dart/dart_reducer_manager_spec.rb +3 -3
  200. data/lib/cosmos/gui/dialogs/cmd_tlm_raw_dialog.rb +9 -5
  201. data/lib/cosmos/gui/dialogs/details_dialog.rb +44 -29
  202. data/lib/cosmos/gui/dialogs/exception_list_dialog.rb +1 -1
  203. data/lib/cosmos/gui/dialogs/find_replace_dialog.rb +3 -3
  204. data/lib/cosmos/gui/dialogs/interface_raw_dialog.rb +2 -2
  205. data/lib/cosmos/gui/dialogs/set_tlm_dialog.rb +1 -1
  206. data/lib/cosmos/gui/dialogs/tlm_details_dialog.rb +11 -10
  207. data/lib/cosmos/gui/dialogs/tlm_graph_dialog.rb +4 -2
  208. data/lib/cosmos/gui/opengl/earth_model.rb +1 -1
  209. data/lib/cosmos/gui/qt.rb +13 -2
  210. data/lib/cosmos/gui/qt_tool.rb +71 -43
  211. data/lib/cosmos/gui/text/ruby_editor.rb +91 -49
  212. data/lib/cosmos/gui/utilities/classification_banner.rb +60 -0
  213. data/lib/cosmos/gui/utilities/screenshot.rb +1 -1
  214. data/lib/cosmos/gui/utilities/script_module_gui.rb +117 -91
  215. data/lib/cosmos/gui/widgets/dart_meta_frame.rb +22 -3
  216. data/lib/cosmos/interfaces.rb +2 -0
  217. data/lib/cosmos/interfaces/dart_status_interface.rb +1 -1
  218. data/lib/cosmos/interfaces/interface.rb +9 -1
  219. data/lib/cosmos/interfaces/linc_interface.rb +3 -3
  220. data/lib/cosmos/interfaces/protocols/burst_protocol.rb +1 -1
  221. data/lib/cosmos/interfaces/protocols/crc_protocol.rb +1 -1
  222. data/lib/cosmos/interfaces/protocols/fixed_protocol.rb +40 -18
  223. data/lib/cosmos/interfaces/protocols/ignore_packet_protocol.rb +46 -0
  224. data/lib/cosmos/interfaces/protocols/length_protocol.rb +5 -0
  225. data/lib/cosmos/interfaces/protocols/preidentified_protocol.rb +68 -23
  226. data/lib/cosmos/interfaces/protocols/template_protocol.rb +9 -4
  227. data/lib/cosmos/interfaces/serial_interface.rb +7 -1
  228. data/lib/cosmos/interfaces/simulated_target_interface.rb +14 -5
  229. data/lib/cosmos/interfaces/stream_interface.rb +1 -1
  230. data/lib/cosmos/interfaces/tcpip_server_interface.rb +13 -13
  231. data/lib/cosmos/io/json_drb.rb +16 -12
  232. data/lib/cosmos/io/json_drb_object.rb +7 -2
  233. data/lib/cosmos/io/json_drb_rack.rb +25 -5
  234. data/lib/cosmos/io/json_rpc.rb +1 -1
  235. data/lib/cosmos/io/posix_serial_driver.rb +60 -22
  236. data/lib/cosmos/io/serial_driver.rb +11 -8
  237. data/lib/cosmos/io/win32_serial_driver.rb +31 -3
  238. data/lib/cosmos/packet_logs/packet_log_reader.rb +71 -28
  239. data/lib/cosmos/packet_logs/packet_log_writer.rb +13 -1
  240. data/lib/cosmos/packets/commands.rb +30 -9
  241. data/lib/cosmos/packets/packet.rb +105 -34
  242. data/lib/cosmos/packets/packet_config.rb +60 -10
  243. data/lib/cosmos/packets/parsers/format_string_parser.rb +0 -1
  244. data/lib/cosmos/packets/parsers/state_parser.rb +0 -1
  245. data/lib/cosmos/packets/parsers/xtce_converter.rb +2 -0
  246. data/lib/cosmos/packets/parsers/xtce_parser.rb +5 -4
  247. data/lib/cosmos/packets/structure.rb +32 -4
  248. data/lib/cosmos/packets/structure_item.rb +5 -1
  249. data/lib/cosmos/packets/telemetry.rb +30 -4
  250. data/lib/cosmos/script/api_shared.rb +22 -10
  251. data/lib/cosmos/script/extract.rb +1 -1
  252. data/lib/cosmos/script/limits.rb +4 -0
  253. data/lib/cosmos/script/script.rb +29 -20
  254. data/lib/cosmos/script/scripting.rb +16 -14
  255. data/lib/cosmos/script/telemetry.rb +3 -1
  256. data/lib/cosmos/script/tools.rb +18 -8
  257. data/lib/cosmos/streams/serial_stream.rb +11 -6
  258. data/lib/cosmos/system/system.rb +214 -76
  259. data/lib/cosmos/system/target.rb +39 -9
  260. data/lib/cosmos/tools/cmd_extractor/cmd_extractor.rb +116 -55
  261. data/lib/cosmos/tools/cmd_sender/cmd_param_table_item_delegate.rb +15 -0
  262. data/lib/cosmos/tools/cmd_sender/cmd_params.rb +382 -0
  263. data/lib/cosmos/tools/cmd_sender/cmd_sender.rb +54 -340
  264. data/lib/cosmos/tools/cmd_sequence/cmd_sequence.rb +74 -52
  265. data/lib/cosmos/tools/cmd_sequence/sequence_item.rb +40 -333
  266. data/lib/cosmos/tools/cmd_sequence/sequence_list.rb +16 -11
  267. data/lib/cosmos/tools/cmd_tlm_server/api.rb +13 -0
  268. data/lib/cosmos/tools/cmd_tlm_server/background_tasks.rb +2 -0
  269. data/lib/cosmos/tools/cmd_tlm_server/cmd_tlm_server.rb +44 -15
  270. data/lib/cosmos/tools/cmd_tlm_server/cmd_tlm_server_config.rb +8 -1
  271. data/lib/cosmos/tools/cmd_tlm_server/cmd_tlm_server_gui.rb +18 -20
  272. data/lib/cosmos/tools/cmd_tlm_server/commanding.rb +13 -2
  273. data/lib/cosmos/tools/cmd_tlm_server/gui/interfaces_tab.rb +2 -2
  274. data/lib/cosmos/tools/cmd_tlm_server/gui/logging_tab.rb +13 -13
  275. data/lib/cosmos/tools/cmd_tlm_server/gui/packets_tab.rb +9 -6
  276. data/lib/cosmos/tools/cmd_tlm_server/gui/status_tab.rb +8 -8
  277. data/lib/cosmos/tools/cmd_tlm_server/gui/targets_tab.rb +5 -5
  278. data/lib/cosmos/tools/cmd_tlm_server/interface_thread.rb +35 -20
  279. data/lib/cosmos/tools/cmd_tlm_server/replay_backend.rb +15 -11
  280. data/lib/cosmos/tools/cmd_tlm_server/router_thread.rb +5 -0
  281. data/lib/cosmos/tools/cmd_tlm_server/routers.rb +2 -0
  282. data/lib/cosmos/tools/config_editor/config_editor.rb +181 -94
  283. data/lib/cosmos/tools/config_editor/config_editor_frame.rb +10 -9
  284. data/lib/cosmos/tools/config_editor/system_config_dialog.rb +158 -0
  285. data/lib/cosmos/tools/data_viewer/data_viewer.rb +57 -47
  286. data/lib/cosmos/tools/data_viewer/data_viewer_component.rb +1 -0
  287. data/lib/cosmos/tools/data_viewer/dump_component.rb +3 -9
  288. data/lib/cosmos/tools/data_viewer/text_component.rb +77 -0
  289. data/lib/cosmos/tools/handbook_creator/handbook_creator.rb +68 -42
  290. data/lib/cosmos/tools/handbook_creator/handbook_creator_config.rb +1 -1
  291. data/lib/cosmos/tools/launcher/launcher.rb +2 -1
  292. data/lib/cosmos/tools/limits_monitor/limits_monitor.rb +59 -41
  293. data/lib/cosmos/tools/opengl_builder/opengl_builder.rb +42 -42
  294. data/lib/cosmos/tools/packet_viewer/packet_viewer.rb +64 -59
  295. data/lib/cosmos/tools/script_runner/script_runner.rb +198 -123
  296. data/lib/cosmos/tools/script_runner/script_runner_config.rb +14 -0
  297. data/lib/cosmos/tools/script_runner/script_runner_frame.rb +87 -35
  298. data/lib/cosmos/tools/table_manager/table_config.rb +5 -3
  299. data/lib/cosmos/tools/table_manager/table_manager.rb +48 -45
  300. data/lib/cosmos/tools/test_runner/test.rb +5 -2
  301. data/lib/cosmos/tools/test_runner/test_runner.rb +61 -38
  302. data/lib/cosmos/tools/test_runner/test_runner_chooser.rb +24 -12
  303. data/lib/cosmos/tools/tlm_extractor/tlm_extractor.rb +48 -48
  304. data/lib/cosmos/tools/tlm_extractor/tlm_extractor_config.rb +5 -8
  305. data/lib/cosmos/tools/tlm_extractor/tlm_extractor_processor.rb +20 -16
  306. data/lib/cosmos/tools/tlm_grapher/data_object_adders/xy_data_object_adder.rb +3 -3
  307. data/lib/cosmos/tools/tlm_grapher/data_object_editors/housekeeping_data_object_editor.rb +7 -7
  308. data/lib/cosmos/tools/tlm_grapher/data_object_editors/xy_data_object_editor.rb +10 -10
  309. data/lib/cosmos/tools/tlm_grapher/data_objects/housekeeping_data_object.rb +10 -3
  310. data/lib/cosmos/tools/tlm_grapher/data_objects/xy_data_object.rb +6 -6
  311. data/lib/cosmos/tools/tlm_grapher/tabbed_plots/overview_tabbed_plots.rb +14 -14
  312. data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_dart_thread.rb +21 -17
  313. data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_realtime_thread.rb +5 -8
  314. data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_tool.rb +94 -91
  315. data/lib/cosmos/tools/tlm_grapher/tlm_grapher.rb +27 -26
  316. data/lib/cosmos/tools/tlm_viewer/screen.rb +76 -14
  317. data/lib/cosmos/tools/tlm_viewer/tlm_viewer.rb +51 -34
  318. data/lib/cosmos/tools/tlm_viewer/widgets.rb +3 -0
  319. data/lib/cosmos/tools/tlm_viewer/widgets/aging_widget.rb +4 -5
  320. data/lib/cosmos/tools/tlm_viewer/widgets/array_widget.rb +3 -4
  321. data/lib/cosmos/tools/tlm_viewer/widgets/block_widget.rb +4 -5
  322. data/lib/cosmos/tools/tlm_viewer/widgets/canvas_clickable.rb +16 -2
  323. data/lib/cosmos/tools/tlm_viewer/widgets/canvas_widget.rb +17 -3
  324. data/lib/cosmos/tools/tlm_viewer/widgets/canvasdot_widget.rb +1 -2
  325. data/lib/cosmos/tools/tlm_viewer/widgets/canvasellipse_widget.rb +40 -0
  326. data/lib/cosmos/tools/tlm_viewer/widgets/canvasimage_widget.rb +12 -7
  327. data/lib/cosmos/tools/tlm_viewer/widgets/canvasimagevalue_widget.rb +79 -29
  328. data/lib/cosmos/tools/tlm_viewer/widgets/canvaslabel_widget.rb +1 -0
  329. data/lib/cosmos/tools/tlm_viewer/widgets/canvaslabelvalue_widget.rb +2 -1
  330. data/lib/cosmos/tools/tlm_viewer/widgets/canvasline_widget.rb +2 -0
  331. data/lib/cosmos/tools/tlm_viewer/widgets/canvaslinevalue_widget.rb +4 -0
  332. data/lib/cosmos/tools/tlm_viewer/widgets/canvasvalue_widget.rb +33 -25
  333. data/lib/cosmos/tools/tlm_viewer/widgets/checkbutton_widget.rb +5 -3
  334. data/lib/cosmos/tools/tlm_viewer/widgets/combobox_widget.rb +5 -3
  335. data/lib/cosmos/tools/tlm_viewer/widgets/formatfontvalue_widget.rb +1 -1
  336. data/lib/cosmos/tools/tlm_viewer/widgets/formatvalue_widget.rb +4 -7
  337. data/lib/cosmos/tools/tlm_viewer/widgets/horizontal_widget.rb +5 -5
  338. data/lib/cosmos/tools/tlm_viewer/widgets/horizontalbox_widget.rb +6 -7
  339. data/lib/cosmos/tools/tlm_viewer/widgets/horizontalline_widget.rb +2 -4
  340. data/lib/cosmos/tools/tlm_viewer/widgets/label_widget.rb +10 -8
  341. data/lib/cosmos/tools/tlm_viewer/widgets/labelformatvalue_widget.rb +2 -3
  342. data/lib/cosmos/tools/tlm_viewer/widgets/labelled_widget.rb +58 -0
  343. data/lib/cosmos/tools/tlm_viewer/widgets/labelprogressbar_widget.rb +3 -4
  344. data/lib/cosmos/tools/tlm_viewer/widgets/labeltrendlimitsbar_widget.rb +2 -4
  345. data/lib/cosmos/tools/tlm_viewer/widgets/labelvalue_widget.rb +2 -1
  346. data/lib/cosmos/tools/tlm_viewer/widgets/labelvaluedesc_widget.rb +3 -5
  347. data/lib/cosmos/tools/tlm_viewer/widgets/labelvaluelimitsbar_widget.rb +2 -3
  348. data/lib/cosmos/tools/tlm_viewer/widgets/labelvaluelimitscolumn_widget.rb +2 -3
  349. data/lib/cosmos/tools/tlm_viewer/widgets/labelvaluerangebar_widget.rb +2 -3
  350. data/lib/cosmos/tools/tlm_viewer/widgets/labelvaluerangecolumn_widget.rb +2 -3
  351. data/lib/cosmos/tools/tlm_viewer/widgets/layout_widget.rb +3 -5
  352. data/lib/cosmos/tools/tlm_viewer/widgets/led_widget.rb +108 -0
  353. data/lib/cosmos/tools/tlm_viewer/widgets/limits_widget.rb +60 -10
  354. data/lib/cosmos/tools/tlm_viewer/widgets/limitsbar_widget.rb +22 -8
  355. data/lib/cosmos/tools/tlm_viewer/widgets/limitscolor_widget.rb +19 -13
  356. data/lib/cosmos/tools/tlm_viewer/widgets/limitscolumn_widget.rb +22 -8
  357. data/lib/cosmos/tools/tlm_viewer/widgets/linegraph_widget.rb +2 -3
  358. data/lib/cosmos/tools/tlm_viewer/widgets/matrixbycolumns_widget.rb +4 -3
  359. data/lib/cosmos/tools/tlm_viewer/widgets/multi_widget.rb +1 -3
  360. data/lib/cosmos/tools/tlm_viewer/widgets/progressbar_widget.rb +10 -5
  361. data/lib/cosmos/tools/tlm_viewer/widgets/radiobutton_widget.rb +7 -4
  362. data/lib/cosmos/tools/tlm_viewer/widgets/rangebar_widget.rb +4 -6
  363. data/lib/cosmos/tools/tlm_viewer/widgets/rangecolumn_widget.rb +3 -5
  364. data/lib/cosmos/tools/tlm_viewer/widgets/screenshotbutton_widget.rb +4 -3
  365. data/lib/cosmos/tools/tlm_viewer/widgets/scrollwindow_widget.rb +2 -3
  366. data/lib/cosmos/tools/tlm_viewer/widgets/sectionheader_widget.rb +2 -3
  367. data/lib/cosmos/tools/tlm_viewer/widgets/spacer_widget.rb +4 -6
  368. data/lib/cosmos/tools/tlm_viewer/widgets/tabbook_widget.rb +2 -3
  369. data/lib/cosmos/tools/tlm_viewer/widgets/tabitem_widget.rb +2 -3
  370. data/lib/cosmos/tools/tlm_viewer/widgets/textbox_widget.rb +13 -4
  371. data/lib/cosmos/tools/tlm_viewer/widgets/textfield_widget.rb +3 -4
  372. data/lib/cosmos/tools/tlm_viewer/widgets/timegraph_widget.rb +3 -8
  373. data/lib/cosmos/tools/tlm_viewer/widgets/title_widget.rb +6 -12
  374. data/lib/cosmos/tools/tlm_viewer/widgets/trendbar_widget.rb +5 -10
  375. data/lib/cosmos/tools/tlm_viewer/widgets/trendlimitsbar_widget.rb +5 -3
  376. data/lib/cosmos/tools/tlm_viewer/widgets/value_widget.rb +4 -4
  377. data/lib/cosmos/tools/tlm_viewer/widgets/valuelimitsbar_widget.rb +2 -3
  378. data/lib/cosmos/tools/tlm_viewer/widgets/valuelimitscolumn_widget.rb +2 -3
  379. data/lib/cosmos/tools/tlm_viewer/widgets/valuerangebar_widget.rb +3 -4
  380. data/lib/cosmos/tools/tlm_viewer/widgets/valuerangecolumn_widget.rb +2 -3
  381. data/lib/cosmos/tools/tlm_viewer/widgets/vertical_widget.rb +8 -7
  382. data/lib/cosmos/tools/tlm_viewer/widgets/verticalbox_widget.rb +9 -7
  383. data/lib/cosmos/tools/tlm_viewer/widgets/widget.rb +60 -47
  384. data/lib/cosmos/top_level.rb +37 -13
  385. data/lib/cosmos/utilities/ruby_lex_utils.rb +34 -30
  386. data/lib/cosmos/version.rb +5 -5
  387. data/lib/cosmos/win32/excel.rb +81 -24
  388. data/make_gems.sh +10 -0
  389. data/run_gui_tests.bat +1 -0
  390. data/spec/conversions/packet_time_formatted_conversion_spec.rb +58 -0
  391. data/spec/conversions/packet_time_seconds_conversion_spec.rb +60 -0
  392. data/spec/core_ext/socket_spec.rb +1 -1
  393. data/spec/core_ext/time_spec.rb +4 -0
  394. data/spec/gui/utilities/script_module_gui_spec.rb +44 -63
  395. data/spec/install/config/targets/INST/cmd_tlm/inst_cmds.txt +1 -1
  396. data/spec/install/config/targets/INST/cmd_tlm/inst_tlm.txt +5 -5
  397. data/spec/install/yaml_docs_spec.rb +132 -0
  398. data/spec/interfaces/linc_interface_spec.rb +1 -1
  399. data/spec/interfaces/protocols/fixed_protocol_spec.rb +20 -9
  400. data/spec/interfaces/protocols/ignore_packet_protocol_spec.rb +243 -0
  401. data/spec/interfaces/protocols/length_protocol_spec.rb +39 -0
  402. data/spec/interfaces/protocols/preidentified_protocol_spec.rb +227 -4
  403. data/spec/interfaces/protocols/template_protocol_spec.rb +78 -25
  404. data/spec/io/json_drb_rack_spec.rb +166 -0
  405. data/spec/io/json_drb_spec.rb +14 -0
  406. data/spec/io/json_rpc_spec.rb +4 -5
  407. data/spec/io/posix_serial_driver_spec.rb +81 -0
  408. data/spec/io/serial_driver_spec.rb +15 -13
  409. data/spec/io/win32_serial_driver_spec.rb +33 -3
  410. data/spec/packet_logs/packet_log_reader_spec.rb +106 -52
  411. data/spec/packets/commands_spec.rb +22 -0
  412. data/spec/packets/packet_config_spec.rb +29 -16
  413. data/spec/packets/packet_item_spec.rb +2 -2
  414. data/spec/packets/packet_spec.rb +39 -6
  415. data/spec/packets/parsers/format_string_parser_spec.rb +0 -11
  416. data/spec/packets/parsers/macro_parser_spec.rb +36 -36
  417. data/spec/packets/parsers/state_parser_spec.rb +69 -11
  418. data/spec/packets/structure_spec.rb +93 -2
  419. data/spec/packets/telemetry_spec.rb +63 -10
  420. data/spec/script/extract_spec.rb +4 -1
  421. data/spec/script/script_spec.rb +2 -3
  422. data/spec/script/scripting_spec.rb +2 -1
  423. data/spec/script/tools_spec.rb +0 -1
  424. data/spec/streams/tcpip_socket_stream_spec.rb +32 -27
  425. data/spec/system/system_spec.rb +187 -4
  426. data/spec/system/target_spec.rb +62 -1
  427. data/spec/tools/cmd_tlm_server/api_spec.rb +29 -21
  428. data/spec/tools/cmd_tlm_server/background_tasks_spec.rb +15 -7
  429. data/spec/tools/cmd_tlm_server/cmd_tlm_server_config_spec.rb +33 -0
  430. data/spec/tools/cmd_tlm_server/commanding_spec.rb +25 -1
  431. data/spec/tools/cmd_tlm_server/interface_thread_spec.rb +15 -0
  432. data/spec/tools/cmd_tlm_server/router_thread_spec.rb +2 -3
  433. data/spec/top_level/top_level_spec.rb +29 -5
  434. data/spec/utilities/message_log_spec.rb +6 -3
  435. data/tasks/gemfile_stats.rake +38 -14
  436. data/test/performance/config/system/system.txt +0 -0
  437. data/test/performance/config/targets/PACKET/cmd_tlm/packet_tlm.txt +5 -5
  438. data/test/performance/config/tools/handbook_creator/assets/css/bootstrap-theme.css +397 -0
  439. data/test/performance/config/tools/handbook_creator/assets/css/bootstrap-theme.min.css +7 -0
  440. data/test/performance/config/tools/handbook_creator/assets/css/bootstrap.css +7118 -0
  441. data/test/performance/config/tools/handbook_creator/assets/css/bootstrap.min.css +7 -0
  442. data/test/performance/config/tools/handbook_creator/assets/fonts/glyphicons-halflings-regular.eot +0 -0
  443. data/test/performance/config/tools/handbook_creator/assets/fonts/glyphicons-halflings-regular.svg +229 -0
  444. data/test/performance/config/tools/handbook_creator/assets/fonts/glyphicons-halflings-regular.ttf +0 -0
  445. data/test/performance/config/tools/handbook_creator/assets/fonts/glyphicons-halflings-regular.woff +0 -0
  446. data/test/performance/config/tools/handbook_creator/assets/img/ball_logo.bmp +0 -0
  447. data/test/performance/config/tools/handbook_creator/assets/img/ball_logo.gif +0 -0
  448. data/test/performance/config/tools/handbook_creator/assets/img/ball_logo.jpg +0 -0
  449. data/test/performance/config/tools/handbook_creator/assets/js/bootstrap.js +2006 -0
  450. data/test/performance/config/tools/handbook_creator/assets/js/bootstrap.min.js +7 -0
  451. data/test/performance/config/tools/handbook_creator/assets/js/html5shiv.js +8 -0
  452. data/test/performance/config/tools/handbook_creator/assets/js/jquery-1.10.2.min.js +6 -0
  453. data/test/performance/config/tools/handbook_creator/assets/js/respond.min.js +6 -0
  454. data/test/performance/config/tools/test_runner/test_runner.txt +1 -1
  455. data/test/performance/procedures/cosmos_api_test.rb +1 -1
  456. data/test/performance/tools/identify_performance.rb +82 -0
  457. metadata +146 -62
  458. data/lib/cosmos/dart/Gemfile +0 -69
@@ -126,7 +126,7 @@ module Cosmos
126
126
  if result
127
127
  results << result
128
128
  yield result if block_given?
129
- raise StopScript if result.stopped
129
+ raise StopScript if (results[-1].exceptions and @@abort_on_exception) or results[-1].stopped
130
130
  end
131
131
 
132
132
  # Run each test case
@@ -141,7 +141,7 @@ module Cosmos
141
141
  if result
142
142
  results << result
143
143
  yield result if block_given?
144
- raise StopScript if result.stopped
144
+ raise StopScript if (results[-1].exceptions and @@abort_on_exception) or results[-1].stopped
145
145
  end
146
146
 
147
147
  results
@@ -387,17 +387,20 @@ module Cosmos
387
387
  result = run_test_case(test_class, test_case, true)
388
388
  results << result
389
389
  yield result if block_given?
390
+ raise StopScript if (result.exceptions and test_class.abort_on_exception) or result.stopped
390
391
  when :TEST_SETUP
391
392
  result = run_test_setup(test_class, true)
392
393
  if result
393
394
  results << result
394
395
  yield result if block_given?
396
+ raise StopScript if (result.exceptions and test_class.abort_on_exception) or result.stopped
395
397
  end
396
398
  when :TEST_TEARDOWN
397
399
  result = run_test_teardown(test_class, true)
398
400
  if result
399
401
  results << result
400
402
  yield result if block_given?
403
+ raise StopScript if (result.exceptions and test_class.abort_on_exception) or result.stopped
401
404
  end
402
405
  end
403
406
  end
@@ -93,59 +93,71 @@ module Cosmos
93
93
  super()
94
94
 
95
95
  # File Actions
96
- @show_last = Qt::Action.new(tr('Show &Results'), self)
97
- @show_last_keyseq = Qt::KeySequence.new(tr('Ctrl+R'))
96
+ @show_last = Qt::Action.new('Show &Results', self)
97
+ @show_last_keyseq = Qt::KeySequence.new('Ctrl+R')
98
98
  @show_last.shortcut = @show_last_keyseq
99
- @show_last.statusTip = tr('Show the Results dialog from the last run')
99
+ @show_last.statusTip = 'Show the Results dialog from the last run'
100
100
  @show_last.connect(SIGNAL('triggered()')) { show_results }
101
101
 
102
- @select = Qt::Action.new(tr('Test &Selection'), self)
103
- @select_keyseq = Qt::KeySequence.new(tr('Ctrl+S'))
102
+ @select = Qt::Action.new('Test &Selection', self)
103
+ @select_keyseq = Qt::KeySequence.new('Ctrl+S')
104
104
  @select.shortcut = @select_keyseq
105
- @select.statusTip = tr('Select Test Suites/Groups/Cases')
105
+ @select.statusTip = 'Select Test Suites/Groups/Cases'
106
106
  @select.connect(SIGNAL('triggered()')) { show_select }
107
107
 
108
- @file_options = Qt::Action.new(tr('O&ptions'), self)
109
- @file_options.statusTip = tr('Application Options')
108
+ @file_options = Qt::Action.new('O&ptions', self)
109
+ @file_options.statusTip = 'Application Options'
110
110
  @file_options.connect(SIGNAL('triggered()')) { file_options() }
111
111
 
112
+ # Edit Actions
113
+ @edit_zoom_in = Qt::Action.new('&Increase Font Size', self)
114
+ @edit_zoom_in_keyseq = Qt::KeySequence.new(Qt::KeySequence::ZoomIn)
115
+ @edit_zoom_in.shortcut = @edit_zoom_in_keyseq
116
+ @edit_zoom_in.connect(SIGNAL('triggered()')) { @script_runner_frame.zoom_in }
117
+ @edit_zoom_out = Qt::Action.new('&Decrease Font Size', self)
118
+ @edit_zoom_out_keyseq = Qt::KeySequence.new(Qt::KeySequence::ZoomOut)
119
+ @edit_zoom_out.shortcut = @edit_zoom_out_keyseq
120
+ @edit_zoom_out.connect(SIGNAL('triggered()')) { @script_runner_frame.zoom_out }
121
+ @edit_zoom_default = Qt::Action.new('Restore &Font Size', self)
122
+ @edit_zoom_default.connect(SIGNAL('triggered()')) { @script_runner_frame.zoom_default }
123
+
112
124
  # Script Actions
113
- @test_results_log_message = Qt::Action.new(tr('Log Message to Test Results'), self)
114
- @test_results_log_message.statusTip = tr('Log Message to Test Results')
125
+ @test_results_log_message = Qt::Action.new('Log Message to Test Results', self)
126
+ @test_results_log_message.statusTip = 'Log Message to Test Results'
115
127
  @test_results_log_message.connect(SIGNAL('triggered()')) { on_test_results_log_message() }
116
128
  @test_results_log_message.setEnabled(false)
117
129
 
118
- @script_log_message = Qt::Action.new(tr('Log Message to Script Log'), self)
119
- @script_log_message.statusTip = tr('Log Message to Script Log')
130
+ @script_log_message = Qt::Action.new('Log Message to Script Log', self)
131
+ @script_log_message.statusTip = 'Log Message to Script Log'
120
132
  @script_log_message.connect(SIGNAL('triggered()')) { on_script_log_message() }
121
133
  @script_log_message.setEnabled(false)
122
134
 
123
- @show_call_stack = Qt::Action.new(tr('Show Call Stack'), self)
124
- @show_call_stack.statusTip = tr('Show Call Stack')
135
+ @show_call_stack = Qt::Action.new('Show Call Stack', self)
136
+ @show_call_stack.statusTip = 'Show Call Stack'
125
137
  @show_call_stack.connect(SIGNAL('triggered()')) { on_script_call_stack }
126
138
  @show_call_stack.setEnabled(false)
127
139
 
128
- @toggle_debug = Qt::Action.new(Cosmos.get_icon('bug.png'), tr('&Toggle Debug'), self)
129
- @toggle_debug_keyseq = Qt::KeySequence.new(tr('Ctrl+D'))
140
+ @toggle_debug = Qt::Action.new(Cosmos.get_icon('bug.png'), '&Toggle Debug', self)
141
+ @toggle_debug_keyseq = Qt::KeySequence.new('Ctrl+D')
130
142
  @toggle_debug.shortcut = @toggle_debug_keyseq
131
- @toggle_debug.statusTip = tr('Toggle Debug')
143
+ @toggle_debug.statusTip = 'Toggle Debug'
132
144
  @toggle_debug.connect(SIGNAL('triggered()')) { on_script_toggle_debug }
133
145
  @toggle_debug.setEnabled(false)
134
146
 
135
- @script_disconnect = Qt::Action.new(Cosmos.get_icon('disconnected.png'), tr('&Toggle Disconnect'), self)
136
- @script_disconnect_keyseq = Qt::KeySequence.new(tr('Ctrl+T'))
147
+ @script_disconnect = Qt::Action.new(Cosmos.get_icon('disconnected.png'), '&Toggle Disconnect', self)
148
+ @script_disconnect_keyseq = Qt::KeySequence.new('Ctrl+T')
137
149
  @script_disconnect.shortcut = @script_disconnect_keyseq
138
- @script_disconnect.statusTip = tr('Toggle disconnect from the server')
150
+ @script_disconnect.statusTip = 'Toggle disconnect from the server'
139
151
  @script_disconnect.connect(SIGNAL('triggered()')) { on_script_toggle_disconnect() }
140
152
 
141
- @script_audit = Qt::Action.new(tr('&Generate Cmd/Tlm Audit'), self)
142
- @script_audit.statusTip = tr('Generate audit about commands sent and telemetry checked')
153
+ @script_audit = Qt::Action.new('&Generate Cmd/Tlm Audit', self)
154
+ @script_audit.statusTip = 'Generate audit about commands sent and telemetry checked'
143
155
  @script_audit.connect(SIGNAL('triggered()')) { script_audit() }
144
156
  end
145
157
 
146
158
  def initialize_menus
147
159
  # File Menu
148
- file_menu = menuBar.addMenu(tr('&File'))
160
+ file_menu = menuBar.addMenu('&File')
149
161
  file_menu.addAction(@show_last)
150
162
  file_menu.addAction(@select)
151
163
  file_menu.addSeparator()
@@ -153,8 +165,14 @@ module Cosmos
153
165
  file_menu.addSeparator()
154
166
  file_menu.addAction(@exit_action)
155
167
 
168
+ # Edit Menu (to match Script Runner)
169
+ edit_menu = menuBar.addMenu('&Edit')
170
+ edit_menu.addAction(@edit_zoom_in)
171
+ edit_menu.addAction(@edit_zoom_out)
172
+ edit_menu.addAction(@edit_zoom_default)
173
+
156
174
  # Script Menu
157
- script_menu = menuBar.addMenu(tr('&Script'))
175
+ script_menu = menuBar.addMenu('&Script')
158
176
  script_menu.addAction(@test_results_log_message)
159
177
  script_menu.addAction(@script_log_message)
160
178
  script_menu.addAction(@show_call_stack)
@@ -634,7 +652,7 @@ module Cosmos
634
652
  ScriptRunnerFrame.instance = @script_runner_frame
635
653
  build = false
636
654
  @utilities.each do |utility|
637
- if require_utility(utility)
655
+ if load_utility(utility)
638
656
  build = true
639
657
  end
640
658
  end
@@ -924,11 +942,11 @@ module Cosmos
924
942
  box = Qt::DoubleSpinBox.new
925
943
  box.setRange(0, 60)
926
944
  box.setValue(ScriptRunnerFrame.line_delay)
927
- form.addRow(tr("&Delay between each script line:"), box)
945
+ form.addRow("&Delay between each script line:", box)
928
946
  monitor = Qt::CheckBox.new
929
- form.addRow(tr("&Monitor limits:"), monitor)
947
+ form.addRow("&Monitor limits:", monitor)
930
948
  pause_on_red = Qt::CheckBox.new
931
- form.addRow(tr("Pause on &red limit:"), pause_on_red)
949
+ form.addRow("Pause on &red limit:", pause_on_red)
932
950
  if ScriptRunnerFrame.monitor_limits
933
951
  monitor.setCheckState(Qt::Checked)
934
952
  pause_on_red.setCheckState(Qt::Checked) if ScriptRunnerFrame.pause_on_red
@@ -977,10 +995,11 @@ module Cosmos
977
995
  parser = ConfigParser.new("http://cosmosrb.com/docs/tools/#test-runner-configuration")
978
996
  parser.parse_file(filename) do |keyword, params|
979
997
  case keyword
980
- when 'REQUIRE_UTILITY'
981
- parser.verify_num_parameters(1, 1, "REQUIRE_UTILITY <filename>")
998
+ # REQUIRE_UTILITY was deprecated > 4.3.0 but left for compatibility purposes
999
+ when 'LOAD_UTILITY', 'REQUIRE_UTILITY'
1000
+ parser.verify_num_parameters(1, 1, "LOAD_UTILITY <filename>")
982
1001
  begin
983
- require_utility params[0]
1002
+ load_utility(params[0])
984
1003
  @utilities << params[0]
985
1004
  rescue Exception => err
986
1005
  require_errors << "<b>#{params[0]}</b>:\n#{err.formatted}\n"
@@ -1078,6 +1097,14 @@ module Cosmos
1078
1097
  parser.verify_num_parameters(0, 0, "#{keyword}")
1079
1098
  @@results_writer.metadata = true
1080
1099
 
1100
+ when 'DISABLE_TEST_SUITE_START'
1101
+ parser.verify_num_parameters(0, 0, "#{keyword}")
1102
+ Qt.execute_in_main_thread { @test_runner_chooser.test_suite_start_disabled = true }
1103
+
1104
+ when 'DISABLE_TEST_GROUP_START'
1105
+ parser.verify_num_parameters(0, 0, "#{keyword}")
1106
+ Qt.execute_in_main_thread { @test_runner_chooser.test_group_start_disabled = true }
1107
+
1081
1108
  else
1082
1109
  raise "Unhandled keyword: #{keyword}" if keyword
1083
1110
  end
@@ -1243,12 +1270,9 @@ module Cosmos
1243
1270
  options.height = 700
1244
1271
  options.title = "Test Runner"
1245
1272
  options.auto_size = false
1246
- options.config_file = File.join(Cosmos::USERPATH, 'config', 'tools', 'test_runner', 'test_runner.txt')
1247
1273
  options.server_config_file = CmdTlmServer::DEFAULT_CONFIG_FILE
1274
+ options.config_file = true # config_file is required
1248
1275
  option_parser.separator "Test Runner Specific Options:"
1249
- option_parser.on("-c", "--config FILE", "Use the specified configuration file") do |arg|
1250
- options.config_file = File.join(Cosmos::USERPATH, 'config', 'tools', 'test_runner', arg)
1251
- end
1252
1276
  option_parser.on("-s", "--server FILE", "Use the specified server configuration file for disconnect mode") do |arg|
1253
1277
  options.server_config_file = arg
1254
1278
  end
@@ -1274,6 +1298,5 @@ module Cosmos
1274
1298
  super(option_parser, options)
1275
1299
  end
1276
1300
  end
1277
- end # class TestRunner
1278
-
1279
- end # module Cosmos
1301
+ end
1302
+ end
@@ -54,6 +54,9 @@ module Cosmos
54
54
  # Callback called when the test teardown button is pressed - call(test_suite, test)
55
55
  attr_accessor :test_teardown_callback
56
56
 
57
+ # Whether the suite and group start button is disabled
58
+ attr_reader :test_suite_start_disabled, :test_group_start_disabled
59
+
57
60
  # Constructor
58
61
  def initialize(parent)
59
62
  super(parent)
@@ -65,6 +68,9 @@ module Cosmos
65
68
  setup_button_width = 60
66
69
  teardown_button_width = 60
67
70
 
71
+ @test_suite_start_disabled = false
72
+ @test_group_start_disabled = false
73
+
68
74
  # Test Suite Selection
69
75
  @test_suite_combobox = Qt::ComboBox.new
70
76
  @test_suite_combobox.setSizePolicy(Qt::SizePolicy::Minimum, Qt::SizePolicy::Minimum)
@@ -77,7 +83,7 @@ module Cosmos
77
83
  @test_suite_setup_button.setFixedWidth(setup_button_width)
78
84
  @test_suite_teardown_button = Qt::PushButton.new('Teardown')
79
85
  @test_suite_teardown_button.setFixedWidth(teardown_button_width)
80
- @test_suite_label = Qt::Label.new(tr("Test Suite:"))
86
+ @test_suite_label = Qt::Label.new("Test Suite:")
81
87
  @overall.addWidget(@test_suite_label, 0, 0)
82
88
  @overall.addWidget(@test_suite_combobox, 0, 1)
83
89
  @overall.addWidget(@test_suite_start_button, 0, 2)
@@ -96,7 +102,7 @@ module Cosmos
96
102
  @test_setup_button.setFixedWidth(setup_button_width)
97
103
  @test_teardown_button = Qt::PushButton.new('Teardown')
98
104
  @test_teardown_button.setFixedWidth(teardown_button_width)
99
- @test_label = Qt::Label.new(tr("Test Group:"))
105
+ @test_label = Qt::Label.new("Test Group:")
100
106
  @overall.addWidget(@test_label, 1, 0)
101
107
  @overall.addWidget(@test_combobox, 1, 1)
102
108
  @overall.addWidget(@test_start_button, 1, 2)
@@ -111,7 +117,7 @@ module Cosmos
111
117
  @test_case_combobox.setCompleter(@test_case_completion)
112
118
  @test_case_start_button = Qt::PushButton.new('Start')
113
119
  @test_case_start_button.setFixedWidth(start_button_width)
114
- @test_case_label = Qt::Label.new(tr("Test Case:"))
120
+ @test_case_label = Qt::Label.new("Test Case:")
115
121
  @overall.addWidget(@test_case_label, 2, 0)
116
122
  @overall.addWidget(@test_case_combobox, 2, 1)
117
123
  @overall.addWidget(@test_case_start_button, 2, 2)
@@ -154,14 +160,20 @@ module Cosmos
154
160
  @test_setup_callback = nil
155
161
  @test_suite_teardown_callback = nil
156
162
  @test_teardown_callback = nil
163
+ end
164
+
165
+ def test_suite_start_disabled=(bool)
166
+ @test_suite_start_disabled = bool
167
+ if @test_suite_start_disabled
168
+ @test_suite_start_button.setEnabled(false)
169
+ end
170
+ end
157
171
 
158
- @test_suite_start_enabled = false
159
- @test_suite_setup_enabled = false
160
- @test_suite_teardown_enabled = false
161
- @test_start_enabled = false
162
- @test_setup_enabled = false
163
- @test_teardown_enabled = false
164
- @test_case_start_enabled = false
172
+ def test_group_start_disabled=(bool)
173
+ @test_group_start_disabled = bool
174
+ if @test_group_start_disabled
175
+ @test_start_button.setEnabled(false)
176
+ end
165
177
  end
166
178
 
167
179
  def select_suite(test_suite)
@@ -282,7 +294,7 @@ module Cosmos
282
294
  @test_suite_teardown_button.setEnabled(false)
283
295
  end
284
296
  end
285
- if @test_suites.keys.empty?
297
+ if @test_suites.keys.empty? || @test_suite_start_disabled
286
298
  @test_suite_start_button.setEnabled(false)
287
299
  else
288
300
  @test_suite_start_button.setEnabled(true)
@@ -311,7 +323,7 @@ module Cosmos
311
323
  @test_teardown_button.setEnabled(false)
312
324
  end
313
325
  end
314
- @test_start_button.setEnabled(true)
326
+ @test_start_button.setEnabled(true) unless @test_group_start_disabled
315
327
  else
316
328
  @test_start_button.setEnabled(false)
317
329
  end
@@ -10,8 +10,6 @@
10
10
 
11
11
  require 'cosmos'
12
12
  Cosmos.catch_fatal_exception do
13
- require 'cosmos/tools/tlm_extractor/tlm_extractor_processor'
14
- require 'cosmos/tools/tlm_extractor/text_item_chooser'
15
13
  require 'cosmos/gui/qt_tool'
16
14
  require 'cosmos/gui/choosers/telemetry_chooser'
17
15
  require 'cosmos/gui/choosers/float_chooser'
@@ -21,6 +19,8 @@ Cosmos.catch_fatal_exception do
21
19
  require 'cosmos/gui/dialogs/progress_dialog'
22
20
  require 'cosmos/gui/widgets/full_text_search_line_edit'
23
21
  require 'cosmos/gui/utilities/analyze_log'
22
+ require 'cosmos/tools/tlm_extractor/tlm_extractor_processor'
23
+ require 'cosmos/tools/tlm_extractor/text_item_chooser'
24
24
  end
25
25
 
26
26
  module Cosmos
@@ -93,6 +93,7 @@ module Cosmos
93
93
 
94
94
  System.telemetry
95
95
  @search_box.completion_list = System.telemetry.all_item_strings(true, splash)
96
+ # Always create the TlmExtractorConfig but note that it's optional to pass a config file
96
97
  @tlm_extractor_config = TlmExtractorConfig.new(options.config_file)
97
98
  @tlm_extractor_processor = TlmExtractorProcessor.new
98
99
  Qt.execute_in_main_thread(true) do
@@ -109,68 +110,68 @@ module Cosmos
109
110
  super()
110
111
 
111
112
  # File Menu Actions
112
- @open_config = Qt::Action.new(tr('Open &Config'), self)
113
- @open_config.statusTip = tr('Open configuration file')
113
+ @open_config = Qt::Action.new('Open &Config', self)
114
+ @open_config.statusTip = 'Open configuration file'
114
115
  @open_config.connect(SIGNAL('triggered()')) { handle_browse_button() }
115
116
 
116
- @save_config = Qt::Action.new(tr('&Save Config'), self)
117
- @save_config_keyseq = Qt::KeySequence.new(tr('Ctrl+S'))
117
+ @save_config = Qt::Action.new('&Save Config', self)
118
+ @save_config_keyseq = Qt::KeySequence.new('Ctrl+S')
118
119
  @save_config.shortcut = @save_config_keyseq
119
- @save_config.statusTip = tr('Save current configuration')
120
+ @save_config.statusTip = 'Save current configuration'
120
121
  @save_config.connect(SIGNAL('triggered()')) { handle_save_button() }
121
122
 
122
- @file_options = Qt::Action.new(tr('O&ptions'), self)
123
- @file_options.statusTip = tr('Open the options dialog')
123
+ @file_options = Qt::Action.new('O&ptions', self)
124
+ @file_options.statusTip = 'Open the options dialog'
124
125
  @file_options.connect(SIGNAL('triggered()')) { handle_options() }
125
126
 
126
- @analyze_log = Qt::Action.new(tr('&Analyze Logs'), self)
127
- @analyze_log.statusTip = tr('Analyze log file packet counts')
127
+ @analyze_log = Qt::Action.new('&Analyze Logs', self)
128
+ @analyze_log.statusTip = 'Analyze log file packet counts'
128
129
  @analyze_log.connect(SIGNAL('triggered()')) { analyze_log_files() }
129
130
 
130
131
  # Mode Menu Actions
131
- @fill_down_check = Qt::Action.new(tr('&Fill Down'), self)
132
- @fill_down_check_keyseq = Qt::KeySequence.new(tr('Ctrl+F'))
132
+ @fill_down_check = Qt::Action.new('&Fill Down', self)
133
+ @fill_down_check_keyseq = Qt::KeySequence.new('Ctrl+F')
133
134
  @fill_down_check.shortcut = @fill_down_check_keyseq
134
- @fill_down_check.statusTip = tr('Fill Down')
135
+ @fill_down_check.statusTip = 'Fill Down'
135
136
  @fill_down_check.setCheckable(true)
136
137
 
137
- @matlab_header_check = Qt::Action.new(tr('&Matlab Header'), self)
138
- @matlab_header_check_keyseq = Qt::KeySequence.new(tr('Ctrl+M'))
138
+ @matlab_header_check = Qt::Action.new('&Matlab Header', self)
139
+ @matlab_header_check_keyseq = Qt::KeySequence.new('Ctrl+M')
139
140
  @matlab_header_check.shortcut = @matlab_header_check_keyseq
140
- @matlab_header_check.statusTip = tr('Add a Matlab header to the output data')
141
+ @matlab_header_check.statusTip = 'Add a Matlab header to the output data'
141
142
  @matlab_header_check.setCheckable(true)
142
143
 
143
- @unique_only_check = Qt::Action.new(tr('&Unique Only'), self)
144
- @unique_only_check_keyseq = Qt::KeySequence.new(tr('Ctrl+U'))
144
+ @unique_only_check = Qt::Action.new('&Unique Only', self)
145
+ @unique_only_check_keyseq = Qt::KeySequence.new('Ctrl+U')
145
146
  @unique_only_check.shortcut = @unique_only_check_keyseq
146
- @unique_only_check.statusTip = tr('Only output rows where data has changed')
147
+ @unique_only_check.statusTip = 'Only output rows where data has changed'
147
148
  @unique_only_check.setCheckable(true)
148
149
 
149
- @batch_mode_check = Qt::Action.new(tr('&Batch Mode'), self)
150
- @batch_mode_check_keyseq = Qt::KeySequence.new(tr('Ctrl+B'))
150
+ @batch_mode_check = Qt::Action.new('&Batch Mode', self)
151
+ @batch_mode_check_keyseq = Qt::KeySequence.new('Ctrl+B')
151
152
  @batch_mode_check.shortcut = @batch_mode_check_keyseq
152
- @batch_mode_check.statusTip = tr('Process multiple config files with the same input files')
153
+ @batch_mode_check.statusTip = 'Process multiple config files with the same input files'
153
154
  @batch_mode_check.setCheckable(true)
154
155
  @batch_mode_check.connect(SIGNAL('triggered()')) { batch_mode_changed() }
155
156
 
156
- @normal_columns_check = Qt::Action.new(tr('&Normal Columns'), self)
157
- @normal_columns_check.statusTip = tr('Normal Columns')
157
+ @normal_columns_check = Qt::Action.new('&Normal Columns', self)
158
+ @normal_columns_check.statusTip = 'Normal Columns'
158
159
  @normal_columns_check.setCheckable(true)
159
160
  @normal_columns_check.setChecked(true)
160
161
  @normal_columns_check.connect(SIGNAL('triggered()')) { column_mode_changed() }
161
162
 
162
- @share_columns_check = Qt::Action.new(tr('Share Columns (&All)'), self)
163
- @share_columns_check.statusTip = tr('Share columns for all items with the same name')
163
+ @share_columns_check = Qt::Action.new('Share Columns (&All)', self)
164
+ @share_columns_check.statusTip = 'Share columns for all items with the same name'
164
165
  @share_columns_check.setCheckable(true)
165
166
  @share_columns_check.connect(SIGNAL('triggered()')) { column_mode_changed() }
166
167
 
167
- @share_indiv_columns_check = Qt::Action.new(tr('Share Columns (&Selected)'), self)
168
- @share_indiv_columns_check.statusTip = tr('Share columns for selected items with the same name')
168
+ @share_indiv_columns_check = Qt::Action.new('Share Columns (&Selected)', self)
169
+ @share_indiv_columns_check.statusTip = 'Share columns for selected items with the same name'
169
170
  @share_indiv_columns_check.setCheckable(true)
170
171
  @share_indiv_columns_check.connect(SIGNAL('triggered()')) { column_mode_changed() }
171
172
 
172
- @full_column_names_check = Qt::Action.new(tr('Full &Column Names'), self)
173
- @full_column_names_check.statusTip = tr('Use full item names in each column')
173
+ @full_column_names_check = Qt::Action.new('Full &Column Names', self)
174
+ @full_column_names_check.statusTip = 'Use full item names in each column'
174
175
  @full_column_names_check.setCheckable(true)
175
176
  @full_column_names_check.connect(SIGNAL('triggered()')) { column_mode_changed() }
176
177
 
@@ -182,26 +183,26 @@ module Cosmos
182
183
  column_group.addAction(@full_column_names_check)
183
184
 
184
185
  @shared_columns = []
185
- @shared_columns_edit = Qt::Action.new(tr('S&elect Shared Columns'), self)
186
- @shared_columns_edit.statusTip = tr('Select which columns are shared')
186
+ @shared_columns_edit = Qt::Action.new('S&elect Shared Columns', self)
187
+ @shared_columns_edit.statusTip = 'Select which columns are shared'
187
188
  @shared_columns_edit.setEnabled(false)
188
189
  @shared_columns_edit.connect(SIGNAL('triggered()')) { shared_columns_edit() }
189
190
 
190
191
  # Item Menu Actions
191
- @item_edit = Qt::Action.new(tr('&Edit Items'), self)
192
- @item_edit_keyseq = Qt::KeySequence.new(tr('Ctrl+E'))
192
+ @item_edit = Qt::Action.new('&Edit Items', self)
193
+ @item_edit_keyseq = Qt::KeySequence.new('Ctrl+E')
193
194
  @item_edit.shortcut = @item_edit_keyseq
194
- @item_edit.statusTip = tr('Options')
195
+ @item_edit.statusTip = 'Options'
195
196
  @item_edit.connect(SIGNAL('triggered()')) { item_edit() }
196
197
 
197
- @item_delete = Qt::Action.new(tr('&Delete Items'), self)
198
- @item_delete.statusTip = tr('Options')
198
+ @item_delete = Qt::Action.new('&Delete Items', self)
199
+ @item_delete.statusTip = 'Options'
199
200
  @item_delete.connect(SIGNAL('triggered()')) { item_delete() }
200
201
  end
201
202
 
202
203
  def initialize_menus
203
204
  # File Menu
204
- @file_menu = menuBar.addMenu(tr('&File'))
205
+ @file_menu = menuBar.addMenu('&File')
205
206
  @file_menu.addAction(@open_config)
206
207
  @file_menu.addAction(@save_config)
207
208
  @file_menu.addSeparator()
@@ -211,7 +212,7 @@ module Cosmos
211
212
  @file_menu.addAction(@exit_action)
212
213
 
213
214
  # Mode Menu
214
- @mode_menu = menuBar.addMenu(tr('&Mode'))
215
+ @mode_menu = menuBar.addMenu('&Mode')
215
216
  @mode_menu.addAction(@fill_down_check)
216
217
  @mode_menu.addAction(@matlab_header_check)
217
218
  @mode_menu.addAction(@unique_only_check)
@@ -225,7 +226,7 @@ module Cosmos
225
226
  @mode_menu.addAction(@shared_columns_edit)
226
227
 
227
228
  # Item Menu
228
- @item_menu = menuBar.addMenu(tr('&Item'))
229
+ @item_menu = menuBar.addMenu('&Item')
229
230
  @item_menu.addAction(@item_edit)
230
231
  @item_menu.addAction(@item_delete)
231
232
 
@@ -402,7 +403,7 @@ module Cosmos
402
403
  @data_source_layout.addWidget(label)
403
404
  @log_file_radio = Qt::RadioButton.new("Log File", self)
404
405
  @log_file_radio.setChecked(true)
405
- @log_file_radio.connect(SIGNAL('clicked()')) do
406
+ @log_file_radio.connect(SIGNAL('clicked()')) do
406
407
  @packet_log_frame.show_log_fields(true)
407
408
  @packet_log_frame.output_filename = ""
408
409
  @dart_meta_frame.hide
@@ -410,12 +411,12 @@ module Cosmos
410
411
  end
411
412
  @data_source_layout.addWidget(@log_file_radio)
412
413
  @dart_radio = Qt::RadioButton.new("DART Database", self)
413
- @dart_radio.connect(SIGNAL('clicked()')) do
414
+ @dart_radio.connect(SIGNAL('clicked()')) do
414
415
  @packet_log_frame.show_log_fields(false)
415
416
  @packet_log_frame.output_filename = ""
416
417
  @dart_meta_frame.show
417
418
  @resize_timer.start(100)
418
- end
419
+ end
419
420
  @data_source_layout.addWidget(@dart_radio)
420
421
  @data_source_layout.addStretch()
421
422
  @top_layout.addLayout(@data_source_layout)
@@ -453,6 +454,8 @@ module Cosmos
453
454
 
454
455
  def self.post_options_parsed_hook(options)
455
456
  if options.input_files or options.dart
457
+ normalize_config_options(options)
458
+
456
459
  # Process config file
457
460
  raise "Configuration File must be specified for command line processing" unless options.config_file
458
461
 
@@ -500,9 +503,6 @@ module Cosmos
500
503
  options.title = "Telemetry Extractor"
501
504
  options.dart = false
502
505
  option_parser.separator "Telemetry Extractor Specific Options:"
503
- option_parser.on("-c", "--config FILE", "Use the specified configuration file") do |arg|
504
- options.config_file = File.join(Cosmos::USERPATH, 'config', 'tools', 'tlm_extractor', arg)
505
- end
506
506
  option_parser.on("-i", "--input FILE", "Process the specified input file") do |arg|
507
507
  options.input_files ||= []
508
508
  if arg[0..0] != '/' and arg[1..1] != ':'
@@ -609,7 +609,7 @@ module Cosmos
609
609
  clear_config_item_list()
610
610
  @tlm_extractor_config.items.each do |item_type, target_name_or_column_name, packet_name_or_text, item_name, value_type, dart_reduction, dart_reduced_type|
611
611
  if item_type == 'ITEM'
612
- if dart_reduction == :NONE
612
+ if dart_reduction == :NONE
613
613
  if value_type == :CONVERTED
614
614
  @config_item_list.addItem("#{item_type} #{target_name_or_column_name} #{packet_name_or_text} #{item_name}")
615
615
  else