cosmos 3.9.2 → 4.0.0

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 (438) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +23 -0
  3. data/.travis.yml +1 -0
  4. data/.yardopts +3 -0
  5. data/Gemfile +1 -1
  6. data/Manifest.txt +137 -52
  7. data/Rakefile +50 -44
  8. data/autohotkey/config/system/system.txt +0 -5
  9. data/autohotkey/config/targets/INST/cmd_tlm/inst_cmds.txt +6 -1
  10. data/autohotkey/config/targets/INST/screens/extra.txt +19 -0
  11. data/autohotkey/config/targets/INST/sequences/run_sequence.txt +1 -0
  12. data/autohotkey/config/targets/META/screens/data.txt +12 -0
  13. data/autohotkey/config/targets/SYSTEM/cmd_tlm/meta_cmd_tlm.txt +16 -0
  14. data/autohotkey/config/targets/{COSMOS/cmd_tlm/cosmos_server_cmds.txt → SYSTEM/cmd_tlm/system_cmds.txt} +8 -8
  15. data/autohotkey/config/targets/SYSTEM/cmd_tlm/system_tlm.txt +7 -0
  16. data/autohotkey/config/targets/SYSTEM/screens/limits_change.txt +14 -0
  17. data/autohotkey/config/targets/SYSTEM/screens/meta.txt +14 -0
  18. data/autohotkey/config/targets/SYSTEM/target.txt +12 -0
  19. data/autohotkey/config/tools/cmd_tlm_server/cmd_tlm_server.txt +2 -2
  20. data/autohotkey/config/tools/test_runner/test_runner2.txt +1 -1
  21. data/autohotkey/tools/CmdSequence +14 -0
  22. data/autohotkey/tools/CmdSequenceAHK +23 -0
  23. data/autohotkey/tools/CmdSequenceAHK2 +16 -0
  24. data/autohotkey/tools/cmd_extractor.ahk +2 -2
  25. data/autohotkey/tools/cmd_sender.ahk +4 -6
  26. data/autohotkey/tools/cmd_sequence.ahk +215 -0
  27. data/autohotkey/tools/cmd_sequence2.ahk +23 -0
  28. data/autohotkey/tools/data_viewer.ahk +2 -3
  29. data/autohotkey/tools/limits_monitor.ahk +9 -11
  30. data/autohotkey/tools/open_gl_builder.ahk +1 -2
  31. data/autohotkey/tools/packet_viewer.ahk +51 -35
  32. data/autohotkey/tools/replay.ahk +1 -2
  33. data/autohotkey/tools/script_runner.ahk +1 -2
  34. data/autohotkey/tools/script_runner2.ahk +1 -2
  35. data/autohotkey/tools/test_runner2.ahk +1 -5
  36. data/autohotkey/tools/test_runner3.ahk +1 -3
  37. data/autohotkey/tools/tlm_grapher.ahk +1 -3
  38. data/autohotkey/tools/tlm_grapher3.ahk +1 -2
  39. data/autohotkey/tools/tlm_viewer.ahk +8 -3
  40. data/autohotkey/tools/tlm_viewer2.ahk +2 -3
  41. data/autohotkey/tools/tlm_viewer5.ahk +1 -2
  42. data/cosmos.gemspec +26 -20
  43. data/data/cmd_sequence.png +0 -0
  44. data/data/config/_array_params.yaml +23 -0
  45. data/data/config/_id_items.yaml +24 -0
  46. data/data/config/_id_params.yaml +58 -0
  47. data/data/config/_interfaces.yaml +206 -0
  48. data/data/config/_items.yaml +20 -0
  49. data/data/config/_params.yaml +58 -0
  50. data/data/config/cmd_tlm_server.yaml +110 -0
  51. data/data/config/command.yaml +38 -0
  52. data/data/config/command_modifiers.yaml +127 -0
  53. data/data/config/command_telemetry.yaml +3 -0
  54. data/data/config/data_viewer.yaml +43 -0
  55. data/data/config/handbook_creator.yaml +23 -0
  56. data/data/config/housekeeping_params.yaml +71 -0
  57. data/data/config/interface_modifiers.yaml +44 -0
  58. data/data/config/item_modifiers.yaml +172 -0
  59. data/data/config/launcher.yaml +117 -0
  60. data/data/config/limits_monitor.yaml +53 -0
  61. data/data/config/linegraph_params.yaml +30 -0
  62. data/data/config/linegraph_plot.yaml +106 -0
  63. data/data/config/page_modifiers.yaml +128 -0
  64. data/data/config/param_item_modifiers.yaml +41 -0
  65. data/data/config/parameter_modifiers.yaml +144 -0
  66. data/data/config/protocols.yaml +257 -0
  67. data/data/config/screen.yaml +151 -0
  68. data/data/config/script_runner.yaml +15 -0
  69. data/data/config/system.yaml +153 -0
  70. data/data/config/table_manager.yaml +76 -0
  71. data/data/config/table_parameter_modifiers.yaml +9 -0
  72. data/data/config/target.yaml +71 -0
  73. data/data/config/telemetry.yaml +73 -0
  74. data/data/config/telemetry_modifiers.yaml +129 -0
  75. data/data/config/test_runner.yaml +118 -0
  76. data/data/config/tlm_extractor.yaml +109 -0
  77. data/data/config/tlm_grapher.yaml +78 -0
  78. data/data/config/tlm_viewer.yaml +107 -0
  79. data/data/config/unknown.yaml +3 -0
  80. data/data/config/widgets.yaml +1339 -0
  81. data/data/config/xy_params.yaml +50 -0
  82. data/data/config/xy_plot.yaml +12 -0
  83. data/data/config_editor.png +0 -0
  84. data/data/crc.txt +172 -161
  85. data/data/delete.png +0 -0
  86. data/demo/config/data/crc.txt +56 -36
  87. data/demo/config/data/meta_init.txt +1 -4
  88. data/demo/config/system/system.txt +15 -3
  89. data/demo/config/system/system2.txt +13 -3
  90. data/demo/config/targets/EXAMPLE/lib/example_interface.rb +2 -6
  91. data/demo/config/targets/EXAMPLE/target.txt +3 -1
  92. data/demo/config/targets/INST/cmd_tlm/inst_cmds.txt +1 -0
  93. data/demo/config/targets/INST/lib/inst_dump_component.rb +34 -0
  94. data/demo/config/targets/INST/screens/adcs.txt +39 -15
  95. data/demo/config/targets/INST/screens/commanding.txt +26 -19
  96. data/demo/config/targets/INST/screens/spacing_box.txt +44 -0
  97. data/demo/config/targets/INST/screens/spacing_grid.txt +78 -0
  98. data/demo/config/targets/INST/screens/tabs.txt +0 -2
  99. data/demo/config/targets/INST/sequences/sequence.tsv +3 -0
  100. data/demo/config/targets/INST/tables/EventAction.csv +9 -0
  101. data/demo/config/targets/INST/tables/EventAction.dat +0 -0
  102. data/demo/config/targets/INST/tables/McConfigTable.csv +20 -0
  103. data/demo/config/targets/INST/tables/McConfigTable.dat +0 -0
  104. data/demo/config/targets/INST/target.txt +4 -0
  105. data/demo/config/targets/INST/tools/data_viewer/data_viewer.txt +2 -0
  106. data/demo/config/targets/INST/tools/data_viewer/data_viewer2.txt +2 -0
  107. data/demo/config/targets/INST/tools/table_manager/EventAction_def.txt +6 -0
  108. data/demo/config/targets/INST/tools/table_manager/McConfigTable_def.txt +38 -0
  109. data/demo/config/targets/SYSTEM/cmd_tlm/limits_groups.txt +7 -3
  110. data/demo/config/targets/SYSTEM/cmd_tlm/meta_cmd_tlm.txt +16 -0
  111. data/demo/config/targets/{COSMOS/cmd_tlm/cosmos_server_cmds.txt → SYSTEM/cmd_tlm/system_cmds.txt} +8 -8
  112. data/demo/config/targets/SYSTEM/cmd_tlm/system_tlm.txt +7 -0
  113. data/demo/config/targets/{COSMOS → SYSTEM}/cmd_tlm_server.txt +2 -2
  114. data/demo/config/targets/SYSTEM/lib/limits_groups.rb +39 -0
  115. data/demo/config/targets/SYSTEM/screens/status.txt +1 -1
  116. data/demo/config/targets/SYSTEM/target.txt +12 -0
  117. data/demo/config/targets/TEMPLATED/cmd_tlm_server.txt +1 -1
  118. data/demo/config/targets/TEMPLATED/lib/templated_interface.rb +8 -5
  119. data/demo/config/targets/TEMPLATED/target.txt +2 -0
  120. data/demo/config/tools/cmd_tlm_server/cmd_tlm_server.txt +15 -6
  121. data/demo/config/tools/cmd_tlm_server/cmd_tlm_server2.txt +13 -5
  122. data/demo/config/tools/data_viewer/data_viewer.txt +9 -0
  123. data/demo/config/tools/launcher/launcher.txt +9 -6
  124. data/demo/config/tools/launcher/launcher2.txt +16 -13
  125. data/demo/config/tools/launcher/launcher_mini.txt +45 -0
  126. data/demo/config/tools/table_manager/MCConfigurationTable_fsw1_def.txt +12 -11
  127. data/demo/config/tools/table_manager/MCConfigurationTable_fsw2_def.txt +12 -11
  128. data/demo/config/tools/test_runner/test_runner.txt +1 -1
  129. data/demo/config/tools/tlm_viewer/tlm_viewer.txt +5 -5
  130. data/demo/lib/example_background_task.rb +9 -5
  131. data/demo/lib/example_target.rb +5 -15
  132. data/demo/lib/scpi_target.rb +4 -10
  133. data/demo/procedures/cosmos_api_test.rb +17 -0
  134. data/demo/tools/CmdSequence +16 -0
  135. data/demo/tools/CmdSequence.bat +9 -0
  136. data/demo/tools/ConfigEditor +16 -0
  137. data/demo/tools/ConfigEditor.bat +9 -0
  138. data/demo/tools/mac/CmdSequence.app/Contents/Info.plist +38 -0
  139. data/demo/tools/mac/CmdSequence.app/Contents/MacOS/CmdSequence.rb +16 -0
  140. data/demo/tools/mac/CmdSequence.app/Contents/MacOS/main.sh +10 -0
  141. data/demo/tools/mac/CmdSequence.app/Contents/MacOS/tool_launch.rb +38 -0
  142. data/demo/tools/mac/CmdSequence.app/Contents/Resources/appIcon.icns +0 -0
  143. data/ext/cosmos/ext/packet/packet.c +5 -5
  144. data/install/config/data/crc.txt +12 -8
  145. data/install/config/system/system.txt +13 -3
  146. data/install/config/targets/SYSTEM/cmd_tlm/meta_cmd_tlm.txt +14 -0
  147. data/install/config/targets/SYSTEM/target.txt +12 -0
  148. data/install/tools/CmdSequence +16 -0
  149. data/install/tools/CmdSequence.bat +9 -0
  150. data/install/tools/ConfigEditor +16 -0
  151. data/install/tools/ConfigEditor.bat +9 -0
  152. data/install/tools/mac/CmdSequence.app/Contents/Info.plist +38 -0
  153. data/install/tools/mac/CmdSequence.app/Contents/MacOS/CmdSequence.rb +16 -0
  154. data/install/tools/mac/CmdSequence.app/Contents/MacOS/main.sh +10 -0
  155. data/install/tools/mac/CmdSequence.app/Contents/MacOS/tool_launch.rb +38 -0
  156. data/install/tools/mac/CmdSequence.app/Contents/Resources/appIcon.icns +0 -0
  157. data/lib/cosmos.rb +1 -1
  158. data/lib/cosmos/config/config_parser.rb +147 -59
  159. data/lib/cosmos/config/meta_config_parser.rb +57 -0
  160. data/lib/cosmos/conversions/polynomial_conversion.rb +20 -4
  161. data/lib/cosmos/conversions/unix_time_conversion.rb +4 -4
  162. data/lib/cosmos/core_ext/array.rb +45 -5
  163. data/lib/cosmos/core_ext/cosmos_io.rb +31 -15
  164. data/lib/cosmos/core_ext/file.rb +2 -2
  165. data/lib/cosmos/core_ext/kernel.rb +1 -6
  166. data/lib/cosmos/core_ext/objectspace.rb +0 -2
  167. data/lib/cosmos/core_ext/string.rb +27 -4
  168. data/lib/cosmos/core_ext/time.rb +39 -10
  169. data/lib/cosmos/gui/choosers/combobox_chooser.rb +37 -26
  170. data/lib/cosmos/gui/choosers/file_chooser.rb +23 -6
  171. data/lib/cosmos/gui/choosers/float_chooser.rb +13 -11
  172. data/lib/cosmos/gui/choosers/integer_chooser.rb +13 -11
  173. data/lib/cosmos/gui/choosers/string_chooser.rb +18 -36
  174. data/lib/cosmos/gui/choosers/telemetry_chooser.rb +64 -64
  175. data/lib/cosmos/gui/choosers/value_chooser.rb +15 -15
  176. data/lib/cosmos/gui/dialogs/about_dialog.rb +18 -13
  177. data/lib/cosmos/gui/dialogs/calendar_dialog.rb +11 -3
  178. data/lib/cosmos/gui/dialogs/cmd_tlm_raw_dialog.rb +1 -1
  179. data/lib/cosmos/gui/dialogs/details_dialog.rb +1 -1
  180. data/lib/cosmos/gui/dialogs/exception_dialog.rb +7 -7
  181. data/lib/cosmos/gui/dialogs/find_replace_dialog.rb +20 -15
  182. data/lib/cosmos/gui/dialogs/interface_raw_dialog.rb +143 -0
  183. data/lib/cosmos/gui/dialogs/legal_dialog.rb +6 -5
  184. data/lib/cosmos/gui/dialogs/packet_log_dialog.rb +5 -2
  185. data/lib/cosmos/gui/dialogs/progress_dialog.rb +1 -1
  186. data/lib/cosmos/gui/dialogs/pry_dialog.rb +4 -4
  187. data/lib/cosmos/gui/dialogs/scroll_text_dialog.rb +3 -0
  188. data/lib/cosmos/gui/dialogs/set_tlm_dialog.rb +7 -6
  189. data/lib/cosmos/gui/dialogs/splash.rb +1 -1
  190. data/lib/cosmos/gui/dialogs/tlm_details_dialog.rb +1 -1
  191. data/lib/cosmos/gui/dialogs/tlm_graph_dialog.rb +114 -0
  192. data/lib/cosmos/gui/line_graph/line_graph.rb +9 -10
  193. data/lib/cosmos/gui/line_graph/line_graph_dialog.rb +7 -5
  194. data/lib/cosmos/gui/line_graph/line_graph_drawing.rb +3 -7
  195. data/lib/cosmos/gui/line_graph/line_graph_popups.rb +3 -8
  196. data/lib/cosmos/gui/line_graph/line_graph_scaling.rb +2 -7
  197. data/lib/cosmos/gui/line_graph/overview_graph.rb +6 -1
  198. data/lib/cosmos/gui/opengl/earth_model.rb +6 -3
  199. data/lib/cosmos/gui/opengl/gl_bounds.rb +11 -23
  200. data/lib/cosmos/gui/opengl/gl_light.rb +3 -4
  201. data/lib/cosmos/gui/opengl/gl_material.rb +3 -4
  202. data/lib/cosmos/gui/opengl/gl_scene.rb +10 -4
  203. data/lib/cosmos/gui/opengl/gl_shape.rb +6 -2
  204. data/lib/cosmos/gui/opengl/gl_viewer.rb +5 -5
  205. data/lib/cosmos/gui/opengl/gl_viewport.rb +11 -12
  206. data/lib/cosmos/gui/opengl/moon_model.rb +6 -3
  207. data/lib/cosmos/gui/opengl/stl_reader.rb +8 -9
  208. data/lib/cosmos/gui/opengl/stl_shape.rb +4 -5
  209. data/lib/cosmos/gui/opengl/texture_mapped_sphere.rb +7 -7
  210. data/lib/cosmos/gui/qt.rb +1 -1
  211. data/lib/cosmos/gui/qt_tool.rb +21 -10
  212. data/lib/cosmos/gui/text/completion.rb +23 -2
  213. data/lib/cosmos/gui/text/completion_text_edit.rb +38 -23
  214. data/lib/cosmos/gui/utilities/analyze_log.rb +1 -1
  215. data/lib/cosmos/gui/utilities/screenshot.rb +2 -2
  216. data/lib/cosmos/gui/widgets/full_text_search_line_edit.rb +11 -1
  217. data/lib/cosmos/gui/widgets/packet_log_frame.rb +19 -6
  218. data/lib/cosmos/interfaces.rb +10 -0
  219. data/lib/cosmos/interfaces/cmd_tlm_server_interface.rb +28 -47
  220. data/lib/cosmos/interfaces/interface.rb +240 -22
  221. data/lib/cosmos/interfaces/linc_interface.rb +3 -5
  222. data/lib/cosmos/interfaces/protocols/burst_protocol.rb +173 -0
  223. data/lib/cosmos/interfaces/protocols/crc_protocol.rb +141 -0
  224. data/lib/cosmos/{streams/fixed_stream_protocol.rb → interfaces/protocols/fixed_protocol.rb} +40 -37
  225. data/lib/cosmos/{streams/length_stream_protocol.rb → interfaces/protocols/length_protocol.rb} +55 -48
  226. data/lib/cosmos/interfaces/protocols/override_protocol.rb +52 -0
  227. data/lib/cosmos/interfaces/protocols/preidentified_protocol.rb +141 -0
  228. data/lib/cosmos/interfaces/protocols/protocol.rb +60 -0
  229. data/lib/cosmos/interfaces/protocols/template_protocol.rb +209 -0
  230. data/lib/cosmos/interfaces/protocols/terminated_protocol.rb +81 -0
  231. data/lib/cosmos/interfaces/serial_interface.rb +28 -23
  232. data/lib/cosmos/interfaces/simulated_target_interface.rb +27 -16
  233. data/lib/cosmos/interfaces/stream_interface.rb +36 -108
  234. data/lib/cosmos/interfaces/tcpip_client_interface.rb +21 -21
  235. data/lib/cosmos/interfaces/tcpip_server_interface.rb +555 -94
  236. data/lib/cosmos/interfaces/udp_interface.rb +51 -83
  237. data/lib/cosmos/io/buffered_file.rb +92 -2
  238. data/lib/cosmos/io/json_drb.rb +2 -2
  239. data/lib/cosmos/io/posix_serial_driver.rb +3 -1
  240. data/lib/cosmos/io/raw_logger.rb +3 -3
  241. data/lib/cosmos/io/serial_driver.rb +14 -5
  242. data/lib/cosmos/io/win32_serial_driver.rb +16 -4
  243. data/lib/cosmos/packet_logs.rb +0 -1
  244. data/lib/cosmos/packet_logs/packet_log_reader.rb +11 -1
  245. data/lib/cosmos/packet_logs/packet_log_writer.rb +31 -13
  246. data/lib/cosmos/packets/binary_accessor.rb +599 -32
  247. data/lib/cosmos/packets/commands.rb +48 -24
  248. data/lib/cosmos/packets/packet.rb +140 -54
  249. data/lib/cosmos/packets/packet_config.rb +0 -2
  250. data/lib/cosmos/packets/parsers/packet_item_parser.rb +10 -2
  251. data/lib/cosmos/packets/structure.rb +81 -33
  252. data/lib/cosmos/packets/structure_item.rb +45 -5
  253. data/lib/cosmos/packets/telemetry.rb +149 -55
  254. data/lib/cosmos/script/api_shared.rb +1000 -0
  255. data/lib/cosmos/script/commands.rb +2 -2
  256. data/lib/cosmos/script/extract.rb +19 -4
  257. data/lib/cosmos/script/limits.rb +2 -0
  258. data/lib/cosmos/script/script.rb +1 -1
  259. data/lib/cosmos/script/scripting.rb +4 -784
  260. data/lib/cosmos/script/telemetry.rb +44 -23
  261. data/lib/cosmos/script/tools.rb +15 -69
  262. data/lib/cosmos/streams/serial_stream.rb +12 -19
  263. data/lib/cosmos/streams/stream.rb +2 -11
  264. data/lib/cosmos/streams/tcpip_socket_stream.rb +3 -13
  265. data/lib/cosmos/system/system.rb +187 -31
  266. data/lib/cosmos/system/target.rb +11 -2
  267. data/lib/cosmos/tools/cmd_extractor/cmd_extractor.rb +12 -11
  268. data/lib/cosmos/tools/cmd_sender/{cmd_sender_item_delegate.rb → cmd_param_table_item_delegate.rb} +11 -10
  269. data/lib/cosmos/tools/cmd_sender/cmd_sender.rb +209 -164
  270. data/lib/cosmos/tools/cmd_sequence/cmd_sequence.rb +652 -0
  271. data/lib/cosmos/tools/cmd_sequence/sequence_item.rb +510 -0
  272. data/lib/cosmos/tools/cmd_sequence/sequence_list.rb +194 -0
  273. data/lib/cosmos/tools/cmd_tlm_server/api.rb +179 -5
  274. data/lib/cosmos/tools/cmd_tlm_server/cmd_tlm_server.rb +31 -14
  275. data/lib/cosmos/tools/cmd_tlm_server/cmd_tlm_server_config.rb +23 -16
  276. data/lib/cosmos/tools/cmd_tlm_server/cmd_tlm_server_gui.rb +92 -20
  277. data/lib/cosmos/tools/cmd_tlm_server/commanding.rb +1 -1
  278. data/lib/cosmos/tools/cmd_tlm_server/gui/interfaces_tab.rb +17 -4
  279. data/lib/cosmos/tools/cmd_tlm_server/gui/targets_tab.rb +0 -5
  280. data/lib/cosmos/tools/cmd_tlm_server/interface_thread.rb +1 -2
  281. data/lib/cosmos/tools/cmd_tlm_server/interfaces.rb +4 -4
  282. data/lib/cosmos/tools/cmd_tlm_server/limits_groups_background_task.rb +121 -0
  283. data/lib/cosmos/tools/cmd_tlm_server/routers.rb +8 -4
  284. data/lib/cosmos/tools/config_editor/config_editor.rb +720 -0
  285. data/lib/cosmos/tools/config_editor/config_editor_frame.rb +675 -0
  286. data/lib/cosmos/tools/data_viewer/data_viewer.rb +44 -27
  287. data/lib/cosmos/tools/data_viewer/data_viewer_component.rb +8 -22
  288. data/lib/cosmos/tools/launcher/launcher.rb +29 -12
  289. data/lib/cosmos/tools/launcher/launcher_config.rb +1 -1
  290. data/lib/cosmos/tools/limits_monitor/limits_monitor.rb +153 -42
  291. data/lib/cosmos/tools/packet_viewer/packet_viewer.rb +44 -6
  292. data/lib/cosmos/tools/replay/replay.rb +36 -20
  293. data/lib/cosmos/tools/replay/replay_server.rb +1 -1
  294. data/lib/cosmos/tools/script_runner/script_runner_config.rb +1 -1
  295. data/lib/cosmos/tools/script_runner/script_runner_frame.rb +31 -21
  296. data/lib/cosmos/tools/table_manager/table_config.rb +9 -3
  297. data/lib/cosmos/tools/table_manager/table_manager.rb +27 -7
  298. data/lib/cosmos/tools/test_runner/results_writer.rb +6 -6
  299. data/lib/cosmos/tools/test_runner/test_runner.rb +4 -6
  300. data/lib/cosmos/tools/tlm_extractor/tlm_extractor.rb +4 -5
  301. data/lib/cosmos/tools/tlm_extractor/tlm_extractor_config.rb +1 -1
  302. data/lib/cosmos/tools/tlm_extractor/tlm_extractor_processor.rb +1 -1
  303. data/lib/cosmos/tools/tlm_grapher/data_object_adders/housekeeping_data_object_adder.rb +23 -6
  304. data/lib/cosmos/tools/tlm_grapher/data_object_editors/housekeeping_data_object_editor.rb +44 -3
  305. data/lib/cosmos/tools/tlm_grapher/data_objects/housekeeping_data_object.rb +20 -7
  306. data/lib/cosmos/tools/tlm_grapher/tabbed_plots/overview_tabbed_plots.rb +1 -1
  307. data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_config.rb +11 -4
  308. data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_plot_editor.rb +2 -2
  309. data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_realtime_thread.rb +1 -1
  310. data/lib/cosmos/tools/tlm_grapher/tlm_grapher.rb +16 -0
  311. data/lib/cosmos/tools/tlm_viewer/screen.rb +36 -32
  312. data/lib/cosmos/tools/tlm_viewer/tlm_viewer.rb +59 -50
  313. data/lib/cosmos/tools/tlm_viewer/tlm_viewer_config.rb +2 -2
  314. data/lib/cosmos/tools/tlm_viewer/widgets.rb +1 -0
  315. data/lib/cosmos/tools/tlm_viewer/widgets/canvasvalue_widget.rb +1 -0
  316. data/lib/cosmos/tools/tlm_viewer/widgets/labelvalue_widget.rb +22 -4
  317. data/lib/cosmos/tools/tlm_viewer/widgets/matrixbycolumns_widget.rb +9 -0
  318. data/lib/cosmos/tools/tlm_viewer/widgets/spacer_widget.rb +55 -0
  319. data/lib/cosmos/tools/tlm_viewer/widgets/vertical_widget.rb +3 -2
  320. data/lib/cosmos/tools/tlm_viewer/widgets/verticalbox_widget.rb +3 -2
  321. data/lib/cosmos/tools/tlm_viewer/widgets/widget.rb +12 -12
  322. data/lib/cosmos/top_level.rb +34 -24
  323. data/lib/cosmos/utilities/crc.rb +108 -6
  324. data/lib/cosmos/utilities/csv.rb +68 -14
  325. data/lib/cosmos/utilities/logger.rb +2 -2
  326. data/lib/cosmos/utilities/low_fragmentation_array.rb +9 -1
  327. data/lib/cosmos/version.rb +6 -6
  328. data/lib/cosmos/win32/win32_main.rb +50 -46
  329. data/run_gui_tests.bat +3 -1
  330. data/spec/conversions/unix_time_formatted_conversion_spec.rb +2 -2
  331. data/spec/conversions/unix_time_seconds_conversion_spec.rb +2 -2
  332. data/spec/core_ext/file_spec.rb +1 -1
  333. data/spec/core_ext/objectspace_spec.rb +12 -9
  334. data/spec/core_ext/string_spec.rb +6 -0
  335. data/spec/core_ext/time_spec.rb +10 -0
  336. data/spec/gui/line_graph/line_clip_spec.rb +226 -224
  337. data/spec/gui/qt_spec.rb +81 -79
  338. data/spec/install/config/system/system.txt +0 -6
  339. data/spec/install/config/targets/INST/cmd_tlm/inst_cmd_linc.txt +5 -5
  340. data/spec/install/config/targets/INST/cmd_tlm/inst_tlm_linc.txt +8 -8
  341. data/spec/install/config/targets/SYSTEM/cmd_tlm/meta_cmd_tlm.txt +16 -0
  342. data/{install/config/targets/COSMOS/cmd_tlm/cosmos_server_cmds.txt → spec/install/config/targets/SYSTEM/cmd_tlm/system_cmds.txt} +8 -8
  343. data/spec/install/config/targets/SYSTEM/cmd_tlm/system_tlm.txt +7 -0
  344. data/spec/install/config/targets/{COSMOS → SYSTEM}/cmd_tlm_server.txt +2 -2
  345. data/spec/install/config/targets/SYSTEM/screens/status.txt +12 -0
  346. data/spec/install/config/targets/SYSTEM/target.txt +12 -0
  347. data/spec/interfaces/cmd_tlm_server_interface_spec.rb +9 -13
  348. data/spec/interfaces/interface_spec.rb +402 -18
  349. data/spec/interfaces/linc_interface_spec.rb +37 -39
  350. data/spec/interfaces/protocols/burst_protocol_spec.rb +300 -0
  351. data/spec/interfaces/protocols/crc_protocol_spec.rb +709 -0
  352. data/spec/interfaces/protocols/fixed_protocol_spec.rb +119 -0
  353. data/spec/interfaces/protocols/length_protocol_spec.rb +499 -0
  354. data/spec/interfaces/protocols/override_protocol_spec.rb +158 -0
  355. data/spec/interfaces/protocols/preidentified_protocol_spec.rb +149 -0
  356. data/spec/interfaces/protocols/template_protocol_spec.rb +218 -0
  357. data/spec/interfaces/protocols/terminated_protocol_spec.rb +174 -0
  358. data/spec/interfaces/serial_interface_spec.rb +35 -34
  359. data/spec/interfaces/simulated_target_interface_spec.rb +13 -13
  360. data/spec/interfaces/tcpip_client_interface_spec.rb +21 -16
  361. data/spec/interfaces/tcpip_server_interface_spec.rb +66 -69
  362. data/spec/interfaces/udp_interface_spec.rb +120 -55
  363. data/spec/io/serial_driver_spec.rb +41 -39
  364. data/spec/io/udp_sockets_spec.rb +13 -8
  365. data/spec/io/win32_serial_driver_spec.rb +62 -59
  366. data/spec/packet_logs/packet_log_reader_spec.rb +68 -47
  367. data/spec/packet_logs/packet_log_writer_spec.rb +7 -5
  368. data/spec/packets/commands_spec.rb +5 -5
  369. data/spec/packets/packet_spec.rb +2 -14
  370. data/spec/script/extract_spec.rb +21 -7
  371. data/spec/script/scripting_spec.rb +261 -6
  372. data/spec/script/telemetry_spec.rb +17 -9
  373. data/spec/spec_helper.rb +26 -10
  374. data/spec/streams/serial_stream_spec.rb +87 -82
  375. data/spec/streams/tcpip_client_stream_spec.rb +12 -4
  376. data/spec/streams/tcpip_socket_stream_spec.rb +5 -0
  377. data/spec/system/system_spec.rb +66 -50
  378. data/spec/system/target_spec.rb +33 -11
  379. data/spec/tools/cmd_tlm_server/api_spec.rb +5 -5
  380. data/spec/tools/cmd_tlm_server/background_tasks_spec.rb +75 -15
  381. data/spec/tools/cmd_tlm_server/cmd_tlm_server_config_spec.rb +125 -5
  382. data/spec/tools/cmd_tlm_server/cmd_tlm_server_spec.rb +244 -232
  383. data/spec/tools/cmd_tlm_server/commanding_spec.rb +18 -18
  384. data/spec/tools/cmd_tlm_server/interface_thread_spec.rb +124 -29
  385. data/spec/tools/cmd_tlm_server/interfaces_spec.rb +2 -2
  386. data/spec/tools/cmd_tlm_server/limits_groups_background_task_spec.rb +145 -0
  387. data/spec/tools/cmd_tlm_server/router_thread_spec.rb +50 -10
  388. data/spec/tools/table_manager/tablemanager_core_spec.rb +0 -1
  389. data/spec/top_level/top_level_spec.rb +39 -11
  390. data/spec/utilities/csv_spec.rb +62 -20
  391. data/tasks/gemfile_stats.rake +6 -3
  392. data/test/performance/config/system/system_packets.txt +0 -1
  393. data/test/performance/config/system/system_threads.txt +0 -1
  394. metadata +177 -92
  395. data/autohotkey/config/targets/COSMOS/cmd_tlm/cosmos_server_tlm.txt +0 -15
  396. data/autohotkey/config/targets/COSMOS/cmd_tlm_server.txt +0 -6
  397. data/autohotkey/config/targets/COSMOS/target.txt +0 -5
  398. data/autohotkey/userpath.txt +0 -1
  399. data/demo/config/targets/COSMOS/cmd_tlm/cosmos_server_tlm.txt +0 -15
  400. data/demo/config/targets/COSMOS/screens/limits_change.txt +0 -20
  401. data/demo/config/targets/COSMOS/screens/version.txt +0 -19
  402. data/demo/config/targets/COSMOS/target.txt +0 -11
  403. data/demo/config/targets/META/cmd_tlm/meta_cmd.txt +0 -10
  404. data/demo/config/targets/META/cmd_tlm/meta_tlm.txt +0 -13
  405. data/demo/userpath.txt +0 -1
  406. data/install/config/targets/COSMOS/cmd_tlm/cosmos_server_tlm.txt +0 -15
  407. data/install/config/targets/COSMOS/cmd_tlm_server.txt +0 -6
  408. data/install/config/targets/COSMOS/screens/limits_change.txt +0 -20
  409. data/install/config/targets/COSMOS/screens/version.txt +0 -19
  410. data/install/config/targets/COSMOS/target.txt +0 -9
  411. data/install/config/targets/SYSTEM/README.txt +0 -1
  412. data/install/userpath.txt +0 -1
  413. data/lib/cosmos/io/tcpip_server.rb +0 -571
  414. data/lib/cosmos/packet_logs/meta_packet_log_writer.rb +0 -107
  415. data/lib/cosmos/streams/burst_stream_protocol.rb +0 -25
  416. data/lib/cosmos/streams/preidentified_stream_protocol.rb +0 -118
  417. data/lib/cosmos/streams/stream_protocol.rb +0 -373
  418. data/lib/cosmos/streams/template_stream_protocol.rb +0 -140
  419. data/lib/cosmos/streams/terminated_stream_protocol.rb +0 -85
  420. data/spec/install/config/targets/COSMOS/cmd_tlm/cosmos_server_cmds.txt +0 -41
  421. data/spec/install/config/targets/COSMOS/cmd_tlm/cosmos_server_tlm.txt +0 -15
  422. data/spec/install/config/targets/COSMOS/screens/limits_change.txt +0 -20
  423. data/spec/install/config/targets/COSMOS/screens/version.txt +0 -19
  424. data/spec/install/config/targets/COSMOS/target.txt +0 -5
  425. data/spec/install/config/targets/META/cmd_tlm/meta_cmd.txt +0 -4
  426. data/spec/install/config/targets/META/cmd_tlm/meta_tlm.txt +0 -4
  427. data/spec/install/userpath.txt +0 -1
  428. data/spec/interfaces/stream_interface_spec.rb +0 -157
  429. data/spec/io/tcpip_server_spec.rb +0 -338
  430. data/spec/packet_logs/meta_packet_log_writer_spec.rb +0 -170
  431. data/spec/streams/burst_stream_protocol_spec.rb +0 -32
  432. data/spec/streams/fixed_stream_protocol_spec.rb +0 -113
  433. data/spec/streams/length_stream_protocol_spec.rb +0 -300
  434. data/spec/streams/preidentified_stream_protocol_spec.rb +0 -121
  435. data/spec/streams/stream_protocol_spec.rb +0 -346
  436. data/spec/streams/template_stream_protocol_spec.rb +0 -156
  437. data/spec/streams/terminated_stream_protocol_spec.rb +0 -127
  438. data/test/performance/userpath.txt +0 -1
