cosmos 3.5.1 → 3.5.2
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 -1
- data/.gitattributes +3 -3
- data/.gitignore +48 -48
- data/.travis.yml +8 -8
- data/CONTRIBUTING.txt +50 -50
- data/Gemfile +10 -10
- data/Guardfile +27 -27
- data/LICENSE.txt +879 -879
- data/Manifest.txt +1414 -1414
- data/README.md +111 -111
- data/Rakefile +218 -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 +270 -270
- 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 -305
- 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_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 +24 -24
- 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/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/TestRunnerAHK5 +17 -17
- data/autohotkey/tools/TestRunnerAHK6 +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 +22 -22
- data/autohotkey/tools/TlmViewerAHK3 +23 -23
- data/autohotkey/tools/TlmViewerAHK4 +22 -22
- data/autohotkey/tools/TlmViewerAHK5 +18 -18
- data/autohotkey/tools/autohotkey.rb +37 -37
- data/autohotkey/tools/cmd_extractor.ahk +33 -33
- data/autohotkey/tools/cmd_sender.ahk +182 -182
- data/autohotkey/tools/cmd_tlm_server.ahk +90 -90
- data/autohotkey/tools/cmd_tlm_server2.ahk +45 -45
- data/autohotkey/tools/data_viewer.ahk +141 -141
- data/autohotkey/tools/handbook_creator.ahk +32 -32
- data/autohotkey/tools/launcher.ahk +41 -41
- data/autohotkey/tools/limits_monitor.ahk +123 -123
- data/autohotkey/tools/open_gl_builder.ahk +134 -134
- data/autohotkey/tools/packet_viewer.ahk +196 -196
- data/autohotkey/tools/packet_viewer2.ahk +9 -9
- data/autohotkey/tools/replay.ahk +104 -104
- data/autohotkey/tools/script_runner.ahk +589 -589
- data/autohotkey/tools/script_runner2.ahk +38 -38
- data/autohotkey/tools/table_manager.ahk +220 -220
- data/autohotkey/tools/test_runner.ahk +262 -262
- data/autohotkey/tools/test_runner2.ahk +53 -53
- data/autohotkey/tools/test_runner3.ahk +13 -13
- data/autohotkey/tools/test_runner5.ahk +8 -8
- data/autohotkey/tools/test_runner6.ahk +5 -5
- data/autohotkey/tools/tlm_extractor.ahk +296 -296
- data/autohotkey/tools/tlm_grapher.ahk +660 -660
- 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 -50
- 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 +99 -99
- data/data/about.txt +4 -4
- data/data/crc.txt +326 -326
- data/data/diamond.STL +57 -57
- data/data/legal.txt +9 -9
- data/demo/Gemfile +10 -10
- data/demo/Launcher +16 -16
- data/demo/Launcher.bat +0 -0
- data/demo/Rakefile +77 -77
- data/demo/config/data/crc.txt +224 -226
- data/demo/config/data/diamond.STL +57 -57
- data/demo/config/data/meta_init.txt +4 -4
- data/demo/config/system/system.txt +35 -35
- 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 +5 -5
- 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 -305
- 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 -13
- 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 +56 -56
- data/demo/config/targets/TEMPLATED/target.txt +6 -6
- data/demo/config/tools/cmd_tlm_server/cmd_tlm_server.txt +39 -39
- data/demo/config/tools/cmd_tlm_server/cmd_tlm_server2.txt +34 -34
- 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 +88 -88
- 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 +82 -82
- 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 -57
- data/demo/lib/example_target.rb +113 -113
- 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 +183 -183
- 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 +16 -16
- data/demo/tools/CmdExtractor.bat +0 -0
- data/demo/tools/CmdSender +16 -16
- data/demo/tools/CmdSender.bat +0 -0
- data/demo/tools/CmdTlmServer +16 -16
- data/demo/tools/CmdTlmServer.bat +0 -0
- data/demo/tools/DataViewer +16 -16
- data/demo/tools/DataViewer.bat +0 -0
- data/demo/tools/ExampleTarget +16 -16
- data/demo/tools/ExampleTarget.bat +0 -0
- data/demo/tools/HandbookCreator +16 -16
- data/demo/tools/HandbookCreator.bat +0 -0
- data/demo/tools/Launcher +16 -16
- data/demo/tools/Launcher.bat +0 -0
- data/demo/tools/LimitsMonitor +16 -16
- data/demo/tools/LimitsMonitor.bat +0 -0
- data/demo/tools/OpenGLBuilder +16 -16
- data/demo/tools/OpenGLBuilder.bat +0 -0
- data/demo/tools/PacketViewer +16 -16
- data/demo/tools/PacketViewer.bat +0 -0
- data/demo/tools/Replay +16 -16
- data/demo/tools/Replay.bat +0 -0
- data/demo/tools/ScpiTarget +16 -16
- data/demo/tools/ScpiTarget.bat +0 -0
- data/demo/tools/ScriptRunner +16 -16
- data/demo/tools/ScriptRunner.bat +0 -0
- data/demo/tools/TableManager +16 -16
- data/demo/tools/TableManager.bat +0 -0
- data/demo/tools/TestRunner +16 -16
- data/demo/tools/TestRunner.bat +0 -0
- data/demo/tools/TlmExtractor +16 -16
- data/demo/tools/TlmExtractor.bat +0 -0
- data/demo/tools/TlmGrapher +16 -16
- data/demo/tools/TlmGrapher.bat +0 -0
- data/demo/tools/TlmViewer +16 -16
- data/demo/tools/TlmViewer.bat +0 -0
- data/demo/tools/ToolLaunch.bat +14 -5
- data/demo/tools/mac/CmdExtractor.app/Contents/Info.plist +38 -38
- data/demo/tools/mac/CmdExtractor.app/Contents/MacOS/CmdExtractor.rb +16 -16
- data/demo/tools/mac/CmdExtractor.app/Contents/MacOS/main.sh +10 -10
- data/demo/tools/mac/CmdExtractor.app/Contents/MacOS/tool_launch.rb +38 -38
- data/demo/tools/mac/CmdSender.app/Contents/Info.plist +38 -38
- data/demo/tools/mac/CmdSender.app/Contents/MacOS/CmdSender.rb +16 -16
- data/demo/tools/mac/CmdSender.app/Contents/MacOS/main.sh +10 -10
- data/demo/tools/mac/CmdSender.app/Contents/MacOS/tool_launch.rb +38 -38
- data/demo/tools/mac/CmdTlmServer.app/Contents/Info.plist +38 -38
- data/demo/tools/mac/CmdTlmServer.app/Contents/MacOS/CmdTlmServer.rb +16 -16
- data/demo/tools/mac/CmdTlmServer.app/Contents/MacOS/main.sh +10 -10
- data/demo/tools/mac/CmdTlmServer.app/Contents/MacOS/tool_launch.rb +38 -38
- data/demo/tools/mac/DataViewer.app/Contents/Info.plist +38 -38
- data/demo/tools/mac/DataViewer.app/Contents/MacOS/DataViewer.rb +16 -16
- data/demo/tools/mac/DataViewer.app/Contents/MacOS/main.sh +10 -10
- data/demo/tools/mac/DataViewer.app/Contents/MacOS/tool_launch.rb +38 -38
- data/demo/tools/mac/HandbookCreator.app/Contents/Info.plist +38 -38
- data/demo/tools/mac/HandbookCreator.app/Contents/MacOS/HandbookCreator.rb +16 -16
- data/demo/tools/mac/HandbookCreator.app/Contents/MacOS/main.sh +10 -10
- data/demo/tools/mac/HandbookCreator.app/Contents/MacOS/tool_launch.rb +38 -38
- data/demo/tools/mac/Launcher.app/Contents/Info.plist +38 -38
- data/demo/tools/mac/Launcher.app/Contents/MacOS/Launcher.rb +16 -16
- data/demo/tools/mac/Launcher.app/Contents/MacOS/main.sh +10 -10
- data/demo/tools/mac/Launcher.app/Contents/MacOS/tool_launch.rb +38 -38
- data/demo/tools/mac/LimitsMonitor.app/Contents/Info.plist +38 -38
- data/demo/tools/mac/LimitsMonitor.app/Contents/MacOS/LimitsMonitor.rb +16 -16
- data/demo/tools/mac/LimitsMonitor.app/Contents/MacOS/main.sh +10 -10
- data/demo/tools/mac/LimitsMonitor.app/Contents/MacOS/tool_launch.rb +38 -38
- data/demo/tools/mac/OpenGLBuilder.app/Contents/Info.plist +38 -38
- data/demo/tools/mac/OpenGLBuilder.app/Contents/MacOS/OpenGLBuilder.rb +16 -16
- data/demo/tools/mac/OpenGLBuilder.app/Contents/MacOS/main.sh +10 -10
- data/demo/tools/mac/OpenGLBuilder.app/Contents/MacOS/tool_launch.rb +38 -38
- data/demo/tools/mac/PacketViewer.app/Contents/Info.plist +38 -38
- data/demo/tools/mac/PacketViewer.app/Contents/MacOS/PacketViewer.rb +16 -16
- data/demo/tools/mac/PacketViewer.app/Contents/MacOS/main.sh +10 -10
- data/demo/tools/mac/PacketViewer.app/Contents/MacOS/tool_launch.rb +38 -38
- data/demo/tools/mac/Replay.app/Contents/Info.plist +38 -38
- data/demo/tools/mac/Replay.app/Contents/MacOS/Replay.rb +16 -16
- data/demo/tools/mac/Replay.app/Contents/MacOS/main.sh +10 -10
- data/demo/tools/mac/Replay.app/Contents/MacOS/tool_launch.rb +38 -38
- data/demo/tools/mac/ScriptRunner.app/Contents/Info.plist +38 -38
- data/demo/tools/mac/ScriptRunner.app/Contents/MacOS/ScriptRunner.rb +16 -16
- data/demo/tools/mac/ScriptRunner.app/Contents/MacOS/main.sh +10 -10
- data/demo/tools/mac/ScriptRunner.app/Contents/MacOS/tool_launch.rb +38 -38
- data/demo/tools/mac/TableManager.app/Contents/Info.plist +38 -38
- data/demo/tools/mac/TableManager.app/Contents/MacOS/TableManager.rb +16 -16
- data/demo/tools/mac/TableManager.app/Contents/MacOS/main.sh +10 -10
- data/demo/tools/mac/TableManager.app/Contents/MacOS/tool_launch.rb +38 -38
- data/demo/tools/mac/TestRunner.app/Contents/Info.plist +38 -38
- data/demo/tools/mac/TestRunner.app/Contents/MacOS/TestRunner.rb +16 -16
- data/demo/tools/mac/TestRunner.app/Contents/MacOS/main.sh +10 -10
- data/demo/tools/mac/TestRunner.app/Contents/MacOS/tool_launch.rb +38 -38
- data/demo/tools/mac/TlmExtractor.app/Contents/Info.plist +38 -38
- data/demo/tools/mac/TlmExtractor.app/Contents/MacOS/TlmExtractor.rb +16 -16
- data/demo/tools/mac/TlmExtractor.app/Contents/MacOS/main.sh +10 -10
- data/demo/tools/mac/TlmExtractor.app/Contents/MacOS/tool_launch.rb +38 -38
- data/demo/tools/mac/TlmGrapher.app/Contents/Info.plist +38 -38
- data/demo/tools/mac/TlmGrapher.app/Contents/MacOS/TlmGrapher.rb +16 -16
- data/demo/tools/mac/TlmGrapher.app/Contents/MacOS/main.sh +10 -10
- data/demo/tools/mac/TlmGrapher.app/Contents/MacOS/tool_launch.rb +38 -38
- data/demo/tools/mac/TlmViewer.app/Contents/Info.plist +38 -38
- data/demo/tools/mac/TlmViewer.app/Contents/MacOS/TlmViewer.rb +16 -16
- data/demo/tools/mac/TlmViewer.app/Contents/MacOS/main.sh +10 -10
- data/demo/tools/mac/TlmViewer.app/Contents/MacOS/tool_launch.rb +38 -38
- data/demo/tools/tool_launch.rb +38 -38
- 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 +265 -265
- 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 +101 -101
- 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 +1428 -1428
- 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 +307 -307
- data/ext/mkrf_conf.rb +40 -40
- data/install/Gemfile +10 -10
- data/install/Launcher +16 -16
- data/install/Launcher.bat +0 -0
- data/install/Rakefile +77 -77
- data/install/config/data/crc.txt +151 -151
- 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 +40 -40
- 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 +16 -16
- data/install/tools/CmdExtractor.bat +0 -0
- data/install/tools/CmdSender +16 -16
- data/install/tools/CmdSender.bat +0 -0
- data/install/tools/CmdTlmServer +16 -16
- data/install/tools/CmdTlmServer.bat +0 -0
- data/install/tools/DataViewer +16 -16
- data/install/tools/DataViewer.bat +0 -0
- data/install/tools/HandbookCreator +16 -16
- data/install/tools/HandbookCreator.bat +0 -0
- data/install/tools/Launcher +16 -16
- data/install/tools/Launcher.bat +0 -0
- data/install/tools/LimitsMonitor +16 -16
- data/install/tools/LimitsMonitor.bat +0 -0
- data/install/tools/OpenGLBuilder +16 -16
- data/install/tools/OpenGLBuilder.bat +0 -0
- data/install/tools/PacketViewer +16 -16
- data/install/tools/PacketViewer.bat +0 -0
- data/install/tools/Replay +16 -16
- data/install/tools/Replay.bat +0 -0
- data/install/tools/ScriptRunner +16 -16
- data/install/tools/ScriptRunner.bat +0 -0
- data/install/tools/TableManager +16 -16
- data/install/tools/TableManager.bat +0 -0
- data/install/tools/TestRunner +16 -16
- data/install/tools/TestRunner.bat +0 -0
- data/install/tools/TlmExtractor +16 -16
- data/install/tools/TlmExtractor.bat +0 -0
- data/install/tools/TlmGrapher +16 -16
- data/install/tools/TlmGrapher.bat +0 -0
- data/install/tools/TlmViewer +16 -16
- data/install/tools/TlmViewer.bat +0 -0
- data/install/tools/ToolLaunch.bat +14 -5
- data/install/tools/mac/CmdExtractor.app/Contents/Info.plist +38 -38
- data/install/tools/mac/CmdExtractor.app/Contents/MacOS/CmdExtractor.rb +16 -16
- data/install/tools/mac/CmdExtractor.app/Contents/MacOS/main.sh +10 -10
- data/install/tools/mac/CmdExtractor.app/Contents/MacOS/tool_launch.rb +38 -38
- data/install/tools/mac/CmdSender.app/Contents/Info.plist +38 -38
- data/install/tools/mac/CmdSender.app/Contents/MacOS/CmdSender.rb +16 -16
- data/install/tools/mac/CmdSender.app/Contents/MacOS/main.sh +10 -10
- data/install/tools/mac/CmdSender.app/Contents/MacOS/tool_launch.rb +38 -38
- data/install/tools/mac/CmdTlmServer.app/Contents/Info.plist +38 -38
- data/install/tools/mac/CmdTlmServer.app/Contents/MacOS/CmdTlmServer.rb +16 -16
- data/install/tools/mac/CmdTlmServer.app/Contents/MacOS/main.sh +10 -10
- data/install/tools/mac/CmdTlmServer.app/Contents/MacOS/tool_launch.rb +38 -38
- data/install/tools/mac/DataViewer.app/Contents/Info.plist +38 -38
- data/install/tools/mac/DataViewer.app/Contents/MacOS/DataViewer.rb +16 -16
- data/install/tools/mac/DataViewer.app/Contents/MacOS/main.sh +10 -10
- data/install/tools/mac/DataViewer.app/Contents/MacOS/tool_launch.rb +38 -38
- data/install/tools/mac/HandbookCreator.app/Contents/Info.plist +38 -38
- data/install/tools/mac/HandbookCreator.app/Contents/MacOS/HandbookCreator.rb +16 -16
- data/install/tools/mac/HandbookCreator.app/Contents/MacOS/main.sh +10 -10
- data/install/tools/mac/HandbookCreator.app/Contents/MacOS/tool_launch.rb +38 -38
- data/install/tools/mac/Launcher.app/Contents/Info.plist +38 -38
- data/install/tools/mac/Launcher.app/Contents/MacOS/Launcher.rb +16 -16
- data/install/tools/mac/Launcher.app/Contents/MacOS/main.sh +10 -10
- data/install/tools/mac/Launcher.app/Contents/MacOS/tool_launch.rb +38 -38
- data/install/tools/mac/LimitsMonitor.app/Contents/Info.plist +38 -38
- data/install/tools/mac/LimitsMonitor.app/Contents/MacOS/LimitsMonitor.rb +16 -16
- data/install/tools/mac/LimitsMonitor.app/Contents/MacOS/main.sh +10 -10
- data/install/tools/mac/LimitsMonitor.app/Contents/MacOS/tool_launch.rb +38 -38
- data/install/tools/mac/OpenGLBuilder.app/Contents/Info.plist +38 -38
- data/install/tools/mac/OpenGLBuilder.app/Contents/MacOS/OpenGLBuilder.rb +16 -16
- data/install/tools/mac/OpenGLBuilder.app/Contents/MacOS/main.sh +10 -10
- data/install/tools/mac/OpenGLBuilder.app/Contents/MacOS/tool_launch.rb +38 -38
- data/install/tools/mac/PacketViewer.app/Contents/Info.plist +38 -38
- data/install/tools/mac/PacketViewer.app/Contents/MacOS/PacketViewer.rb +16 -16
- data/install/tools/mac/PacketViewer.app/Contents/MacOS/main.sh +10 -10
- data/install/tools/mac/PacketViewer.app/Contents/MacOS/tool_launch.rb +38 -38
- data/install/tools/mac/Replay.app/Contents/Info.plist +38 -38
- data/install/tools/mac/Replay.app/Contents/MacOS/Replay.rb +16 -16
- data/install/tools/mac/Replay.app/Contents/MacOS/main.sh +10 -10
- data/install/tools/mac/Replay.app/Contents/MacOS/tool_launch.rb +38 -38
- data/install/tools/mac/ScriptRunner.app/Contents/Info.plist +38 -38
- data/install/tools/mac/ScriptRunner.app/Contents/MacOS/ScriptRunner.rb +16 -16
- data/install/tools/mac/ScriptRunner.app/Contents/MacOS/main.sh +10 -10
- data/install/tools/mac/ScriptRunner.app/Contents/MacOS/tool_launch.rb +38 -38
- data/install/tools/mac/TableManager.app/Contents/Info.plist +38 -38
- data/install/tools/mac/TableManager.app/Contents/MacOS/TableManager.rb +16 -16
- data/install/tools/mac/TableManager.app/Contents/MacOS/main.sh +10 -10
- data/install/tools/mac/TableManager.app/Contents/MacOS/tool_launch.rb +38 -38
- data/install/tools/mac/TestRunner.app/Contents/Info.plist +38 -38
- data/install/tools/mac/TestRunner.app/Contents/MacOS/TestRunner.rb +16 -16
- data/install/tools/mac/TestRunner.app/Contents/MacOS/main.sh +10 -10
- data/install/tools/mac/TestRunner.app/Contents/MacOS/tool_launch.rb +38 -38
- data/install/tools/mac/TlmExtractor.app/Contents/Info.plist +38 -38
- data/install/tools/mac/TlmExtractor.app/Contents/MacOS/TlmExtractor.rb +16 -16
- data/install/tools/mac/TlmExtractor.app/Contents/MacOS/main.sh +10 -10
- data/install/tools/mac/TlmExtractor.app/Contents/MacOS/tool_launch.rb +38 -38
- data/install/tools/mac/TlmGrapher.app/Contents/Info.plist +38 -38
- data/install/tools/mac/TlmGrapher.app/Contents/MacOS/TlmGrapher.rb +16 -16
- data/install/tools/mac/TlmGrapher.app/Contents/MacOS/main.sh +10 -10
- data/install/tools/mac/TlmGrapher.app/Contents/MacOS/tool_launch.rb +38 -38
- data/install/tools/mac/TlmViewer.app/Contents/Info.plist +38 -38
- data/install/tools/mac/TlmViewer.app/Contents/MacOS/TlmViewer.rb +16 -16
- data/install/tools/mac/TlmViewer.app/Contents/MacOS/main.sh +10 -10
- data/install/tools/mac/TlmViewer.app/Contents/MacOS/tool_launch.rb +38 -38
- data/install/tools/tool_launch.rb +38 -38
- 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 +311 -311
- data/lib/cosmos/core_ext/stringio.rb +24 -24
- data/lib/cosmos/core_ext/time.rb +448 -448
- 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 +326 -326
- data/lib/cosmos/gui/dialogs/about_dialog.rb +137 -137
- 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 +260 -260
- data/lib/cosmos/gui/dialogs/legal_dialog.rb +169 -169
- data/lib/cosmos/gui/dialogs/packet_log_dialog.rb +118 -118
- data/lib/cosmos/gui/dialogs/progress_dialog.rb +276 -276
- data/lib/cosmos/gui/dialogs/pry_dialog.rb +165 -165
- 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 +135 -135
- 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 +473 -473
- data/lib/cosmos/gui/line_graph/line_graph_popups.rb +116 -116
- data/lib/cosmos/gui/line_graph/line_graph_scaling.rb +451 -451
- 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 +469 -469
- 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 -724
- 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 +860 -860
- data/lib/cosmos/gui/qt_tool.rb +380 -380
- 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 +415 -415
- data/lib/cosmos/gui/utilities/screenshot.rb +25 -25
- data/lib/cosmos/gui/utilities/script_module_gui.rb +330 -330
- 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 -153
- data/lib/cosmos/interfaces/interface.rb +225 -225
- 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 -129
- data/lib/cosmos/interfaces/stream_interface.rb +136 -136
- data/lib/cosmos/interfaces/tcpip_client_interface.rb +60 -60
- data/lib/cosmos/interfaces/tcpip_server_interface.rb +164 -164
- data/lib/cosmos/interfaces/udp_interface.rb +161 -161
- 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 +376 -376
- data/lib/cosmos/io/json_drb_object.rb +198 -198
- 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 +571 -571
- data/lib/cosmos/io/udp_sockets.rb +152 -152
- data/lib/cosmos/io/win32_serial_driver.rb +145 -145
- data/lib/cosmos/packet_logs.rb +7 -7
- data/lib/cosmos/packet_logs/ccsds_log_reader.rb +104 -104
- data/lib/cosmos/packet_logs/meta_packet_log_writer.rb +107 -107
- data/lib/cosmos/packet_logs/packet_log_reader.rb +450 -450
- data/lib/cosmos/packet_logs/packet_log_writer.rb +323 -323
- data/lib/cosmos/packet_logs/packet_log_writer_pair.rb +30 -30
- data/lib/cosmos/packets/binary_accessor.rb +634 -634
- data/lib/cosmos/packets/commands.rb +293 -293
- data/lib/cosmos/packets/limits.rb +267 -267
- data/lib/cosmos/packets/limits_response.rb +38 -38
- data/lib/cosmos/packets/packet.rb +786 -786
- data/lib/cosmos/packets/packet_config.rb +482 -482
- data/lib/cosmos/packets/packet_item.rb +317 -317
- data/lib/cosmos/packets/packet_item_limits.rb +128 -128
- data/lib/cosmos/packets/parsers/format_string_parser.rb +58 -58
- data/lib/cosmos/packets/parsers/limits_parser.rb +146 -146
- data/lib/cosmos/packets/parsers/limits_response_parser.rb +52 -52
- data/lib/cosmos/packets/parsers/macro_parser.rb +116 -116
- data/lib/cosmos/packets/parsers/packet_item_parser.rb +215 -215
- data/lib/cosmos/packets/parsers/packet_parser.rb +123 -123
- data/lib/cosmos/packets/parsers/processor_parser.rb +63 -63
- data/lib/cosmos/packets/parsers/state_parser.rb +116 -116
- data/lib/cosmos/packets/structure.rb +458 -458
- data/lib/cosmos/packets/structure_item.rb +233 -233
- data/lib/cosmos/packets/telemetry.rb +350 -350
- 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/cmd_tlm_server.rb +110 -110
- data/lib/cosmos/script/commands.rb +184 -184
- data/lib/cosmos/script/extract.rb +123 -123
- data/lib/cosmos/script/limits.rb +114 -114
- data/lib/cosmos/script/script.rb +76 -76
- data/lib/cosmos/script/scripting.rb +897 -897
- data/lib/cosmos/script/telemetry.rb +174 -174
- data/lib/cosmos/script/tools.rb +138 -138
- 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 +157 -157
- data/lib/cosmos/streams/stream.rb +63 -63
- data/lib/cosmos/streams/stream_protocol.rb +373 -373
- data/lib/cosmos/streams/tcpip_client_stream.rb +113 -113
- data/lib/cosmos/streams/tcpip_socket_stream.rb +143 -143
- 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 +618 -618
- data/lib/cosmos/system/target.rb +197 -197
- data/lib/cosmos/tools/cmd_extractor/cmd_extractor.rb +255 -255
- data/lib/cosmos/tools/cmd_sender/cmd_sender.rb +717 -717
- 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 +1034 -1034
- data/lib/cosmos/tools/cmd_tlm_server/background_task.rb +46 -46
- data/lib/cosmos/tools/cmd_tlm_server/background_tasks.rb +67 -67
- data/lib/cosmos/tools/cmd_tlm_server/cmd_tlm_server.rb +515 -515
- data/lib/cosmos/tools/cmd_tlm_server/cmd_tlm_server_config.rb +253 -253
- data/lib/cosmos/tools/cmd_tlm_server/cmd_tlm_server_gui.rb +408 -408
- data/lib/cosmos/tools/cmd_tlm_server/commanding.rb +112 -112
- data/lib/cosmos/tools/cmd_tlm_server/connections.rb +175 -175
- data/lib/cosmos/tools/cmd_tlm_server/gui/interfaces_tab.rb +200 -200
- data/lib/cosmos/tools/cmd_tlm_server/gui/logging_tab.rb +176 -176
- data/lib/cosmos/tools/cmd_tlm_server/gui/packets_tab.rb +150 -150
- data/lib/cosmos/tools/cmd_tlm_server/gui/status_tab.rb +244 -244
- data/lib/cosmos/tools/cmd_tlm_server/gui/targets_tab.rb +90 -90
- data/lib/cosmos/tools/cmd_tlm_server/interface_thread.rb +266 -266
- 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 +621 -621
- data/lib/cosmos/tools/data_viewer/data_viewer_component.rb +134 -134
- data/lib/cosmos/tools/data_viewer/dump_component.rb +40 -40
- data/lib/cosmos/tools/handbook_creator/handbook_creator.rb +156 -156
- data/lib/cosmos/tools/handbook_creator/handbook_creator_config.rb +382 -382
- data/lib/cosmos/tools/launcher/launcher.rb +188 -188
- data/lib/cosmos/tools/launcher/launcher_config.rb +256 -256
- data/lib/cosmos/tools/launcher/launcher_multitool.rb +40 -40
- data/lib/cosmos/tools/launcher/launcher_tool.rb +116 -116
- data/lib/cosmos/tools/limits_monitor/limits_monitor.rb +837 -837
- 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 +542 -542
- data/lib/cosmos/tools/replay/replay.rb +501 -501
- data/lib/cosmos/tools/replay/replay_server.rb +91 -91
- data/lib/cosmos/tools/script_runner/script_audit.rb +147 -147
- data/lib/cosmos/tools/script_runner/script_runner.rb +922 -922
- data/lib/cosmos/tools/script_runner/script_runner_config.rb +40 -40
- data/lib/cosmos/tools/script_runner/script_runner_frame.rb +1798 -1798
- 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 +539 -539
- data/lib/cosmos/tools/test_runner/test_runner.rb +1189 -1189
- data/lib/cosmos/tools/test_runner/test_runner_chooser.rb +341 -341
- data/lib/cosmos/tools/tlm_extractor/text_item_chooser.rb +60 -60
- data/lib/cosmos/tools/tlm_extractor/tlm_extractor.rb +1016 -1016
- 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 +95 -95
- 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 +181 -181
- 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 +174 -174
- data/lib/cosmos/tools/tlm_grapher/data_objects/data_object.rb +193 -193
- data/lib/cosmos/tools/tlm_grapher/data_objects/housekeeping_data_object.rb +407 -407
- 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 -323
- 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 +1291 -1291
- 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 +114 -114
- 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 +78 -78
- 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 -486
- data/lib/cosmos/tools/tlm_viewer/tlm_viewer.rb +561 -561
- data/lib/cosmos/tools/tlm_viewer/tlm_viewer_config.rb +290 -290
- 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 +66 -66
- data/lib/cosmos/tools/tlm_viewer/widgets/block_widget.rb +57 -57
- 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 +759 -759
- data/lib/cosmos/utilities.rb +11 -11
- 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 +79 -79
- 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 -44
- 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 +321 -321
- data/roodi.yml +24 -24
- data/run_gui_tests.bat +0 -0
- 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 +202 -202
- data/spec/gui/line_graph/line_clip_spec.rb +322 -322
- data/spec/gui/qt_spec.rb +102 -102
- 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 -305
- 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 -130
- data/spec/interfaces/linc_interface_spec.rb +259 -259
- 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 +55 -55
- data/spec/interfaces/tcpip_server_interface_spec.rb +160 -160
- data/spec/interfaces/udp_interface_spec.rb +175 -175
- 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 +119 -119
- 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 +60 -60
- 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 +468 -468
- data/spec/packet_logs/packet_log_writer_pair_spec.rb +30 -30
- data/spec/packet_logs/packet_log_writer_spec.rb +225 -225
- data/spec/packets/binary_accessor_spec.rb +2326 -2326
- data/spec/packets/commands_spec.rb +369 -369
- data/spec/packets/limits_response_spec.rb +25 -25
- data/spec/packets/limits_spec.rb +344 -344
- data/spec/packets/packet_config_spec.rb +805 -805
- 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 +1317 -1317
- data/spec/packets/parsers/format_string_parser_spec.rb +122 -122
- data/spec/packets/parsers/limits_parser_spec.rb +282 -282
- data/spec/packets/parsers/limits_response_parser_spec.rb +149 -149
- data/spec/packets/parsers/macro_parser_spec.rb +212 -212
- data/spec/packets/parsers/packet_item_parser_spec.rb +306 -306
- data/spec/packets/parsers/packet_parser_spec.rb +99 -99
- data/spec/packets/parsers/processor_parser_spec.rb +114 -114
- data/spec/packets/parsers/state_parser_spec.rb +156 -156
- data/spec/packets/structure_item_spec.rb +195 -195
- data/spec/packets/structure_spec.rb +565 -565
- data/spec/packets/telemetry_spec.rb +578 -578
- 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/cmd_tlm_server_spec.rb +110 -110
- data/spec/script/commands_disconnect_spec.rb +270 -270
- data/spec/script/commands_spec.rb +302 -302
- data/spec/script/limits_spec.rb +153 -153
- data/spec/script/script_spec.rb +86 -86
- data/spec/script/scripting_spec.rb +440 -440
- data/spec/script/telemetry_spec.rb +165 -165
- data/spec/script/tools_spec.rb +117 -117
- data/spec/spec_helper.rb +190 -190
- data/spec/streams/burst_stream_protocol_spec.rb +32 -32
- data/spec/streams/fixed_stream_protocol_spec.rb +113 -113
- data/spec/streams/length_stream_protocol_spec.rb +300 -300
- data/spec/streams/preidentified_stream_protocol_spec.rb +121 -121
- data/spec/streams/serial_stream_spec.rb +117 -117
- data/spec/streams/stream_protocol_spec.rb +346 -346
- data/spec/streams/stream_spec.rb +30 -30
- data/spec/streams/tcpip_client_stream_spec.rb +57 -57
- data/spec/streams/tcpip_socket_stream_spec.rb +193 -193
- data/spec/streams/template_stream_protocol_spec.rb +156 -156
- data/spec/streams/terminated_stream_protocol_spec.rb +127 -127
- data/spec/system/system_spec.rb +665 -665
- data/spec/system/target_spec.rb +250 -250
- data/spec/tools/cmd_tlm_server/api_spec.rb +1117 -1117
- 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 +453 -453
- data/spec/tools/cmd_tlm_server/cmd_tlm_server_spec.rb +415 -415
- data/spec/tools/cmd_tlm_server/commanding_spec.rb +151 -151
- data/spec/tools/cmd_tlm_server/connections_spec.rb +235 -235
- data/spec/tools/cmd_tlm_server/interface_thread_spec.rb +306 -306
- data/spec/tools/cmd_tlm_server/interfaces_spec.rb +252 -252
- data/spec/tools/cmd_tlm_server/packet_logging_spec.rb +143 -143
- data/spec/tools/cmd_tlm_server/router_thread_spec.rb +151 -151
- data/spec/tools/cmd_tlm_server/routers_spec.rb +223 -223
- data/spec/tools/launcher/launcher_config_spec.rb +464 -464
- data/spec/top_level/top_level_spec.rb +334 -334
- 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
- data/test/benchmarks/binary_accessor_benchmark.rb +14 -14
- data/test/benchmarks/gsub_benchmark.rb +152 -152
- data/test/benchmarks/is_a_benchmark.rb +34 -34
- data/test/performance/PACKETS.bat +0 -0
- data/test/performance/Rakefile +77 -77
- data/test/performance/THREADS.bat +0 -0
- data/test/performance/config/data/crc.txt +196 -196
- data/test/performance/config/data/diamond.STL +57 -57
- data/test/performance/config/data/meta_init.txt +4 -4
- data/test/performance/config/system/system_packets.txt +39 -39
- data/test/performance/config/system/system_threads.txt +59 -59
- data/test/performance/config/targets/COSMOS/cmd_tlm/cosmos_server_cmds.txt +46 -46
- data/test/performance/config/targets/COSMOS/cmd_tlm/cosmos_server_tlm.txt +15 -15
- data/test/performance/config/targets/COSMOS/cmd_tlm_server.txt +6 -6
- data/test/performance/config/targets/COSMOS/screens/limits_change.txt +20 -20
- data/test/performance/config/targets/COSMOS/screens/version.txt +19 -19
- data/test/performance/config/targets/COSMOS/target.txt +11 -11
- data/test/performance/config/targets/PACKET/cmd_tlm/packet_cmds.txt +20 -20
- data/test/performance/config/targets/PACKET/cmd_tlm/packet_tlm.txt +98 -98
- data/test/performance/config/targets/PACKET/cmd_tlm_server.txt +6 -6
- data/test/performance/config/targets/PACKET/lib/packet_interface.rb +22 -22
- data/test/performance/config/targets/PACKET/lib/packet_limits_response.rb +24 -24
- data/test/performance/config/targets/PACKET/screens/status.txt +25 -25
- data/test/performance/config/targets/PACKET/target.txt +28 -28
- data/test/performance/config/targets/SYSTEM/screens/status.txt +12 -12
- data/test/performance/config/targets/THREAD/cmd_tlm/thread_cmds.txt +17 -17
- data/test/performance/config/targets/THREAD/cmd_tlm/thread_tlm.txt +18 -18
- data/test/performance/config/targets/THREAD/cmd_tlm_server.txt +6 -6
- data/test/performance/config/targets/THREAD/lib/thread_interface.rb +22 -22
- data/test/performance/config/targets/THREAD/screens/status.txt +25 -25
- data/test/performance/config/targets/THREAD/target.txt +6 -6
- data/test/performance/config/tools/cmd_tlm_server/cmd_tlm_server_packets.txt +28 -28
- data/test/performance/config/tools/cmd_tlm_server/cmd_tlm_server_threads.txt +68 -68
- data/test/performance/config/tools/data_viewer/data_viewer.txt +11 -11
- data/test/performance/config/tools/handbook_creator/handbook_creator.txt +66 -66
- data/test/performance/config/tools/handbook_creator/templates/command_packets.html.erb +86 -86
- data/test/performance/config/tools/handbook_creator/templates/command_toc.html.erb +38 -38
- data/test/performance/config/tools/handbook_creator/templates/footer.html.erb +9 -9
- data/test/performance/config/tools/handbook_creator/templates/header.html.erb +25 -25
- data/test/performance/config/tools/handbook_creator/templates/limits_groups.html.erb +13 -13
- data/test/performance/config/tools/handbook_creator/templates/nav.html.erb +27 -27
- data/test/performance/config/tools/handbook_creator/templates/overview.html.erb +1 -1
- data/test/performance/config/tools/handbook_creator/templates/pdf_cover.html.erb +23 -23
- data/test/performance/config/tools/handbook_creator/templates/pdf_footer.html.erb +33 -33
- data/test/performance/config/tools/handbook_creator/templates/pdf_header.html.erb +41 -41
- data/test/performance/config/tools/handbook_creator/templates/telemetry_packets.html.erb +80 -80
- data/test/performance/config/tools/handbook_creator/templates/telemetry_toc.html.erb +38 -38
- data/test/performance/config/tools/handbook_creator/templates/title.html.erb +1 -1
- data/test/performance/config/tools/launcher/launcher_packets.txt +34 -34
- data/test/performance/config/tools/launcher/launcher_threads.txt +83 -83
- data/test/performance/config/tools/script_runner/script_runner.txt +3 -3
- data/test/performance/config/tools/table_manager/ConfigTables_def.txt +8 -8
- data/test/performance/config/tools/table_manager/ExampleTableDefinition.txt +24 -24
- data/test/performance/config/tools/table_manager/MCConfigurationTable_fsw1_def.txt +25 -25
- data/test/performance/config/tools/table_manager/MCConfigurationTable_fsw2_def.txt +25 -25
- data/test/performance/config/tools/table_manager/PPSSelectionTable_def.txt +8 -8
- data/test/performance/config/tools/table_manager/TLMMonitoringTable_def.txt +248 -248
- data/test/performance/config/tools/test_runner/test_runner.txt +17 -17
- data/test/performance/config/tools/tlm_extractor/tlm_extractor.txt +13 -13
- data/test/performance/config/tools/tlm_extractor/tlm_extractor2.txt +2 -2
- data/test/performance/config/tools/tlm_extractor/tlm_extractor3.txt +2 -2
- data/test/performance/config/tools/tlm_extractor/tlm_extractor4.txt +2 -2
- data/test/performance/config/tools/tlm_grapher/tlm_grapher.txt +204 -204
- data/test/performance/config/tools/tlm_viewer/tlm_viewer.txt +13 -13
- data/test/performance/lib/packet_target.rb +126 -126
- data/test/performance/lib/thread_target.rb +120 -120
- data/test/performance/lib/user_version.rb +3 -3
- data/test/performance/procedures/checks.rb +11 -11
- data/test/performance/procedures/clear_util.rb +7 -7
- data/test/performance/procedures/collect.rb +18 -18
- data/test/performance/procedures/collect_util.rb +14 -14
- data/test/performance/procedures/cosmos_api_test.rb +293 -293
- data/test/performance/procedures/disconnect.rb +29 -29
- data/test/performance/procedures/example_test.rb +182 -182
- data/test/performance/procedures/plot_test.rb +8 -8
- data/test/performance/procedures/procedure.rb +2 -2
- data/test/performance/procedures/run_example_test.rb +3 -3
- data/test/performance/procedures/test.rb +51 -51
- data/test/performance/tools/CmdExtractor +14 -14
- data/test/performance/tools/CmdExtractor.bat +0 -0
- data/test/performance/tools/CmdSender +14 -14
- data/test/performance/tools/CmdSender.bat +0 -0
- data/test/performance/tools/CmdTlmServer +16 -16
- data/test/performance/tools/CmdTlmServer.bat +0 -0
- data/test/performance/tools/CmdTlmServerMemProf +20 -20
- data/test/performance/tools/CmdTlmServerMemProf.bat +0 -0
- data/test/performance/tools/DataViewer +14 -14
- data/test/performance/tools/DataViewer.bat +0 -0
- data/test/performance/tools/HandbookCreator +14 -14
- data/test/performance/tools/HandbookCreator.bat +0 -0
- data/test/performance/tools/Launcher +14 -14
- data/test/performance/tools/Launcher.bat +0 -0
- data/test/performance/tools/LimitsMonitor +14 -14
- data/test/performance/tools/LimitsMonitor.bat +0 -0
- data/test/performance/tools/OpenGLBuilder +14 -14
- data/test/performance/tools/OpenGLBuilder.bat +0 -0
- data/test/performance/tools/PacketTarget +14 -14
- data/test/performance/tools/PacketTarget.bat +0 -0
- data/test/performance/tools/PacketViewer +14 -14
- data/test/performance/tools/PacketViewer.bat +0 -0
- data/test/performance/tools/Replay +14 -14
- data/test/performance/tools/Replay.bat +0 -0
- data/test/performance/tools/ScpiTarget +14 -14
- data/test/performance/tools/ScpiTarget.bat +0 -0
- data/test/performance/tools/ScriptRunner +14 -14
- data/test/performance/tools/ScriptRunner.bat +0 -0
- data/test/performance/tools/TableManager +14 -14
- data/test/performance/tools/TableManager.bat +0 -0
- data/test/performance/tools/TestRunner +14 -14
- data/test/performance/tools/TestRunner.bat +0 -0
- data/test/performance/tools/ThreadTarget +14 -14
- data/test/performance/tools/ThreadTarget.bat +0 -0
- data/test/performance/tools/TlmExtractor +14 -14
- data/test/performance/tools/TlmExtractor.bat +0 -0
- data/test/performance/tools/TlmGrapher +14 -14
- data/test/performance/tools/TlmGrapher.bat +0 -0
- data/test/performance/tools/TlmGrapherMemProf +19 -19
- data/test/performance/tools/TlmGrapherMemProf.bat +0 -0
- data/test/performance/tools/TlmViewer +14 -14
- data/test/performance/tools/TlmViewer.bat +0 -0
- data/test/performance/tools/TlmViewerMemProf +19 -19
- data/test/performance/tools/TlmViewerMemProf.bat +0 -0
- data/test/performance/tools/mac/CmdExtractor.app/Contents/Info.plist +38 -38
- data/test/performance/tools/mac/CmdExtractor.app/Contents/MacOS/CmdExtractor.rb +15 -15
- data/test/performance/tools/mac/CmdExtractor.app/Contents/MacOS/main.sh +6 -6
- data/test/performance/tools/mac/CmdSender.app/Contents/Info.plist +38 -38
- data/test/performance/tools/mac/CmdSender.app/Contents/MacOS/CmdSender.rb +15 -15
- data/test/performance/tools/mac/CmdSender.app/Contents/MacOS/main.sh +6 -6
- data/test/performance/tools/mac/CmdTlmServer.app/Contents/Info.plist +38 -38
- data/test/performance/tools/mac/CmdTlmServer.app/Contents/MacOS/CmdTlmServer.rb +15 -15
- data/test/performance/tools/mac/CmdTlmServer.app/Contents/MacOS/main.sh +6 -6
- data/test/performance/tools/mac/DataViewer.app/Contents/Info.plist +38 -38
- data/test/performance/tools/mac/DataViewer.app/Contents/MacOS/DataViewer.rb +15 -15
- data/test/performance/tools/mac/DataViewer.app/Contents/MacOS/main.sh +6 -6
- data/test/performance/tools/mac/HandbookCreator.app/Contents/Info.plist +38 -38
- data/test/performance/tools/mac/HandbookCreator.app/Contents/MacOS/HandbookCreator.rb +15 -15
- data/test/performance/tools/mac/HandbookCreator.app/Contents/MacOS/main.sh +6 -6
- data/test/performance/tools/mac/Launcher.app/Contents/Info.plist +38 -38
- data/test/performance/tools/mac/Launcher.app/Contents/MacOS/Launcher.rb +15 -15
- data/test/performance/tools/mac/Launcher.app/Contents/MacOS/main.sh +6 -6
- data/test/performance/tools/mac/LimitsMonitor.app/Contents/Info.plist +38 -38
- data/test/performance/tools/mac/LimitsMonitor.app/Contents/MacOS/LimitsMonitor.rb +15 -15
- data/test/performance/tools/mac/LimitsMonitor.app/Contents/MacOS/main.sh +6 -6
- data/test/performance/tools/mac/OpenGLBuilder.app/Contents/Info.plist +38 -38
- data/test/performance/tools/mac/OpenGLBuilder.app/Contents/MacOS/OpenGLBuilder.rb +15 -15
- data/test/performance/tools/mac/OpenGLBuilder.app/Contents/MacOS/main.sh +6 -6
- data/test/performance/tools/mac/PacketViewer.app/Contents/Info.plist +38 -38
- data/test/performance/tools/mac/PacketViewer.app/Contents/MacOS/PacketViewer.rb +15 -15
- data/test/performance/tools/mac/PacketViewer.app/Contents/MacOS/main.sh +6 -6
- data/test/performance/tools/mac/Replay.app/Contents/Info.plist +38 -38
- data/test/performance/tools/mac/Replay.app/Contents/MacOS/Replay.rb +15 -15
- data/test/performance/tools/mac/Replay.app/Contents/MacOS/main.sh +6 -6
- data/test/performance/tools/mac/ScriptRunner.app/Contents/Info.plist +38 -38
- data/test/performance/tools/mac/ScriptRunner.app/Contents/MacOS/ScriptRunner.rb +15 -15
- data/test/performance/tools/mac/ScriptRunner.app/Contents/MacOS/main.sh +6 -6
- data/test/performance/tools/mac/TableManager.app/Contents/Info.plist +38 -38
- data/test/performance/tools/mac/TableManager.app/Contents/MacOS/TableManager.rb +15 -15
- data/test/performance/tools/mac/TableManager.app/Contents/MacOS/main.sh +6 -6
- data/test/performance/tools/mac/TestRunner.app/Contents/Info.plist +38 -38
- data/test/performance/tools/mac/TestRunner.app/Contents/MacOS/TestRunner.rb +15 -15
- data/test/performance/tools/mac/TestRunner.app/Contents/MacOS/main.sh +6 -6
- data/test/performance/tools/mac/TlmExtractor.app/Contents/Info.plist +38 -38
- data/test/performance/tools/mac/TlmExtractor.app/Contents/MacOS/TlmExtractor.rb +15 -15
- data/test/performance/tools/mac/TlmExtractor.app/Contents/MacOS/main.sh +6 -6
- data/test/performance/tools/mac/TlmGrapher.app/Contents/Info.plist +38 -38
- data/test/performance/tools/mac/TlmGrapher.app/Contents/MacOS/TlmGrapher.rb +15 -15
- data/test/performance/tools/mac/TlmGrapher.app/Contents/MacOS/main.sh +6 -6
- data/test/performance/tools/mac/TlmViewer.app/Contents/Info.plist +38 -38
- data/test/performance/tools/mac/TlmViewer.app/Contents/MacOS/TlmViewer.rb +15 -15
- data/test/performance/tools/mac/TlmViewer.app/Contents/MacOS/main.sh +6 -6
- metadata +3 -3
|
@@ -1,30 +1,30 @@
|
|
|
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/text/completion_text_edit'
|
|
14
|
-
|
|
15
|
-
module Cosmos
|
|
16
|
-
|
|
17
|
-
class CompletionLineEdit < CompletionTextEdit
|
|
18
|
-
def initialize(parent)
|
|
19
|
-
super(parent)
|
|
20
|
-
setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff)
|
|
21
|
-
setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff)
|
|
22
|
-
setMaximumBlockCount(1)
|
|
23
|
-
# Create a temporary LineEdit to figure out a good height
|
|
24
|
-
line = Qt::LineEdit.new("ASDF99")
|
|
25
|
-
setMaximumHeight(line.sizeHint.height)
|
|
26
|
-
line.dispose
|
|
27
|
-
end
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
end # module Cosmos
|
|
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/text/completion_text_edit'
|
|
14
|
+
|
|
15
|
+
module Cosmos
|
|
16
|
+
|
|
17
|
+
class CompletionLineEdit < CompletionTextEdit
|
|
18
|
+
def initialize(parent)
|
|
19
|
+
super(parent)
|
|
20
|
+
setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff)
|
|
21
|
+
setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff)
|
|
22
|
+
setMaximumBlockCount(1)
|
|
23
|
+
# Create a temporary LineEdit to figure out a good height
|
|
24
|
+
line = Qt::LineEdit.new("ASDF99")
|
|
25
|
+
setMaximumHeight(line.sizeHint.height)
|
|
26
|
+
line.dispose
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
end # module Cosmos
|
|
@@ -1,179 +1,179 @@
|
|
|
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/splash'
|
|
14
|
-
|
|
15
|
-
module Cosmos
|
|
16
|
-
|
|
17
|
-
class CompletionTextEdit < Qt::PlainTextEdit
|
|
18
|
-
slots 'highlight_line()'
|
|
19
|
-
|
|
20
|
-
TRUE_VARIANT = Qt::Variant.new(true)
|
|
21
|
-
SELECTION_DETAILS_POOL = []
|
|
22
|
-
|
|
23
|
-
class SelectionDetails
|
|
24
|
-
attr_reader :selection
|
|
25
|
-
attr_reader :format
|
|
26
|
-
|
|
27
|
-
def initialize
|
|
28
|
-
@selection = Qt::TextEdit::ExtraSelection.new
|
|
29
|
-
@format = @selection.format
|
|
30
|
-
end
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
def initialize(parent)
|
|
34
|
-
super(parent)
|
|
35
|
-
setFocusPolicy(Qt::StrongFocus)
|
|
36
|
-
setLineWrapMode(Qt::PlainTextEdit::NoWrap)
|
|
37
|
-
|
|
38
|
-
@cursor = Qt::TextCursor.new(document())
|
|
39
|
-
@selection_details = SELECTION_DETAILS_POOL.pop
|
|
40
|
-
@selection_details = SelectionDetails.new unless @selection_details
|
|
41
|
-
@selection_details.format.setProperty(Qt::TextFormat::FullWidthSelection, TRUE_VARIANT)
|
|
42
|
-
@selection_details.selection.format = @selection_details.format
|
|
43
|
-
@selection_details.selection.cursor = @cursor
|
|
44
|
-
|
|
45
|
-
@last_hightlighted_line = 1
|
|
46
|
-
@code_completion = nil
|
|
47
|
-
begin
|
|
48
|
-
@code_completion = Completion.new(self)
|
|
49
|
-
rescue
|
|
50
|
-
# Oh well - no completion
|
|
51
|
-
end
|
|
52
|
-
end
|
|
53
|
-
|
|
54
|
-
def dispose
|
|
55
|
-
super()
|
|
56
|
-
@cursor.dispose
|
|
57
|
-
SELECTION_DETAILS_POOL << @selection_details
|
|
58
|
-
@code_completion.dispose if @code_completion
|
|
59
|
-
end
|
|
60
|
-
|
|
61
|
-
def keyPressCallback=(callback)
|
|
62
|
-
@keypress_callback = callback
|
|
63
|
-
end
|
|
64
|
-
|
|
65
|
-
def keyPressEvent(event)
|
|
66
|
-
# If the completion popup is visible then ignore the event and allow the popup to handle it
|
|
67
|
-
if (@code_completion and @code_completion.popup.isVisible)
|
|
68
|
-
case event.key
|
|
69
|
-
when Qt::Key_Return, Qt::Key_Enter
|
|
70
|
-
event.ignore
|
|
71
|
-
return
|
|
72
|
-
end
|
|
73
|
-
end
|
|
74
|
-
|
|
75
|
-
continue = @keypress_callback.call(event) if @keypress_callback
|
|
76
|
-
|
|
77
|
-
case event.key
|
|
78
|
-
when Qt::Key_Tab
|
|
79
|
-
if event.modifiers == Qt::NoModifier
|
|
80
|
-
indent_selection()
|
|
81
|
-
end
|
|
82
|
-
when Qt::Key_Backtab
|
|
83
|
-
unindent_selection()
|
|
84
|
-
else
|
|
85
|
-
if continue != false
|
|
86
|
-
super(event)
|
|
87
|
-
@code_completion.handle_keypress(event) if @code_completion
|
|
88
|
-
end
|
|
89
|
-
end
|
|
90
|
-
end
|
|
91
|
-
|
|
92
|
-
def indent_selection
|
|
93
|
-
cursor = textCursor
|
|
94
|
-
# Figure out if the cursor has a selection
|
|
95
|
-
no_selection = true
|
|
96
|
-
no_selection = false if cursor.hasSelection
|
|
97
|
-
|
|
98
|
-
# Start the edit block so this can be all undone with a single undo step
|
|
99
|
-
cursor.beginEditBlock
|
|
100
|
-
selection_end = cursor.selectionEnd
|
|
101
|
-
# Initially place the cursor at the beginning of the selection
|
|
102
|
-
# If nothing is selected this will just put the cursor at the beginning of the current line
|
|
103
|
-
cursor.setPosition(textCursor.selectionStart)
|
|
104
|
-
cursor.movePosition(Qt::TextCursor::StartOfLine)
|
|
105
|
-
result = true
|
|
106
|
-
while (cursor.position < selection_end and result == true) or (no_selection)
|
|
107
|
-
# Add two spaces for a standard Ruby indent
|
|
108
|
-
cursor.insertText(' ')
|
|
109
|
-
# Move the cursor to the beginning of the next line
|
|
110
|
-
cursor.movePosition(Qt::TextCursor::StartOfLine)
|
|
111
|
-
result = cursor.movePosition(Qt::TextCursor::Down)
|
|
112
|
-
# Since we inserted two spaces we need to move the end position by two
|
|
113
|
-
selection_end += 2
|
|
114
|
-
# If nothing was selected then we're working with a single line and we can break
|
|
115
|
-
break if no_selection
|
|
116
|
-
end
|
|
117
|
-
cursor.endEditBlock
|
|
118
|
-
end
|
|
119
|
-
|
|
120
|
-
def unindent_selection
|
|
121
|
-
cursor = textCursor
|
|
122
|
-
# Start the edit block so this can be undone with a single undo step
|
|
123
|
-
cursor.beginEditBlock
|
|
124
|
-
# Initially place the cursor at the beginning of the selection
|
|
125
|
-
# If nothing is selected this will just put the cursor at the beginning of the current line
|
|
126
|
-
selection_end = cursor.selectionEnd
|
|
127
|
-
cursor.setPosition(textCursor.selectionStart)
|
|
128
|
-
cursor.movePosition(Qt::TextCursor::StartOfLine)
|
|
129
|
-
result = true
|
|
130
|
-
while cursor.position <= selection_end and result == true
|
|
131
|
-
# Since we inserted two spaces for an indentation we remove a single character twice
|
|
132
|
-
2.times do
|
|
133
|
-
# Only remove the text if we have spaces to remove
|
|
134
|
-
if cursor.block.text =~ /^\s/
|
|
135
|
-
cursor.deleteChar
|
|
136
|
-
# Adjust the selection end since we just removed a character
|
|
137
|
-
selection_end -= 1
|
|
138
|
-
end
|
|
139
|
-
end
|
|
140
|
-
# Move down to the next line in case we have to unindent that
|
|
141
|
-
# We store the result which is false if the move couldn't complete
|
|
142
|
-
# For example if we're on the last line in the editor
|
|
143
|
-
result = cursor.movePosition(Qt::TextCursor::Down)
|
|
144
|
-
end
|
|
145
|
-
cursor.endEditBlock
|
|
146
|
-
end
|
|
147
|
-
|
|
148
|
-
def highlight_line(line, color = 'palegreen') #102, 255, 102
|
|
149
|
-
color = Cosmos::getColor(color)
|
|
150
|
-
# Store the line number in case we need to rehighlight this line
|
|
151
|
-
@last_hightlighted_line = line
|
|
152
|
-
brush = Cosmos.getBrush(color)
|
|
153
|
-
@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
|
-
@selection_details.selection.format = @selection_details.format
|
|
163
|
-
@selection_details.selection.cursor = @cursor
|
|
164
|
-
setExtraSelections([@selection_details.selection])
|
|
165
|
-
# Center the cursor to ensure it is visible
|
|
166
|
-
centerCursor()
|
|
167
|
-
end
|
|
168
|
-
|
|
169
|
-
def stop_highlight
|
|
170
|
-
# Clearing the extra selections with a nil array clears the selection
|
|
171
|
-
self.setExtraSelections([])
|
|
172
|
-
end
|
|
173
|
-
|
|
174
|
-
def rehighlight(color = 'palegreen')
|
|
175
|
-
highlight_line(@last_hightlighted_line, color)
|
|
176
|
-
end
|
|
177
|
-
end
|
|
178
|
-
|
|
179
|
-
end # module Cosmos
|
|
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/splash'
|
|
14
|
+
|
|
15
|
+
module Cosmos
|
|
16
|
+
|
|
17
|
+
class CompletionTextEdit < Qt::PlainTextEdit
|
|
18
|
+
slots 'highlight_line()'
|
|
19
|
+
|
|
20
|
+
TRUE_VARIANT = Qt::Variant.new(true)
|
|
21
|
+
SELECTION_DETAILS_POOL = []
|
|
22
|
+
|
|
23
|
+
class SelectionDetails
|
|
24
|
+
attr_reader :selection
|
|
25
|
+
attr_reader :format
|
|
26
|
+
|
|
27
|
+
def initialize
|
|
28
|
+
@selection = Qt::TextEdit::ExtraSelection.new
|
|
29
|
+
@format = @selection.format
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def initialize(parent)
|
|
34
|
+
super(parent)
|
|
35
|
+
setFocusPolicy(Qt::StrongFocus)
|
|
36
|
+
setLineWrapMode(Qt::PlainTextEdit::NoWrap)
|
|
37
|
+
|
|
38
|
+
@cursor = Qt::TextCursor.new(document())
|
|
39
|
+
@selection_details = SELECTION_DETAILS_POOL.pop
|
|
40
|
+
@selection_details = SelectionDetails.new unless @selection_details
|
|
41
|
+
@selection_details.format.setProperty(Qt::TextFormat::FullWidthSelection, TRUE_VARIANT)
|
|
42
|
+
@selection_details.selection.format = @selection_details.format
|
|
43
|
+
@selection_details.selection.cursor = @cursor
|
|
44
|
+
|
|
45
|
+
@last_hightlighted_line = 1
|
|
46
|
+
@code_completion = nil
|
|
47
|
+
begin
|
|
48
|
+
@code_completion = Completion.new(self)
|
|
49
|
+
rescue
|
|
50
|
+
# Oh well - no completion
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
def dispose
|
|
55
|
+
super()
|
|
56
|
+
@cursor.dispose
|
|
57
|
+
SELECTION_DETAILS_POOL << @selection_details
|
|
58
|
+
@code_completion.dispose if @code_completion
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
def keyPressCallback=(callback)
|
|
62
|
+
@keypress_callback = callback
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
def keyPressEvent(event)
|
|
66
|
+
# If the completion popup is visible then ignore the event and allow the popup to handle it
|
|
67
|
+
if (@code_completion and @code_completion.popup.isVisible)
|
|
68
|
+
case event.key
|
|
69
|
+
when Qt::Key_Return, Qt::Key_Enter
|
|
70
|
+
event.ignore
|
|
71
|
+
return
|
|
72
|
+
end
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
continue = @keypress_callback.call(event) if @keypress_callback
|
|
76
|
+
|
|
77
|
+
case event.key
|
|
78
|
+
when Qt::Key_Tab
|
|
79
|
+
if event.modifiers == Qt::NoModifier
|
|
80
|
+
indent_selection()
|
|
81
|
+
end
|
|
82
|
+
when Qt::Key_Backtab
|
|
83
|
+
unindent_selection()
|
|
84
|
+
else
|
|
85
|
+
if continue != false
|
|
86
|
+
super(event)
|
|
87
|
+
@code_completion.handle_keypress(event) if @code_completion
|
|
88
|
+
end
|
|
89
|
+
end
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
def indent_selection
|
|
93
|
+
cursor = textCursor
|
|
94
|
+
# Figure out if the cursor has a selection
|
|
95
|
+
no_selection = true
|
|
96
|
+
no_selection = false if cursor.hasSelection
|
|
97
|
+
|
|
98
|
+
# Start the edit block so this can be all undone with a single undo step
|
|
99
|
+
cursor.beginEditBlock
|
|
100
|
+
selection_end = cursor.selectionEnd
|
|
101
|
+
# Initially place the cursor at the beginning of the selection
|
|
102
|
+
# If nothing is selected this will just put the cursor at the beginning of the current line
|
|
103
|
+
cursor.setPosition(textCursor.selectionStart)
|
|
104
|
+
cursor.movePosition(Qt::TextCursor::StartOfLine)
|
|
105
|
+
result = true
|
|
106
|
+
while (cursor.position < selection_end and result == true) or (no_selection)
|
|
107
|
+
# Add two spaces for a standard Ruby indent
|
|
108
|
+
cursor.insertText(' ')
|
|
109
|
+
# Move the cursor to the beginning of the next line
|
|
110
|
+
cursor.movePosition(Qt::TextCursor::StartOfLine)
|
|
111
|
+
result = cursor.movePosition(Qt::TextCursor::Down)
|
|
112
|
+
# Since we inserted two spaces we need to move the end position by two
|
|
113
|
+
selection_end += 2
|
|
114
|
+
# If nothing was selected then we're working with a single line and we can break
|
|
115
|
+
break if no_selection
|
|
116
|
+
end
|
|
117
|
+
cursor.endEditBlock
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
def unindent_selection
|
|
121
|
+
cursor = textCursor
|
|
122
|
+
# Start the edit block so this can be undone with a single undo step
|
|
123
|
+
cursor.beginEditBlock
|
|
124
|
+
# Initially place the cursor at the beginning of the selection
|
|
125
|
+
# If nothing is selected this will just put the cursor at the beginning of the current line
|
|
126
|
+
selection_end = cursor.selectionEnd
|
|
127
|
+
cursor.setPosition(textCursor.selectionStart)
|
|
128
|
+
cursor.movePosition(Qt::TextCursor::StartOfLine)
|
|
129
|
+
result = true
|
|
130
|
+
while cursor.position <= selection_end and result == true
|
|
131
|
+
# Since we inserted two spaces for an indentation we remove a single character twice
|
|
132
|
+
2.times do
|
|
133
|
+
# Only remove the text if we have spaces to remove
|
|
134
|
+
if cursor.block.text =~ /^\s/
|
|
135
|
+
cursor.deleteChar
|
|
136
|
+
# Adjust the selection end since we just removed a character
|
|
137
|
+
selection_end -= 1
|
|
138
|
+
end
|
|
139
|
+
end
|
|
140
|
+
# Move down to the next line in case we have to unindent that
|
|
141
|
+
# We store the result which is false if the move couldn't complete
|
|
142
|
+
# For example if we're on the last line in the editor
|
|
143
|
+
result = cursor.movePosition(Qt::TextCursor::Down)
|
|
144
|
+
end
|
|
145
|
+
cursor.endEditBlock
|
|
146
|
+
end
|
|
147
|
+
|
|
148
|
+
def highlight_line(line, color = 'palegreen') #102, 255, 102
|
|
149
|
+
color = Cosmos::getColor(color)
|
|
150
|
+
# Store the line number in case we need to rehighlight this line
|
|
151
|
+
@last_hightlighted_line = line
|
|
152
|
+
brush = Cosmos.getBrush(color)
|
|
153
|
+
@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
|
+
@selection_details.selection.format = @selection_details.format
|
|
163
|
+
@selection_details.selection.cursor = @cursor
|
|
164
|
+
setExtraSelections([@selection_details.selection])
|
|
165
|
+
# Center the cursor to ensure it is visible
|
|
166
|
+
centerCursor()
|
|
167
|
+
end
|
|
168
|
+
|
|
169
|
+
def stop_highlight
|
|
170
|
+
# Clearing the extra selections with a nil array clears the selection
|
|
171
|
+
self.setExtraSelections([])
|
|
172
|
+
end
|
|
173
|
+
|
|
174
|
+
def rehighlight(color = 'palegreen')
|
|
175
|
+
highlight_line(@last_hightlighted_line, color)
|
|
176
|
+
end
|
|
177
|
+
end
|
|
178
|
+
|
|
179
|
+
end # module Cosmos
|
|
@@ -1,415 +1,415 @@
|
|
|
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/script'
|
|
13
|
-
require 'cosmos/gui/qt'
|
|
14
|
-
require 'cosmos/gui/text/completion_text_edit'
|
|
15
|
-
|
|
16
|
-
module Cosmos
|
|
17
|
-
|
|
18
|
-
class RubyEditor < CompletionTextEdit
|
|
19
|
-
# private slot used to connect to the blockCountChanged signal
|
|
20
|
-
slots 'line_count_changed()'
|
|
21
|
-
# private slot used to connect to the updateRequest signal
|
|
22
|
-
slots 'update_line_number_area(const QRect &, int)'
|
|
23
|
-
|
|
24
|
-
signals 'breakpoint_set(int)'
|
|
25
|
-
signals 'breakpoint_cleared(int)'
|
|
26
|
-
signals 'breakpoints_cleared()'
|
|
27
|
-
|
|
28
|
-
attr_accessor :enable_breakpoints
|
|
29
|
-
|
|
30
|
-
# This works but slows down the GUI significantly when
|
|
31
|
-
# pasting a large (10k line) block of code into the editor
|
|
32
|
-
class RubySyntax < Qt::SyntaxHighlighter
|
|
33
|
-
# Ruby keywords - http://www.ruby-doc.org/docs/keywords/1.9/
|
|
34
|
-
# Also include some common methods that are typically called by
|
|
35
|
-
# themselves like puts, print, sleep
|
|
36
|
-
RUBY_KEYWORDS = %w(BEGIN END __ENCODING__ __END__ __FILE__ __LINE__ \
|
|
37
|
-
alias and begin break case class def defined? do \
|
|
38
|
-
else elsif end ensure false for if in module \
|
|
39
|
-
next nil not or raise redo rescue retry return \
|
|
40
|
-
self super then true undef unless until when while yield \
|
|
41
|
-
puts print sleep) # common stand alone methods
|
|
42
|
-
|
|
43
|
-
def self.create_format(color = Cosmos::BLACK, style='')
|
|
44
|
-
color = Cosmos::getColor(color)
|
|
45
|
-
brush = Cosmos::getBrush(color)
|
|
46
|
-
|
|
47
|
-
format = Qt::TextCharFormat.new
|
|
48
|
-
format.setForeground(brush)
|
|
49
|
-
if style == 'bold'
|
|
50
|
-
format.setFontWeight(Qt::Font::Bold)
|
|
51
|
-
end
|
|
52
|
-
if style == 'italic'
|
|
53
|
-
format.setFontItalic(true)
|
|
54
|
-
end
|
|
55
|
-
format
|
|
56
|
-
end
|
|
57
|
-
|
|
58
|
-
# Syntax styles - refer to the ruby.properties in Scite
|
|
59
|
-
STYLES = {
|
|
60
|
-
'normal' => create_format('black'),
|
|
61
|
-
'ruby_keyword' => create_format('darkBlue','bold'),
|
|
62
|
-
'cosmos_keyword' => create_format('blue','bold'),
|
|
63
|
-
'operator' => create_format('red'),
|
|
64
|
-
'brace' => create_format('black','bold'),
|
|
65
|
-
'class' => create_format('blue', 'bold'),
|
|
66
|
-
'method' => create_format(Cosmos::getColor(0, 127, 127), 'bold'),
|
|
67
|
-
'string' => create_format(Cosmos::getColor(127, 0, 127)),
|
|
68
|
-
'symbol' => create_format(Cosmos::getColor(192,160,48)),
|
|
69
|
-
'comment' => create_format('green'),
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
# Ruby braces
|
|
73
|
-
BRACES = ['\{', '\}', '\(', '\)', '\[', '\]','\|']
|
|
74
|
-
|
|
75
|
-
RULES = []
|
|
76
|
-
RUBY_KEYWORDS.each do |w|
|
|
77
|
-
RULES << ['\b'+w+'\b', 0, STYLES['ruby_keyword']]
|
|
78
|
-
end
|
|
79
|
-
Script.private_instance_methods.each do |w|
|
|
80
|
-
RULES << ['\b'+w.to_s+'\b', 0, STYLES['cosmos_keyword']]
|
|
81
|
-
end
|
|
82
|
-
BRACES.each do |b|
|
|
83
|
-
RULES << ["#{b}", 0, STYLES['brace']]
|
|
84
|
-
end
|
|
85
|
-
RULES.concat([
|
|
86
|
-
# 'def' followed by an identifier
|
|
87
|
-
['\bdef\b\s*(\w+)', 1, STYLES['method']],
|
|
88
|
-
# 'class' followed by an identifier
|
|
89
|
-
['\bclass\b\s*(\w+)', 1, STYLES['class']],
|
|
90
|
-
# Ruby symbol
|
|
91
|
-
[':\b\w+', 0, STYLES['symbol']],
|
|
92
|
-
# Ruby namespace operator
|
|
93
|
-
['\b\w+(::\b\w+)+', 0, STYLES['class']],
|
|
94
|
-
# Ruby global
|
|
95
|
-
['\\$\b\w+', 0, STYLES['string']],
|
|
96
|
-
# A single # or a # not followed by { to the end
|
|
97
|
-
['(#$|#[^{]).*', 0, STYLES['comment']],
|
|
98
|
-
# Regex, possibly containing escape sequences
|
|
99
|
-
["/.*/", 0, STYLES['string']],
|
|
100
|
-
# Double-quoted string, possibly containing escape sequences
|
|
101
|
-
['"([^"\\\\]|\\\\.)*"', 0, STYLES['string']],
|
|
102
|
-
# Match interpolated strings "blah #{code} blah"
|
|
103
|
-
['(\#\\{)[^\\}]*\\}', 1, STYLES['brace']],
|
|
104
|
-
['\#\\{[^\\}]*(\\})', 1, STYLES['brace']],
|
|
105
|
-
['\#\\{([^\\}]*)\\}', 1, STYLES['normal']],
|
|
106
|
-
# Single-quoted string, possibly containing escape sequences
|
|
107
|
-
["'[^'\\\\]*(\\.[^'\\\\]*)*'", 0, STYLES['string']],
|
|
108
|
-
# Back-tick string, possibly containing escape sequences
|
|
109
|
-
["`[^`\\\\]*(\\.[^`\\\\]*)*`", 0, STYLES['string']],
|
|
110
|
-
])
|
|
111
|
-
|
|
112
|
-
# Build a QRegExp for each pattern
|
|
113
|
-
RULES_INFO = []
|
|
114
|
-
RULES.each do |pat, index, fmt|
|
|
115
|
-
RULES_INFO << [Qt::RegExp.new(pat, Qt::CaseSensitive, Qt::RegExp::RegExp2), index, fmt]
|
|
116
|
-
end
|
|
117
|
-
|
|
118
|
-
def highlightBlock(text)
|
|
119
|
-
# Do other syntax formatting
|
|
120
|
-
RULES_INFO.each do |expression, nth, format|
|
|
121
|
-
index = expression.indexIn(text, 0)
|
|
122
|
-
last_index = index
|
|
123
|
-
last_length = -1
|
|
124
|
-
while index >= 0
|
|
125
|
-
# We actually want the index of the nth match
|
|
126
|
-
index = expression.pos(nth)
|
|
127
|
-
# Bail if the index goes negative because it means
|
|
128
|
-
# we won't have a valid capture
|
|
129
|
-
break if index < 0
|
|
130
|
-
length = expression.cap(nth).length()
|
|
131
|
-
break if length <= 0
|
|
132
|
-
# Break if we're in an endless loop
|
|
133
|
-
break if (last_index == index and last_length == length)
|
|
134
|
-
last_length = length
|
|
135
|
-
last_index = index
|
|
136
|
-
self.setFormat(index, length, format)
|
|
137
|
-
index = expression.indexIn(text, index + length)
|
|
138
|
-
end
|
|
139
|
-
end
|
|
140
|
-
end
|
|
141
|
-
end
|
|
142
|
-
|
|
143
|
-
class LineNumberArea < Qt::Widget
|
|
144
|
-
def initialize(editor)
|
|
145
|
-
super(editor)
|
|
146
|
-
@codeEditor = editor
|
|
147
|
-
self
|
|
148
|
-
end
|
|
149
|
-
|
|
150
|
-
def paintEvent(event)
|
|
151
|
-
@codeEditor.line_number_area_paint_event(event)
|
|
152
|
-
end
|
|
153
|
-
end
|
|
154
|
-
|
|
155
|
-
CHAR_57 = Qt::Char.new(57)
|
|
156
|
-
|
|
157
|
-
def initialize(parent)
|
|
158
|
-
super(parent)
|
|
159
|
-
font = Cosmos.get_default_font
|
|
160
|
-
setFont(font)
|
|
161
|
-
@fontMetrics = Cosmos.getFontMetrics(font)
|
|
162
|
-
|
|
163
|
-
# This is needed so text searching highlights correctly
|
|
164
|
-
setStyleSheet("selection-background-color: lightblue; selection-color: black;")
|
|
165
|
-
|
|
166
|
-
@breakpoints = []
|
|
167
|
-
@enable_breakpoints = false
|
|
168
|
-
|
|
169
|
-
# RubySyntax works but slows down the GUI significantly when
|
|
170
|
-
# pasting a large (10k line) block of code into the editor
|
|
171
|
-
@syntax = RubySyntax.new(document())
|
|
172
|
-
@lineNumberArea = LineNumberArea.new(self)
|
|
173
|
-
|
|
174
|
-
connect(self, SIGNAL('blockCountChanged(int)'), self, SLOT('line_count_changed()'))
|
|
175
|
-
connect(self, SIGNAL('updateRequest(const QRect &, int)'), self, SLOT('update_line_number_area(const QRect &, int)'))
|
|
176
|
-
|
|
177
|
-
line_count_changed()
|
|
178
|
-
end
|
|
179
|
-
|
|
180
|
-
def dispose
|
|
181
|
-
super()
|
|
182
|
-
@syntax.dispose
|
|
183
|
-
@lineNumberArea.dispose
|
|
184
|
-
end
|
|
185
|
-
|
|
186
|
-
def context_menu(point)
|
|
187
|
-
menu = createStandardContextMenu()
|
|
188
|
-
return menu unless @enable_breakpoints
|
|
189
|
-
|
|
190
|
-
menu.addSeparator()
|
|
191
|
-
menu.addAction(create_add_breakpoint_action(point))
|
|
192
|
-
menu.addAction(create_clear_breakpoint_action(point))
|
|
193
|
-
menu.addAction(create_clear_all_breakpoints_action())
|
|
194
|
-
menu
|
|
195
|
-
end
|
|
196
|
-
|
|
197
|
-
def add_breakpoint(line)
|
|
198
|
-
@breakpoints << line
|
|
199
|
-
@lineNumberArea.repaint
|
|
200
|
-
end
|
|
201
|
-
|
|
202
|
-
def clear_breakpoint(line)
|
|
203
|
-
@breakpoints.delete(line)
|
|
204
|
-
@lineNumberArea.repaint
|
|
205
|
-
end
|
|
206
|
-
|
|
207
|
-
def clear_breakpoints
|
|
208
|
-
@breakpoints = []
|
|
209
|
-
@lineNumberArea.repaint
|
|
210
|
-
end
|
|
211
|
-
|
|
212
|
-
def comment_or_uncomment_lines
|
|
213
|
-
cursor = textCursor
|
|
214
|
-
no_selection = cursor.hasSelection ? false : true
|
|
215
|
-
|
|
216
|
-
# Start the edit block so this can be all undone with a single undo step
|
|
217
|
-
cursor.beginEditBlock
|
|
218
|
-
selection_end = cursor.selectionEnd
|
|
219
|
-
# Initially place the cursor at the beginning of the selection
|
|
220
|
-
# If nothing is selected this will just put the cursor at the beginning
|
|
221
|
-
# of the current line
|
|
222
|
-
cursor.setPosition(textCursor.selectionStart)
|
|
223
|
-
cursor.movePosition(Qt::TextCursor::StartOfLine)
|
|
224
|
-
result = true
|
|
225
|
-
while (cursor.position < selection_end && result == true) || (no_selection)
|
|
226
|
-
# Check for a special comment
|
|
227
|
-
if cursor.block.text =~ /^\S*#~/
|
|
228
|
-
cursor.deleteChar
|
|
229
|
-
cursor.deleteChar
|
|
230
|
-
# Since we deleted two spaces we need to move the end position by two
|
|
231
|
-
selection_end -= 2
|
|
232
|
-
else
|
|
233
|
-
cursor.insertText("#~")
|
|
234
|
-
# Since we deleted two spaces we need to move the end position by two
|
|
235
|
-
selection_end += 2
|
|
236
|
-
end
|
|
237
|
-
# Move the cursor to the beginning of the next line
|
|
238
|
-
cursor.movePosition(Qt::TextCursor::StartOfLine)
|
|
239
|
-
result = cursor.movePosition(Qt::TextCursor::Down)
|
|
240
|
-
# If nothing was selected then its a single line so break
|
|
241
|
-
break if no_selection
|
|
242
|
-
end
|
|
243
|
-
cursor.endEditBlock
|
|
244
|
-
end
|
|
245
|
-
|
|
246
|
-
def resizeEvent(e)
|
|
247
|
-
super(e)
|
|
248
|
-
cr = self.contentsRect()
|
|
249
|
-
rect = Qt::Rect.new(cr.left(),
|
|
250
|
-
cr.top(),
|
|
251
|
-
line_number_area_width(),
|
|
252
|
-
cr.height())
|
|
253
|
-
@lineNumberArea.setGeometry(rect)
|
|
254
|
-
cr.dispose
|
|
255
|
-
rect.dispose
|
|
256
|
-
end
|
|
257
|
-
|
|
258
|
-
def line_number_area_paint_event(event)
|
|
259
|
-
painter = Qt::Painter.new(@lineNumberArea)
|
|
260
|
-
# Check for weird bad initialization conditions
|
|
261
|
-
if painter.isActive and not painter.paintEngine.nil?
|
|
262
|
-
event_rect = event.rect()
|
|
263
|
-
painter.fillRect(event_rect, Qt::lightGray)
|
|
264
|
-
|
|
265
|
-
block = firstVisibleBlock()
|
|
266
|
-
blockNumber = block.blockNumber()
|
|
267
|
-
|
|
268
|
-
top, bottom = block_top_and_bottom(block)
|
|
269
|
-
|
|
270
|
-
width = @lineNumberArea.width()
|
|
271
|
-
height = @fontMetrics.height()
|
|
272
|
-
ellipse_width = @fontMetrics.width(CHAR_57)
|
|
273
|
-
painter.setPen(Cosmos::BLACK)
|
|
274
|
-
while (block.isValid() and top <= event_rect.bottom())
|
|
275
|
-
if (block.isVisible() and bottom >= event_rect.top())
|
|
276
|
-
number = blockNumber + 1
|
|
277
|
-
painter.drawText(0, # x
|
|
278
|
-
top, # y
|
|
279
|
-
width, # width
|
|
280
|
-
height, # height
|
|
281
|
-
Qt::AlignRight, # flags
|
|
282
|
-
number.to_s) # text
|
|
283
|
-
|
|
284
|
-
if @enable_breakpoints and @breakpoints.include?(number)
|
|
285
|
-
painter.setBrush(Cosmos::RED)
|
|
286
|
-
painter.drawEllipse(2,
|
|
287
|
-
top+2,
|
|
288
|
-
ellipse_width,
|
|
289
|
-
ellipse_width)
|
|
290
|
-
end
|
|
291
|
-
end
|
|
292
|
-
|
|
293
|
-
next_block = block.next()
|
|
294
|
-
block.dispose
|
|
295
|
-
block = next_block
|
|
296
|
-
top = bottom
|
|
297
|
-
rect = blockBoundingRect(block)
|
|
298
|
-
bottom = top + rect.height()
|
|
299
|
-
rect.dispose
|
|
300
|
-
blockNumber += 1
|
|
301
|
-
end
|
|
302
|
-
block.dispose
|
|
303
|
-
block = nil
|
|
304
|
-
event_rect.dispose
|
|
305
|
-
event_rect = nil
|
|
306
|
-
end
|
|
307
|
-
# Ensure the painter is disposed in the paint function to avoid this:
|
|
308
|
-
# QPaintDevice: Cannot destroy paint device that is being painted
|
|
309
|
-
painter.dispose
|
|
310
|
-
painter = nil
|
|
311
|
-
end
|
|
312
|
-
|
|
313
|
-
private
|
|
314
|
-
|
|
315
|
-
def line_count_changed
|
|
316
|
-
setViewportMargins(line_number_area_width(), 0, 0, 0)
|
|
317
|
-
update
|
|
318
|
-
end
|
|
319
|
-
|
|
320
|
-
def update_line_number_area(rect, dy)
|
|
321
|
-
if (dy)
|
|
322
|
-
@lineNumberArea.scroll(0, dy)
|
|
323
|
-
else
|
|
324
|
-
@lineNumberArea.update(0, rect.y(), @lineNumberArea.width(), rect.height())
|
|
325
|
-
end
|
|
326
|
-
my_viewport = viewport()
|
|
327
|
-
viewport_rect = my_viewport.rect()
|
|
328
|
-
line_count_changed() if (rect.contains(viewport_rect))
|
|
329
|
-
viewport_rect.dispose
|
|
330
|
-
end
|
|
331
|
-
|
|
332
|
-
def line_number_area_width
|
|
333
|
-
digits = 1
|
|
334
|
-
my_document = document()
|
|
335
|
-
max = [1, my_document.blockCount()].max
|
|
336
|
-
|
|
337
|
-
# Figure the line number power of ten to determine how much space we need
|
|
338
|
-
while (max >= 10)
|
|
339
|
-
max /= 10
|
|
340
|
-
digits += 1
|
|
341
|
-
end
|
|
342
|
-
# We'll always display space for 5 digits so the line number area
|
|
343
|
-
# isn't constantly expanding and contracting
|
|
344
|
-
digits = 5 if digits < 5
|
|
345
|
-
digits += 1 # always allow room for a breakpoint symbol
|
|
346
|
-
# Get the font width of the character 57 ('9')
|
|
347
|
-
# times the number of digits to display
|
|
348
|
-
return (3 + @fontMetrics.width(CHAR_57) * digits)
|
|
349
|
-
end
|
|
350
|
-
|
|
351
|
-
def line_at_point(point)
|
|
352
|
-
line = point.y / @fontMetrics.height() + 1 +
|
|
353
|
-
firstVisibleBlock().blockNumber()
|
|
354
|
-
yield line if line <= document.blockCount()
|
|
355
|
-
end
|
|
356
|
-
|
|
357
|
-
def create_add_breakpoint_action(point)
|
|
358
|
-
add_breakpoint = Qt::Action.new(tr("Add Breakpoint"), self)
|
|
359
|
-
add_breakpoint.statusTip = tr("Add a breakpoint at this line")
|
|
360
|
-
add_breakpoint.connect(SIGNAL('triggered()')) do
|
|
361
|
-
line_at_point(point) do |line|
|
|
362
|
-
add_breakpoint(line)
|
|
363
|
-
emit breakpoint_set(line)
|
|
364
|
-
end
|
|
365
|
-
end
|
|
366
|
-
add_breakpoint
|
|
367
|
-
end
|
|
368
|
-
|
|
369
|
-
def create_clear_breakpoint_action(point)
|
|
370
|
-
clear_breakpoint = Qt::Action.new(tr("Clear Breakpoint"), self)
|
|
371
|
-
clear_breakpoint.statusTip = tr("Clear an existing breakpoint at this line")
|
|
372
|
-
clear_breakpoint.connect(SIGNAL('triggered()')) do
|
|
373
|
-
line_at_point(point) do |line|
|
|
374
|
-
clear_breakpoint(line)
|
|
375
|
-
emit breakpoint_cleared(line)
|
|
376
|
-
end
|
|
377
|
-
end
|
|
378
|
-
clear_breakpoint
|
|
379
|
-
end
|
|
380
|
-
|
|
381
|
-
def create_clear_all_breakpoints_action
|
|
382
|
-
clear_all_breakpoints = Qt::Action.new(tr("Clear All Breakpoints"), self)
|
|
383
|
-
clear_all_breakpoints.statusTip = tr("Clear all existing breakpoints")
|
|
384
|
-
clear_all_breakpoints.connect(SIGNAL('triggered()')) do
|
|
385
|
-
clear_breakpoints
|
|
386
|
-
emit breakpoints_cleared
|
|
387
|
-
end
|
|
388
|
-
clear_all_breakpoints
|
|
389
|
-
end
|
|
390
|
-
|
|
391
|
-
# Get the top and bottom coordinates of the block in viewport coordinates
|
|
392
|
-
def block_top_and_bottom(block)
|
|
393
|
-
# bounding rect of the text block in content coordinates
|
|
394
|
-
rect = blockBoundingGeometry(block)
|
|
395
|
-
offset = contentOffset() # content origin in viewport coordinates
|
|
396
|
-
# translate the rect to get visual coordinates on the viewport
|
|
397
|
-
rect2 = rect.translated(offset)
|
|
398
|
-
top = rect2.top()
|
|
399
|
-
# bounding rect in block coordinates
|
|
400
|
-
rect3 = blockBoundingRect(block)
|
|
401
|
-
bottom = top + rect3.height()
|
|
402
|
-
# Now call the destructors and set to nil to allow garbage collection
|
|
403
|
-
offset.dispose
|
|
404
|
-
offset = nil
|
|
405
|
-
rect.dispose
|
|
406
|
-
rect = nil
|
|
407
|
-
rect2.dispose
|
|
408
|
-
rect2 = nil
|
|
409
|
-
rect3.dispose
|
|
410
|
-
rect3 = nil
|
|
411
|
-
return top, bottom
|
|
412
|
-
end
|
|
413
|
-
end
|
|
414
|
-
|
|
415
|
-
end # module Cosmos
|
|
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/script'
|
|
13
|
+
require 'cosmos/gui/qt'
|
|
14
|
+
require 'cosmos/gui/text/completion_text_edit'
|
|
15
|
+
|
|
16
|
+
module Cosmos
|
|
17
|
+
|
|
18
|
+
class RubyEditor < CompletionTextEdit
|
|
19
|
+
# private slot used to connect to the blockCountChanged signal
|
|
20
|
+
slots 'line_count_changed()'
|
|
21
|
+
# private slot used to connect to the updateRequest signal
|
|
22
|
+
slots 'update_line_number_area(const QRect &, int)'
|
|
23
|
+
|
|
24
|
+
signals 'breakpoint_set(int)'
|
|
25
|
+
signals 'breakpoint_cleared(int)'
|
|
26
|
+
signals 'breakpoints_cleared()'
|
|
27
|
+
|
|
28
|
+
attr_accessor :enable_breakpoints
|
|
29
|
+
|
|
30
|
+
# This works but slows down the GUI significantly when
|
|
31
|
+
# pasting a large (10k line) block of code into the editor
|
|
32
|
+
class RubySyntax < Qt::SyntaxHighlighter
|
|
33
|
+
# Ruby keywords - http://www.ruby-doc.org/docs/keywords/1.9/
|
|
34
|
+
# Also include some common methods that are typically called by
|
|
35
|
+
# themselves like puts, print, sleep
|
|
36
|
+
RUBY_KEYWORDS = %w(BEGIN END __ENCODING__ __END__ __FILE__ __LINE__ \
|
|
37
|
+
alias and begin break case class def defined? do \
|
|
38
|
+
else elsif end ensure false for if in module \
|
|
39
|
+
next nil not or raise redo rescue retry return \
|
|
40
|
+
self super then true undef unless until when while yield \
|
|
41
|
+
puts print sleep) # common stand alone methods
|
|
42
|
+
|
|
43
|
+
def self.create_format(color = Cosmos::BLACK, style='')
|
|
44
|
+
color = Cosmos::getColor(color)
|
|
45
|
+
brush = Cosmos::getBrush(color)
|
|
46
|
+
|
|
47
|
+
format = Qt::TextCharFormat.new
|
|
48
|
+
format.setForeground(brush)
|
|
49
|
+
if style == 'bold'
|
|
50
|
+
format.setFontWeight(Qt::Font::Bold)
|
|
51
|
+
end
|
|
52
|
+
if style == 'italic'
|
|
53
|
+
format.setFontItalic(true)
|
|
54
|
+
end
|
|
55
|
+
format
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
# Syntax styles - refer to the ruby.properties in Scite
|
|
59
|
+
STYLES = {
|
|
60
|
+
'normal' => create_format('black'),
|
|
61
|
+
'ruby_keyword' => create_format('darkBlue','bold'),
|
|
62
|
+
'cosmos_keyword' => create_format('blue','bold'),
|
|
63
|
+
'operator' => create_format('red'),
|
|
64
|
+
'brace' => create_format('black','bold'),
|
|
65
|
+
'class' => create_format('blue', 'bold'),
|
|
66
|
+
'method' => create_format(Cosmos::getColor(0, 127, 127), 'bold'),
|
|
67
|
+
'string' => create_format(Cosmos::getColor(127, 0, 127)),
|
|
68
|
+
'symbol' => create_format(Cosmos::getColor(192,160,48)),
|
|
69
|
+
'comment' => create_format('green'),
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
# Ruby braces
|
|
73
|
+
BRACES = ['\{', '\}', '\(', '\)', '\[', '\]','\|']
|
|
74
|
+
|
|
75
|
+
RULES = []
|
|
76
|
+
RUBY_KEYWORDS.each do |w|
|
|
77
|
+
RULES << ['\b'+w+'\b', 0, STYLES['ruby_keyword']]
|
|
78
|
+
end
|
|
79
|
+
Script.private_instance_methods.each do |w|
|
|
80
|
+
RULES << ['\b'+w.to_s+'\b', 0, STYLES['cosmos_keyword']]
|
|
81
|
+
end
|
|
82
|
+
BRACES.each do |b|
|
|
83
|
+
RULES << ["#{b}", 0, STYLES['brace']]
|
|
84
|
+
end
|
|
85
|
+
RULES.concat([
|
|
86
|
+
# 'def' followed by an identifier
|
|
87
|
+
['\bdef\b\s*(\w+)', 1, STYLES['method']],
|
|
88
|
+
# 'class' followed by an identifier
|
|
89
|
+
['\bclass\b\s*(\w+)', 1, STYLES['class']],
|
|
90
|
+
# Ruby symbol
|
|
91
|
+
[':\b\w+', 0, STYLES['symbol']],
|
|
92
|
+
# Ruby namespace operator
|
|
93
|
+
['\b\w+(::\b\w+)+', 0, STYLES['class']],
|
|
94
|
+
# Ruby global
|
|
95
|
+
['\\$\b\w+', 0, STYLES['string']],
|
|
96
|
+
# A single # or a # not followed by { to the end
|
|
97
|
+
['(#$|#[^{]).*', 0, STYLES['comment']],
|
|
98
|
+
# Regex, possibly containing escape sequences
|
|
99
|
+
["/.*/", 0, STYLES['string']],
|
|
100
|
+
# Double-quoted string, possibly containing escape sequences
|
|
101
|
+
['"([^"\\\\]|\\\\.)*"', 0, STYLES['string']],
|
|
102
|
+
# Match interpolated strings "blah #{code} blah"
|
|
103
|
+
['(\#\\{)[^\\}]*\\}', 1, STYLES['brace']],
|
|
104
|
+
['\#\\{[^\\}]*(\\})', 1, STYLES['brace']],
|
|
105
|
+
['\#\\{([^\\}]*)\\}', 1, STYLES['normal']],
|
|
106
|
+
# Single-quoted string, possibly containing escape sequences
|
|
107
|
+
["'[^'\\\\]*(\\.[^'\\\\]*)*'", 0, STYLES['string']],
|
|
108
|
+
# Back-tick string, possibly containing escape sequences
|
|
109
|
+
["`[^`\\\\]*(\\.[^`\\\\]*)*`", 0, STYLES['string']],
|
|
110
|
+
])
|
|
111
|
+
|
|
112
|
+
# Build a QRegExp for each pattern
|
|
113
|
+
RULES_INFO = []
|
|
114
|
+
RULES.each do |pat, index, fmt|
|
|
115
|
+
RULES_INFO << [Qt::RegExp.new(pat, Qt::CaseSensitive, Qt::RegExp::RegExp2), index, fmt]
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
def highlightBlock(text)
|
|
119
|
+
# Do other syntax formatting
|
|
120
|
+
RULES_INFO.each do |expression, nth, format|
|
|
121
|
+
index = expression.indexIn(text, 0)
|
|
122
|
+
last_index = index
|
|
123
|
+
last_length = -1
|
|
124
|
+
while index >= 0
|
|
125
|
+
# We actually want the index of the nth match
|
|
126
|
+
index = expression.pos(nth)
|
|
127
|
+
# Bail if the index goes negative because it means
|
|
128
|
+
# we won't have a valid capture
|
|
129
|
+
break if index < 0
|
|
130
|
+
length = expression.cap(nth).length()
|
|
131
|
+
break if length <= 0
|
|
132
|
+
# Break if we're in an endless loop
|
|
133
|
+
break if (last_index == index and last_length == length)
|
|
134
|
+
last_length = length
|
|
135
|
+
last_index = index
|
|
136
|
+
self.setFormat(index, length, format)
|
|
137
|
+
index = expression.indexIn(text, index + length)
|
|
138
|
+
end
|
|
139
|
+
end
|
|
140
|
+
end
|
|
141
|
+
end
|
|
142
|
+
|
|
143
|
+
class LineNumberArea < Qt::Widget
|
|
144
|
+
def initialize(editor)
|
|
145
|
+
super(editor)
|
|
146
|
+
@codeEditor = editor
|
|
147
|
+
self
|
|
148
|
+
end
|
|
149
|
+
|
|
150
|
+
def paintEvent(event)
|
|
151
|
+
@codeEditor.line_number_area_paint_event(event)
|
|
152
|
+
end
|
|
153
|
+
end
|
|
154
|
+
|
|
155
|
+
CHAR_57 = Qt::Char.new(57)
|
|
156
|
+
|
|
157
|
+
def initialize(parent)
|
|
158
|
+
super(parent)
|
|
159
|
+
font = Cosmos.get_default_font
|
|
160
|
+
setFont(font)
|
|
161
|
+
@fontMetrics = Cosmos.getFontMetrics(font)
|
|
162
|
+
|
|
163
|
+
# This is needed so text searching highlights correctly
|
|
164
|
+
setStyleSheet("selection-background-color: lightblue; selection-color: black;")
|
|
165
|
+
|
|
166
|
+
@breakpoints = []
|
|
167
|
+
@enable_breakpoints = false
|
|
168
|
+
|
|
169
|
+
# RubySyntax works but slows down the GUI significantly when
|
|
170
|
+
# pasting a large (10k line) block of code into the editor
|
|
171
|
+
@syntax = RubySyntax.new(document())
|
|
172
|
+
@lineNumberArea = LineNumberArea.new(self)
|
|
173
|
+
|
|
174
|
+
connect(self, SIGNAL('blockCountChanged(int)'), self, SLOT('line_count_changed()'))
|
|
175
|
+
connect(self, SIGNAL('updateRequest(const QRect &, int)'), self, SLOT('update_line_number_area(const QRect &, int)'))
|
|
176
|
+
|
|
177
|
+
line_count_changed()
|
|
178
|
+
end
|
|
179
|
+
|
|
180
|
+
def dispose
|
|
181
|
+
super()
|
|
182
|
+
@syntax.dispose
|
|
183
|
+
@lineNumberArea.dispose
|
|
184
|
+
end
|
|
185
|
+
|
|
186
|
+
def context_menu(point)
|
|
187
|
+
menu = createStandardContextMenu()
|
|
188
|
+
return menu unless @enable_breakpoints
|
|
189
|
+
|
|
190
|
+
menu.addSeparator()
|
|
191
|
+
menu.addAction(create_add_breakpoint_action(point))
|
|
192
|
+
menu.addAction(create_clear_breakpoint_action(point))
|
|
193
|
+
menu.addAction(create_clear_all_breakpoints_action())
|
|
194
|
+
menu
|
|
195
|
+
end
|
|
196
|
+
|
|
197
|
+
def add_breakpoint(line)
|
|
198
|
+
@breakpoints << line
|
|
199
|
+
@lineNumberArea.repaint
|
|
200
|
+
end
|
|
201
|
+
|
|
202
|
+
def clear_breakpoint(line)
|
|
203
|
+
@breakpoints.delete(line)
|
|
204
|
+
@lineNumberArea.repaint
|
|
205
|
+
end
|
|
206
|
+
|
|
207
|
+
def clear_breakpoints
|
|
208
|
+
@breakpoints = []
|
|
209
|
+
@lineNumberArea.repaint
|
|
210
|
+
end
|
|
211
|
+
|
|
212
|
+
def comment_or_uncomment_lines
|
|
213
|
+
cursor = textCursor
|
|
214
|
+
no_selection = cursor.hasSelection ? false : true
|
|
215
|
+
|
|
216
|
+
# Start the edit block so this can be all undone with a single undo step
|
|
217
|
+
cursor.beginEditBlock
|
|
218
|
+
selection_end = cursor.selectionEnd
|
|
219
|
+
# Initially place the cursor at the beginning of the selection
|
|
220
|
+
# If nothing is selected this will just put the cursor at the beginning
|
|
221
|
+
# of the current line
|
|
222
|
+
cursor.setPosition(textCursor.selectionStart)
|
|
223
|
+
cursor.movePosition(Qt::TextCursor::StartOfLine)
|
|
224
|
+
result = true
|
|
225
|
+
while (cursor.position < selection_end && result == true) || (no_selection)
|
|
226
|
+
# Check for a special comment
|
|
227
|
+
if cursor.block.text =~ /^\S*#~/
|
|
228
|
+
cursor.deleteChar
|
|
229
|
+
cursor.deleteChar
|
|
230
|
+
# Since we deleted two spaces we need to move the end position by two
|
|
231
|
+
selection_end -= 2
|
|
232
|
+
else
|
|
233
|
+
cursor.insertText("#~")
|
|
234
|
+
# Since we deleted two spaces we need to move the end position by two
|
|
235
|
+
selection_end += 2
|
|
236
|
+
end
|
|
237
|
+
# Move the cursor to the beginning of the next line
|
|
238
|
+
cursor.movePosition(Qt::TextCursor::StartOfLine)
|
|
239
|
+
result = cursor.movePosition(Qt::TextCursor::Down)
|
|
240
|
+
# If nothing was selected then its a single line so break
|
|
241
|
+
break if no_selection
|
|
242
|
+
end
|
|
243
|
+
cursor.endEditBlock
|
|
244
|
+
end
|
|
245
|
+
|
|
246
|
+
def resizeEvent(e)
|
|
247
|
+
super(e)
|
|
248
|
+
cr = self.contentsRect()
|
|
249
|
+
rect = Qt::Rect.new(cr.left(),
|
|
250
|
+
cr.top(),
|
|
251
|
+
line_number_area_width(),
|
|
252
|
+
cr.height())
|
|
253
|
+
@lineNumberArea.setGeometry(rect)
|
|
254
|
+
cr.dispose
|
|
255
|
+
rect.dispose
|
|
256
|
+
end
|
|
257
|
+
|
|
258
|
+
def line_number_area_paint_event(event)
|
|
259
|
+
painter = Qt::Painter.new(@lineNumberArea)
|
|
260
|
+
# Check for weird bad initialization conditions
|
|
261
|
+
if painter.isActive and not painter.paintEngine.nil?
|
|
262
|
+
event_rect = event.rect()
|
|
263
|
+
painter.fillRect(event_rect, Qt::lightGray)
|
|
264
|
+
|
|
265
|
+
block = firstVisibleBlock()
|
|
266
|
+
blockNumber = block.blockNumber()
|
|
267
|
+
|
|
268
|
+
top, bottom = block_top_and_bottom(block)
|
|
269
|
+
|
|
270
|
+
width = @lineNumberArea.width()
|
|
271
|
+
height = @fontMetrics.height()
|
|
272
|
+
ellipse_width = @fontMetrics.width(CHAR_57)
|
|
273
|
+
painter.setPen(Cosmos::BLACK)
|
|
274
|
+
while (block.isValid() and top <= event_rect.bottom())
|
|
275
|
+
if (block.isVisible() and bottom >= event_rect.top())
|
|
276
|
+
number = blockNumber + 1
|
|
277
|
+
painter.drawText(0, # x
|
|
278
|
+
top, # y
|
|
279
|
+
width, # width
|
|
280
|
+
height, # height
|
|
281
|
+
Qt::AlignRight, # flags
|
|
282
|
+
number.to_s) # text
|
|
283
|
+
|
|
284
|
+
if @enable_breakpoints and @breakpoints.include?(number)
|
|
285
|
+
painter.setBrush(Cosmos::RED)
|
|
286
|
+
painter.drawEllipse(2,
|
|
287
|
+
top+2,
|
|
288
|
+
ellipse_width,
|
|
289
|
+
ellipse_width)
|
|
290
|
+
end
|
|
291
|
+
end
|
|
292
|
+
|
|
293
|
+
next_block = block.next()
|
|
294
|
+
block.dispose
|
|
295
|
+
block = next_block
|
|
296
|
+
top = bottom
|
|
297
|
+
rect = blockBoundingRect(block)
|
|
298
|
+
bottom = top + rect.height()
|
|
299
|
+
rect.dispose
|
|
300
|
+
blockNumber += 1
|
|
301
|
+
end
|
|
302
|
+
block.dispose
|
|
303
|
+
block = nil
|
|
304
|
+
event_rect.dispose
|
|
305
|
+
event_rect = nil
|
|
306
|
+
end
|
|
307
|
+
# Ensure the painter is disposed in the paint function to avoid this:
|
|
308
|
+
# QPaintDevice: Cannot destroy paint device that is being painted
|
|
309
|
+
painter.dispose
|
|
310
|
+
painter = nil
|
|
311
|
+
end
|
|
312
|
+
|
|
313
|
+
private
|
|
314
|
+
|
|
315
|
+
def line_count_changed
|
|
316
|
+
setViewportMargins(line_number_area_width(), 0, 0, 0)
|
|
317
|
+
update
|
|
318
|
+
end
|
|
319
|
+
|
|
320
|
+
def update_line_number_area(rect, dy)
|
|
321
|
+
if (dy)
|
|
322
|
+
@lineNumberArea.scroll(0, dy)
|
|
323
|
+
else
|
|
324
|
+
@lineNumberArea.update(0, rect.y(), @lineNumberArea.width(), rect.height())
|
|
325
|
+
end
|
|
326
|
+
my_viewport = viewport()
|
|
327
|
+
viewport_rect = my_viewport.rect()
|
|
328
|
+
line_count_changed() if (rect.contains(viewport_rect))
|
|
329
|
+
viewport_rect.dispose
|
|
330
|
+
end
|
|
331
|
+
|
|
332
|
+
def line_number_area_width
|
|
333
|
+
digits = 1
|
|
334
|
+
my_document = document()
|
|
335
|
+
max = [1, my_document.blockCount()].max
|
|
336
|
+
|
|
337
|
+
# Figure the line number power of ten to determine how much space we need
|
|
338
|
+
while (max >= 10)
|
|
339
|
+
max /= 10
|
|
340
|
+
digits += 1
|
|
341
|
+
end
|
|
342
|
+
# We'll always display space for 5 digits so the line number area
|
|
343
|
+
# isn't constantly expanding and contracting
|
|
344
|
+
digits = 5 if digits < 5
|
|
345
|
+
digits += 1 # always allow room for a breakpoint symbol
|
|
346
|
+
# Get the font width of the character 57 ('9')
|
|
347
|
+
# times the number of digits to display
|
|
348
|
+
return (3 + @fontMetrics.width(CHAR_57) * digits)
|
|
349
|
+
end
|
|
350
|
+
|
|
351
|
+
def line_at_point(point)
|
|
352
|
+
line = point.y / @fontMetrics.height() + 1 +
|
|
353
|
+
firstVisibleBlock().blockNumber()
|
|
354
|
+
yield line if line <= document.blockCount()
|
|
355
|
+
end
|
|
356
|
+
|
|
357
|
+
def create_add_breakpoint_action(point)
|
|
358
|
+
add_breakpoint = Qt::Action.new(tr("Add Breakpoint"), self)
|
|
359
|
+
add_breakpoint.statusTip = tr("Add a breakpoint at this line")
|
|
360
|
+
add_breakpoint.connect(SIGNAL('triggered()')) do
|
|
361
|
+
line_at_point(point) do |line|
|
|
362
|
+
add_breakpoint(line)
|
|
363
|
+
emit breakpoint_set(line)
|
|
364
|
+
end
|
|
365
|
+
end
|
|
366
|
+
add_breakpoint
|
|
367
|
+
end
|
|
368
|
+
|
|
369
|
+
def create_clear_breakpoint_action(point)
|
|
370
|
+
clear_breakpoint = Qt::Action.new(tr("Clear Breakpoint"), self)
|
|
371
|
+
clear_breakpoint.statusTip = tr("Clear an existing breakpoint at this line")
|
|
372
|
+
clear_breakpoint.connect(SIGNAL('triggered()')) do
|
|
373
|
+
line_at_point(point) do |line|
|
|
374
|
+
clear_breakpoint(line)
|
|
375
|
+
emit breakpoint_cleared(line)
|
|
376
|
+
end
|
|
377
|
+
end
|
|
378
|
+
clear_breakpoint
|
|
379
|
+
end
|
|
380
|
+
|
|
381
|
+
def create_clear_all_breakpoints_action
|
|
382
|
+
clear_all_breakpoints = Qt::Action.new(tr("Clear All Breakpoints"), self)
|
|
383
|
+
clear_all_breakpoints.statusTip = tr("Clear all existing breakpoints")
|
|
384
|
+
clear_all_breakpoints.connect(SIGNAL('triggered()')) do
|
|
385
|
+
clear_breakpoints
|
|
386
|
+
emit breakpoints_cleared
|
|
387
|
+
end
|
|
388
|
+
clear_all_breakpoints
|
|
389
|
+
end
|
|
390
|
+
|
|
391
|
+
# Get the top and bottom coordinates of the block in viewport coordinates
|
|
392
|
+
def block_top_and_bottom(block)
|
|
393
|
+
# bounding rect of the text block in content coordinates
|
|
394
|
+
rect = blockBoundingGeometry(block)
|
|
395
|
+
offset = contentOffset() # content origin in viewport coordinates
|
|
396
|
+
# translate the rect to get visual coordinates on the viewport
|
|
397
|
+
rect2 = rect.translated(offset)
|
|
398
|
+
top = rect2.top()
|
|
399
|
+
# bounding rect in block coordinates
|
|
400
|
+
rect3 = blockBoundingRect(block)
|
|
401
|
+
bottom = top + rect3.height()
|
|
402
|
+
# Now call the destructors and set to nil to allow garbage collection
|
|
403
|
+
offset.dispose
|
|
404
|
+
offset = nil
|
|
405
|
+
rect.dispose
|
|
406
|
+
rect = nil
|
|
407
|
+
rect2.dispose
|
|
408
|
+
rect2 = nil
|
|
409
|
+
rect3.dispose
|
|
410
|
+
rect3 = nil
|
|
411
|
+
return top, bottom
|
|
412
|
+
end
|
|
413
|
+
end
|
|
414
|
+
|
|
415
|
+
end # module Cosmos
|