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.
- checksums.yaml +4 -4
- data/.rubocop.yml +23 -0
- data/.travis.yml +1 -0
- data/.yardopts +3 -0
- data/Gemfile +1 -1
- data/Manifest.txt +137 -52
- data/Rakefile +50 -44
- data/autohotkey/config/system/system.txt +0 -5
- data/autohotkey/config/targets/INST/cmd_tlm/inst_cmds.txt +6 -1
- data/autohotkey/config/targets/INST/screens/extra.txt +19 -0
- data/autohotkey/config/targets/INST/sequences/run_sequence.txt +1 -0
- data/autohotkey/config/targets/META/screens/data.txt +12 -0
- data/autohotkey/config/targets/SYSTEM/cmd_tlm/meta_cmd_tlm.txt +16 -0
- data/autohotkey/config/targets/{COSMOS/cmd_tlm/cosmos_server_cmds.txt → SYSTEM/cmd_tlm/system_cmds.txt} +8 -8
- data/autohotkey/config/targets/SYSTEM/cmd_tlm/system_tlm.txt +7 -0
- data/autohotkey/config/targets/SYSTEM/screens/limits_change.txt +14 -0
- data/autohotkey/config/targets/SYSTEM/screens/meta.txt +14 -0
- data/autohotkey/config/targets/SYSTEM/target.txt +12 -0
- data/autohotkey/config/tools/cmd_tlm_server/cmd_tlm_server.txt +2 -2
- data/autohotkey/config/tools/test_runner/test_runner2.txt +1 -1
- data/autohotkey/tools/CmdSequence +14 -0
- data/autohotkey/tools/CmdSequenceAHK +23 -0
- data/autohotkey/tools/CmdSequenceAHK2 +16 -0
- data/autohotkey/tools/cmd_extractor.ahk +2 -2
- data/autohotkey/tools/cmd_sender.ahk +4 -6
- data/autohotkey/tools/cmd_sequence.ahk +215 -0
- data/autohotkey/tools/cmd_sequence2.ahk +23 -0
- data/autohotkey/tools/data_viewer.ahk +2 -3
- data/autohotkey/tools/limits_monitor.ahk +9 -11
- data/autohotkey/tools/open_gl_builder.ahk +1 -2
- data/autohotkey/tools/packet_viewer.ahk +51 -35
- data/autohotkey/tools/replay.ahk +1 -2
- data/autohotkey/tools/script_runner.ahk +1 -2
- data/autohotkey/tools/script_runner2.ahk +1 -2
- data/autohotkey/tools/test_runner2.ahk +1 -5
- data/autohotkey/tools/test_runner3.ahk +1 -3
- data/autohotkey/tools/tlm_grapher.ahk +1 -3
- data/autohotkey/tools/tlm_grapher3.ahk +1 -2
- data/autohotkey/tools/tlm_viewer.ahk +8 -3
- data/autohotkey/tools/tlm_viewer2.ahk +2 -3
- data/autohotkey/tools/tlm_viewer5.ahk +1 -2
- data/cosmos.gemspec +26 -20
- data/data/cmd_sequence.png +0 -0
- data/data/config/_array_params.yaml +23 -0
- data/data/config/_id_items.yaml +24 -0
- data/data/config/_id_params.yaml +58 -0
- data/data/config/_interfaces.yaml +206 -0
- data/data/config/_items.yaml +20 -0
- data/data/config/_params.yaml +58 -0
- data/data/config/cmd_tlm_server.yaml +110 -0
- data/data/config/command.yaml +38 -0
- data/data/config/command_modifiers.yaml +127 -0
- data/data/config/command_telemetry.yaml +3 -0
- data/data/config/data_viewer.yaml +43 -0
- data/data/config/handbook_creator.yaml +23 -0
- data/data/config/housekeeping_params.yaml +71 -0
- data/data/config/interface_modifiers.yaml +44 -0
- data/data/config/item_modifiers.yaml +172 -0
- data/data/config/launcher.yaml +117 -0
- data/data/config/limits_monitor.yaml +53 -0
- data/data/config/linegraph_params.yaml +30 -0
- data/data/config/linegraph_plot.yaml +106 -0
- data/data/config/page_modifiers.yaml +128 -0
- data/data/config/param_item_modifiers.yaml +41 -0
- data/data/config/parameter_modifiers.yaml +144 -0
- data/data/config/protocols.yaml +257 -0
- data/data/config/screen.yaml +151 -0
- data/data/config/script_runner.yaml +15 -0
- data/data/config/system.yaml +153 -0
- data/data/config/table_manager.yaml +76 -0
- data/data/config/table_parameter_modifiers.yaml +9 -0
- data/data/config/target.yaml +71 -0
- data/data/config/telemetry.yaml +73 -0
- data/data/config/telemetry_modifiers.yaml +129 -0
- data/data/config/test_runner.yaml +118 -0
- data/data/config/tlm_extractor.yaml +109 -0
- data/data/config/tlm_grapher.yaml +78 -0
- data/data/config/tlm_viewer.yaml +107 -0
- data/data/config/unknown.yaml +3 -0
- data/data/config/widgets.yaml +1339 -0
- data/data/config/xy_params.yaml +50 -0
- data/data/config/xy_plot.yaml +12 -0
- data/data/config_editor.png +0 -0
- data/data/crc.txt +172 -161
- data/data/delete.png +0 -0
- data/demo/config/data/crc.txt +56 -36
- data/demo/config/data/meta_init.txt +1 -4
- data/demo/config/system/system.txt +15 -3
- data/demo/config/system/system2.txt +13 -3
- data/demo/config/targets/EXAMPLE/lib/example_interface.rb +2 -6
- data/demo/config/targets/EXAMPLE/target.txt +3 -1
- data/demo/config/targets/INST/cmd_tlm/inst_cmds.txt +1 -0
- data/demo/config/targets/INST/lib/inst_dump_component.rb +34 -0
- data/demo/config/targets/INST/screens/adcs.txt +39 -15
- data/demo/config/targets/INST/screens/commanding.txt +26 -19
- data/demo/config/targets/INST/screens/spacing_box.txt +44 -0
- data/demo/config/targets/INST/screens/spacing_grid.txt +78 -0
- data/demo/config/targets/INST/screens/tabs.txt +0 -2
- data/demo/config/targets/INST/sequences/sequence.tsv +3 -0
- data/demo/config/targets/INST/tables/EventAction.csv +9 -0
- data/demo/config/targets/INST/tables/EventAction.dat +0 -0
- data/demo/config/targets/INST/tables/McConfigTable.csv +20 -0
- data/demo/config/targets/INST/tables/McConfigTable.dat +0 -0
- data/demo/config/targets/INST/target.txt +4 -0
- data/demo/config/targets/INST/tools/data_viewer/data_viewer.txt +2 -0
- data/demo/config/targets/INST/tools/data_viewer/data_viewer2.txt +2 -0
- data/demo/config/targets/INST/tools/table_manager/EventAction_def.txt +6 -0
- data/demo/config/targets/INST/tools/table_manager/McConfigTable_def.txt +38 -0
- data/demo/config/targets/SYSTEM/cmd_tlm/limits_groups.txt +7 -3
- data/demo/config/targets/SYSTEM/cmd_tlm/meta_cmd_tlm.txt +16 -0
- data/demo/config/targets/{COSMOS/cmd_tlm/cosmos_server_cmds.txt → SYSTEM/cmd_tlm/system_cmds.txt} +8 -8
- data/demo/config/targets/SYSTEM/cmd_tlm/system_tlm.txt +7 -0
- data/demo/config/targets/{COSMOS → SYSTEM}/cmd_tlm_server.txt +2 -2
- data/demo/config/targets/SYSTEM/lib/limits_groups.rb +39 -0
- data/demo/config/targets/SYSTEM/screens/status.txt +1 -1
- data/demo/config/targets/SYSTEM/target.txt +12 -0
- data/demo/config/targets/TEMPLATED/cmd_tlm_server.txt +1 -1
- data/demo/config/targets/TEMPLATED/lib/templated_interface.rb +8 -5
- data/demo/config/targets/TEMPLATED/target.txt +2 -0
- data/demo/config/tools/cmd_tlm_server/cmd_tlm_server.txt +15 -6
- data/demo/config/tools/cmd_tlm_server/cmd_tlm_server2.txt +13 -5
- data/demo/config/tools/data_viewer/data_viewer.txt +9 -0
- data/demo/config/tools/launcher/launcher.txt +9 -6
- data/demo/config/tools/launcher/launcher2.txt +16 -13
- data/demo/config/tools/launcher/launcher_mini.txt +45 -0
- data/demo/config/tools/table_manager/MCConfigurationTable_fsw1_def.txt +12 -11
- data/demo/config/tools/table_manager/MCConfigurationTable_fsw2_def.txt +12 -11
- data/demo/config/tools/test_runner/test_runner.txt +1 -1
- data/demo/config/tools/tlm_viewer/tlm_viewer.txt +5 -5
- data/demo/lib/example_background_task.rb +9 -5
- data/demo/lib/example_target.rb +5 -15
- data/demo/lib/scpi_target.rb +4 -10
- data/demo/procedures/cosmos_api_test.rb +17 -0
- data/demo/tools/CmdSequence +16 -0
- data/demo/tools/CmdSequence.bat +9 -0
- data/demo/tools/ConfigEditor +16 -0
- data/demo/tools/ConfigEditor.bat +9 -0
- data/demo/tools/mac/CmdSequence.app/Contents/Info.plist +38 -0
- data/demo/tools/mac/CmdSequence.app/Contents/MacOS/CmdSequence.rb +16 -0
- data/demo/tools/mac/CmdSequence.app/Contents/MacOS/main.sh +10 -0
- data/demo/tools/mac/CmdSequence.app/Contents/MacOS/tool_launch.rb +38 -0
- data/demo/tools/mac/CmdSequence.app/Contents/Resources/appIcon.icns +0 -0
- data/ext/cosmos/ext/packet/packet.c +5 -5
- data/install/config/data/crc.txt +12 -8
- data/install/config/system/system.txt +13 -3
- data/install/config/targets/SYSTEM/cmd_tlm/meta_cmd_tlm.txt +14 -0
- data/install/config/targets/SYSTEM/target.txt +12 -0
- data/install/tools/CmdSequence +16 -0
- data/install/tools/CmdSequence.bat +9 -0
- data/install/tools/ConfigEditor +16 -0
- data/install/tools/ConfigEditor.bat +9 -0
- data/install/tools/mac/CmdSequence.app/Contents/Info.plist +38 -0
- data/install/tools/mac/CmdSequence.app/Contents/MacOS/CmdSequence.rb +16 -0
- data/install/tools/mac/CmdSequence.app/Contents/MacOS/main.sh +10 -0
- data/install/tools/mac/CmdSequence.app/Contents/MacOS/tool_launch.rb +38 -0
- data/install/tools/mac/CmdSequence.app/Contents/Resources/appIcon.icns +0 -0
- data/lib/cosmos.rb +1 -1
- data/lib/cosmos/config/config_parser.rb +147 -59
- data/lib/cosmos/config/meta_config_parser.rb +57 -0
- data/lib/cosmos/conversions/polynomial_conversion.rb +20 -4
- data/lib/cosmos/conversions/unix_time_conversion.rb +4 -4
- data/lib/cosmos/core_ext/array.rb +45 -5
- data/lib/cosmos/core_ext/cosmos_io.rb +31 -15
- data/lib/cosmos/core_ext/file.rb +2 -2
- data/lib/cosmos/core_ext/kernel.rb +1 -6
- data/lib/cosmos/core_ext/objectspace.rb +0 -2
- data/lib/cosmos/core_ext/string.rb +27 -4
- data/lib/cosmos/core_ext/time.rb +39 -10
- data/lib/cosmos/gui/choosers/combobox_chooser.rb +37 -26
- data/lib/cosmos/gui/choosers/file_chooser.rb +23 -6
- data/lib/cosmos/gui/choosers/float_chooser.rb +13 -11
- data/lib/cosmos/gui/choosers/integer_chooser.rb +13 -11
- data/lib/cosmos/gui/choosers/string_chooser.rb +18 -36
- data/lib/cosmos/gui/choosers/telemetry_chooser.rb +64 -64
- data/lib/cosmos/gui/choosers/value_chooser.rb +15 -15
- data/lib/cosmos/gui/dialogs/about_dialog.rb +18 -13
- data/lib/cosmos/gui/dialogs/calendar_dialog.rb +11 -3
- data/lib/cosmos/gui/dialogs/cmd_tlm_raw_dialog.rb +1 -1
- data/lib/cosmos/gui/dialogs/details_dialog.rb +1 -1
- data/lib/cosmos/gui/dialogs/exception_dialog.rb +7 -7
- data/lib/cosmos/gui/dialogs/find_replace_dialog.rb +20 -15
- data/lib/cosmos/gui/dialogs/interface_raw_dialog.rb +143 -0
- data/lib/cosmos/gui/dialogs/legal_dialog.rb +6 -5
- data/lib/cosmos/gui/dialogs/packet_log_dialog.rb +5 -2
- data/lib/cosmos/gui/dialogs/progress_dialog.rb +1 -1
- data/lib/cosmos/gui/dialogs/pry_dialog.rb +4 -4
- data/lib/cosmos/gui/dialogs/scroll_text_dialog.rb +3 -0
- data/lib/cosmos/gui/dialogs/set_tlm_dialog.rb +7 -6
- data/lib/cosmos/gui/dialogs/splash.rb +1 -1
- data/lib/cosmos/gui/dialogs/tlm_details_dialog.rb +1 -1
- data/lib/cosmos/gui/dialogs/tlm_graph_dialog.rb +114 -0
- data/lib/cosmos/gui/line_graph/line_graph.rb +9 -10
- data/lib/cosmos/gui/line_graph/line_graph_dialog.rb +7 -5
- data/lib/cosmos/gui/line_graph/line_graph_drawing.rb +3 -7
- data/lib/cosmos/gui/line_graph/line_graph_popups.rb +3 -8
- data/lib/cosmos/gui/line_graph/line_graph_scaling.rb +2 -7
- data/lib/cosmos/gui/line_graph/overview_graph.rb +6 -1
- data/lib/cosmos/gui/opengl/earth_model.rb +6 -3
- data/lib/cosmos/gui/opengl/gl_bounds.rb +11 -23
- data/lib/cosmos/gui/opengl/gl_light.rb +3 -4
- data/lib/cosmos/gui/opengl/gl_material.rb +3 -4
- data/lib/cosmos/gui/opengl/gl_scene.rb +10 -4
- data/lib/cosmos/gui/opengl/gl_shape.rb +6 -2
- data/lib/cosmos/gui/opengl/gl_viewer.rb +5 -5
- data/lib/cosmos/gui/opengl/gl_viewport.rb +11 -12
- data/lib/cosmos/gui/opengl/moon_model.rb +6 -3
- data/lib/cosmos/gui/opengl/stl_reader.rb +8 -9
- data/lib/cosmos/gui/opengl/stl_shape.rb +4 -5
- data/lib/cosmos/gui/opengl/texture_mapped_sphere.rb +7 -7
- data/lib/cosmos/gui/qt.rb +1 -1
- data/lib/cosmos/gui/qt_tool.rb +21 -10
- data/lib/cosmos/gui/text/completion.rb +23 -2
- data/lib/cosmos/gui/text/completion_text_edit.rb +38 -23
- data/lib/cosmos/gui/utilities/analyze_log.rb +1 -1
- data/lib/cosmos/gui/utilities/screenshot.rb +2 -2
- data/lib/cosmos/gui/widgets/full_text_search_line_edit.rb +11 -1
- data/lib/cosmos/gui/widgets/packet_log_frame.rb +19 -6
- data/lib/cosmos/interfaces.rb +10 -0
- data/lib/cosmos/interfaces/cmd_tlm_server_interface.rb +28 -47
- data/lib/cosmos/interfaces/interface.rb +240 -22
- data/lib/cosmos/interfaces/linc_interface.rb +3 -5
- data/lib/cosmos/interfaces/protocols/burst_protocol.rb +173 -0
- data/lib/cosmos/interfaces/protocols/crc_protocol.rb +141 -0
- data/lib/cosmos/{streams/fixed_stream_protocol.rb → interfaces/protocols/fixed_protocol.rb} +40 -37
- data/lib/cosmos/{streams/length_stream_protocol.rb → interfaces/protocols/length_protocol.rb} +55 -48
- data/lib/cosmos/interfaces/protocols/override_protocol.rb +52 -0
- data/lib/cosmos/interfaces/protocols/preidentified_protocol.rb +141 -0
- data/lib/cosmos/interfaces/protocols/protocol.rb +60 -0
- data/lib/cosmos/interfaces/protocols/template_protocol.rb +209 -0
- data/lib/cosmos/interfaces/protocols/terminated_protocol.rb +81 -0
- data/lib/cosmos/interfaces/serial_interface.rb +28 -23
- data/lib/cosmos/interfaces/simulated_target_interface.rb +27 -16
- data/lib/cosmos/interfaces/stream_interface.rb +36 -108
- data/lib/cosmos/interfaces/tcpip_client_interface.rb +21 -21
- data/lib/cosmos/interfaces/tcpip_server_interface.rb +555 -94
- data/lib/cosmos/interfaces/udp_interface.rb +51 -83
- data/lib/cosmos/io/buffered_file.rb +92 -2
- data/lib/cosmos/io/json_drb.rb +2 -2
- data/lib/cosmos/io/posix_serial_driver.rb +3 -1
- data/lib/cosmos/io/raw_logger.rb +3 -3
- data/lib/cosmos/io/serial_driver.rb +14 -5
- data/lib/cosmos/io/win32_serial_driver.rb +16 -4
- data/lib/cosmos/packet_logs.rb +0 -1
- data/lib/cosmos/packet_logs/packet_log_reader.rb +11 -1
- data/lib/cosmos/packet_logs/packet_log_writer.rb +31 -13
- data/lib/cosmos/packets/binary_accessor.rb +599 -32
- data/lib/cosmos/packets/commands.rb +48 -24
- data/lib/cosmos/packets/packet.rb +140 -54
- data/lib/cosmos/packets/packet_config.rb +0 -2
- data/lib/cosmos/packets/parsers/packet_item_parser.rb +10 -2
- data/lib/cosmos/packets/structure.rb +81 -33
- data/lib/cosmos/packets/structure_item.rb +45 -5
- data/lib/cosmos/packets/telemetry.rb +149 -55
- data/lib/cosmos/script/api_shared.rb +1000 -0
- data/lib/cosmos/script/commands.rb +2 -2
- data/lib/cosmos/script/extract.rb +19 -4
- data/lib/cosmos/script/limits.rb +2 -0
- data/lib/cosmos/script/script.rb +1 -1
- data/lib/cosmos/script/scripting.rb +4 -784
- data/lib/cosmos/script/telemetry.rb +44 -23
- data/lib/cosmos/script/tools.rb +15 -69
- data/lib/cosmos/streams/serial_stream.rb +12 -19
- data/lib/cosmos/streams/stream.rb +2 -11
- data/lib/cosmos/streams/tcpip_socket_stream.rb +3 -13
- data/lib/cosmos/system/system.rb +187 -31
- data/lib/cosmos/system/target.rb +11 -2
- data/lib/cosmos/tools/cmd_extractor/cmd_extractor.rb +12 -11
- data/lib/cosmos/tools/cmd_sender/{cmd_sender_item_delegate.rb → cmd_param_table_item_delegate.rb} +11 -10
- data/lib/cosmos/tools/cmd_sender/cmd_sender.rb +209 -164
- data/lib/cosmos/tools/cmd_sequence/cmd_sequence.rb +652 -0
- data/lib/cosmos/tools/cmd_sequence/sequence_item.rb +510 -0
- data/lib/cosmos/tools/cmd_sequence/sequence_list.rb +194 -0
- data/lib/cosmos/tools/cmd_tlm_server/api.rb +179 -5
- data/lib/cosmos/tools/cmd_tlm_server/cmd_tlm_server.rb +31 -14
- data/lib/cosmos/tools/cmd_tlm_server/cmd_tlm_server_config.rb +23 -16
- data/lib/cosmos/tools/cmd_tlm_server/cmd_tlm_server_gui.rb +92 -20
- data/lib/cosmos/tools/cmd_tlm_server/commanding.rb +1 -1
- data/lib/cosmos/tools/cmd_tlm_server/gui/interfaces_tab.rb +17 -4
- data/lib/cosmos/tools/cmd_tlm_server/gui/targets_tab.rb +0 -5
- data/lib/cosmos/tools/cmd_tlm_server/interface_thread.rb +1 -2
- data/lib/cosmos/tools/cmd_tlm_server/interfaces.rb +4 -4
- data/lib/cosmos/tools/cmd_tlm_server/limits_groups_background_task.rb +121 -0
- data/lib/cosmos/tools/cmd_tlm_server/routers.rb +8 -4
- data/lib/cosmos/tools/config_editor/config_editor.rb +720 -0
- data/lib/cosmos/tools/config_editor/config_editor_frame.rb +675 -0
- data/lib/cosmos/tools/data_viewer/data_viewer.rb +44 -27
- data/lib/cosmos/tools/data_viewer/data_viewer_component.rb +8 -22
- data/lib/cosmos/tools/launcher/launcher.rb +29 -12
- data/lib/cosmos/tools/launcher/launcher_config.rb +1 -1
- data/lib/cosmos/tools/limits_monitor/limits_monitor.rb +153 -42
- data/lib/cosmos/tools/packet_viewer/packet_viewer.rb +44 -6
- data/lib/cosmos/tools/replay/replay.rb +36 -20
- data/lib/cosmos/tools/replay/replay_server.rb +1 -1
- data/lib/cosmos/tools/script_runner/script_runner_config.rb +1 -1
- data/lib/cosmos/tools/script_runner/script_runner_frame.rb +31 -21
- data/lib/cosmos/tools/table_manager/table_config.rb +9 -3
- data/lib/cosmos/tools/table_manager/table_manager.rb +27 -7
- data/lib/cosmos/tools/test_runner/results_writer.rb +6 -6
- data/lib/cosmos/tools/test_runner/test_runner.rb +4 -6
- data/lib/cosmos/tools/tlm_extractor/tlm_extractor.rb +4 -5
- data/lib/cosmos/tools/tlm_extractor/tlm_extractor_config.rb +1 -1
- data/lib/cosmos/tools/tlm_extractor/tlm_extractor_processor.rb +1 -1
- data/lib/cosmos/tools/tlm_grapher/data_object_adders/housekeeping_data_object_adder.rb +23 -6
- data/lib/cosmos/tools/tlm_grapher/data_object_editors/housekeeping_data_object_editor.rb +44 -3
- data/lib/cosmos/tools/tlm_grapher/data_objects/housekeeping_data_object.rb +20 -7
- data/lib/cosmos/tools/tlm_grapher/tabbed_plots/overview_tabbed_plots.rb +1 -1
- data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_config.rb +11 -4
- data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_plot_editor.rb +2 -2
- data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_realtime_thread.rb +1 -1
- data/lib/cosmos/tools/tlm_grapher/tlm_grapher.rb +16 -0
- data/lib/cosmos/tools/tlm_viewer/screen.rb +36 -32
- data/lib/cosmos/tools/tlm_viewer/tlm_viewer.rb +59 -50
- data/lib/cosmos/tools/tlm_viewer/tlm_viewer_config.rb +2 -2
- data/lib/cosmos/tools/tlm_viewer/widgets.rb +1 -0
- data/lib/cosmos/tools/tlm_viewer/widgets/canvasvalue_widget.rb +1 -0
- data/lib/cosmos/tools/tlm_viewer/widgets/labelvalue_widget.rb +22 -4
- data/lib/cosmos/tools/tlm_viewer/widgets/matrixbycolumns_widget.rb +9 -0
- data/lib/cosmos/tools/tlm_viewer/widgets/spacer_widget.rb +55 -0
- data/lib/cosmos/tools/tlm_viewer/widgets/vertical_widget.rb +3 -2
- data/lib/cosmos/tools/tlm_viewer/widgets/verticalbox_widget.rb +3 -2
- data/lib/cosmos/tools/tlm_viewer/widgets/widget.rb +12 -12
- data/lib/cosmos/top_level.rb +34 -24
- data/lib/cosmos/utilities/crc.rb +108 -6
- data/lib/cosmos/utilities/csv.rb +68 -14
- data/lib/cosmos/utilities/logger.rb +2 -2
- data/lib/cosmos/utilities/low_fragmentation_array.rb +9 -1
- data/lib/cosmos/version.rb +6 -6
- data/lib/cosmos/win32/win32_main.rb +50 -46
- data/run_gui_tests.bat +3 -1
- data/spec/conversions/unix_time_formatted_conversion_spec.rb +2 -2
- data/spec/conversions/unix_time_seconds_conversion_spec.rb +2 -2
- data/spec/core_ext/file_spec.rb +1 -1
- data/spec/core_ext/objectspace_spec.rb +12 -9
- data/spec/core_ext/string_spec.rb +6 -0
- data/spec/core_ext/time_spec.rb +10 -0
- data/spec/gui/line_graph/line_clip_spec.rb +226 -224
- data/spec/gui/qt_spec.rb +81 -79
- data/spec/install/config/system/system.txt +0 -6
- data/spec/install/config/targets/INST/cmd_tlm/inst_cmd_linc.txt +5 -5
- data/spec/install/config/targets/INST/cmd_tlm/inst_tlm_linc.txt +8 -8
- data/spec/install/config/targets/SYSTEM/cmd_tlm/meta_cmd_tlm.txt +16 -0
- data/{install/config/targets/COSMOS/cmd_tlm/cosmos_server_cmds.txt → spec/install/config/targets/SYSTEM/cmd_tlm/system_cmds.txt} +8 -8
- data/spec/install/config/targets/SYSTEM/cmd_tlm/system_tlm.txt +7 -0
- data/spec/install/config/targets/{COSMOS → SYSTEM}/cmd_tlm_server.txt +2 -2
- data/spec/install/config/targets/SYSTEM/screens/status.txt +12 -0
- data/spec/install/config/targets/SYSTEM/target.txt +12 -0
- data/spec/interfaces/cmd_tlm_server_interface_spec.rb +9 -13
- data/spec/interfaces/interface_spec.rb +402 -18
- data/spec/interfaces/linc_interface_spec.rb +37 -39
- data/spec/interfaces/protocols/burst_protocol_spec.rb +300 -0
- data/spec/interfaces/protocols/crc_protocol_spec.rb +709 -0
- data/spec/interfaces/protocols/fixed_protocol_spec.rb +119 -0
- data/spec/interfaces/protocols/length_protocol_spec.rb +499 -0
- data/spec/interfaces/protocols/override_protocol_spec.rb +158 -0
- data/spec/interfaces/protocols/preidentified_protocol_spec.rb +149 -0
- data/spec/interfaces/protocols/template_protocol_spec.rb +218 -0
- data/spec/interfaces/protocols/terminated_protocol_spec.rb +174 -0
- data/spec/interfaces/serial_interface_spec.rb +35 -34
- data/spec/interfaces/simulated_target_interface_spec.rb +13 -13
- data/spec/interfaces/tcpip_client_interface_spec.rb +21 -16
- data/spec/interfaces/tcpip_server_interface_spec.rb +66 -69
- data/spec/interfaces/udp_interface_spec.rb +120 -55
- data/spec/io/serial_driver_spec.rb +41 -39
- data/spec/io/udp_sockets_spec.rb +13 -8
- data/spec/io/win32_serial_driver_spec.rb +62 -59
- data/spec/packet_logs/packet_log_reader_spec.rb +68 -47
- data/spec/packet_logs/packet_log_writer_spec.rb +7 -5
- data/spec/packets/commands_spec.rb +5 -5
- data/spec/packets/packet_spec.rb +2 -14
- data/spec/script/extract_spec.rb +21 -7
- data/spec/script/scripting_spec.rb +261 -6
- data/spec/script/telemetry_spec.rb +17 -9
- data/spec/spec_helper.rb +26 -10
- data/spec/streams/serial_stream_spec.rb +87 -82
- data/spec/streams/tcpip_client_stream_spec.rb +12 -4
- data/spec/streams/tcpip_socket_stream_spec.rb +5 -0
- data/spec/system/system_spec.rb +66 -50
- data/spec/system/target_spec.rb +33 -11
- data/spec/tools/cmd_tlm_server/api_spec.rb +5 -5
- data/spec/tools/cmd_tlm_server/background_tasks_spec.rb +75 -15
- data/spec/tools/cmd_tlm_server/cmd_tlm_server_config_spec.rb +125 -5
- data/spec/tools/cmd_tlm_server/cmd_tlm_server_spec.rb +244 -232
- data/spec/tools/cmd_tlm_server/commanding_spec.rb +18 -18
- data/spec/tools/cmd_tlm_server/interface_thread_spec.rb +124 -29
- data/spec/tools/cmd_tlm_server/interfaces_spec.rb +2 -2
- data/spec/tools/cmd_tlm_server/limits_groups_background_task_spec.rb +145 -0
- data/spec/tools/cmd_tlm_server/router_thread_spec.rb +50 -10
- data/spec/tools/table_manager/tablemanager_core_spec.rb +0 -1
- data/spec/top_level/top_level_spec.rb +39 -11
- data/spec/utilities/csv_spec.rb +62 -20
- data/tasks/gemfile_stats.rake +6 -3
- data/test/performance/config/system/system_packets.txt +0 -1
- data/test/performance/config/system/system_threads.txt +0 -1
- metadata +177 -92
- data/autohotkey/config/targets/COSMOS/cmd_tlm/cosmos_server_tlm.txt +0 -15
- data/autohotkey/config/targets/COSMOS/cmd_tlm_server.txt +0 -6
- data/autohotkey/config/targets/COSMOS/target.txt +0 -5
- data/autohotkey/userpath.txt +0 -1
- data/demo/config/targets/COSMOS/cmd_tlm/cosmos_server_tlm.txt +0 -15
- data/demo/config/targets/COSMOS/screens/limits_change.txt +0 -20
- data/demo/config/targets/COSMOS/screens/version.txt +0 -19
- data/demo/config/targets/COSMOS/target.txt +0 -11
- data/demo/config/targets/META/cmd_tlm/meta_cmd.txt +0 -10
- data/demo/config/targets/META/cmd_tlm/meta_tlm.txt +0 -13
- data/demo/userpath.txt +0 -1
- data/install/config/targets/COSMOS/cmd_tlm/cosmos_server_tlm.txt +0 -15
- data/install/config/targets/COSMOS/cmd_tlm_server.txt +0 -6
- data/install/config/targets/COSMOS/screens/limits_change.txt +0 -20
- data/install/config/targets/COSMOS/screens/version.txt +0 -19
- data/install/config/targets/COSMOS/target.txt +0 -9
- data/install/config/targets/SYSTEM/README.txt +0 -1
- data/install/userpath.txt +0 -1
- data/lib/cosmos/io/tcpip_server.rb +0 -571
- data/lib/cosmos/packet_logs/meta_packet_log_writer.rb +0 -107
- data/lib/cosmos/streams/burst_stream_protocol.rb +0 -25
- data/lib/cosmos/streams/preidentified_stream_protocol.rb +0 -118
- data/lib/cosmos/streams/stream_protocol.rb +0 -373
- data/lib/cosmos/streams/template_stream_protocol.rb +0 -140
- data/lib/cosmos/streams/terminated_stream_protocol.rb +0 -85
- data/spec/install/config/targets/COSMOS/cmd_tlm/cosmos_server_cmds.txt +0 -41
- data/spec/install/config/targets/COSMOS/cmd_tlm/cosmos_server_tlm.txt +0 -15
- data/spec/install/config/targets/COSMOS/screens/limits_change.txt +0 -20
- data/spec/install/config/targets/COSMOS/screens/version.txt +0 -19
- data/spec/install/config/targets/COSMOS/target.txt +0 -5
- data/spec/install/config/targets/META/cmd_tlm/meta_cmd.txt +0 -4
- data/spec/install/config/targets/META/cmd_tlm/meta_tlm.txt +0 -4
- data/spec/install/userpath.txt +0 -1
- data/spec/interfaces/stream_interface_spec.rb +0 -157
- data/spec/io/tcpip_server_spec.rb +0 -338
- data/spec/packet_logs/meta_packet_log_writer_spec.rb +0 -170
- data/spec/streams/burst_stream_protocol_spec.rb +0 -32
- data/spec/streams/fixed_stream_protocol_spec.rb +0 -113
- data/spec/streams/length_stream_protocol_spec.rb +0 -300
- data/spec/streams/preidentified_stream_protocol_spec.rb +0 -121
- data/spec/streams/stream_protocol_spec.rb +0 -346
- data/spec/streams/template_stream_protocol_spec.rb +0 -156
- data/spec/streams/terminated_stream_protocol_spec.rb +0 -127
- 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
|
|
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
|
|
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
|
|
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
|
-
#
|
|
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
|
-
|
|
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
|
|
25
|
-
@right=1.0
|
|
26
|
-
@top=1.0
|
|
27
|
-
@bottom
|
|
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
|
|
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
|
-
|
|
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
|
data/lib/cosmos/gui/qt.rb
CHANGED
data/lib/cosmos/gui/qt_tool.rb
CHANGED
|
@@ -28,11 +28,14 @@ module Cosmos
|
|
|
28
28
|
|
|
29
29
|
@@redirect_io_thread = nil
|
|
30
30
|
|
|
31
|
-
# Create
|
|
32
|
-
#
|
|
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]
|
|
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
|
-
|
|
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
|
|
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
|
|
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
|
|
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
|
-
|
|
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(
|
|
149
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|