@@ -9,7 +9,7 @@
9
9
  # attribution addendums as found in the LICENSE.txt
10
10
 
11
11
  module Cosmos
12
-
12
+ # Captures all the parameters associated with an OpenGL light
13
13
  class GlLight
14
14
  attr_accessor :ambient
15
15
  attr_accessor :diffuse
@@ -34,6 +34,5 @@ module Cosmos
34
34
  @l_attn = 0.0
35
35
  @q_attn = 0.0
36
36
  end
37
- end # class Light
38
-
39
- end # module Cosmos
37
+ end
38
+ end
@@ -9,7 +9,7 @@
9
9
  # attribution addendums as found in the LICENSE.txt
10
10
 
11
11
  module Cosmos
12
-
12
+ # Captures all the parameters associated with an OpenGL material
13
13
  class GlMaterial
14
14
  attr_accessor :ambient
15
15
  attr_accessor :diffuse
@@ -24,6 +24,5 @@ module Cosmos
24
24
  @emission = [0.0, 0.0, 0.0, 1.0]
25
25
  @shininess = 30.0;
26
26
  end
27
- end # class Material
28
-
29
- end # module Cosmos
27
+ end
28
+ end
@@ -11,13 +11,20 @@
11
11
  require 'cosmos/gui/opengl/gl_bounds'
