cosmos 3.0.1 → 3.1.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/.coveralls.yml +1 -0
- data/.gitignore +48 -48
- data/.travis.yml +7 -7
- data/CONTRIBUTING.txt +50 -50
- data/Gemfile +6 -6
- data/Guardfile +27 -27
- data/LICENSE.txt +879 -879
- data/Manifest.txt +1116 -1114
- data/README.md +109 -107
- data/Rakefile +214 -214
- data/autohotkey/config/data/diamond.STL +57 -57
- data/autohotkey/config/system/system.txt +34 -34
- data/autohotkey/config/targets/COSMOS/cmd_tlm/cosmos_server_cmds.txt +41 -41
- data/autohotkey/config/targets/COSMOS/cmd_tlm/cosmos_server_tlm.txt +15 -15
- data/autohotkey/config/targets/COSMOS/cmd_tlm_server.txt +6 -6
- data/autohotkey/config/targets/COSMOS/target.txt +5 -5
- data/autohotkey/config/targets/INST/cmd_tlm/inst_cmds.txt +121 -121
- data/autohotkey/config/targets/INST/cmd_tlm/inst_tlm.txt +247 -247
- data/autohotkey/config/targets/INST/cmd_tlm_server.txt +5 -5
- data/autohotkey/config/targets/INST/lib/example_limits_response.rb +30 -30
- data/autohotkey/config/targets/INST/lib/sim_inst.rb +305 -294
- data/autohotkey/config/targets/INST/screens/adcs.txt +46 -46
- data/autohotkey/config/targets/INST/screens/array.txt +7 -7
- data/autohotkey/config/targets/INST/screens/block.txt +8 -8
- data/autohotkey/config/targets/INST/screens/commanding.txt +30 -30
- data/autohotkey/config/targets/INST/screens/graphs.txt +14 -14
- data/autohotkey/config/targets/INST/screens/ground.txt +25 -25
- data/autohotkey/config/targets/INST/screens/health_status.txt +33 -33
- data/autohotkey/config/targets/INST/screens/hs.txt +49 -49
- data/autohotkey/config/targets/INST/screens/image.txt +21 -21
- data/autohotkey/config/targets/INST/screens/latest.txt +23 -23
- data/autohotkey/config/targets/INST/screens/mech.txt +25 -25
- data/autohotkey/config/targets/INST/screens/other.txt +25 -25
- data/autohotkey/config/targets/INST/screens/params.txt +25 -25
- data/autohotkey/config/targets/INST/screens/tabs.txt +68 -68
- data/autohotkey/config/targets/INST/target.txt +26 -26
- data/autohotkey/config/targets/META/cmd_tlm/meta_cmd.txt +10 -10
- data/autohotkey/config/targets/META/cmd_tlm/meta_tlm.txt +9 -9
- data/autohotkey/config/targets/SYSTEM/cmd_tlm/limits_groups.txt +7 -7
- data/autohotkey/config/targets/SYSTEM/screens/error.txt +11 -11
- data/autohotkey/config/tools/cmd_tlm_server/cmd_tlm_server.txt +22 -22
- data/autohotkey/config/tools/data_viewer/data_viewer.txt +11 -11
- data/autohotkey/config/tools/handbook_creator/handbook_creator.txt +49 -49
- data/autohotkey/config/tools/handbook_creator/templates/command_packets.html.erb +86 -86
- data/autohotkey/config/tools/handbook_creator/templates/command_toc.html.erb +38 -38
- data/autohotkey/config/tools/handbook_creator/templates/footer.html.erb +9 -9
- data/autohotkey/config/tools/handbook_creator/templates/header.html.erb +25 -25
- data/autohotkey/config/tools/handbook_creator/templates/limits_groups.html.erb +13 -13
- data/autohotkey/config/tools/handbook_creator/templates/nav.html.erb +27 -27
- data/autohotkey/config/tools/handbook_creator/templates/overview.html.erb +1 -1
- data/autohotkey/config/tools/handbook_creator/templates/pdf_cover.html.erb +23 -23
- data/autohotkey/config/tools/handbook_creator/templates/pdf_footer.html.erb +33 -33
- data/autohotkey/config/tools/handbook_creator/templates/pdf_header.html.erb +41 -41
- data/autohotkey/config/tools/handbook_creator/templates/telemetry_packets.html.erb +80 -80
- data/autohotkey/config/tools/handbook_creator/templates/telemetry_toc.html.erb +38 -38
- data/autohotkey/config/tools/handbook_creator/templates/title.html.erb +1 -1
- data/autohotkey/config/tools/launcher/launcher.txt +38 -38
- data/autohotkey/config/tools/script_runner/script_runner.txt +3 -3
- data/autohotkey/config/tools/table_manager/ConfigTables_def.txt +8 -8
- data/autohotkey/config/tools/table_manager/OneDimensionalTable_def.txt +19 -19
- data/autohotkey/config/tools/table_manager/TwoDimensionalTable_def.txt +248 -248
- data/autohotkey/config/tools/test_runner/test_runner.txt +8 -8
- data/autohotkey/config/tools/test_runner/test_runner2.txt +11 -11
- data/autohotkey/config/tools/test_runner/test_runner3.txt +6 -6
- data/autohotkey/config/tools/test_runner/test_runner4.txt +1 -1
- data/autohotkey/config/tools/tlm_extractor/tlm_extractor.txt +13 -13
- data/autohotkey/config/tools/tlm_extractor/tlm_extractor2.txt +9 -9
- data/autohotkey/config/tools/tlm_grapher/bad.txt +50 -50
- data/autohotkey/config/tools/tlm_grapher/temp1-4.txt +51 -51
- data/autohotkey/config/tools/tlm_grapher/test2.txt +111 -111
- data/autohotkey/config/tools/tlm_viewer/tlm_viewer.txt +24 -24
- data/autohotkey/config/tools/tlm_viewer/tlm_viewer2.txt +4 -4
- data/autohotkey/config/tools/tlm_viewer/tlm_viewer3.txt +3 -3
- data/autohotkey/lib/example_background_task.rb +42 -42
- data/autohotkey/lib/user_version.rb +3 -3
- data/autohotkey/procedures/clear_util.rb +7 -7
- data/autohotkey/procedures/collect.rb +18 -18
- data/autohotkey/procedures/collect_util.rb +14 -14
- data/autohotkey/procedures/example_test.rb +67 -67
- data/autohotkey/procedures/example_test2.rb +74 -74
- data/autohotkey/procedures/script_test.rb +17 -17
- data/autohotkey/procedures/syntax_error.rb +18 -18
- data/autohotkey/tools/CmdExtractorAHK +16 -16
- data/autohotkey/tools/CmdSender +14 -14
- data/autohotkey/tools/CmdSenderAHK +18 -18
- data/autohotkey/tools/CmdTlmServer +14 -14
- data/autohotkey/tools/CmdTlmServerAHK +28 -28
- data/autohotkey/tools/CmdTlmServerAHK2 +17 -17
- data/autohotkey/tools/DataViewer +14 -14
- data/autohotkey/tools/DataViewerAHK +17 -17
- data/autohotkey/tools/HandbookCreatorAHK +20 -20
- data/autohotkey/tools/LauncherAHK +17 -17
- data/autohotkey/tools/LimitsMonitorAHK +20 -20
- data/autohotkey/tools/OpenGLBuilderAHK +20 -20
- data/autohotkey/tools/PacketViewer +14 -14
- data/autohotkey/tools/PacketViewerAHK +18 -18
- data/autohotkey/tools/PacketViewerAHK2 +17 -17
- data/autohotkey/tools/Replay +14 -14
- data/autohotkey/tools/Replay.bat +59 -59
- data/autohotkey/tools/ReplayAHK +17 -17
- data/autohotkey/tools/ScriptRunner +14 -14
- data/autohotkey/tools/ScriptRunnerAHK +20 -20
- data/autohotkey/tools/ScriptRunnerAHK2 +17 -17
- data/autohotkey/tools/TableManager +14 -14
- data/autohotkey/tools/TableManagerAHK +30 -30
- data/autohotkey/tools/TestRunner +15 -15
- data/autohotkey/tools/TestRunnerAHK +17 -17
- data/autohotkey/tools/TestRunnerAHK2 +17 -17
- data/autohotkey/tools/TestRunnerAHK3 +17 -17
- data/autohotkey/tools/TestRunnerAHK4 +17 -17
- data/autohotkey/tools/TlmExtractor +15 -15
- data/autohotkey/tools/TlmExtractorAHK +19 -19
- data/autohotkey/tools/TlmExtractorAHK2 +16 -16
- data/autohotkey/tools/TlmExtractorAHK3 +16 -16
- data/autohotkey/tools/TlmGrapher +14 -14
- data/autohotkey/tools/TlmGrapherAHK +19 -19
- data/autohotkey/tools/TlmGrapherAHK2 +23 -23
- data/autohotkey/tools/TlmGrapherAHK3 +17 -17
- data/autohotkey/tools/TlmGrapherAHK4 +17 -17
- data/autohotkey/tools/TlmViewer +14 -14
- data/autohotkey/tools/TlmViewerAHK +28 -28
- data/autohotkey/tools/TlmViewerAHK2 +18 -18
- data/autohotkey/tools/TlmViewerAHK3 +18 -18
- data/autohotkey/tools/TlmViewerAHK4 +18 -18
- data/autohotkey/tools/TlmViewerAHK5 +18 -18
- data/autohotkey/tools/autohotkey.rb +37 -37
- data/autohotkey/tools/cmd_extractor.ahk +27 -27
- data/autohotkey/tools/cmd_sender.ahk +182 -162
- data/autohotkey/tools/cmd_tlm_server.ahk +89 -89
- data/autohotkey/tools/cmd_tlm_server2.ahk +45 -45
- data/autohotkey/tools/data_viewer.ahk +135 -135
- data/autohotkey/tools/handbook_creator.ahk +23 -23
- data/autohotkey/tools/launcher.ahk +41 -41
- data/autohotkey/tools/limits_monitor.ahk +70 -70
- data/autohotkey/tools/open_gl_builder.ahk +134 -134
- data/autohotkey/tools/packet_viewer.ahk +143 -143
- data/autohotkey/tools/packet_viewer2.ahk +9 -9
- data/autohotkey/tools/replay.ahk +98 -98
- data/autohotkey/tools/script_runner.ahk +589 -589
- data/autohotkey/tools/script_runner2.ahk +34 -31
- data/autohotkey/tools/table_manager.ahk +220 -220
- data/autohotkey/tools/test_runner.ahk +262 -259
- data/autohotkey/tools/test_runner2.ahk +52 -52
- data/autohotkey/tools/test_runner3.ahk +13 -13
- data/autohotkey/tools/tlm_extractor.ahk +272 -272
- data/autohotkey/tools/tlm_grapher.ahk +642 -642
- data/autohotkey/tools/tlm_grapher2.ahk +115 -115
- data/autohotkey/tools/tlm_grapher3.ahk +24 -24
- data/autohotkey/tools/tlm_viewer.ahk +133 -133
- data/autohotkey/tools/tlm_viewer2.ahk +50 -49
- data/autohotkey/tools/tlm_viewer4.ahk +4 -4
- data/autohotkey/tools/tlm_viewer5.ahk +20 -20
- data/bin/cosmos +96 -96
- data/bin/cstol_converter +1166 -1166
- data/bin/rubysloc +85 -85
- data/cosmos.gemspec +98 -97
- data/data/about.txt +4 -4
- data/data/crc.txt +306 -305
- data/data/diamond.STL +57 -57
- data/data/legal.txt +9 -9
- data/demo/Gemfile +6 -6
- data/demo/Launcher +15 -15
- data/demo/Launcher.bat +59 -59
- data/demo/Rakefile +61 -61
- data/demo/config/data/crc.txt +222 -206
- data/demo/config/data/diamond.STL +57 -57
- data/demo/config/data/meta_init.txt +4 -4
- data/demo/config/system/system.txt +34 -34
- data/demo/config/system/system2.txt +33 -33
- data/demo/config/targets/COSMOS/cmd_tlm/cosmos_server_cmds.txt +41 -41
- data/demo/config/targets/COSMOS/cmd_tlm/cosmos_server_tlm.txt +15 -15
- data/demo/config/targets/COSMOS/cmd_tlm_server.txt +6 -6
- data/demo/config/targets/COSMOS/screens/limits_change.txt +20 -20
- data/demo/config/targets/COSMOS/screens/version.txt +19 -19
- data/demo/config/targets/COSMOS/target.txt +11 -11
- data/demo/config/targets/EXAMPLE/cmd_tlm/example_cmds.txt +2 -2
- data/demo/config/targets/EXAMPLE/cmd_tlm/example_tlm.txt +3 -3
- data/demo/config/targets/EXAMPLE/cmd_tlm_server.txt +6 -6
- data/demo/config/targets/EXAMPLE/lib/example_interface.rb +22 -22
- data/demo/config/targets/EXAMPLE/target.txt +6 -6
- data/demo/config/targets/INST/cmd_tlm/inst_cmds.txt +121 -121
- data/demo/config/targets/INST/cmd_tlm/inst_tlm.txt +247 -247
- data/demo/config/targets/INST/cmd_tlm_server.txt +5 -5
- data/demo/config/targets/INST/lib/example_limits_response.rb +30 -30
- data/demo/config/targets/INST/lib/sim_inst.rb +305 -294
- data/demo/config/targets/INST/screens/adcs.txt +46 -46
- data/demo/config/targets/INST/screens/array.txt +15 -15
- data/demo/config/targets/INST/screens/block.txt +8 -8
- data/demo/config/targets/INST/screens/commanding.txt +30 -30
- data/demo/config/targets/INST/screens/graphs.txt +14 -14
- data/demo/config/targets/INST/screens/ground.txt +25 -25
- data/demo/config/targets/INST/screens/hs.txt +44 -44
- data/demo/config/targets/INST/screens/latest.txt +23 -23
- data/demo/config/targets/INST/screens/other.txt +29 -29
- data/demo/config/targets/INST/screens/tabs.txt +70 -70
- data/demo/config/targets/INST/target.txt +33 -33
- data/demo/config/targets/META/cmd_tlm/meta_cmd.txt +10 -10
- data/demo/config/targets/META/cmd_tlm/meta_tlm.txt +13 -13
- data/demo/config/targets/SYSTEM/cmd_tlm/limits_groups.txt +7 -7
- data/demo/config/targets/SYSTEM/cmd_tlm/override.txt +29 -29
- data/demo/config/targets/SYSTEM/screens/status.txt +12 -12
- data/demo/config/targets/TEMPLATED/cmd_tlm/templated_cmds.txt +13 -12
- data/demo/config/targets/TEMPLATED/cmd_tlm/templated_tlm.txt +3 -3
- data/demo/config/targets/TEMPLATED/cmd_tlm_server.txt +6 -6
- data/demo/config/targets/TEMPLATED/lib/templated_interface.rb +54 -48
- data/demo/config/targets/TEMPLATED/target.txt +6 -6
- data/demo/config/tools/cmd_tlm_server/cmd_tlm_server.txt +33 -33
- data/demo/config/tools/cmd_tlm_server/cmd_tlm_server2.txt +29 -29
- data/demo/config/tools/data_viewer/data_viewer.txt +11 -11
- data/demo/config/tools/handbook_creator/handbook_creator.txt +66 -66
- data/demo/config/tools/handbook_creator/templates/command_packets.html.erb +86 -86
- data/demo/config/tools/handbook_creator/templates/command_toc.html.erb +38 -38
- data/demo/config/tools/handbook_creator/templates/footer.html.erb +9 -9
- data/demo/config/tools/handbook_creator/templates/header.html.erb +25 -25
- data/demo/config/tools/handbook_creator/templates/limits_groups.html.erb +13 -13
- data/demo/config/tools/handbook_creator/templates/nav.html.erb +27 -27
- data/demo/config/tools/handbook_creator/templates/overview.html.erb +1 -1
- data/demo/config/tools/handbook_creator/templates/pdf_cover.html.erb +23 -23
- data/demo/config/tools/handbook_creator/templates/pdf_footer.html.erb +33 -33
- data/demo/config/tools/handbook_creator/templates/pdf_header.html.erb +41 -41
- data/demo/config/tools/handbook_creator/templates/telemetry_packets.html.erb +80 -80
- data/demo/config/tools/handbook_creator/templates/telemetry_toc.html.erb +38 -38
- data/demo/config/tools/handbook_creator/templates/title.html.erb +1 -1
- data/demo/config/tools/launcher/launcher.txt +45 -45
- data/demo/config/tools/launcher/launcher2.txt +45 -45
- data/demo/config/tools/script_runner/script_runner.txt +3 -3
- data/demo/config/tools/table_manager/ConfigTables_def.txt +8 -8
- data/demo/config/tools/table_manager/ExampleTableDefinition.txt +24 -24
- data/demo/config/tools/table_manager/MCConfigurationTable_fsw1_def.txt +25 -25
- data/demo/config/tools/table_manager/MCConfigurationTable_fsw2_def.txt +25 -25
- data/demo/config/tools/table_manager/PPSSelectionTable_def.txt +8 -8
- data/demo/config/tools/table_manager/TLMMonitoringTable_def.txt +248 -248
- data/demo/config/tools/test_runner/test_runner.txt +17 -17
- data/demo/config/tools/tlm_extractor/tlm_extractor.txt +13 -13
- data/demo/config/tools/tlm_extractor/tlm_extractor2.txt +2 -2
- data/demo/config/tools/tlm_extractor/tlm_extractor3.txt +2 -2
- data/demo/config/tools/tlm_extractor/tlm_extractor4.txt +2 -2
- data/demo/config/tools/tlm_viewer/tlm_viewer.txt +41 -41
- data/demo/lib/example_background_task.rb +57 -52
- data/demo/lib/example_target.rb +113 -108
- data/demo/lib/scpi_target.rb +74 -74
- data/demo/lib/user_version.rb +3 -3
- data/demo/procedures/checks.rb +11 -11
- data/demo/procedures/clear_util.rb +7 -7
- data/demo/procedures/collect.rb +18 -18
- data/demo/procedures/collect_util.rb +14 -14
- data/demo/procedures/cosmos_api_test.rb +293 -293
- data/demo/procedures/disconnect.rb +29 -29
- data/demo/procedures/example_test.rb +182 -182
- data/demo/procedures/plot_test.rb +8 -8
- data/demo/procedures/run_example_test.rb +3 -3
- data/demo/procedures/test.rb +51 -51
- data/demo/tools/CmdExtractor +15 -15
- data/demo/tools/CmdExtractor.bat +59 -59
- data/demo/tools/CmdSender +15 -15
- data/demo/tools/CmdSender.bat +59 -59
- data/demo/tools/CmdTlmServer +15 -15
- data/demo/tools/CmdTlmServer.bat +59 -59
- data/demo/tools/DataViewer +15 -15
- data/demo/tools/DataViewer.bat +59 -59
- data/demo/tools/ExampleTarget +15 -15
- data/demo/tools/ExampleTarget.bat +59 -59
- data/demo/tools/HandbookCreator +15 -15
- data/demo/tools/HandbookCreator.bat +61 -61
- data/demo/tools/Launcher +15 -15
- data/demo/tools/Launcher.bat +59 -59
- data/demo/tools/LimitsMonitor +15 -15
- data/demo/tools/LimitsMonitor.bat +59 -59
- data/demo/tools/OpenGLBuilder +15 -15
- data/demo/tools/OpenGLBuilder.bat +59 -59
- data/demo/tools/PacketViewer +15 -15
- data/demo/tools/PacketViewer.bat +59 -59
- data/demo/tools/Replay +15 -15
- data/demo/tools/Replay.bat +59 -59
- data/demo/tools/ScpiTarget +15 -15
- data/demo/tools/ScpiTarget.bat +59 -59
- data/demo/tools/ScriptRunner +15 -15
- data/demo/tools/ScriptRunner.bat +59 -59
- data/demo/tools/TableManager +15 -15
- data/demo/tools/TableManager.bat +59 -59
- data/demo/tools/TestRunner +15 -15
- data/demo/tools/TestRunner.bat +59 -59
- data/demo/tools/TlmExtractor +15 -15
- data/demo/tools/TlmExtractor.bat +59 -59
- data/demo/tools/TlmGrapher +15 -15
- data/demo/tools/TlmGrapher.bat +59 -59
- data/demo/tools/TlmViewer +15 -15
- data/demo/tools/TlmViewer.bat +59 -59
- data/demo/tools/mac/CmdExtractor.app/Contents/Info.plist +38 -38
- data/demo/tools/mac/CmdExtractor.app/Contents/MacOS/CmdExtractor.rb +15 -15
- data/demo/tools/mac/CmdExtractor.app/Contents/MacOS/main.sh +6 -6
- data/demo/tools/mac/CmdSender.app/Contents/Info.plist +38 -38
- data/demo/tools/mac/CmdSender.app/Contents/MacOS/CmdSender.rb +15 -15
- data/demo/tools/mac/CmdSender.app/Contents/MacOS/main.sh +6 -6
- data/demo/tools/mac/CmdTlmServer.app/Contents/Info.plist +38 -38
- data/demo/tools/mac/CmdTlmServer.app/Contents/MacOS/CmdTlmServer.rb +15 -15
- data/demo/tools/mac/CmdTlmServer.app/Contents/MacOS/main.sh +6 -6
- data/demo/tools/mac/DataViewer.app/Contents/Info.plist +38 -38
- data/demo/tools/mac/DataViewer.app/Contents/MacOS/DataViewer.rb +15 -15
- data/demo/tools/mac/DataViewer.app/Contents/MacOS/main.sh +6 -6
- data/demo/tools/mac/HandbookCreator.app/Contents/Info.plist +38 -38
- data/demo/tools/mac/HandbookCreator.app/Contents/MacOS/HandbookCreator.rb +15 -15
- data/demo/tools/mac/HandbookCreator.app/Contents/MacOS/main.sh +6 -6
- data/demo/tools/mac/Launcher.app/Contents/Info.plist +38 -38
- data/demo/tools/mac/Launcher.app/Contents/MacOS/Launcher.rb +15 -15
- data/demo/tools/mac/Launcher.app/Contents/MacOS/main.sh +6 -6
- data/demo/tools/mac/LimitsMonitor.app/Contents/Info.plist +38 -38
- data/demo/tools/mac/LimitsMonitor.app/Contents/MacOS/LimitsMonitor.rb +15 -15
- data/demo/tools/mac/LimitsMonitor.app/Contents/MacOS/main.sh +6 -6
- data/demo/tools/mac/OpenGLBuilder.app/Contents/Info.plist +38 -38
- data/demo/tools/mac/OpenGLBuilder.app/Contents/MacOS/OpenGLBuilder.rb +15 -15
- data/demo/tools/mac/OpenGLBuilder.app/Contents/MacOS/main.sh +6 -6
- data/demo/tools/mac/PacketViewer.app/Contents/Info.plist +38 -38
- data/demo/tools/mac/PacketViewer.app/Contents/MacOS/PacketViewer.rb +15 -15
- data/demo/tools/mac/PacketViewer.app/Contents/MacOS/main.sh +6 -6
- data/demo/tools/mac/Replay.app/Contents/Info.plist +38 -38
- data/demo/tools/mac/Replay.app/Contents/MacOS/Replay.rb +15 -15
- data/demo/tools/mac/Replay.app/Contents/MacOS/main.sh +6 -6
- data/demo/tools/mac/ScriptRunner.app/Contents/Info.plist +38 -38
- data/demo/tools/mac/ScriptRunner.app/Contents/MacOS/ScriptRunner.rb +15 -15
- data/demo/tools/mac/ScriptRunner.app/Contents/MacOS/main.sh +6 -6
- data/demo/tools/mac/TableManager.app/Contents/Info.plist +38 -38
- data/demo/tools/mac/TableManager.app/Contents/MacOS/TableManager.rb +15 -15
- data/demo/tools/mac/TableManager.app/Contents/MacOS/main.sh +6 -6
- data/demo/tools/mac/TestRunner.app/Contents/Info.plist +38 -38
- data/demo/tools/mac/TestRunner.app/Contents/MacOS/TestRunner.rb +15 -15
- data/demo/tools/mac/TestRunner.app/Contents/MacOS/main.sh +6 -6
- data/demo/tools/mac/TlmExtractor.app/Contents/Info.plist +38 -38
- data/demo/tools/mac/TlmExtractor.app/Contents/MacOS/TlmExtractor.rb +15 -15
- data/demo/tools/mac/TlmExtractor.app/Contents/MacOS/main.sh +6 -6
- data/demo/tools/mac/TlmGrapher.app/Contents/Info.plist +38 -38
- data/demo/tools/mac/TlmGrapher.app/Contents/MacOS/TlmGrapher.rb +15 -15
- data/demo/tools/mac/TlmGrapher.app/Contents/MacOS/main.sh +6 -6
- data/demo/tools/mac/TlmViewer.app/Contents/Info.plist +38 -38
- data/demo/tools/mac/TlmViewer.app/Contents/MacOS/TlmViewer.rb +15 -15
- data/demo/tools/mac/TlmViewer.app/Contents/MacOS/main.sh +6 -6
- data/ext/cosmos/ext/array/array.c +111 -111
- data/ext/cosmos/ext/array/extconf.rb +13 -13
- data/ext/cosmos/ext/buffered_file/buffered_file.c +167 -167
- data/ext/cosmos/ext/buffered_file/extconf.rb +13 -13
- data/ext/cosmos/ext/config_parser/config_parser.c +237 -237
- data/ext/cosmos/ext/config_parser/extconf.rb +13 -13
- data/ext/cosmos/ext/cosmos_io/cosmos_io.c +117 -117
- data/ext/cosmos/ext/cosmos_io/extconf.rb +13 -13
- data/ext/cosmos/ext/crc/crc.c +341 -341
- data/ext/cosmos/ext/crc/extconf.rb +12 -12
- data/ext/cosmos/ext/line_graph/extconf.rb +13 -13
- data/ext/cosmos/ext/line_graph/line_graph.c +501 -501
- data/ext/cosmos/ext/low_fragmentation_array/extconf.rb +12 -12
- data/ext/cosmos/ext/low_fragmentation_array/low_fragmentation_array.c +261 -261
- data/ext/cosmos/ext/packet/extconf.rb +13 -13
- data/ext/cosmos/ext/packet/packet.c +339 -339
- data/ext/cosmos/ext/platform/extconf.rb +13 -13
- data/ext/cosmos/ext/platform/platform.c +81 -81
- data/ext/cosmos/ext/polynomial_conversion/extconf.rb +13 -13
- data/ext/cosmos/ext/polynomial_conversion/polynomial_conversion.c +73 -73
- data/ext/cosmos/ext/string/extconf.rb +13 -13
- data/ext/cosmos/ext/string/string.c +49 -49
- data/ext/cosmos/ext/structure/structure.c +894 -894
- data/ext/cosmos/ext/tabbed_plots_config/extconf.rb +13 -13
- data/ext/cosmos/ext/tabbed_plots_config/tabbed_plots_config.c +51 -51
- data/ext/cosmos/ext/telemetry/extconf.rb +13 -13
- data/ext/cosmos/ext/telemetry/telemetry.c +306 -306
- data/ext/mkrf_conf.rb +40 -40
- data/install/Gemfile +6 -6
- data/install/Launcher +14 -14
- data/install/Launcher.bat +59 -59
- data/install/Rakefile +61 -61
- data/install/config/data/crc.txt +134 -133
- data/install/config/system/system.txt +29 -29
- data/install/config/targets/COSMOS/cmd_tlm/cosmos_server_cmds.txt +41 -41
- data/install/config/targets/COSMOS/cmd_tlm/cosmos_server_tlm.txt +15 -15
- data/install/config/targets/COSMOS/cmd_tlm_server.txt +6 -6
- data/install/config/targets/COSMOS/screens/limits_change.txt +20 -20
- data/install/config/targets/COSMOS/screens/version.txt +19 -19
- data/install/config/targets/COSMOS/target.txt +8 -8
- data/install/config/tools/cmd_tlm_server/cmd_tlm_server.txt +2 -2
- data/install/config/tools/data_viewer/data_viewer.txt +3 -3
- data/install/config/tools/handbook_creator/handbook_creator.txt +49 -49
- data/install/config/tools/handbook_creator/templates/command_packets.html.erb +86 -86
- data/install/config/tools/handbook_creator/templates/command_toc.html.erb +38 -38
- data/install/config/tools/handbook_creator/templates/footer.html.erb +9 -9
- data/install/config/tools/handbook_creator/templates/header.html.erb +25 -25
- data/install/config/tools/handbook_creator/templates/limits_groups.html.erb +13 -13
- data/install/config/tools/handbook_creator/templates/nav.html.erb +27 -27
- data/install/config/tools/handbook_creator/templates/overview.html.erb +1 -1
- data/install/config/tools/handbook_creator/templates/pdf_cover.html.erb +23 -23
- data/install/config/tools/handbook_creator/templates/pdf_footer.html.erb +33 -33
- data/install/config/tools/handbook_creator/templates/pdf_header.html.erb +41 -41
- data/install/config/tools/handbook_creator/templates/telemetry_packets.html.erb +80 -80
- data/install/config/tools/handbook_creator/templates/telemetry_toc.html.erb +38 -38
- data/install/config/tools/handbook_creator/templates/title.html.erb +1 -1
- data/install/config/tools/launcher/launcher.txt +39 -39
- data/install/config/tools/script_runner/script_runner.txt +3 -3
- data/install/config/tools/test_runner/test_runner.txt +8 -8
- data/install/config/tools/tlm_viewer/tlm_viewer.txt +5 -5
- data/install/lib/user_version.rb +3 -3
- data/install/tools/CmdExtractor +15 -15
- data/install/tools/CmdExtractor.bat +59 -59
- data/install/tools/CmdSender +15 -15
- data/install/tools/CmdSender.bat +59 -59
- data/install/tools/CmdTlmServer +15 -15
- data/install/tools/CmdTlmServer.bat +59 -59
- data/install/tools/DataViewer +15 -15
- data/install/tools/DataViewer.bat +59 -59
- data/install/tools/HandbookCreator +15 -15
- data/install/tools/HandbookCreator.bat +61 -61
- data/install/tools/Launcher +15 -15
- data/install/tools/Launcher.bat +59 -59
- data/install/tools/LimitsMonitor +15 -15
- data/install/tools/LimitsMonitor.bat +59 -59
- data/install/tools/OpenGLBuilder +15 -15
- data/install/tools/OpenGLBuilder.bat +59 -59
- data/install/tools/PacketViewer +15 -15
- data/install/tools/PacketViewer.bat +59 -59
- data/install/tools/Replay +15 -15
- data/install/tools/Replay.bat +59 -59
- data/install/tools/ScriptRunner +15 -15
- data/install/tools/ScriptRunner.bat +59 -59
- data/install/tools/TableManager +15 -15
- data/install/tools/TableManager.bat +59 -59
- data/install/tools/TestRunner +15 -15
- data/install/tools/TestRunner.bat +59 -59
- data/install/tools/TlmExtractor +15 -15
- data/install/tools/TlmExtractor.bat +59 -59
- data/install/tools/TlmGrapher +15 -15
- data/install/tools/TlmGrapher.bat +59 -59
- data/install/tools/TlmViewer +15 -15
- data/install/tools/TlmViewer.bat +59 -59
- data/install/tools/mac/CmdExtractor.app/Contents/Info.plist +38 -38
- data/install/tools/mac/CmdExtractor.app/Contents/MacOS/CmdExtractor.rb +15 -15
- data/install/tools/mac/CmdExtractor.app/Contents/MacOS/main.sh +6 -6
- data/install/tools/mac/CmdSender.app/Contents/Info.plist +38 -38
- data/install/tools/mac/CmdSender.app/Contents/MacOS/CmdSender.rb +15 -15
- data/install/tools/mac/CmdSender.app/Contents/MacOS/main.sh +6 -6
- data/install/tools/mac/CmdTlmServer.app/Contents/Info.plist +38 -38
- data/install/tools/mac/CmdTlmServer.app/Contents/MacOS/CmdTlmServer.rb +15 -15
- data/install/tools/mac/CmdTlmServer.app/Contents/MacOS/main.sh +6 -6
- data/install/tools/mac/DataViewer.app/Contents/Info.plist +38 -38
- data/install/tools/mac/DataViewer.app/Contents/MacOS/DataViewer.rb +15 -15
- data/install/tools/mac/DataViewer.app/Contents/MacOS/main.sh +6 -6
- data/install/tools/mac/HandbookCreator.app/Contents/Info.plist +38 -38
- data/install/tools/mac/HandbookCreator.app/Contents/MacOS/HandbookCreator.rb +15 -15
- data/install/tools/mac/HandbookCreator.app/Contents/MacOS/main.sh +6 -6
- data/install/tools/mac/Launcher.app/Contents/Info.plist +38 -38
- data/install/tools/mac/Launcher.app/Contents/MacOS/Launcher.rb +15 -15
- data/install/tools/mac/Launcher.app/Contents/MacOS/main.sh +6 -6
- data/install/tools/mac/LimitsMonitor.app/Contents/Info.plist +38 -38
- data/install/tools/mac/LimitsMonitor.app/Contents/MacOS/LimitsMonitor.rb +15 -15
- data/install/tools/mac/LimitsMonitor.app/Contents/MacOS/main.sh +6 -6
- data/install/tools/mac/OpenGLBuilder.app/Contents/Info.plist +38 -38
- data/install/tools/mac/OpenGLBuilder.app/Contents/MacOS/OpenGLBuilder.rb +15 -15
- data/install/tools/mac/OpenGLBuilder.app/Contents/MacOS/main.sh +6 -6
- data/install/tools/mac/PacketViewer.app/Contents/Info.plist +38 -38
- data/install/tools/mac/PacketViewer.app/Contents/MacOS/PacketViewer.rb +15 -15
- data/install/tools/mac/PacketViewer.app/Contents/MacOS/main.sh +6 -6
- data/install/tools/mac/Replay.app/Contents/Info.plist +38 -38
- data/install/tools/mac/Replay.app/Contents/MacOS/Replay.rb +15 -15
- data/install/tools/mac/Replay.app/Contents/MacOS/main.sh +6 -6
- data/install/tools/mac/ScriptRunner.app/Contents/Info.plist +38 -38
- data/install/tools/mac/ScriptRunner.app/Contents/MacOS/ScriptRunner.rb +15 -15
- data/install/tools/mac/ScriptRunner.app/Contents/MacOS/main.sh +6 -6
- data/install/tools/mac/TableManager.app/Contents/Info.plist +38 -38
- data/install/tools/mac/TableManager.app/Contents/MacOS/TableManager.rb +15 -15
- data/install/tools/mac/TableManager.app/Contents/MacOS/main.sh +6 -6
- data/install/tools/mac/TestRunner.app/Contents/Info.plist +38 -38
- data/install/tools/mac/TestRunner.app/Contents/MacOS/TestRunner.rb +15 -15
- data/install/tools/mac/TestRunner.app/Contents/MacOS/main.sh +6 -6
- data/install/tools/mac/TlmExtractor.app/Contents/Info.plist +38 -38
- data/install/tools/mac/TlmExtractor.app/Contents/MacOS/TlmExtractor.rb +15 -15
- data/install/tools/mac/TlmExtractor.app/Contents/MacOS/main.sh +6 -6
- data/install/tools/mac/TlmGrapher.app/Contents/Info.plist +38 -38
- data/install/tools/mac/TlmGrapher.app/Contents/MacOS/TlmGrapher.rb +15 -15
- data/install/tools/mac/TlmGrapher.app/Contents/MacOS/main.sh +6 -6
- data/install/tools/mac/TlmViewer.app/Contents/Info.plist +38 -38
- data/install/tools/mac/TlmViewer.app/Contents/MacOS/TlmViewer.rb +15 -15
- data/install/tools/mac/TlmViewer.app/Contents/MacOS/main.sh +6 -6
- data/lib/cosmos.rb +63 -63
- data/lib/cosmos/ccsds/ccsds_packet.rb +63 -63
- data/lib/cosmos/ccsds/ccsds_parser.rb +143 -143
- data/lib/cosmos/config/config_parser.rb +324 -324
- data/lib/cosmos/conversions.rb +13 -13
- data/lib/cosmos/conversions/conversion.rb +47 -47
- data/lib/cosmos/conversions/generic_conversion.rb +55 -55
- data/lib/cosmos/conversions/new_packet_log_conversion.rb +45 -45
- data/lib/cosmos/conversions/polynomial_conversion.rb +57 -57
- data/lib/cosmos/conversions/processor_conversion.rb +46 -46
- data/lib/cosmos/conversions/received_count_conversion.rb +33 -33
- data/lib/cosmos/conversions/received_time_formatted_conversion.rb +37 -37
- data/lib/cosmos/conversions/received_time_seconds_conversion.rb +37 -37
- data/lib/cosmos/conversions/segmented_polynomial_conversion.rb +128 -128
- data/lib/cosmos/conversions/unix_time_conversion.rb +50 -50
- data/lib/cosmos/conversions/unix_time_formatted_conversion.rb +44 -44
- data/lib/cosmos/conversions/unix_time_seconds_conversion.rb +44 -44
- data/lib/cosmos/core_ext.rb +18 -18
- data/lib/cosmos/core_ext/array.rb +354 -354
- data/lib/cosmos/core_ext/class.rb +51 -51
- data/lib/cosmos/core_ext/cosmos_io.rb +29 -29
- data/lib/cosmos/core_ext/exception.rb +52 -52
- data/lib/cosmos/core_ext/file.rb +75 -75
- data/lib/cosmos/core_ext/hash.rb +28 -28
- data/lib/cosmos/core_ext/io.rb +75 -75
- data/lib/cosmos/core_ext/kernel.rb +38 -38
- data/lib/cosmos/core_ext/math.rb +119 -119
- data/lib/cosmos/core_ext/matrix.rb +146 -146
- data/lib/cosmos/core_ext/objectspace.rb +29 -29
- data/lib/cosmos/core_ext/range.rb +22 -22
- data/lib/cosmos/core_ext/socket.rb +32 -32
- data/lib/cosmos/core_ext/string.rb +310 -310
- data/lib/cosmos/core_ext/stringio.rb +24 -24
- data/lib/cosmos/core_ext/time.rb +446 -446
- data/lib/cosmos/gui/choosers/combobox_chooser.rb +130 -130
- data/lib/cosmos/gui/choosers/file_chooser.rb +68 -68
- data/lib/cosmos/gui/choosers/float_chooser.rb +82 -82
- data/lib/cosmos/gui/choosers/integer_chooser.rb +80 -80
- data/lib/cosmos/gui/choosers/string_chooser.rb +53 -53
- data/lib/cosmos/gui/choosers/telemetry_chooser.rb +317 -317
- data/lib/cosmos/gui/dialogs/about_dialog.rb +128 -128
- data/lib/cosmos/gui/dialogs/calendar_dialog.rb +136 -136
- data/lib/cosmos/gui/dialogs/cmd_details_dialog.rb +52 -52
- data/lib/cosmos/gui/dialogs/cmd_tlm_raw_dialog.rb +149 -149
- data/lib/cosmos/gui/dialogs/details_dialog.rb +174 -174
- data/lib/cosmos/gui/dialogs/exception_dialog.rb +97 -97
- data/lib/cosmos/gui/dialogs/exception_list_dialog.rb +59 -59
- data/lib/cosmos/gui/dialogs/find_replace_dialog.rb +196 -196
- data/lib/cosmos/gui/dialogs/legal_dialog.rb +169 -168
- data/lib/cosmos/gui/dialogs/packet_log_dialog.rb +118 -118
- data/lib/cosmos/gui/dialogs/progress_dialog.rb +270 -262
- data/lib/cosmos/gui/dialogs/pry_dialog.rb +165 -161
- data/lib/cosmos/gui/dialogs/scroll_text_dialog.rb +37 -37
- data/lib/cosmos/gui/dialogs/select_dialog.rb +54 -54
- data/lib/cosmos/gui/dialogs/set_tlm_dialog.rb +131 -131
- data/lib/cosmos/gui/dialogs/splash.rb +113 -113
- data/lib/cosmos/gui/dialogs/tlm_details_dialog.rb +206 -206
- data/lib/cosmos/gui/dialogs/tlm_edit_dialog.rb +81 -81
- data/lib/cosmos/gui/line_graph/line_graph.rb +456 -456
- data/lib/cosmos/gui/line_graph/line_graph_dialog.rb +34 -34
- data/lib/cosmos/gui/line_graph/line_graph_drawing.rb +494 -494
- data/lib/cosmos/gui/line_graph/line_graph_popups.rb +116 -116
- data/lib/cosmos/gui/line_graph/line_graph_scaling.rb +460 -460
- data/lib/cosmos/gui/line_graph/line_graph_script.rb +26 -26
- data/lib/cosmos/gui/line_graph/lines.rb +290 -290
- data/lib/cosmos/gui/line_graph/overview_graph.rb +459 -459
- data/lib/cosmos/gui/opengl/earth_model.rb +22 -22
- data/lib/cosmos/gui/opengl/gl_bounds.rb +67 -67
- data/lib/cosmos/gui/opengl/gl_light.rb +39 -39
- data/lib/cosmos/gui/opengl/gl_material.rb +29 -29
- data/lib/cosmos/gui/opengl/gl_scene.rb +72 -72
- data/lib/cosmos/gui/opengl/gl_shape.rb +146 -146
- data/lib/cosmos/gui/opengl/gl_viewer.rb +724 -712
- data/lib/cosmos/gui/opengl/gl_viewport.rb +35 -35
- data/lib/cosmos/gui/opengl/moon_model.rb +22 -22
- data/lib/cosmos/gui/opengl/opengl.rb +8 -8
- data/lib/cosmos/gui/opengl/stl_reader.rb +211 -211
- data/lib/cosmos/gui/opengl/stl_shape.rb +124 -124
- data/lib/cosmos/gui/opengl/texture_mapped_sphere.rb +202 -202
- data/lib/cosmos/gui/qt.rb +813 -786
- data/lib/cosmos/gui/qt_tool.rb +378 -373
- data/lib/cosmos/gui/text/completion.rb +381 -381
- data/lib/cosmos/gui/text/completion_line_edit.rb +30 -30
- data/lib/cosmos/gui/text/completion_text_edit.rb +179 -179
- data/lib/cosmos/gui/text/ruby_editor.rb +395 -395
- data/lib/cosmos/gui/utilities/screenshot.rb +25 -25
- data/lib/cosmos/gui/utilities/script_module_gui.rb +203 -203
- data/lib/cosmos/gui/widgets/full_text_search_line_edit.rb +161 -161
- data/lib/cosmos/gui/widgets/packet_log_frame.rb +305 -305
- data/lib/cosmos/gui/widgets/realtime_button_bar.rb +98 -98
- data/lib/cosmos/interfaces.rb +11 -11
- data/lib/cosmos/interfaces/cmd_tlm_server_interface.rb +153 -149
- data/lib/cosmos/interfaces/interface.rb +213 -213
- data/lib/cosmos/interfaces/linc_interface.rb +360 -360
- data/lib/cosmos/interfaces/serial_interface.rb +76 -76
- data/lib/cosmos/interfaces/simulated_target_interface.rb +129 -128
- data/lib/cosmos/interfaces/stream_interface.rb +156 -156
- data/lib/cosmos/interfaces/tcpip_client_interface.rb +60 -60
- data/lib/cosmos/interfaces/tcpip_server_interface.rb +154 -154
- data/lib/cosmos/interfaces/udp_interface.rb +173 -173
- data/lib/cosmos/io/buffered_file.rb +11 -11
- data/lib/cosmos/io/cosmos_snmp.rb +50 -50
- data/lib/cosmos/io/io_multiplexer.rb +89 -89
- data/lib/cosmos/io/json_drb.rb +344 -320
- data/lib/cosmos/io/json_drb_object.rb +137 -137
- data/lib/cosmos/io/json_rpc.rb +365 -365
- data/lib/cosmos/io/posix_serial_driver.rb +145 -145
- data/lib/cosmos/io/raw_logger.rb +174 -174
- data/lib/cosmos/io/raw_logger_pair.rb +71 -71
- data/lib/cosmos/io/serial_driver.rb +85 -85
- data/lib/cosmos/io/stderr.rb +36 -36
- data/lib/cosmos/io/stdout.rb +36 -36
- data/lib/cosmos/io/tcpip_server.rb +583 -532
- data/lib/cosmos/io/udp_sockets.rb +152 -152
- data/lib/cosmos/io/win32_serial_driver.rb +147 -147
- data/lib/cosmos/packet_logs.rb +6 -6
- data/lib/cosmos/packet_logs/meta_packet_log_writer.rb +107 -107
- data/lib/cosmos/packet_logs/packet_log_reader.rb +441 -439
- data/lib/cosmos/packet_logs/packet_log_writer.rb +321 -309
- data/lib/cosmos/packet_logs/packet_log_writer_pair.rb +30 -30
- data/lib/cosmos/packets/binary_accessor.rb +921 -921
- data/lib/cosmos/packets/commands.rb +291 -291
- data/lib/cosmos/packets/limits.rb +263 -263
- data/lib/cosmos/packets/limits_response.rb +38 -38
- data/lib/cosmos/packets/packet.rb +714 -699
- data/lib/cosmos/packets/packet_config.rb +1034 -1034
- data/lib/cosmos/packets/packet_item.rb +317 -317
- data/lib/cosmos/packets/packet_item_limits.rb +128 -128
- data/lib/cosmos/packets/structure.rb +421 -386
- data/lib/cosmos/packets/structure_item.rb +233 -233
- data/lib/cosmos/packets/telemetry.rb +317 -317
- data/lib/cosmos/processors.rb +6 -6
- data/lib/cosmos/processors/new_packet_log_processor.rb +34 -34
- data/lib/cosmos/processors/processor.rb +71 -71
- data/lib/cosmos/processors/statistics_processor.rb +65 -65
- data/lib/cosmos/processors/watermark_processor.rb +44 -44
- data/lib/cosmos/script.rb +9 -9
- data/lib/cosmos/script/extract.rb +115 -115
- data/lib/cosmos/script/script.rb +1513 -1493
- data/lib/cosmos/streams/burst_stream_protocol.rb +25 -25
- data/lib/cosmos/streams/fixed_stream_protocol.rb +111 -111
- data/lib/cosmos/streams/length_stream_protocol.rb +140 -140
- data/lib/cosmos/streams/preidentified_stream_protocol.rb +118 -118
- data/lib/cosmos/streams/serial_stream.rb +152 -143
- data/lib/cosmos/streams/stream.rb +57 -57
- data/lib/cosmos/streams/stream_protocol.rb +369 -369
- data/lib/cosmos/streams/tcpip_client_stream.rb +77 -77
- data/lib/cosmos/streams/tcpip_socket_stream.rb +139 -139
- data/lib/cosmos/streams/template_stream_protocol.rb +140 -140
- data/lib/cosmos/streams/terminated_stream_protocol.rb +81 -81
- data/lib/cosmos/system.rb +4 -4
- data/lib/cosmos/system/system.rb +558 -558
- data/lib/cosmos/system/target.rb +178 -178
- data/lib/cosmos/tools/cmd_extractor/cmd_extractor.rb +254 -253
- data/lib/cosmos/tools/cmd_sender/cmd_sender.rb +716 -716
- data/lib/cosmos/tools/cmd_sender/cmd_sender_item_delegate.rb +77 -77
- data/lib/cosmos/tools/cmd_sender/cmd_sender_text_edit.rb +70 -70
- data/lib/cosmos/tools/cmd_tlm_server/api.rb +936 -940
- data/lib/cosmos/tools/cmd_tlm_server/background_task.rb +46 -46
- data/lib/cosmos/tools/cmd_tlm_server/background_tasks.rb +67 -63
- data/lib/cosmos/tools/cmd_tlm_server/cmd_tlm_server.rb +511 -497
- data/lib/cosmos/tools/cmd_tlm_server/cmd_tlm_server_config.rb +241 -241
- data/lib/cosmos/tools/cmd_tlm_server/cmd_tlm_server_gui.rb +1033 -1008
- data/lib/cosmos/tools/cmd_tlm_server/commanding.rb +112 -112
- data/lib/cosmos/tools/cmd_tlm_server/connections.rb +176 -176
- data/lib/cosmos/tools/cmd_tlm_server/interface_thread.rb +241 -221
- data/lib/cosmos/tools/cmd_tlm_server/interfaces.rb +127 -127
- data/lib/cosmos/tools/cmd_tlm_server/packet_logging.rb +132 -132
- data/lib/cosmos/tools/cmd_tlm_server/router_thread.rb +66 -66
- data/lib/cosmos/tools/cmd_tlm_server/routers.rb +97 -97
- data/lib/cosmos/tools/data_viewer/data_viewer.rb +628 -600
- data/lib/cosmos/tools/data_viewer/data_viewer_component.rb +167 -167
- data/lib/cosmos/tools/data_viewer/dump_component.rb +40 -40
- data/lib/cosmos/tools/handbook_creator/handbook_creator.rb +149 -149
- data/lib/cosmos/tools/handbook_creator/handbook_creator_config.rb +360 -360
- data/lib/cosmos/tools/launcher/launcher.rb +184 -184
- data/lib/cosmos/tools/launcher/launcher_config.rb +175 -167
- data/lib/cosmos/tools/launcher/launcher_multitool.rb +40 -41
- data/lib/cosmos/tools/launcher/launcher_tool.rb +104 -104
- data/lib/cosmos/tools/limits_monitor/limits_monitor.rb +796 -768
- data/lib/cosmos/tools/opengl_builder/opengl_builder.rb +416 -416
- data/lib/cosmos/tools/opengl_builder/scene_config.rb +118 -118
- data/lib/cosmos/tools/packet_viewer/packet_viewer.rb +525 -525
- data/lib/cosmos/tools/replay/replay.rb +495 -488
- data/lib/cosmos/tools/replay/replay_server.rb +91 -91
- data/lib/cosmos/tools/script_runner/script_audit.rb +147 -139
- data/lib/cosmos/tools/script_runner/script_runner.rb +914 -914
- data/lib/cosmos/tools/script_runner/script_runner_config.rb +40 -40
- data/lib/cosmos/tools/script_runner/script_runner_frame.rb +1892 -1859
- data/lib/cosmos/tools/table_manager/table.rb +70 -70
- data/lib/cosmos/tools/table_manager/table_config.rb +764 -764
- data/lib/cosmos/tools/table_manager/table_item.rb +74 -74
- data/lib/cosmos/tools/table_manager/table_manager.rb +1065 -1065
- data/lib/cosmos/tools/table_manager/table_manager_core.rb +539 -539
- data/lib/cosmos/tools/test_runner/results_writer.rb +283 -283
- data/lib/cosmos/tools/test_runner/test.rb +480 -480
- data/lib/cosmos/tools/test_runner/test_runner.rb +1157 -1157
- data/lib/cosmos/tools/test_runner/test_runner_chooser.rb +338 -338
- data/lib/cosmos/tools/tlm_extractor/text_item_chooser.rb +60 -60
- data/lib/cosmos/tools/tlm_extractor/tlm_extractor.rb +1008 -1008
- data/lib/cosmos/tools/tlm_extractor/tlm_extractor_config.rb +371 -371
- data/lib/cosmos/tools/tlm_extractor/tlm_extractor_processor.rb +60 -60
- data/lib/cosmos/tools/tlm_grapher/data_object_adders/housekeeping_data_object_adder.rb +75 -75
- data/lib/cosmos/tools/tlm_grapher/data_object_adders/singlexy_data_object_adder.rb +44 -44
- data/lib/cosmos/tools/tlm_grapher/data_object_adders/xy_data_object_adder.rb +94 -94
- data/lib/cosmos/tools/tlm_grapher/data_object_editors/data_object_editor.rb +61 -61
- data/lib/cosmos/tools/tlm_grapher/data_object_editors/housekeeping_data_object_editor.rb +180 -180
- data/lib/cosmos/tools/tlm_grapher/data_object_editors/linegraph_data_object_editor.rb +141 -141
- data/lib/cosmos/tools/tlm_grapher/data_object_editors/singlexy_data_object_editor.rb +30 -30
- data/lib/cosmos/tools/tlm_grapher/data_object_editors/xy_data_object_editor.rb +173 -173
- data/lib/cosmos/tools/tlm_grapher/data_objects/data_object.rb +177 -177
- data/lib/cosmos/tools/tlm_grapher/data_objects/housekeeping_data_object.rb +412 -409
- data/lib/cosmos/tools/tlm_grapher/data_objects/linegraph_data_object.rb +176 -176
- data/lib/cosmos/tools/tlm_grapher/data_objects/singlexy_data_object.rb +25 -25
- data/lib/cosmos/tools/tlm_grapher/data_objects/xy_data_object.rb +323 -320
- data/lib/cosmos/tools/tlm_grapher/plot_editors/linegraph_plot_editor.rb +181 -181
- data/lib/cosmos/tools/tlm_grapher/plot_editors/plot_editor.rb +28 -28
- data/lib/cosmos/tools/tlm_grapher/plot_editors/singlexy_plot_editor.rb +30 -30
- data/lib/cosmos/tools/tlm_grapher/plot_editors/xy_plot_editor.rb +59 -59
- data/lib/cosmos/tools/tlm_grapher/plot_gui_objects/linegraph_plot_gui_object.rb +172 -172
- data/lib/cosmos/tools/tlm_grapher/plot_gui_objects/singlexy_plot_gui_object.rb +27 -27
- data/lib/cosmos/tools/tlm_grapher/plot_gui_objects/xy_plot_gui_object.rb +74 -74
- data/lib/cosmos/tools/tlm_grapher/plots/linegraph_plot.rb +201 -201
- data/lib/cosmos/tools/tlm_grapher/plots/plot.rb +69 -69
- data/lib/cosmos/tools/tlm_grapher/plots/singlexy_plot.rb +20 -20
- data/lib/cosmos/tools/tlm_grapher/plots/xy_plot.rb +61 -61
- data/lib/cosmos/tools/tlm_grapher/tabbed_plots/overview_tabbed_plots.rb +1278 -1278
- data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_config.rb +430 -430
- data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_data_object_editor.rb +107 -107
- data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_logfile_thread.rb +111 -95
- data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_plot_editor.rb +101 -101
- data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_realtime_thread.rb +72 -66
- data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_tab.rb +57 -57
- data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_tool.rb +1004 -1004
- data/lib/cosmos/tools/tlm_grapher/tlm_grapher.rb +87 -87
- data/lib/cosmos/tools/tlm_viewer/screen.rb +486 -458
- data/lib/cosmos/tools/tlm_viewer/tlm_viewer.rb +563 -544
- data/lib/cosmos/tools/tlm_viewer/tlm_viewer_config.rb +287 -287
- data/lib/cosmos/tools/tlm_viewer/widgets.rb +53 -53
- data/lib/cosmos/tools/tlm_viewer/widgets/aging_widget.rb +110 -110
- data/lib/cosmos/tools/tlm_viewer/widgets/array_widget.rb +70 -70
- data/lib/cosmos/tools/tlm_viewer/widgets/block_widget.rb +61 -61
- data/lib/cosmos/tools/tlm_viewer/widgets/button_widget.rb +39 -39
- data/lib/cosmos/tools/tlm_viewer/widgets/canvas_widget.rb +62 -62
- data/lib/cosmos/tools/tlm_viewer/widgets/canvasimage_widget.rb +41 -41
- data/lib/cosmos/tools/tlm_viewer/widgets/canvasimagevalue_widget.rb +57 -57
- data/lib/cosmos/tools/tlm_viewer/widgets/canvaslabel_widget.rb +37 -37
- data/lib/cosmos/tools/tlm_viewer/widgets/canvaslabelvalue_widget.rb +56 -56
- data/lib/cosmos/tools/tlm_viewer/widgets/canvasline_widget.rb +55 -55
- data/lib/cosmos/tools/tlm_viewer/widgets/canvaslinevalue_widget.rb +66 -66
- data/lib/cosmos/tools/tlm_viewer/widgets/canvasvalue_widget.rb +124 -124
- data/lib/cosmos/tools/tlm_viewer/widgets/checkbutton_widget.rb +31 -31
- data/lib/cosmos/tools/tlm_viewer/widgets/combobox_widget.rb +30 -30
- data/lib/cosmos/tools/tlm_viewer/widgets/formatfontvalue_widget.rb +36 -36
- data/lib/cosmos/tools/tlm_viewer/widgets/formatvalue_widget.rb +35 -35
- data/lib/cosmos/tools/tlm_viewer/widgets/horizontal_widget.rb +27 -27
- data/lib/cosmos/tools/tlm_viewer/widgets/horizontalbox_widget.rb +31 -31
- data/lib/cosmos/tools/tlm_viewer/widgets/horizontalline_widget.rb +26 -26
- data/lib/cosmos/tools/tlm_viewer/widgets/label_widget.rb +29 -29
- data/lib/cosmos/tools/tlm_viewer/widgets/labelformatvalue_widget.rb +39 -39
- data/lib/cosmos/tools/tlm_viewer/widgets/labelprogressbar_widget.rb +38 -38
- data/lib/cosmos/tools/tlm_viewer/widgets/labeltrendlimitsbar_widget.rb +38 -38
- data/lib/cosmos/tools/tlm_viewer/widgets/labelvalue_widget.rb +39 -39
- data/lib/cosmos/tools/tlm_viewer/widgets/labelvaluedesc_widget.rb +42 -42
- data/lib/cosmos/tools/tlm_viewer/widgets/labelvaluelimitsbar_widget.rb +37 -37
- data/lib/cosmos/tools/tlm_viewer/widgets/labelvaluerangebar_widget.rb +37 -37
- data/lib/cosmos/tools/tlm_viewer/widgets/layout_widget.rb +34 -34
- data/lib/cosmos/tools/tlm_viewer/widgets/limitsbar_widget.rb +178 -178
- data/lib/cosmos/tools/tlm_viewer/widgets/linegraph_widget.rb +54 -54
- data/lib/cosmos/tools/tlm_viewer/widgets/matrixbycolumns_widget.rb +47 -47
- data/lib/cosmos/tools/tlm_viewer/widgets/multi_widget.rb +116 -116
- data/lib/cosmos/tools/tlm_viewer/widgets/progressbar_widget.rb +34 -34
- data/lib/cosmos/tools/tlm_viewer/widgets/radiobutton_widget.rb +30 -30
- data/lib/cosmos/tools/tlm_viewer/widgets/rangebar_widget.rb +57 -57
- data/lib/cosmos/tools/tlm_viewer/widgets/screenshotbutton_widget.rb +34 -34
- data/lib/cosmos/tools/tlm_viewer/widgets/scrollwindow_widget.rb +35 -35
- data/lib/cosmos/tools/tlm_viewer/widgets/sectionheader_widget.rb +33 -33
- data/lib/cosmos/tools/tlm_viewer/widgets/tabbook_widget.rb +26 -26
- data/lib/cosmos/tools/tlm_viewer/widgets/tabitem_widget.rb +28 -28
- data/lib/cosmos/tools/tlm_viewer/widgets/textbox_widget.rb +47 -47
- data/lib/cosmos/tools/tlm_viewer/widgets/textfield_widget.rb +26 -26
- data/lib/cosmos/tools/tlm_viewer/widgets/timegraph_widget.rb +88 -88
- data/lib/cosmos/tools/tlm_viewer/widgets/title_widget.rb +27 -27
- data/lib/cosmos/tools/tlm_viewer/widgets/trendbar_widget.rb +130 -130
- data/lib/cosmos/tools/tlm_viewer/widgets/trendlimitsbar_widget.rb +46 -46
- data/lib/cosmos/tools/tlm_viewer/widgets/value_widget.rb +43 -43
- data/lib/cosmos/tools/tlm_viewer/widgets/valuelimitsbar_widget.rb +37 -37
- data/lib/cosmos/tools/tlm_viewer/widgets/valuerangebar_widget.rb +37 -37
- data/lib/cosmos/tools/tlm_viewer/widgets/vertical_widget.rb +35 -35
- data/lib/cosmos/tools/tlm_viewer/widgets/verticalbox_widget.rb +37 -37
- data/lib/cosmos/tools/tlm_viewer/widgets/widget.rb +257 -257
- data/lib/cosmos/top_level.rb +647 -596
- data/lib/cosmos/utilities.rb +11 -10
- data/lib/cosmos/utilities/crc.rb +166 -166
- data/lib/cosmos/utilities/csv.rb +83 -83
- data/lib/cosmos/utilities/logger.rb +137 -137
- data/lib/cosmos/utilities/low_fragmentation_array.rb +11 -11
- data/lib/cosmos/utilities/message_log.rb +74 -74
- data/lib/cosmos/utilities/quaternion.rb +258 -258
- data/lib/cosmos/utilities/ruby_lex_utils.rb +313 -313
- data/lib/cosmos/utilities/simulated_target.rb +99 -99
- data/lib/cosmos/utilities/sleeper.rb +44 -0
- data/lib/cosmos/version.rb +12 -12
- data/lib/cosmos/win32/excel.rb +66 -66
- data/lib/cosmos/win32/win32.rb +387 -387
- data/lib/cosmos/win32/win32_main.rb +311 -311
- data/roodi.yml +24 -24
- data/run_gui_tests.bat +32 -32
- data/spec/ccsds/ccsds_packet_spec.rb +67 -67
- data/spec/ccsds/ccsds_parser_spec.rb +148 -148
- data/spec/config/config_parser_spec.rb +322 -322
- data/spec/conversions/conversion_spec.rb +31 -31
- data/spec/conversions/generic_conversion_spec.rb +45 -45
- data/spec/conversions/new_packet_log_conversion_spec.rb +39 -39
- data/spec/conversions/polynomial_conversion_spec.rb +40 -40
- data/spec/conversions/processor_conversion_spec.rb +45 -45
- data/spec/conversions/received_count_conversion_spec.rb +43 -43
- data/spec/conversions/received_time_formatted_conversion_spec.rb +49 -49
- data/spec/conversions/received_time_seconds_conversion_spec.rb +50 -50
- data/spec/conversions/segmented_polynomial_conversion_spec.rb +51 -51
- data/spec/conversions/unix_time_formatted_conversion_spec.rb +74 -74
- data/spec/conversions/unix_time_seconds_conversion_spec.rb +76 -76
- data/spec/core_ext/array_spec.rb +186 -186
- data/spec/core_ext/class_spec.rb +36 -36
- data/spec/core_ext/cosmos_io_spec.rb +77 -77
- data/spec/core_ext/exception_spec.rb +91 -91
- data/spec/core_ext/file_spec.rb +72 -72
- data/spec/core_ext/hash_spec.rb +24 -24
- data/spec/core_ext/io_spec.rb +46 -46
- data/spec/core_ext/kernel_spec.rb +54 -54
- data/spec/core_ext/math_spec.rb +116 -116
- data/spec/core_ext/matrix_spec.rb +66 -66
- data/spec/core_ext/objectspace_spec.rb +29 -29
- data/spec/core_ext/range_spec.rb +21 -21
- data/spec/core_ext/socket_spec.rb +32 -32
- data/spec/core_ext/string_spec.rb +223 -223
- data/spec/core_ext/stringio_spec.rb +21 -21
- data/spec/core_ext/time_spec.rb +151 -151
- data/spec/gui/line_graph/line_clip_spec.rb +322 -322
- data/spec/install/config/system/system.txt +33 -33
- data/spec/install/config/targets/COSMOS/cmd_tlm/cosmos_server_cmds.txt +41 -41
- data/spec/install/config/targets/COSMOS/cmd_tlm/cosmos_server_tlm.txt +15 -15
- data/spec/install/config/targets/COSMOS/cmd_tlm_server.txt +6 -6
- data/spec/install/config/targets/COSMOS/screens/limits_change.txt +20 -20
- data/spec/install/config/targets/COSMOS/screens/version.txt +19 -19
- data/spec/install/config/targets/COSMOS/target.txt +5 -5
- data/spec/install/config/targets/INST/cmd_tlm/inst_cmd_linc.txt +30 -30
- data/spec/install/config/targets/INST/cmd_tlm/inst_cmds.txt +111 -111
- data/spec/install/config/targets/INST/cmd_tlm/inst_tlm.txt +236 -236
- data/spec/install/config/targets/INST/cmd_tlm/inst_tlm_linc.txt +25 -25
- data/spec/install/config/targets/INST/cmd_tlm_server.txt +5 -5
- data/spec/install/config/targets/INST/lib/sim_inst.rb +305 -294
- data/spec/install/config/targets/INST/target.txt +10 -10
- data/spec/install/config/targets/META/cmd_tlm/meta_cmd.txt +4 -4
- data/spec/install/config/targets/META/cmd_tlm/meta_tlm.txt +4 -4
- data/spec/install/config/targets/SYSTEM/cmd_tlm/limits_groups.txt +7 -7
- data/spec/interfaces/cmd_tlm_server_interface_spec.rb +150 -150
- data/spec/interfaces/interface_spec.rb +130 -131
- data/spec/interfaces/linc_interface_spec.rb +199 -199
- data/spec/interfaces/serial_interface_spec.rb +56 -56
- data/spec/interfaces/simulated_target_interface_spec.rb +128 -128
- data/spec/interfaces/stream_interface_spec.rb +157 -157
- data/spec/interfaces/tcpip_client_interface_spec.rb +54 -54
- data/spec/interfaces/tcpip_server_interface_spec.rb +151 -151
- data/spec/interfaces/udp_interface_spec.rb +175 -177
- data/spec/io/buffered_file_spec.rb +113 -113
- data/spec/io/io_multiplexer_spec.rb +94 -94
- data/spec/io/json_drb_object_spec.rb +99 -99
- data/spec/io/json_drb_spec.rb +311 -311
- data/spec/io/json_rpc_spec.rb +264 -264
- data/spec/io/raw_logger_pair_spec.rb +76 -76
- data/spec/io/raw_logger_spec.rb +133 -133
- data/spec/io/serial_driver_spec.rb +61 -61
- data/spec/io/stderr_spec.rb +32 -32
- data/spec/io/stdout_spec.rb +32 -32
- data/spec/io/tcpip_server_spec.rb +338 -338
- data/spec/io/udp_sockets_spec.rb +94 -94
- data/spec/io/win32_serial_driver_spec.rb +88 -88
- data/spec/packet_logs/meta_packet_log_writer_spec.rb +170 -170
- data/spec/packet_logs/packet_log_reader_spec.rb +408 -408
- data/spec/packet_logs/packet_log_writer_pair_spec.rb +30 -30
- data/spec/packet_logs/packet_log_writer_spec.rb +223 -223
- data/spec/packets/binary_accessor_spec.rb +2073 -2073
- data/spec/packets/commands_spec.rb +369 -369
- data/spec/packets/limits_response_spec.rb +25 -25
- data/spec/packets/limits_spec.rb +326 -326
- data/spec/packets/packet_config_spec.rb +1620 -1620
- data/spec/packets/packet_item_limits_spec.rb +161 -161
- data/spec/packets/packet_item_spec.rb +386 -386
- data/spec/packets/packet_spec.rb +1057 -949
- data/spec/packets/structure_item_spec.rb +195 -195
- data/spec/packets/structure_spec.rb +419 -419
- data/spec/packets/telemetry_spec.rb +535 -535
- data/spec/processors/new_packet_log_processor_spec.rb +39 -39
- data/spec/processors/processor_spec.rb +55 -55
- data/spec/processors/statistics_processor_spec.rb +60 -60
- data/spec/processors/watermark_processor_spec.rb +51 -51
- data/spec/script/script_spec.rb +654 -654
- data/spec/spec_helper.rb +154 -148
- data/spec/streams/burst_stream_protocol_spec.rb +32 -32
- data/spec/streams/fixed_stream_protocol_spec.rb +110 -110
- data/spec/streams/length_stream_protocol_spec.rb +297 -297
- data/spec/streams/preidentified_stream_protocol_spec.rb +118 -118
- data/spec/streams/serial_stream_spec.rb +105 -105
- data/spec/streams/stream_protocol_spec.rb +332 -332
- data/spec/streams/stream_spec.rb +29 -29
- data/spec/streams/tcpip_client_stream_spec.rb +54 -54
- data/spec/streams/tcpip_socket_stream_spec.rb +146 -146
- data/spec/streams/template_stream_protocol_spec.rb +151 -151
- data/spec/streams/terminated_stream_protocol_spec.rb +123 -123
- data/spec/system/system_spec.rb +645 -645
- data/spec/system/target_spec.rb +248 -248
- data/spec/tools/cmd_tlm_server/api_spec.rb +1087 -1113
- data/spec/tools/cmd_tlm_server/background_task_spec.rb +32 -32
- data/spec/tools/cmd_tlm_server/background_tasks_spec.rb +81 -81
- data/spec/tools/cmd_tlm_server/cmd_tlm_server_config_spec.rb +411 -411
- data/spec/tools/cmd_tlm_server/cmd_tlm_server_spec.rb +415 -415
- data/spec/tools/cmd_tlm_server/commanding_spec.rb +123 -123
- data/spec/tools/cmd_tlm_server/connections_spec.rb +147 -147
- data/spec/tools/cmd_tlm_server/interface_thread_spec.rb +306 -306
- data/spec/tools/cmd_tlm_server/interfaces_spec.rb +252 -238
- data/spec/tools/cmd_tlm_server/packet_logging_spec.rb +143 -143
- data/spec/tools/cmd_tlm_server/router_thread_spec.rb +98 -101
- data/spec/tools/cmd_tlm_server/routers_spec.rb +223 -208
- data/spec/top_level/top_level_spec.rb +334 -321
- data/spec/utilities/crc_spec.rb +45 -45
- data/spec/utilities/csv_spec.rb +97 -97
- data/spec/utilities/logger_spec.rb +102 -102
- data/spec/utilities/message_log_spec.rb +89 -89
- data/spec/utilities/quaternion_spec.rb +107 -107
- data/spec/utilities/ruby_lex_utils_spec.rb +86 -86
- data/tasks/manifest.rake +22 -22
- data/tasks/spec.rake +23 -23
- metadata +18 -2
data/lib/cosmos/gui/qt_tool.rb
CHANGED
|
@@ -1,373 +1,378 @@
|
|
|
1
|
-
# encoding: ascii-8bit
|
|
2
|
-
|
|
3
|
-
# Copyright 2014 Ball Aerospace & Technologies Corp.
|
|
4
|
-
# All Rights Reserved.
|
|
5
|
-
#
|
|
6
|
-
# This program is free software; you can modify and/or redistribute it
|
|
7
|
-
# under the terms of the GNU General Public License
|
|
8
|
-
# as published by the Free Software Foundation; version 3 with
|
|
9
|
-
# attribution addendums as found in the LICENSE.txt
|
|
10
|
-
|
|
11
|
-
require 'cosmos'
|
|
12
|
-
require 'cosmos/gui/qt'
|
|
13
|
-
require 'cosmos/gui/dialogs/about_dialog'
|
|
14
|
-
require 'cosmos/gui/dialogs/exception_dialog'
|
|
15
|
-
require 'cosmos/gui/dialogs/pry_dialog'
|
|
16
|
-
require 'cosmos/gui/dialogs/scroll_text_dialog'
|
|
17
|
-
require 'ostruct'
|
|
18
|
-
require 'optparse'
|
|
19
|
-
|
|
20
|
-
module Cosmos
|
|
21
|
-
|
|
22
|
-
# Base class of all COSMOS GUI Tools based on QT. It creates the help menu
|
|
23
|
-
# which contains the About menu option. It provides configuration to all
|
|
24
|
-
# tools to remember both the application window location and size across
|
|
25
|
-
# executions. It also redirects all I/O from the application (any printing to
|
|
26
|
-
# stdout or stderr) and creates popups.
|
|
27
|
-
class QtTool < Qt::MainWindow
|
|
28
|
-
slots 'about()'
|
|
29
|
-
|
|
30
|
-
@@redirect_io_thread = nil
|
|
31
|
-
|
|
32
|
-
def initialize(options)
|
|
33
|
-
# Call QT::MainWindow constructor
|
|
34
|
-
super() # MUST BE FIRST - All code before super is executed twice in RubyQt Based classes
|
|
35
|
-
|
|
36
|
-
# Add Path for plugins
|
|
37
|
-
Qt::Application.instance.addLibraryPath(Qt::PLUGIN_PATH) if Kernel.is_windows?
|
|
38
|
-
|
|
39
|
-
# Prevent killing the parent process from killing this GUI application
|
|
40
|
-
Process.setpgrp unless Kernel.is_windows?
|
|
41
|
-
|
|
42
|
-
self.class.redirect_io if options.redirect_io
|
|
43
|
-
|
|
44
|
-
# Configure instance variables
|
|
45
|
-
@options = options
|
|
46
|
-
@about_string = nil
|
|
47
|
-
|
|
48
|
-
self.window_title = options.title
|
|
49
|
-
Cosmos.load_cosmos_icon
|
|
50
|
-
end
|
|
51
|
-
|
|
52
|
-
# Create the @exit_action and the @about_action. The @exit_action is not
|
|
53
|
-
# placed in the File menu and must be manually added by the user. The
|
|
54
|
-
# @about_action is added to the Help menu by {#initialize_help_menu}.
|
|
55
|
-
def initialize_actions
|
|
56
|
-
@exit_action = Qt::Action.new(Cosmos.get_icon('close.png'), tr('E&xit'), self)
|
|
57
|
-
@exit_keyseq = Qt::KeySequence.new(tr('Ctrl+Q'))
|
|
58
|
-
@exit_action.shortcut = @exit_keyseq
|
|
59
|
-
@exit_action.statusTip = tr('Exit the application')
|
|
60
|
-
connect(@exit_action, SIGNAL('triggered()'), self, SLOT('close()'))
|
|
61
|
-
|
|
62
|
-
@about_action = Qt::Action.new(Cosmos.get_icon('help.png'), tr('&About'), self)
|
|
63
|
-
@about_action.statusTip = tr('About the application')
|
|
64
|
-
connect(@about_action, SIGNAL('triggered()'), self, SLOT('about()'))
|
|
65
|
-
end
|
|
66
|
-
|
|
67
|
-
# Creates the Help menu and adds the @about_action to it. Thus this MUST be
|
|
68
|
-
# called after initialize_actions.
|
|
69
|
-
def initialize_help_menu
|
|
70
|
-
@help_menu = menuBar().addMenu(tr('&Help'))
|
|
71
|
-
@help_menu.addAction(@about_action)
|
|
72
|
-
end
|
|
73
|
-
|
|
74
|
-
# This should be called after the tool has been completely laid out and all
|
|
75
|
-
# widgets added. It resizes the application if necessary and positions the
|
|
76
|
-
# window on the screen if necessary. It also remembers the size and
|
|
77
|
-
# position of the windows for subsequent launches of the application.
|
|
78
|
-
# Finally it can initally show the application as minimized or maximized.
|
|
79
|
-
def complete_initialize
|
|
80
|
-
# Handle manually sizing the window
|
|
81
|
-
resize(@options.width, @options.height) unless @options.auto_size
|
|
82
|
-
|
|
83
|
-
# Handle manually positioning the window
|
|
84
|
-
unless @options.auto_position
|
|
85
|
-
# Get the desktop's geometry
|
|
86
|
-
desktop = Qt::Application.desktop
|
|
87
|
-
|
|
88
|
-
# Handle position relative to right edge
|
|
89
|
-
@options.x = desktop.width - frameGeometry().width + @options.x + 1 if @options.x < 0
|
|
90
|
-
|
|
91
|
-
# Handle position relative to bottom edge
|
|
92
|
-
@options.y = desktop.height - frameGeometry().height + @options.y + 1 if @options.y < 0
|
|
93
|
-
|
|
94
|
-
# Move to the desired position
|
|
95
|
-
move(@options.x, @options.y)
|
|
96
|
-
end
|
|
97
|
-
|
|
98
|
-
if @options.remember_geometry and !@options.command_line_geometry
|
|
99
|
-
settings = Qt::Settings.new('Ball Aerospace', self.class.to_s)
|
|
100
|
-
if settings.contains('size') and @options.restore_size and @options.startup_state != :DEFAULT
|
|
101
|
-
size = settings.value('size').toSize
|
|
102
|
-
resize(size)
|
|
103
|
-
end
|
|
104
|
-
if settings.contains('position') and @options.restore_position
|
|
105
|
-
position = settings.value('position').toPoint
|
|
106
|
-
move(position)
|
|
107
|
-
end
|
|
108
|
-
end
|
|
109
|
-
|
|
110
|
-
case @options.startup_state
|
|
111
|
-
when :MINIMIZED
|
|
112
|
-
showMinimized()
|
|
113
|
-
when :MAXIMIZED
|
|
114
|
-
showMaximized()
|
|
115
|
-
else
|
|
116
|
-
show()
|
|
117
|
-
end
|
|
118
|
-
self.raise()
|
|
119
|
-
end
|
|
120
|
-
|
|
121
|
-
# The closeEvent is sent to the application when it is about to close. We
|
|
122
|
-
# re-implement it in order to remember the position and size of the window
|
|
123
|
-
# for subsequent launches of the application.
|
|
124
|
-
#
|
|
125
|
-
# @param event [Qt::CloseEvent] The close event passed by Qt
|
|
126
|
-
def closeEvent(event)
|
|
127
|
-
if @options.remember_geometry and not @options.command_line_geometry
|
|
128
|
-
settings = Qt::Settings.new('Ball Aerospace', self.class.to_s)
|
|
129
|
-
settings.setValue('position', Qt::Variant.new(pos()))
|
|
130
|
-
settings.setValue('size', Qt::Variant.new(size()))
|
|
131
|
-
end
|
|
132
|
-
|
|
133
|
-
self.class.restore_io if @options.redirect_io
|
|
134
|
-
|
|
135
|
-
# Close any remaining dialogs
|
|
136
|
-
qt_version_split = Qt::qVersion.split('.')
|
|
137
|
-
|
|
138
|
-
# Only closeAllWindows on Qt versions greater than 4.6
|
|
139
|
-
if qt_version_split[0].to_i > 4 or (qt_version_split[0].to_i == 4 and qt_version_split[1].to_i > 6)
|
|
140
|
-
Qt::Application.closeAllWindows()
|
|
141
|
-
end
|
|
142
|
-
|
|
143
|
-
super(event)
|
|
144
|
-
end
|
|
145
|
-
|
|
146
|
-
# Display the AboutDialog with the @about_string. The @about_string should
|
|
147
|
-
# be set by the user in the constructor of their application.
|
|
148
|
-
def about
|
|
149
|
-
AboutDialog.new(self, @about_string)
|
|
150
|
-
end
|
|
151
|
-
|
|
152
|
-
# Called after parsing all the command line options passed to the
|
|
153
|
-
# application. Users can re-implement this method to return false which
|
|
154
|
-
# will cause the application to exit without being shown. Return true to
|
|
155
|
-
# contine creating the window and execing the application.
|
|
156
|
-
#
|
|
157
|
-
# @param options [OpenStruct] The application options as configured in the
|
|
158
|
-
# command line
|
|
159
|
-
# @return [Boolean] Whether to contine running the application
|
|
160
|
-
def self.post_options_parsed_hook(options)
|
|
161
|
-
true
|
|
162
|
-
end
|
|
163
|
-
|
|
164
|
-
# Called after the Qt::Application has been created but before the
|
|
165
|
-
# application itself has been created. This is the last chance to execute
|
|
166
|
-
# custom code before the application executes.
|
|
167
|
-
#
|
|
168
|
-
# @param options [OpenStruct] The application options as configured in the
|
|
169
|
-
# command line
|
|
170
|
-
def self.pre_window_new_hook(options)
|
|
171
|
-
end
|
|
172
|
-
|
|
173
|
-
# Create the default application options and parse the command line
|
|
174
|
-
# options. Create the application instance and call exec on the
|
|
175
|
-
# Qt::Application.
|
|
176
|
-
def self.run(option_parser = nil, options = nil)
|
|
177
|
-
Cosmos.set_working_dir do
|
|
178
|
-
option_parser, options = create_default_options() unless option_parser and options
|
|
179
|
-
option_parser.parse!(ARGV)
|
|
180
|
-
|
|
181
|
-
if post_options_parsed_hook(options)
|
|
182
|
-
@@application = nil
|
|
183
|
-
begin
|
|
184
|
-
@@application = Qt::Application.new(ARGV)
|
|
185
|
-
@@application.addLibraryPath(Qt::PLUGIN_PATH) if Kernel.is_windows?
|
|
186
|
-
pre_window_new_hook(options)
|
|
187
|
-
@@window = self.new(options)
|
|
188
|
-
#Qt.debug_level = Qt::DebugLevel::High
|
|
189
|
-
#Qt::Internal::setDebug(Qt::QtDebugChannel::QTDB_ALL)
|
|
190
|
-
#Qt::Internal::setDebug(Qt::QtDebugChannel::QTDB_AMBIGUOUS)
|
|
191
|
-
#Qt::Internal::setDebug(Qt::QtDebugChannel::QTDB_CALLS)
|
|
192
|
-
#Qt::Internal::setDebug(Qt::QtDebugChannel::QTDB_GC)
|
|
193
|
-
#Qt::Internal::setDebug(Qt::QtDebugChannel::QTDB_METHOD_MISSING)
|
|
194
|
-
#Qt::Internal::setDebug(Qt::QtDebugChannel::QTDB_VERBOSE)
|
|
195
|
-
#Qt::Internal::setDebug(Qt::QtDebugChannel::QTDB_VIRTUAL)
|
|
196
|
-
@@application.exec
|
|
197
|
-
rescue Exception => error
|
|
198
|
-
unless error.class == SystemExit or error.class == Interrupt
|
|
199
|
-
Cosmos.handle_fatal_exception(error, false)
|
|
200
|
-
end
|
|
201
|
-
end
|
|
202
|
-
end
|
|
203
|
-
end
|
|
204
|
-
end
|
|
205
|
-
|
|
206
|
-
# Creates the default application options in a OpenStruct instance. These
|
|
207
|
-
# options include the window size and position. Options also exist to
|
|
208
|
-
# automatically size and position the window and whether to remember the
|
|
209
|
-
# previous size and position.
|
|
210
|
-
#
|
|
211
|
-
# @return [OptionParser, OpenStruct] The options parser which contains all
|
|
212
|
-
# default command line options as well as the open struct which contains
|
|
213
|
-
# the default values.
|
|
214
|
-
def self.create_default_options
|
|
215
|
-
options = OpenStruct.new
|
|
216
|
-
options.auto_position = true
|
|
217
|
-
options.x = 0
|
|
218
|
-
options.y = 0
|
|
219
|
-
options.auto_size = true
|
|
220
|
-
options.width = 800
|
|
221
|
-
options.height = 600
|
|
222
|
-
options.command_line_geometry = false
|
|
223
|
-
options.remember_geometry = true
|
|
224
|
-
options.restore_position = true
|
|
225
|
-
options.restore_size = true
|
|
226
|
-
options.redirect_io = true
|
|
227
|
-
options.title = "COSMOS Tool"
|
|
228
|
-
|
|
229
|
-
parser = OptionParser.new do |option_parser|
|
|
230
|
-
option_parser.banner = "Usage: ruby #{option_parser.program_name} [options]"
|
|
231
|
-
option_parser.separator("")
|
|
232
|
-
|
|
233
|
-
# Create the help option
|
|
234
|
-
option_parser.on("-h", "--help", "Show this message") do
|
|
235
|
-
puts option_parser
|
|
236
|
-
exit
|
|
237
|
-
end
|
|
238
|
-
|
|
239
|
-
# Create the version option
|
|
240
|
-
option_parser.on("-v", "--version", "Show version") do
|
|
241
|
-
puts "COSMOS Version: #{COSMOS_VERSION}"
|
|
242
|
-
puts "User Version: #{USER_VERSION}" if defined? USER_VERSION
|
|
243
|
-
exit
|
|
244
|
-
end
|
|
245
|
-
|
|
246
|
-
# Create the system option
|
|
247
|
-
option_parser.on("--system VALUE", "Use an alternative system.txt file") do |arg|
|
|
248
|
-
System.instance(File.join(USERPATH, 'config', 'system', arg))
|
|
249
|
-
end
|
|
250
|
-
|
|
251
|
-
# Create the minimized option
|
|
252
|
-
option_parser.on("--minimized", "Start the tool minimized") do |arg|
|
|
253
|
-
options.startup_state = :MINIMIZED
|
|
254
|
-
end
|
|
255
|
-
|
|
256
|
-
# Create the maximized option
|
|
257
|
-
option_parser.on("--maximized", "Start the tool maximized") do |arg|
|
|
258
|
-
options.startup_state = :MAXIMIZED
|
|
259
|
-
end
|
|
260
|
-
|
|
261
|
-
# Create the defaultsize option
|
|
262
|
-
option_parser.on("--defaultsize", "Start the tool in its default size") do |arg|
|
|
263
|
-
options.startup_state = :DEFAULT
|
|
264
|
-
end
|
|
265
|
-
|
|
266
|
-
# Create the x and y position options
|
|
267
|
-
option_parser.separator("")
|
|
268
|
-
option_parser.separator("Window X & Y Position Options:")
|
|
269
|
-
option_parser.separator(" Positive values indicate a position from the top and left of the screen.")
|
|
270
|
-
option_parser.separator(" Negative values indicate a position from the bottom and right of the screen.")
|
|
271
|
-
option_parser.separator(" A value of -1 indicates to place the right or bottom side of the window")
|
|
272
|
-
option_parser.separator(" next to the right or bottom edge of the screen.")
|
|
273
|
-
option_parser.on("-x VALUE", "--xpos VALUE", Integer, "Window X position") do |arg|
|
|
274
|
-
options.x = arg
|
|
275
|
-
options.auto_position = false
|
|
276
|
-
options.command_line_geometry = true
|
|
277
|
-
end
|
|
278
|
-
option_parser.on("-y VALUE", "--ypos VALUE", Integer, "Window Y position") do |arg|
|
|
279
|
-
options.y = arg
|
|
280
|
-
options.auto_position = false
|
|
281
|
-
options.command_line_geometry = true
|
|
282
|
-
end
|
|
283
|
-
|
|
284
|
-
# Create the width and height options
|
|
285
|
-
option_parser.separator("")
|
|
286
|
-
option_parser.separator("Window Width and Height Options:")
|
|
287
|
-
option_parser.separator(" Specifing width and height will force the specified dimension.")
|
|
288
|
-
option_parser.separator(" Otherwise the window will layout according to its defaults.")
|
|
289
|
-
option_parser.on("-w VALUE", "--width VALUE", Integer, "Window width") do |arg|
|
|
290
|
-
options.width = arg
|
|
291
|
-
options.auto_size = false
|
|
292
|
-
options.command_line_geometry = true
|
|
293
|
-
end
|
|
294
|
-
option_parser.on("-t VALUE", "--height VALUE", Integer, "Window height") do |arg|
|
|
295
|
-
options.height = arg
|
|
296
|
-
options.auto_size = false
|
|
297
|
-
options.command_line_geometry = true
|
|
298
|
-
end
|
|
299
|
-
option_parser.separator ""
|
|
300
|
-
end
|
|
301
|
-
|
|
302
|
-
return parser, options
|
|
303
|
-
end
|
|
304
|
-
|
|
305
|
-
# Redirect stdout and stderr to a stringIO and monitor it for text.
|
|
306
|
-
# If text is found create a popup titled "Unexpected STD[OUT/ERR] output".
|
|
307
|
-
# Thus applications should not print to standard output or standard error
|
|
308
|
-
# in their applications unless they are trying to warn the user.
|
|
309
|
-
#
|
|
310
|
-
# NOTE: This is automatically called in {#initialize} if the redirect_io
|
|
311
|
-
# option is set which it is by default.
|
|
312
|
-
#
|
|
313
|
-
# NOTE: For debugging purposes use STDOUT.puts "Message" which will print
|
|
314
|
-
# to the command line when run from the command line. If run from the
|
|
315
|
-
# COSMOS Launcher the output will be lost.
|
|
316
|
-
#
|
|
317
|
-
# @param stdout [Boolean] Whether to redirect standard output
|
|
318
|
-
# @param stderr [Boolean] Whether to redirect standard error
|
|
319
|
-
def self.redirect_io(stdout = true, stderr = true)
|
|
320
|
-
if stdout
|
|
321
|
-
stdout_stringio = StringIO.new('', 'r+')
|
|
322
|
-
$stdout = stdout_stringio
|
|
323
|
-
end
|
|
324
|
-
|
|
325
|
-
if stderr
|
|
326
|
-
stderr_stringio = StringIO.new('', 'r+')
|
|
327
|
-
$stderr = stderr_stringio if stderr
|
|
328
|
-
end
|
|
329
|
-
|
|
330
|
-
# Monitor for text to be written
|
|
331
|
-
@@redirect_io_thread = Thread.new do
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
stdout_stringio.string
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
stderr_stringio.string
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
#
|
|
358
|
-
#
|
|
359
|
-
#
|
|
360
|
-
#
|
|
361
|
-
#
|
|
362
|
-
#
|
|
363
|
-
# @param
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
$
|
|
367
|
-
|
|
368
|
-
@@redirect_io_thread
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
1
|
+
# encoding: ascii-8bit
|
|
2
|
+
|
|
3
|
+
# Copyright 2014 Ball Aerospace & Technologies Corp.
|
|
4
|
+
# All Rights Reserved.
|
|
5
|
+
#
|
|
6
|
+
# This program is free software; you can modify and/or redistribute it
|
|
7
|
+
# under the terms of the GNU General Public License
|
|
8
|
+
# as published by the Free Software Foundation; version 3 with
|
|
9
|
+
# attribution addendums as found in the LICENSE.txt
|
|
10
|
+
|
|
11
|
+
require 'cosmos'
|
|
12
|
+
require 'cosmos/gui/qt'
|
|
13
|
+
require 'cosmos/gui/dialogs/about_dialog'
|
|
14
|
+
require 'cosmos/gui/dialogs/exception_dialog'
|
|
15
|
+
require 'cosmos/gui/dialogs/pry_dialog'
|
|
16
|
+
require 'cosmos/gui/dialogs/scroll_text_dialog'
|
|
17
|
+
require 'ostruct'
|
|
18
|
+
require 'optparse'
|
|
19
|
+
|
|
20
|
+
module Cosmos
|
|
21
|
+
|
|
22
|
+
# Base class of all COSMOS GUI Tools based on QT. It creates the help menu
|
|
23
|
+
# which contains the About menu option. It provides configuration to all
|
|
24
|
+
# tools to remember both the application window location and size across
|
|
25
|
+
# executions. It also redirects all I/O from the application (any printing to
|
|
26
|
+
# stdout or stderr) and creates popups.
|
|
27
|
+
class QtTool < Qt::MainWindow
|
|
28
|
+
slots 'about()'
|
|
29
|
+
|
|
30
|
+
@@redirect_io_thread = nil
|
|
31
|
+
|
|
32
|
+
def initialize(options)
|
|
33
|
+
# Call QT::MainWindow constructor
|
|
34
|
+
super() # MUST BE FIRST - All code before super is executed twice in RubyQt Based classes
|
|
35
|
+
|
|
36
|
+
# Add Path for plugins
|
|
37
|
+
Qt::Application.instance.addLibraryPath(Qt::PLUGIN_PATH) if Kernel.is_windows?
|
|
38
|
+
|
|
39
|
+
# Prevent killing the parent process from killing this GUI application
|
|
40
|
+
Process.setpgrp unless Kernel.is_windows?
|
|
41
|
+
|
|
42
|
+
self.class.redirect_io if options.redirect_io
|
|
43
|
+
|
|
44
|
+
# Configure instance variables
|
|
45
|
+
@options = options
|
|
46
|
+
@about_string = nil
|
|
47
|
+
|
|
48
|
+
self.window_title = options.title
|
|
49
|
+
Cosmos.load_cosmos_icon
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
# Create the @exit_action and the @about_action. The @exit_action is not
|
|
53
|
+
# placed in the File menu and must be manually added by the user. The
|
|
54
|
+
# @about_action is added to the Help menu by {#initialize_help_menu}.
|
|
55
|
+
def initialize_actions
|
|
56
|
+
@exit_action = Qt::Action.new(Cosmos.get_icon('close.png'), tr('E&xit'), self)
|
|
57
|
+
@exit_keyseq = Qt::KeySequence.new(tr('Ctrl+Q'))
|
|
58
|
+
@exit_action.shortcut = @exit_keyseq
|
|
59
|
+
@exit_action.statusTip = tr('Exit the application')
|
|
60
|
+
connect(@exit_action, SIGNAL('triggered()'), self, SLOT('close()'))
|
|
61
|
+
|
|
62
|
+
@about_action = Qt::Action.new(Cosmos.get_icon('help.png'), tr('&About'), self)
|
|
63
|
+
@about_action.statusTip = tr('About the application')
|
|
64
|
+
connect(@about_action, SIGNAL('triggered()'), self, SLOT('about()'))
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
# Creates the Help menu and adds the @about_action to it. Thus this MUST be
|
|
68
|
+
# called after initialize_actions.
|
|
69
|
+
def initialize_help_menu
|
|
70
|
+
@help_menu = menuBar().addMenu(tr('&Help'))
|
|
71
|
+
@help_menu.addAction(@about_action)
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
# This should be called after the tool has been completely laid out and all
|
|
75
|
+
# widgets added. It resizes the application if necessary and positions the
|
|
76
|
+
# window on the screen if necessary. It also remembers the size and
|
|
77
|
+
# position of the windows for subsequent launches of the application.
|
|
78
|
+
# Finally it can initally show the application as minimized or maximized.
|
|
79
|
+
def complete_initialize
|
|
80
|
+
# Handle manually sizing the window
|
|
81
|
+
resize(@options.width, @options.height) unless @options.auto_size
|
|
82
|
+
|
|
83
|
+
# Handle manually positioning the window
|
|
84
|
+
unless @options.auto_position
|
|
85
|
+
# Get the desktop's geometry
|
|
86
|
+
desktop = Qt::Application.desktop
|
|
87
|
+
|
|
88
|
+
# Handle position relative to right edge
|
|
89
|
+
@options.x = desktop.width - frameGeometry().width + @options.x + 1 if @options.x < 0
|
|
90
|
+
|
|
91
|
+
# Handle position relative to bottom edge
|
|
92
|
+
@options.y = desktop.height - frameGeometry().height + @options.y + 1 if @options.y < 0
|
|
93
|
+
|
|
94
|
+
# Move to the desired position
|
|
95
|
+
move(@options.x, @options.y)
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
if @options.remember_geometry and !@options.command_line_geometry
|
|
99
|
+
settings = Qt::Settings.new('Ball Aerospace', self.class.to_s)
|
|
100
|
+
if settings.contains('size') and @options.restore_size and @options.startup_state != :DEFAULT
|
|
101
|
+
size = settings.value('size').toSize
|
|
102
|
+
resize(size)
|
|
103
|
+
end
|
|
104
|
+
if settings.contains('position') and @options.restore_position
|
|
105
|
+
position = settings.value('position').toPoint
|
|
106
|
+
move(position)
|
|
107
|
+
end
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
case @options.startup_state
|
|
111
|
+
when :MINIMIZED
|
|
112
|
+
showMinimized()
|
|
113
|
+
when :MAXIMIZED
|
|
114
|
+
showMaximized()
|
|
115
|
+
else
|
|
116
|
+
show()
|
|
117
|
+
end
|
|
118
|
+
self.raise()
|
|
119
|
+
end
|
|
120
|
+
|
|
121
|
+
# The closeEvent is sent to the application when it is about to close. We
|
|
122
|
+
# re-implement it in order to remember the position and size of the window
|
|
123
|
+
# for subsequent launches of the application.
|
|
124
|
+
#
|
|
125
|
+
# @param event [Qt::CloseEvent] The close event passed by Qt
|
|
126
|
+
def closeEvent(event)
|
|
127
|
+
if @options.remember_geometry and not @options.command_line_geometry
|
|
128
|
+
settings = Qt::Settings.new('Ball Aerospace', self.class.to_s)
|
|
129
|
+
settings.setValue('position', Qt::Variant.new(pos()))
|
|
130
|
+
settings.setValue('size', Qt::Variant.new(size()))
|
|
131
|
+
end
|
|
132
|
+
|
|
133
|
+
self.class.restore_io if @options.redirect_io
|
|
134
|
+
|
|
135
|
+
# Close any remaining dialogs
|
|
136
|
+
qt_version_split = Qt::qVersion.split('.')
|
|
137
|
+
|
|
138
|
+
# Only closeAllWindows on Qt versions greater than 4.6
|
|
139
|
+
if qt_version_split[0].to_i > 4 or (qt_version_split[0].to_i == 4 and qt_version_split[1].to_i > 6)
|
|
140
|
+
Qt::Application.closeAllWindows()
|
|
141
|
+
end
|
|
142
|
+
|
|
143
|
+
super(event)
|
|
144
|
+
end
|
|
145
|
+
|
|
146
|
+
# Display the AboutDialog with the @about_string. The @about_string should
|
|
147
|
+
# be set by the user in the constructor of their application.
|
|
148
|
+
def about
|
|
149
|
+
AboutDialog.new(self, @about_string)
|
|
150
|
+
end
|
|
151
|
+
|
|
152
|
+
# Called after parsing all the command line options passed to the
|
|
153
|
+
# application. Users can re-implement this method to return false which
|
|
154
|
+
# will cause the application to exit without being shown. Return true to
|
|
155
|
+
# contine creating the window and execing the application.
|
|
156
|
+
#
|
|
157
|
+
# @param options [OpenStruct] The application options as configured in the
|
|
158
|
+
# command line
|
|
159
|
+
# @return [Boolean] Whether to contine running the application
|
|
160
|
+
def self.post_options_parsed_hook(options)
|
|
161
|
+
true
|
|
162
|
+
end
|
|
163
|
+
|
|
164
|
+
# Called after the Qt::Application has been created but before the
|
|
165
|
+
# application itself has been created. This is the last chance to execute
|
|
166
|
+
# custom code before the application executes.
|
|
167
|
+
#
|
|
168
|
+
# @param options [OpenStruct] The application options as configured in the
|
|
169
|
+
# command line
|
|
170
|
+
def self.pre_window_new_hook(options)
|
|
171
|
+
end
|
|
172
|
+
|
|
173
|
+
# Create the default application options and parse the command line
|
|
174
|
+
# options. Create the application instance and call exec on the
|
|
175
|
+
# Qt::Application.
|
|
176
|
+
def self.run(option_parser = nil, options = nil)
|
|
177
|
+
Cosmos.set_working_dir do
|
|
178
|
+
option_parser, options = create_default_options() unless option_parser and options
|
|
179
|
+
option_parser.parse!(ARGV)
|
|
180
|
+
|
|
181
|
+
if post_options_parsed_hook(options)
|
|
182
|
+
@@application = nil
|
|
183
|
+
begin
|
|
184
|
+
@@application = Qt::Application.new(ARGV)
|
|
185
|
+
@@application.addLibraryPath(Qt::PLUGIN_PATH) if Kernel.is_windows?
|
|
186
|
+
pre_window_new_hook(options)
|
|
187
|
+
@@window = self.new(options)
|
|
188
|
+
#Qt.debug_level = Qt::DebugLevel::High
|
|
189
|
+
#Qt::Internal::setDebug(Qt::QtDebugChannel::QTDB_ALL)
|
|
190
|
+
#Qt::Internal::setDebug(Qt::QtDebugChannel::QTDB_AMBIGUOUS)
|
|
191
|
+
#Qt::Internal::setDebug(Qt::QtDebugChannel::QTDB_CALLS)
|
|
192
|
+
#Qt::Internal::setDebug(Qt::QtDebugChannel::QTDB_GC)
|
|
193
|
+
#Qt::Internal::setDebug(Qt::QtDebugChannel::QTDB_METHOD_MISSING)
|
|
194
|
+
#Qt::Internal::setDebug(Qt::QtDebugChannel::QTDB_VERBOSE)
|
|
195
|
+
#Qt::Internal::setDebug(Qt::QtDebugChannel::QTDB_VIRTUAL)
|
|
196
|
+
@@application.exec
|
|
197
|
+
rescue Exception => error
|
|
198
|
+
unless error.class == SystemExit or error.class == Interrupt
|
|
199
|
+
Cosmos.handle_fatal_exception(error, false)
|
|
200
|
+
end
|
|
201
|
+
end
|
|
202
|
+
end
|
|
203
|
+
end
|
|
204
|
+
end
|
|
205
|
+
|
|
206
|
+
# Creates the default application options in a OpenStruct instance. These
|
|
207
|
+
# options include the window size and position. Options also exist to
|
|
208
|
+
# automatically size and position the window and whether to remember the
|
|
209
|
+
# previous size and position.
|
|
210
|
+
#
|
|
211
|
+
# @return [OptionParser, OpenStruct] The options parser which contains all
|
|
212
|
+
# default command line options as well as the open struct which contains
|
|
213
|
+
# the default values.
|
|
214
|
+
def self.create_default_options
|
|
215
|
+
options = OpenStruct.new
|
|
216
|
+
options.auto_position = true
|
|
217
|
+
options.x = 0
|
|
218
|
+
options.y = 0
|
|
219
|
+
options.auto_size = true
|
|
220
|
+
options.width = 800
|
|
221
|
+
options.height = 600
|
|
222
|
+
options.command_line_geometry = false
|
|
223
|
+
options.remember_geometry = true
|
|
224
|
+
options.restore_position = true
|
|
225
|
+
options.restore_size = true
|
|
226
|
+
options.redirect_io = true
|
|
227
|
+
options.title = "COSMOS Tool"
|
|
228
|
+
|
|
229
|
+
parser = OptionParser.new do |option_parser|
|
|
230
|
+
option_parser.banner = "Usage: ruby #{option_parser.program_name} [options]"
|
|
231
|
+
option_parser.separator("")
|
|
232
|
+
|
|
233
|
+
# Create the help option
|
|
234
|
+
option_parser.on("-h", "--help", "Show this message") do
|
|
235
|
+
puts option_parser
|
|
236
|
+
exit
|
|
237
|
+
end
|
|
238
|
+
|
|
239
|
+
# Create the version option
|
|
240
|
+
option_parser.on("-v", "--version", "Show version") do
|
|
241
|
+
puts "COSMOS Version: #{COSMOS_VERSION}"
|
|
242
|
+
puts "User Version: #{USER_VERSION}" if defined? USER_VERSION
|
|
243
|
+
exit
|
|
244
|
+
end
|
|
245
|
+
|
|
246
|
+
# Create the system option
|
|
247
|
+
option_parser.on("--system VALUE", "Use an alternative system.txt file") do |arg|
|
|
248
|
+
System.instance(File.join(USERPATH, 'config', 'system', arg))
|
|
249
|
+
end
|
|
250
|
+
|
|
251
|
+
# Create the minimized option
|
|
252
|
+
option_parser.on("--minimized", "Start the tool minimized") do |arg|
|
|
253
|
+
options.startup_state = :MINIMIZED
|
|
254
|
+
end
|
|
255
|
+
|
|
256
|
+
# Create the maximized option
|
|
257
|
+
option_parser.on("--maximized", "Start the tool maximized") do |arg|
|
|
258
|
+
options.startup_state = :MAXIMIZED
|
|
259
|
+
end
|
|
260
|
+
|
|
261
|
+
# Create the defaultsize option
|
|
262
|
+
option_parser.on("--defaultsize", "Start the tool in its default size") do |arg|
|
|
263
|
+
options.startup_state = :DEFAULT
|
|
264
|
+
end
|
|
265
|
+
|
|
266
|
+
# Create the x and y position options
|
|
267
|
+
option_parser.separator("")
|
|
268
|
+
option_parser.separator("Window X & Y Position Options:")
|
|
269
|
+
option_parser.separator(" Positive values indicate a position from the top and left of the screen.")
|
|
270
|
+
option_parser.separator(" Negative values indicate a position from the bottom and right of the screen.")
|
|
271
|
+
option_parser.separator(" A value of -1 indicates to place the right or bottom side of the window")
|
|
272
|
+
option_parser.separator(" next to the right or bottom edge of the screen.")
|
|
273
|
+
option_parser.on("-x VALUE", "--xpos VALUE", Integer, "Window X position") do |arg|
|
|
274
|
+
options.x = arg
|
|
275
|
+
options.auto_position = false
|
|
276
|
+
options.command_line_geometry = true
|
|
277
|
+
end
|
|
278
|
+
option_parser.on("-y VALUE", "--ypos VALUE", Integer, "Window Y position") do |arg|
|
|
279
|
+
options.y = arg
|
|
280
|
+
options.auto_position = false
|
|
281
|
+
options.command_line_geometry = true
|
|
282
|
+
end
|
|
283
|
+
|
|
284
|
+
# Create the width and height options
|
|
285
|
+
option_parser.separator("")
|
|
286
|
+
option_parser.separator("Window Width and Height Options:")
|
|
287
|
+
option_parser.separator(" Specifing width and height will force the specified dimension.")
|
|
288
|
+
option_parser.separator(" Otherwise the window will layout according to its defaults.")
|
|
289
|
+
option_parser.on("-w VALUE", "--width VALUE", Integer, "Window width") do |arg|
|
|
290
|
+
options.width = arg
|
|
291
|
+
options.auto_size = false
|
|
292
|
+
options.command_line_geometry = true
|
|
293
|
+
end
|
|
294
|
+
option_parser.on("-t VALUE", "--height VALUE", Integer, "Window height") do |arg|
|
|
295
|
+
options.height = arg
|
|
296
|
+
options.auto_size = false
|
|
297
|
+
options.command_line_geometry = true
|
|
298
|
+
end
|
|
299
|
+
option_parser.separator ""
|
|
300
|
+
end
|
|
301
|
+
|
|
302
|
+
return parser, options
|
|
303
|
+
end
|
|
304
|
+
|
|
305
|
+
# Redirect stdout and stderr to a stringIO and monitor it for text.
|
|
306
|
+
# If text is found create a popup titled "Unexpected STD[OUT/ERR] output".
|
|
307
|
+
# Thus applications should not print to standard output or standard error
|
|
308
|
+
# in their applications unless they are trying to warn the user.
|
|
309
|
+
#
|
|
310
|
+
# NOTE: This is automatically called in {#initialize} if the redirect_io
|
|
311
|
+
# option is set which it is by default.
|
|
312
|
+
#
|
|
313
|
+
# NOTE: For debugging purposes use STDOUT.puts "Message" which will print
|
|
314
|
+
# to the command line when run from the command line. If run from the
|
|
315
|
+
# COSMOS Launcher the output will be lost.
|
|
316
|
+
#
|
|
317
|
+
# @param stdout [Boolean] Whether to redirect standard output
|
|
318
|
+
# @param stderr [Boolean] Whether to redirect standard error
|
|
319
|
+
def self.redirect_io(stdout = true, stderr = true)
|
|
320
|
+
if stdout
|
|
321
|
+
stdout_stringio = StringIO.new('', 'r+')
|
|
322
|
+
$stdout = stdout_stringio
|
|
323
|
+
end
|
|
324
|
+
|
|
325
|
+
if stderr
|
|
326
|
+
stderr_stringio = StringIO.new('', 'r+')
|
|
327
|
+
$stderr = stderr_stringio if stderr
|
|
328
|
+
end
|
|
329
|
+
|
|
330
|
+
# Monitor for text to be written
|
|
331
|
+
@@redirect_io_thread = Thread.new do
|
|
332
|
+
@@redirect_io_thread_sleeper = Sleeper.new
|
|
333
|
+
begin
|
|
334
|
+
loop do
|
|
335
|
+
if stdout and stdout_stringio.string.length > 0
|
|
336
|
+
saved_string = stdout_stringio.string.dup
|
|
337
|
+
stdout_stringio.string = ''
|
|
338
|
+
Qt.execute_in_main_thread(true) do
|
|
339
|
+
ScrollTextDialog.new(Qt::CoreApplication.instance.activeWindow, 'Unexpected STDOUT output', saved_string)
|
|
340
|
+
end
|
|
341
|
+
end
|
|
342
|
+
if stderr and stderr_stringio.string.length > 0
|
|
343
|
+
saved_string = stderr_stringio.string.dup
|
|
344
|
+
stderr_stringio.string = ''
|
|
345
|
+
Qt.execute_in_main_thread(true) do
|
|
346
|
+
ScrollTextDialog.new(Qt::CoreApplication.instance.activeWindow, 'Unexpected STDERR output', saved_string)
|
|
347
|
+
end
|
|
348
|
+
end
|
|
349
|
+
break if @@redirect_io_thread_sleeper.sleep(1)
|
|
350
|
+
end
|
|
351
|
+
rescue Exception => error
|
|
352
|
+
Qt.execute_in_main_thread(true) { || ExceptionDialog.new(Qt::CoreApplication.instance.activeWindow, error, 'Exception in Redirect IO Thread') }
|
|
353
|
+
end
|
|
354
|
+
end
|
|
355
|
+
end
|
|
356
|
+
|
|
357
|
+
# Restore stdout and stderr so text will not be captured and generate a
|
|
358
|
+
# popup. This should be called if redirect_io was called.
|
|
359
|
+
#
|
|
360
|
+
# NOTE: {#closeEvent} automatically calls restore_io if the redirect_io
|
|
361
|
+
# option is set (which means redirect_io was called upon startup).
|
|
362
|
+
#
|
|
363
|
+
# @param stdout [Boolean] Whether to redirect standard output
|
|
364
|
+
# @param stderr [Boolean] Whether to redirect standard error
|
|
365
|
+
def self.restore_io(stdout = true, stderr = true)
|
|
366
|
+
$stdout = STDOUT if stdout
|
|
367
|
+
$stderr = STDERR if stderr
|
|
368
|
+
Cosmos.kill_thread(self, @@redirect_io_thread)
|
|
369
|
+
@@redirect_io_thread = nil
|
|
370
|
+
end
|
|
371
|
+
|
|
372
|
+
def self.graceful_kill
|
|
373
|
+
@@redirect_io_thread_sleeper.cancel
|
|
374
|
+
end
|
|
375
|
+
|
|
376
|
+
end # class QtTool
|
|
377
|
+
|
|
378
|
+
end # end module Cosmos
|