12
12
 
13
13
  module Cosmos
14
-
14
+ # Creates an OpenGL scene with associated shapes. It defers to the shapes to
15
+ # draw themselves.
15
16
  class GlScene
17
+ # @return [Array<GlShape>] Shapes to draw in the scene
16
18
  attr_reader :shapes
19
+ # @return [GlBounds] Bounds of the scene
17
20
  attr_accessor :bounds
21
+ # @return [Integer] Zoom factor
18
22
  attr_accessor :zoom
23
+ # @return [Quaternion] Orientation of the scene
19
24
  attr_accessor :orientation
25
+ # @return [Array<Float, Float, Float>] Center of the scene
20
26
  attr_accessor :center
27
+ # @return [Symbol] The type of projection matrix to use :PARALLEL or :PERSPECTIVE
21
28
  attr_accessor :projection
22
29
 
23
30
  def initialize
@@ -67,6 +74,5 @@ module Cosmos
67
74
  def append(shape)
68
75
  @shapes << shape
69
76
  end
70
- end # class Material
71
-
72
- end # module Cosmos
77
+ end
78
+ end
@@ -12,7 +12,8 @@ require 'cosmos'
12
12
  require 'cosmos/gui/opengl/opengl'
13
13
 
14
14
  module Cosmos
15
-
15
+ # Defines an OpenGL shape including its color, position and how to draw it.
16
+ # These objects should be used within a {GlScene}.
16
17
  class GlShape
17
18
  attr_accessor :base_color
18
19
  attr_accessor :click_handler
@@ -25,7 +26,10 @@ module Cosmos
25
26
  attr_accessor :tipText
26
27
  attr_accessor :dragable
27
28
 
28
- #Constructor for the StlShape class
29
+ # Create a OpenGL shape to be placed in a {GlScene}.
30
+ # @param x [Integer] Shape center X position
31
+ # @param y [Integer] Shape center Y position
32
+ # @param z [Integer] Shape center Z position
29
33
  def initialize(x, y, z)
30
34
  @color = [0.5, 0.5, 0.5, 1.0]
31
35
  @base_color = [0.5, 0.5, 0.5, 1.0]
@@ -15,7 +15,9 @@ require 'cosmos/gui/qt'
15
15
  require 'cosmos/gui/opengl/opengl'
16
16
 
17
17
  module Cosmos
18
-
18
+ # Widget which paints an OpenGL scene. Handles user interaction with the
19
+ # scene by tracking mouse movements to drag objects and scale and pan within
20
+ # the scene.
19
21
  class GlViewer < Qt::GLWidget
20
22
  MAX_PICKBUF = 1024
21
23
  MAX_SELPATH = 64
@@ -706,7 +708,5 @@ module Cosmos
706
708
  @transform.trans4(-@center[0], -@center[1], -@center[2]);
707
709
  @itransform = @transform.inverse
708
710
  end
709
-
710
- end # class OpenGLViewer
711
-
712
- end # module Cosmos
711
+ end
712
+ end
@@ -9,7 +9,7 @@
9
9
  # attribution addendums as found in the LICENSE.txt
10
10
 
11
11
  module Cosmos
12
-
12
+ # Captures all the attributes associated with an OpenGL viewport
13
13
  class GlViewport
14
14
  attr_accessor :left
15
15
  attr_accessor :right
@@ -21,15 +21,14 @@ module Cosmos
21
21
  attr_accessor :h
22
22
 
23
23
  def initialize
24
- @left=-1.0;
25
- @right=1.0;
26
- @top=1.0;
27
- @bottom=-1.0;
28
- @hither=0.1;
29
- @yon=1.0;
30
- @w=100;
31
- @h=100;
24
+ @left = -1.0
25
+ @right = 1.0
26
+ @top = 1.0
27
+ @bottom = -1.0
28
+ @hither = 0.1
29
+ @yon = 1.0
30
+ @w = 100
31
+ @h = 100
32
32
  end
33
- end # class Viewport
34
-
35
- end # module Cosmos
33
+ end
34
+ end
@@ -12,11 +12,14 @@ require 'cosmos'
12
12
  require 'cosmos/gui/opengl/texture_mapped_sphere'
13
13
 
14
14
  module Cosmos
15
-
15
+ # Three dimensional model of the moon by mapping a picture of the moon onto
16
+ # a sphere.
16
17
  class MoonModel < TextureMappedSphere
18
+ # @param x (see TextureMappedSphere#initialize)
19
+ # @param y (see TextureMappedSphere#initialize)
20
+ # @param z (see TextureMappedSphere#initialize)
17
21
  def initialize(x, y, z)
18
22
  super(x, y, z, File.join(::Cosmos::PATH, 'data', 'moonmap1k.gif'))
19
23
  end
20
24
  end
21
-
22
- end # module Cosmos
25
+ end
@@ -12,9 +12,10 @@ require 'cosmos'
12
12
  require 'cosmos/gui/opengl/opengl'
13
13
 
14
14
  module Cosmos
15
-
15
+ # Reads a STL file to build up a number of triangles (x, y, z coordinates)
16
+ # representing the shape. Implements a draw method to directly render the
17
+ # triangles into an OpenGL shape.
16
18
  class StlReader
17
-
18
19
  attr_accessor :triangles
19
20
  attr_accessor :use_cache
20
21
 
@@ -134,7 +135,7 @@ module Cosmos
134
135
  end
135
136
  end
136
137
 
137
- #Reads up to max_triangles from the file - returns number read
138
+ # Reads up to max_triangles from the file - returns number read
138
139
  def read_triangles_ascii(max_triangles, scaling_factor = 1.0)
139
140
  triangle = nil
140
141
  read_count = 0
@@ -166,7 +167,7 @@ module Cosmos
166
167
  read_count = 0
167
168
 
168
169
  if @triangles.empty?
169
- #Assemble Generic Packet to Read Each Triangle
170
+ # Assemble Generic Packet to Read Each Triangle
170
171
  @packet = Packet.new(nil, nil, :LITTLE_ENDIAN)
171
172
  @packet.append_item('normal0', 32, :FLOAT)
172
173
  @packet.append_item('normal1', 32, :FLOAT)
@@ -183,10 +184,10 @@ module Cosmos
183
184
  @packet.append_item('attribute_length', 16, :UINT)
184
185
  @packet.enable_method_missing
185
186
 
186
- #Read 80 Ascii Characters at beginning of file and throw away
187
+ # Read 80 Ascii Characters at beginning of file and throw away
187
188
  @file.read(80)
188
189
 
189
- #Read number of facets (triangles) in the file
190
+ # Read number of facets (triangles) in the file
190
191
  @num_facets = @file.read(4)
191
192
  @num_facets = @num_facets.unpack('V')[0]
192
193
  end
@@ -205,7 +206,5 @@ module Cosmos
205
206
 
206
207
  return read_count
207
208
  end
208
-
209
209
  end
210
-
211
- end # module Cosmos
210
+ end
@@ -13,7 +13,8 @@ require 'cosmos/gui/opengl/stl_reader'
13
13
  require 'cosmos/gui/dialogs/progress_dialog'
14
14
 
15
15
  module Cosmos
16
-
16
+ # Uses a {StlReader} to read a STL file and create an OpenGL shape which can
17
+ # be rendered in a scene.
17
18
  class StlShape < GlShape
18
19
  @@splash = nil
19
20
 
@@ -122,7 +123,5 @@ module Cosmos
122
123
  # Set Pixel Storage Size
123
124
  GL.PixelStorei(GL::UNPACK_ALIGNMENT, 1)
124
125
  end
125
-
126
- end # StlShape
127
-
128
- end # module Cosmos
126
+ end
127
+ end
@@ -12,15 +12,17 @@ require 'cosmos'
12
12
  require 'cosmos/gui/opengl/gl_shape'
13
13
 
14
14
  module Cosmos
15
-
15
+ # Maps an image onto a 3D sphere in OpenGl.
16
16
  class TextureMappedSphere < GlShape
17
-
17
+ # @param x (see GlShape#initialize)
18
+ # @param y (see GlShape#initialize)
19
+ # @param z (see GlShape#initialize)
20
+ # @param texture_filename [String] Image filename to load and apply to the
21
+ # sphere
18
22
  def initialize(x, y, z, texture_filename)
19
23
  super(x, y, z)
20
-
21
24
  @vdata = [ [1.0, 0.0, 0.0], [0.0, 1.0, 0.0], [-1.0, 0.0, 0.0], [0.0, -1.0, 0.0],
22
25
  [0.0, 0.0, 1.0], [0.0, 0.0, -1.0]]
23
-
24
26
  @tindices = [ [0,4,1], [1,4,2], [2,4,3], [3,4,0], [1,5,0],
25
27
  [2,5,1], [3,5,2], [0,5,3] ]
26
28
 
@@ -196,7 +198,5 @@ module Cosmos
196
198
  string << " ROTATION_Z #{@rotation_z}\n" if @rotation_z
197
199
  return string
198
200
  end
199
-
200
201
  end
201
-
202
- end # module Cosmos
202
+ end
@@ -805,7 +805,7 @@ end
805
805
  if item.layout
806
806
  item.removeAll
807
807
  else
808
- item.widget.dispose
808
+ item.widget.dispose if item.widget
809
809
  end
810
810
  end
811
811
  end
@@ -28,11 +28,14 @@ module Cosmos
28
28
 
29
29
  @@redirect_io_thread = nil
30
30
 
31
- # Create the main GUI application window. Redirect IO to prevent popups in
32
- # the application. Store the options passed from the command line.
31
+ # Create a new application. IO is redirected such that writing to stdout or
32
+ # stderr will result in a popup to be displayed to the user. Thus
33
+ # applications should not write to stdout (i.e. puts or write) or stderr
34
+ # unless they want a popup titled "Unexpected STD[OUT/ERR] output". By
35
+ # default the title is set to the options.title and the default COSMOS icon
36
+ # is set.
33
37
  #
34
- # @param options [OpenStruct] The command line options passed to the
35
- # application
38
+ # @param options [OpenStruct] Application command line options
36
39
  def initialize(options)
37
40
  # Call QT::MainWindow constructor
38
41
  super() # MUST BE FIRST - All code before super is executed twice in RubyQt Based classes
@@ -141,7 +144,12 @@ module Cosmos
141
144
  unless dirs.empty?
142
145
  menu.addSeparator()
143
146
  dirs.each do |target_name, dir|
144
- action = Qt::Action.new(tr("#{target_name}/#{target_sub_dir}"), self)
147
+ if target_sub_dir.empty?
148
+ name = target_name
149
+ else
150
+ name = "#{target_name}/#{target_sub_dir}"
151
+ end
152
+ action = Qt::Action.new(tr(name), self)
145
153
  action.statusTip = status_tip if status_tip
146
154
  action.connect(SIGNAL('triggered()')) { callback.call(dir) }
147
155
  menu.addAction(action)
@@ -234,7 +242,7 @@ module Cosmos
234
242
  super(event)
235
243
  end
236
244
 
237
- # Display the AboutDialog with the @about_string. The @about_string should
245
+ # Display the {AboutDialog} with the about_string. The about_string should
238
246
  # be set by the user in the constructor of their application.
239
247
  def about
240
248
  AboutDialog.new(self, @about_string)
@@ -245,8 +253,7 @@ module Cosmos
245
253
  # will cause the application to exit without being shown. Return true to
246
254
  # contine creating the window and execing the application.
247
255
  #
248
- # @param options [OpenStruct] The application options as configured in the
249
- # command line
256
+ # @param (see #initialize)
250
257
  # @return [Boolean] Whether to contine running the application
251
258
  def self.post_options_parsed_hook(options)
252
259
  true
@@ -256,14 +263,17 @@ module Cosmos
256
263
  # application itself has been created. This is the last chance to execute
257
264
  # custom code before the application executes.
258
265
  #
259
- # @param options [OpenStruct] The application options as configured in the
260
- # command line
266
+ # @param (see #initialize)
261
267
  def self.pre_window_new_hook(options)
262
268
  end
263
269
 
264
270
  # Create the default application options and parse the command line
265
271
  # options. Create the application instance and call exec on the
266
272
  # Qt::Application.
273
+ #
274
+ # @param option_parser [OptionParser] Parses the command line options
275
+ # @param options [OpenStruct] Stores all the command line options that are
276
+ # parsed by the option_parser
267
277
  def self.run(option_parser = nil, options = nil)
268
278
  Cosmos.set_working_dir do
269
279
  option_parser, options = create_default_options() unless option_parser and options
@@ -471,6 +481,7 @@ module Cosmos
471
481
  @@redirect_io_thread = nil
472
482
  end
473
483
 
484
+ # Unimplemented to provide this method to all QtTools
474
485
  def self.graceful_kill
475
486
  # Just to remove warning
476
487
  end
@@ -17,7 +17,7 @@ module Cosmos
17
17
  class Completion < Qt::Completer
18
18
  CMD_KEYWORDS = %w(cmd cmd_no_range_check cmd_no_hazardous_check cmd_no_checks
19
19
  cmd_raw cmd_raw_no_range_check cmd_raw_no_hazardous_check cmd_raw_no_checks)
20
- TLM_KEYWORDS = %w(set_tlm set_tlm_raw
20
+ TLM_KEYWORDS = %w(set_tlm set_tlm_raw override_tlm override_tlm_raw normalize_tlm
21
21
  tlm tlm_raw tlm_formatted tlm_with_units
22
22
  limits_enabled? enable_limits disable_limits
23
23
  check check_raw check_tolerance check_tolerance_raw
@@ -289,7 +289,11 @@ module Cosmos
289
289
  if not target.ignored_parameters.include?(param.name)
290
290
  if param.states.nil? or param.states.empty? or raw
291
291
  param.default = "'X' " if param.default.is_a? String and param.default.strip.length == 0
292
- parameters << (param.name + ' ' + param.default.to_s + ', ')
292
+ if param.default.to_s.is_printable?
293
+ parameters << (param.name + ' ' + param.default.to_s + ', ')
294
+ else
295
+ parameters << (param.name + ' 0x' + param.default.to_s.simple_formatted + ', ')
296
+ end
293
297
  else
294
298
  states = param.states.keys
295
299
  states.sort!
@@ -338,6 +342,9 @@ module Cosmos
338
342
  widget.textCursor.deletePreviousChar
339
343
  widget.textCursor.deletePreviousChar
340
344
  widget.textCursor.insertText('")')
345
+ elsif current_line.rstrip =~ /with$/
346
+ 6.times { widget.textCursor.deletePreviousChar }
347
+ widget.textCursor.insertText('")')
341
348
  end
342
349
  return
343
350
  end
@@ -347,6 +354,20 @@ module Cosmos
347
354
  return
348
355
  end
349
356
 
357
+ if event.key == Qt::Key_Return
358
+ # We've already processed the return and moved down a line
359
+ # Thus we need to move up and check the line before
360
+ cursor = widget.textCursor
361
+ cursor.movePosition(Qt::TextCursor::Up)
362
+ widget.setTextCursor(cursor)
363
+ current_line = widget.textCursor.block.text
364
+ indent = current_line.length - current_line.lstrip.length
365
+ cursor.movePosition(Qt::TextCursor::Down)
366
+ widget.setTextCursor(cursor)
367
+ widget.textCursor.insertText(' ' * indent)
368
+ return
369
+ end
370
+
350
371
  # Only process if we have an open paren which indicates a function
351
372
  if current_line =~ /\(/
352
373
  split_on_paren = current_line.split('(')[0]
@@ -15,8 +15,6 @@ require 'cosmos/gui/dialogs/splash'
15
15
  module Cosmos
16
16
 
17
17
  class CompletionTextEdit < Qt::PlainTextEdit
18
- slots 'highlight_line()'
19
-
20
18
  TRUE_VARIANT = Qt::Variant.new(true)
21
19
  SELECTION_DETAILS_POOL = []
22
20
 
@@ -51,6 +49,28 @@ module Cosmos
51
49
  end
52
50
  end
53
51
 
52
+ def line_number
53
+ textCursor.blockNumber + 1
54
+ end
55
+
56
+ def column_number
57
+ textCursor.positionInBlock + 1
58
+ end
59
+
60
+ def current_line
61
+ textCursor.block.text
62
+ end
63
+
64
+ def previous_line(number = 1)
65
+ block = textCursor.block
66
+ number.times { block = block.previous }
67
+ block.text
68
+ end
69
+
70
+ def get_line(line_number)
71
+ textCursor.document.findBlockByLineNumber(line_number).text
72
+ end
73
+
54
74
  def dispose
55
75
  super()
56
76
  @cursor.dispose
@@ -145,24 +165,24 @@ module Cosmos
145
165
  cursor.endEditBlock
146
166
  end
147
167
 
148
- def highlight_line(line, color = 'palegreen') #102, 255, 102
149
- color = Cosmos::getColor(color)
150
- # Store the line number in case we need to rehighlight this line
151
- @last_hightlighted_line = line
152
- brush = Cosmos.getBrush(color)
168
+ def highlight_line(color = 'palegreen') #102, 255, 102
169
+ brush = Cosmos.getBrush(Cosmos::getColor(color))
153
170
  @selection_details.format.setBackground(brush)
154
- # Get the textCursor and move it to the specified line
155
- @cursor.movePosition(Qt::TextCursor::Start)
156
- # The line number is based in 1 based but the PlainTextEdit is 0 based
157
- @cursor.movePosition(Qt::TextCursor::Down, Qt::TextCursor::MoveAnchor, line-1)
158
- @cursor.clearSelection
159
- # By setting the text cursor after moving it we ensure we can see the highlight
160
- # If we just called setExtraSelections without setting the cursor we might not be able to see it
161
- setTextCursor(@cursor)
162
171
  @selection_details.selection.format = @selection_details.format
163
- @selection_details.selection.cursor = @cursor
172
+ # We can use the textCursor directly since we're not changing it
173
+ @selection_details.selection.cursor = textCursor
164
174
  setExtraSelections([@selection_details.selection])
165
- # Center the cursor to ensure it is visible
175
+ end
176
+
177
+ def center_line(line_number = nil)
178
+ if line_number
179
+ # Get the textCursor and move it to the start
180
+ @cursor.movePosition(Qt::TextCursor::Start)
181
+ # Move down to the specified line number
182
+ # The line number is 1 based but the PlainTextEdit is 0 based
183
+ @cursor.movePosition(Qt::TextCursor::Down, Qt::TextCursor::MoveAnchor, line_number - 1)
184
+ setTextCursor(@cursor)
185
+ end
166
186
  centerCursor()
167
187
  end
168
188
 
@@ -170,10 +190,5 @@ module Cosmos
170
190
  # Clearing the extra selections with a nil array clears the selection
171
191
  self.setExtraSelections([])
172
192
  end
173
-
174
- def rehighlight(color = 'palegreen')
175
- highlight_line(@last_hightlighted_line, color)
176
- end
177
193
  end
178
-
179
- end # module Cosmos
194
+ end