cosmos 4.2.4-java → 4.3.0-java
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +1 -1
- data/Gemfile +1 -1
- data/Manifest.txt +12 -0
- data/autohotkey/tools/cmd_sequence.ahk +21 -20
- data/autohotkey/tools/cmd_sequence2.ahk +1 -1
- data/autohotkey/tools/config_editor.ahk +1 -1
- data/autohotkey/tools/launcher.ahk +1 -0
- data/autohotkey/tools/packet_viewer.ahk +6 -5
- data/autohotkey/tools/test_runner.ahk +8 -8
- data/bin/cosmos +37 -0
- data/bin/dart_util +0 -0
- data/data/config/item_modifiers.yaml +9 -0
- data/data/crc.txt +91 -86
- data/demo/Rakefile +2 -0
- data/demo/config/dart/Gemfile +1 -1
- data/demo/config/data/crc.txt +8 -5
- data/demo/config/system/system.txt +28 -0
- data/demo/config/system/system2.txt +21 -3
- data/demo/config/system/system_alt_ports.txt +69 -0
- data/demo/config/targets/INST/cmd_tlm/inst_tlm.txt +1 -0
- data/demo/config/tools/cmd_tlm_server/cmd_tlm_server_chain.txt +18 -0
- data/demo/procedures/cosmos_api_test.rb +18 -14
- data/demo/procedures/local_screen_example.rb +51 -0
- data/ext/cosmos/ext/cosmos_io/cosmos_io.c +32 -4
- data/ext/cosmos/ext/packet/packet.c +6 -0
- data/ext/mkrf_conf.rb +2 -2
- data/install/config/dart/Gemfile +1 -1
- data/install/config/data/crc.txt +2 -2
- data/install/config/system/system.txt +23 -1
- data/lib/cosmos/conversions.rb +2 -0
- data/lib/cosmos/conversions/packet_time_formatted_conversion.rb +38 -0
- data/lib/cosmos/conversions/packet_time_seconds_conversion.rb +38 -0
- data/lib/cosmos/core_ext/cosmos_io.rb +2 -1
- data/lib/cosmos/dart/Gemfile +1 -1
- data/lib/cosmos/dart/examples/dart_stream_client.rb +6 -2
- data/lib/cosmos/dart/lib/dart_common.rb +1 -1
- data/lib/cosmos/dart/lib/dart_database_cleaner.rb +2 -2
- data/lib/cosmos/dart/lib/dart_decommutator.rb +4 -4
- data/lib/cosmos/dart/lib/dart_importer.rb +3 -3
- data/lib/cosmos/dart/lib/dart_packet_log_writer.rb +2 -2
- data/lib/cosmos/dart/processes/dart_ingester.rb +2 -0
- data/lib/cosmos/dart/processes/dart_util.rb +4 -4
- data/lib/cosmos/dart/spec/dart/dart_reducer_manager_spec.rb +3 -3
- data/lib/cosmos/gui/dialogs/cmd_tlm_raw_dialog.rb +9 -5
- data/lib/cosmos/gui/dialogs/details_dialog.rb +29 -29
- data/lib/cosmos/gui/dialogs/exception_list_dialog.rb +1 -1
- data/lib/cosmos/gui/dialogs/find_replace_dialog.rb +3 -3
- data/lib/cosmos/gui/dialogs/interface_raw_dialog.rb +2 -2
- data/lib/cosmos/gui/dialogs/set_tlm_dialog.rb +1 -1
- data/lib/cosmos/gui/dialogs/tlm_details_dialog.rb +10 -10
- data/lib/cosmos/gui/qt.rb +10 -1
- data/lib/cosmos/gui/qt_tool.rb +17 -10
- data/lib/cosmos/gui/text/ruby_editor.rb +47 -8
- data/lib/cosmos/gui/utilities/classification_banner.rb +60 -0
- data/lib/cosmos/gui/utilities/script_module_gui.rb +26 -0
- data/lib/cosmos/interfaces.rb +1 -0
- data/lib/cosmos/interfaces/interface.rb +4 -0
- data/lib/cosmos/interfaces/protocols/ignore_packet_protocol.rb +46 -0
- data/lib/cosmos/interfaces/protocols/preidentified_protocol.rb +68 -23
- data/lib/cosmos/packet_logs/packet_log_reader.rb +69 -26
- data/lib/cosmos/packet_logs/packet_log_writer.rb +13 -1
- data/lib/cosmos/packets/commands.rb +5 -1
- data/lib/cosmos/packets/packet.rb +36 -2
- data/lib/cosmos/packets/packet_config.rb +0 -1
- data/lib/cosmos/packets/parsers/format_string_parser.rb +0 -1
- data/lib/cosmos/packets/parsers/xtce_parser.rb +1 -1
- data/lib/cosmos/packets/telemetry.rb +4 -0
- data/lib/cosmos/script/api_shared.rb +2 -0
- data/lib/cosmos/script/limits.rb +4 -0
- data/lib/cosmos/script/script.rb +27 -11
- data/lib/cosmos/script/telemetry.rb +3 -1
- data/lib/cosmos/script/tools.rb +18 -8
- data/lib/cosmos/system/system.rb +21 -0
- data/lib/cosmos/tools/cmd_extractor/cmd_extractor.rb +26 -24
- data/lib/cosmos/tools/cmd_sender/cmd_sender.rb +29 -29
- data/lib/cosmos/tools/cmd_sequence/cmd_sequence.rb +65 -40
- data/lib/cosmos/tools/cmd_sequence/sequence_item.rb +6 -6
- data/lib/cosmos/tools/cmd_tlm_server/api.rb +13 -0
- data/lib/cosmos/tools/cmd_tlm_server/cmd_tlm_server.rb +12 -9
- data/lib/cosmos/tools/cmd_tlm_server/cmd_tlm_server_config.rb +7 -1
- data/lib/cosmos/tools/cmd_tlm_server/cmd_tlm_server_gui.rb +8 -8
- data/lib/cosmos/tools/cmd_tlm_server/commanding.rb +13 -2
- data/lib/cosmos/tools/cmd_tlm_server/gui/interfaces_tab.rb +2 -2
- data/lib/cosmos/tools/cmd_tlm_server/gui/logging_tab.rb +13 -13
- data/lib/cosmos/tools/cmd_tlm_server/gui/packets_tab.rb +4 -4
- data/lib/cosmos/tools/cmd_tlm_server/gui/status_tab.rb +8 -8
- data/lib/cosmos/tools/cmd_tlm_server/gui/targets_tab.rb +5 -5
- data/lib/cosmos/tools/cmd_tlm_server/interface_thread.rb +35 -20
- data/lib/cosmos/tools/cmd_tlm_server/replay_backend.rb +15 -11
- data/lib/cosmos/tools/config_editor/config_editor.rb +69 -69
- data/lib/cosmos/tools/data_viewer/data_viewer.rb +42 -38
- data/lib/cosmos/tools/data_viewer/data_viewer_component.rb +1 -0
- data/lib/cosmos/tools/data_viewer/dump_component.rb +1 -0
- data/lib/cosmos/tools/handbook_creator/handbook_creator.rb +4 -4
- data/lib/cosmos/tools/launcher/launcher.rb +1 -1
- data/lib/cosmos/tools/limits_monitor/limits_monitor.rb +28 -24
- data/lib/cosmos/tools/opengl_builder/opengl_builder.rb +42 -42
- data/lib/cosmos/tools/packet_viewer/packet_viewer.rb +56 -53
- data/lib/cosmos/tools/script_runner/script_runner.rb +112 -95
- data/lib/cosmos/tools/script_runner/script_runner_frame.rb +48 -30
- data/lib/cosmos/tools/table_manager/table_manager.rb +42 -42
- data/lib/cosmos/tools/test_runner/test_runner.rb +45 -27
- data/lib/cosmos/tools/test_runner/test_runner_chooser.rb +3 -3
- data/lib/cosmos/tools/tlm_extractor/tlm_extractor.rb +45 -45
- data/lib/cosmos/tools/tlm_extractor/tlm_extractor_config.rb +4 -4
- data/lib/cosmos/tools/tlm_grapher/data_object_adders/xy_data_object_adder.rb +3 -3
- data/lib/cosmos/tools/tlm_grapher/data_object_editors/housekeeping_data_object_editor.rb +7 -7
- data/lib/cosmos/tools/tlm_grapher/data_object_editors/xy_data_object_editor.rb +10 -10
- data/lib/cosmos/tools/tlm_grapher/data_objects/housekeeping_data_object.rb +10 -3
- data/lib/cosmos/tools/tlm_grapher/data_objects/xy_data_object.rb +6 -6
- data/lib/cosmos/tools/tlm_grapher/tabbed_plots/overview_tabbed_plots.rb +14 -14
- data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_tool.rb +83 -83
- data/lib/cosmos/tools/tlm_viewer/screen.rb +73 -13
- data/lib/cosmos/tools/tlm_viewer/tlm_viewer.rb +15 -15
- data/lib/cosmos/tools/tlm_viewer/widgets.rb +1 -0
- data/lib/cosmos/tools/tlm_viewer/widgets/canvasellipse_widget.rb +40 -0
- data/lib/cosmos/tools/tlm_viewer/widgets/timegraph_widget.rb +1 -1
- data/lib/cosmos/tools/tlm_viewer/widgets/widget.rb +6 -1
- data/lib/cosmos/top_level.rb +14 -1
- data/lib/cosmos/version.rb +5 -5
- data/lib/cosmos/win32/excel.rb +63 -12
- data/make_gems.sh +10 -0
- data/spec/conversions/packet_time_formatted_conversion_spec.rb +58 -0
- data/spec/conversions/packet_time_seconds_conversion_spec.rb +60 -0
- data/spec/interfaces/protocols/ignore_packet_protocol_spec.rb +243 -0
- data/spec/interfaces/protocols/preidentified_protocol_spec.rb +227 -4
- data/spec/io/serial_driver_spec.rb +15 -13
- data/spec/packet_logs/packet_log_reader_spec.rb +72 -17
- data/spec/packets/packet_config_spec.rb +5 -16
- data/spec/packets/parsers/format_string_parser_spec.rb +0 -11
- data/spec/packets/parsers/macro_parser_spec.rb +36 -36
- data/spec/packets/parsers/state_parser_spec.rb +36 -0
- data/spec/packets/telemetry_spec.rb +11 -9
- data/spec/script/script_spec.rb +2 -3
- data/spec/script/scripting_spec.rb +2 -1
- data/spec/script/tools_spec.rb +0 -1
- data/spec/tools/cmd_tlm_server/api_spec.rb +28 -20
- data/spec/tools/cmd_tlm_server/cmd_tlm_server_config_spec.rb +33 -0
- data/spec/tools/cmd_tlm_server/commanding_spec.rb +25 -1
- data/spec/tools/cmd_tlm_server/interface_thread_spec.rb +15 -0
- data/tasks/gemfile_stats.rake +3 -2
- metadata +14 -2
@@ -89,185 +89,198 @@ module Cosmos
|
|
89
89
|
super()
|
90
90
|
|
91
91
|
# File actions
|
92
|
-
@file_new = Qt::Action.new(Cosmos.get_icon('file.png'),
|
93
|
-
@file_new_keyseq = Qt::KeySequence.new(
|
92
|
+
@file_new = Qt::Action.new(Cosmos.get_icon('file.png'), '&New', self)
|
93
|
+
@file_new_keyseq = Qt::KeySequence.new('Ctrl+N')
|
94
94
|
@file_new.shortcut = @file_new_keyseq
|
95
|
-
@file_new.statusTip =
|
95
|
+
@file_new.statusTip = 'Start a new script'
|
96
96
|
@file_new.connect(SIGNAL('triggered()')) { file_new() }
|
97
97
|
|
98
|
-
@file_close = Qt::Action.new(
|
99
|
-
@file_close_keyseq = Qt::KeySequence.new(
|
98
|
+
@file_close = Qt::Action.new('&Close', self)
|
99
|
+
@file_close_keyseq = Qt::KeySequence.new('Ctrl+W')
|
100
100
|
@file_close.shortcut = @file_close_keyseq
|
101
|
-
@file_close.statusTip =
|
101
|
+
@file_close.statusTip = 'Close the script'
|
102
102
|
@file_close.connect(SIGNAL('triggered()')) { file_close() }
|
103
103
|
|
104
|
-
@file_reload = Qt::Action.new(
|
105
|
-
@file_reload_keyseq = Qt::KeySequence.new(
|
104
|
+
@file_reload = Qt::Action.new('&Reload', self)
|
105
|
+
@file_reload_keyseq = Qt::KeySequence.new('Ctrl+R')
|
106
106
|
@file_reload.shortcut = @file_reload_keyseq
|
107
|
-
@file_reload.statusTip =
|
107
|
+
@file_reload.statusTip = 'Reload a script'
|
108
108
|
@file_reload.connect(SIGNAL('triggered()')) { file_reload() }
|
109
109
|
|
110
|
-
@file_save = Qt::Action.new(Cosmos.get_icon('save.png'),
|
111
|
-
@file_save_keyseq = Qt::KeySequence.new(
|
110
|
+
@file_save = Qt::Action.new(Cosmos.get_icon('save.png'), '&Save', self)
|
111
|
+
@file_save_keyseq = Qt::KeySequence.new('Ctrl+S')
|
112
112
|
@file_save.shortcut = @file_save_keyseq
|
113
|
-
@file_save.statusTip =
|
113
|
+
@file_save.statusTip = 'Save the script'
|
114
114
|
@file_save.connect(SIGNAL('triggered()')) { file_save(false) }
|
115
115
|
|
116
|
-
@file_save_as = Qt::Action.new(Cosmos.get_icon('save_as.png'),
|
117
|
-
@file_save_as.statusTip =
|
116
|
+
@file_save_as = Qt::Action.new(Cosmos.get_icon('save_as.png'), 'Save &As', self)
|
117
|
+
@file_save_as.statusTip = 'Save the script'
|
118
118
|
@file_save_as.connect(SIGNAL('triggered()')) { file_save(true) }
|
119
119
|
|
120
|
-
@file_options = Qt::Action.new(
|
121
|
-
@file_options.statusTip =
|
120
|
+
@file_options = Qt::Action.new('O&ptions', self)
|
121
|
+
@file_options.statusTip = 'Application Options'
|
122
122
|
@file_options.connect(SIGNAL('triggered()')) { file_options() }
|
123
123
|
|
124
124
|
# Edit actions
|
125
|
-
@edit_undo = Qt::Action.new(Cosmos.get_icon('undo.png'),
|
126
|
-
@edit_undo_keyseq = Qt::KeySequence.new(
|
125
|
+
@edit_undo = Qt::Action.new(Cosmos.get_icon('undo.png'), '&Undo', self)
|
126
|
+
@edit_undo_keyseq = Qt::KeySequence.new('Ctrl+Z')
|
127
127
|
@edit_undo.shortcut = @edit_undo_keyseq
|
128
|
-
@edit_undo.statusTip =
|
128
|
+
@edit_undo.statusTip = 'Undo'
|
129
129
|
@edit_undo.connect(SIGNAL('triggered()')) { active_script_runner_frame().undo }
|
130
130
|
|
131
|
-
@edit_redo = Qt::Action.new(Cosmos.get_icon('redo.png'),
|
132
|
-
@edit_redo_keyseq = Qt::KeySequence.new(
|
131
|
+
@edit_redo = Qt::Action.new(Cosmos.get_icon('redo.png'), '&Redo', self)
|
132
|
+
@edit_redo_keyseq = Qt::KeySequence.new('Ctrl+Y')
|
133
133
|
@edit_redo.shortcut = @edit_redo_keyseq
|
134
|
-
@edit_redo.statusTip =
|
134
|
+
@edit_redo.statusTip = 'Redo'
|
135
135
|
@edit_redo.connect(SIGNAL('triggered()')) { active_script_runner_frame().redo }
|
136
136
|
|
137
|
-
@edit_cut = Qt::Action.new(Cosmos.get_icon('cut.png'),
|
138
|
-
@edit_cut_keyseq = Qt::KeySequence.new(
|
137
|
+
@edit_cut = Qt::Action.new(Cosmos.get_icon('cut.png'), 'Cu&t', self)
|
138
|
+
@edit_cut_keyseq = Qt::KeySequence.new('Ctrl+X')
|
139
139
|
@edit_cut.shortcut = @edit_cut_keyseq
|
140
|
-
@edit_cut.statusTip =
|
140
|
+
@edit_cut.statusTip = 'Cut'
|
141
141
|
@edit_cut.connect(SIGNAL('triggered()')) { active_script_runner_frame().cut }
|
142
142
|
|
143
|
-
@edit_copy = Qt::Action.new(Cosmos.get_icon('copy.png'),
|
144
|
-
@edit_copy_keyseq = Qt::KeySequence.new(
|
143
|
+
@edit_copy = Qt::Action.new(Cosmos.get_icon('copy.png'), '&Copy', self)
|
144
|
+
@edit_copy_keyseq = Qt::KeySequence.new('Ctrl+C')
|
145
145
|
@edit_copy.shortcut = @edit_copy_keyseq
|
146
|
-
@edit_copy.statusTip =
|
146
|
+
@edit_copy.statusTip = 'Copy'
|
147
147
|
@edit_copy.connect(SIGNAL('triggered()')) { active_script_runner_frame().copy }
|
148
148
|
|
149
|
-
@edit_paste = Qt::Action.new(
|
150
|
-
@edit_paste_keyseq = Qt::KeySequence.new(
|
149
|
+
@edit_paste = Qt::Action.new('&Paste', self)
|
150
|
+
@edit_paste_keyseq = Qt::KeySequence.new('Ctrl+V')
|
151
151
|
@edit_paste.shortcut = @edit_paste_keyseq
|
152
|
-
@edit_paste.statusTip =
|
152
|
+
@edit_paste.statusTip = 'Paste'
|
153
153
|
@edit_paste.connect(SIGNAL('triggered()')) { active_script_runner_frame().paste }
|
154
154
|
|
155
|
-
@edit_select_all = Qt::Action.new(
|
156
|
-
@edit_select_all_keyseq = Qt::KeySequence.new(
|
155
|
+
@edit_select_all = Qt::Action.new('Select &All', self)
|
156
|
+
@edit_select_all_keyseq = Qt::KeySequence.new('Ctrl+A')
|
157
157
|
@edit_select_all.shortcut = @edit_select_all_keyseq
|
158
|
-
@edit_select_all.statusTip =
|
158
|
+
@edit_select_all.statusTip = 'Select All'
|
159
159
|
@edit_select_all.connect(SIGNAL('triggered()')) { active_script_runner_frame().select_all }
|
160
160
|
|
161
|
-
@edit_comment = Qt::Action.new(
|
162
|
-
@edit_comment_keyseq = Qt::KeySequence.new(
|
161
|
+
@edit_comment = Qt::Action.new('Comment/Uncomment &Lines', self)
|
162
|
+
@edit_comment_keyseq = Qt::KeySequence.new('Ctrl+K')
|
163
163
|
@edit_comment.shortcut = @edit_comment_keyseq
|
164
|
-
@edit_comment.statusTip =
|
164
|
+
@edit_comment.statusTip = 'Comment/Uncomment Lines'
|
165
165
|
@edit_comment.connect(SIGNAL('triggered()')) { active_script_runner_frame().comment_or_uncomment_lines }
|
166
166
|
|
167
|
+
@edit_zoom_in = Qt::Action.new('&Increase Font Size', self)
|
168
|
+
@edit_zoom_in_keyseq = Qt::KeySequence.new(Qt::KeySequence::ZoomIn)
|
169
|
+
@edit_zoom_in.shortcut = @edit_zoom_in_keyseq
|
170
|
+
@edit_zoom_in.connect(SIGNAL('triggered()')) { active_script_runner_frame().zoom_in }
|
171
|
+
|
172
|
+
@edit_zoom_out = Qt::Action.new('&Decrease Font Size', self)
|
173
|
+
@edit_zoom_out_keyseq = Qt::KeySequence.new(Qt::KeySequence::ZoomOut)
|
174
|
+
@edit_zoom_out.shortcut = @edit_zoom_out_keyseq
|
175
|
+
@edit_zoom_out.connect(SIGNAL('triggered()')) { active_script_runner_frame().zoom_out }
|
176
|
+
|
177
|
+
@edit_zoom_default = Qt::Action.new('Restore &Font Size', self)
|
178
|
+
@edit_zoom_default.connect(SIGNAL('triggered()')) { active_script_runner_frame().zoom_default }
|
179
|
+
|
167
180
|
# Search Actions
|
168
|
-
@search_find = Qt::Action.new(Cosmos.get_icon('search.png'),
|
169
|
-
@search_find_keyseq = Qt::KeySequence.new(
|
181
|
+
@search_find = Qt::Action.new(Cosmos.get_icon('search.png'), '&Find', self)
|
182
|
+
@search_find_keyseq = Qt::KeySequence.new('Ctrl+F')
|
170
183
|
@search_find.shortcut = @search_find_keyseq
|
171
|
-
@search_find.statusTip =
|
184
|
+
@search_find.statusTip = 'Find text'
|
172
185
|
@search_find.connect(SIGNAL('triggered()')) do
|
173
186
|
FindReplaceDialog.show_find(self)
|
174
187
|
end
|
175
188
|
|
176
|
-
@search_find_next = Qt::Action.new(
|
177
|
-
@search_find_next_keyseq = Qt::KeySequence.new(
|
189
|
+
@search_find_next = Qt::Action.new('Find &Next', self)
|
190
|
+
@search_find_next_keyseq = Qt::KeySequence.new('F3')
|
178
191
|
@search_find_next.shortcut = @search_find_next_keyseq
|
179
|
-
@search_find_next.statusTip =
|
192
|
+
@search_find_next.statusTip = 'Find next instance'
|
180
193
|
@search_find_next.connect(SIGNAL('triggered()')) do
|
181
194
|
FindReplaceDialog.find_next(self)
|
182
195
|
end
|
183
196
|
|
184
|
-
@search_find_previous = Qt::Action.new(
|
185
|
-
@search_find_previous_keyseq = Qt::KeySequence.new(
|
197
|
+
@search_find_previous = Qt::Action.new('Find &Previous', self)
|
198
|
+
@search_find_previous_keyseq = Qt::KeySequence.new('Shift+F3')
|
186
199
|
@search_find_previous.shortcut = @search_find_previous_keyseq
|
187
|
-
@search_find_previous.statusTip =
|
200
|
+
@search_find_previous.statusTip = 'Find previous instance'
|
188
201
|
@search_find_previous.connect(SIGNAL('triggered()')) do
|
189
202
|
FindReplaceDialog.find_previous(self)
|
190
203
|
end
|
191
204
|
|
192
|
-
@search_replace = Qt::Action.new(
|
193
|
-
@search_replace_keyseq = Qt::KeySequence.new(
|
205
|
+
@search_replace = Qt::Action.new('&Replace', self)
|
206
|
+
@search_replace_keyseq = Qt::KeySequence.new('Ctrl+H')
|
194
207
|
@search_replace.shortcut = @search_replace_keyseq
|
195
|
-
@search_replace.statusTip =
|
208
|
+
@search_replace.statusTip = 'Replace'
|
196
209
|
@search_replace.connect(SIGNAL('triggered()')) do
|
197
210
|
FindReplaceDialog.show_replace(self)
|
198
211
|
end
|
199
212
|
|
200
213
|
# Script Actions
|
201
|
-
@script_syntax_all = Qt::Action.new(
|
202
|
-
@script_syntax_all.statusTip =
|
214
|
+
@script_syntax_all = Qt::Action.new('&Ruby Syntax Check', self)
|
215
|
+
@script_syntax_all.statusTip = 'Check ruby syntax of this script'
|
203
216
|
@script_syntax_all.connect(SIGNAL('triggered()')) do
|
204
217
|
active_script_runner_frame().ruby_syntax_check_text()
|
205
218
|
end
|
206
219
|
|
207
|
-
@script_mnemonic_all = Qt::Action.new(
|
208
|
-
@script_mnemonic_all.statusTip =
|
220
|
+
@script_mnemonic_all = Qt::Action.new('&Mnemonic Check', self)
|
221
|
+
@script_mnemonic_all.statusTip = 'Check mnemonics of this script'
|
209
222
|
@script_mnemonic_all.connect(SIGNAL('triggered()')) do
|
210
223
|
active_script_runner_frame().mnemonic_check_text(active_script_runner_frame().text)
|
211
224
|
end
|
212
225
|
|
213
|
-
@script_execute_lines = Qt::Action.new(
|
214
|
-
@script_execute_lines.statusTip =
|
226
|
+
@script_execute_lines = Qt::Action.new('&Execute Selected Lines', self)
|
227
|
+
@script_execute_lines.statusTip = 'Execute selected lines'
|
215
228
|
@script_execute_lines.connect(SIGNAL('triggered()')) { active_script_runner_frame().run_selection }
|
216
229
|
|
217
|
-
@script_execute_cursor = Qt::Action.new(
|
218
|
-
@script_execute_cursor.statusTip =
|
230
|
+
@script_execute_cursor = Qt::Action.new('E&xecute From Cursor', self)
|
231
|
+
@script_execute_cursor.statusTip = 'Execute from cursor position'
|
219
232
|
@script_execute_cursor.connect(SIGNAL('triggered()')) { active_script_runner_frame().run_from_cursor }
|
220
233
|
|
221
|
-
@script_syntax_lines = Qt::Action.new(
|
222
|
-
@script_syntax_lines.statusTip =
|
234
|
+
@script_syntax_lines = Qt::Action.new('Ruby &Syntax Check Selected Lines', self)
|
235
|
+
@script_syntax_lines.statusTip = 'Check ruby syntax of selected lines'
|
223
236
|
@script_syntax_lines.connect(SIGNAL('triggered()')) { active_script_runner_frame().ruby_syntax_check_selection }
|
224
237
|
|
225
|
-
@script_mnemonic_lines = Qt::Action.new(
|
226
|
-
@script_mnemonic_lines.statusTip =
|
238
|
+
@script_mnemonic_lines = Qt::Action.new('M&nemonic Check Selected Lines', self)
|
239
|
+
@script_mnemonic_lines.statusTip = 'Check mnemonics of selected lines'
|
227
240
|
@script_mnemonic_lines.connect(SIGNAL('triggered()')) { active_script_runner_frame().mnemonic_check_selection }
|
228
241
|
|
229
|
-
@script_audit = Qt::Action.new(
|
230
|
-
@script_audit.statusTip =
|
242
|
+
@script_audit = Qt::Action.new('&Generate Cmd/Tlm Audit', self)
|
243
|
+
@script_audit.statusTip = 'Generate audit about commands sent and telemetry checked'
|
231
244
|
@script_audit.connect(SIGNAL('triggered()')) { script_audit() }
|
232
245
|
|
233
|
-
@script_instrumented = Qt::Action.new(
|
234
|
-
@script_instrumented.statusTip =
|
246
|
+
@script_instrumented = Qt::Action.new('&View Instrumented Script', self)
|
247
|
+
@script_instrumented.statusTip = 'View instrumented script'
|
235
248
|
@script_instrumented.connect(SIGNAL('triggered()')) { script_view_instrumented() }
|
236
249
|
|
237
|
-
@script_log_message = Qt::Action.new(
|
238
|
-
@script_log_message.statusTip =
|
250
|
+
@script_log_message = Qt::Action.new('Log Message to Script Log', self)
|
251
|
+
@script_log_message.statusTip = 'Log Message to Script Log'
|
239
252
|
@script_log_message.connect(SIGNAL('triggered()')) { script_log_message() }
|
240
253
|
@script_log_message.setEnabled(false)
|
241
254
|
|
242
|
-
@script_call_stack = Qt::Action.new(
|
243
|
-
@script_call_stack.statusTip =
|
255
|
+
@script_call_stack = Qt::Action.new('Show Call Stack', self)
|
256
|
+
@script_call_stack.statusTip = 'Show Call Stack'
|
244
257
|
@script_call_stack.connect(SIGNAL('triggered()')) { script_call_stack() }
|
245
258
|
@script_call_stack.setEnabled(false)
|
246
259
|
|
247
|
-
@script_debug = Qt::Action.new(Cosmos.get_icon('bug.png'),
|
248
|
-
@script_debug_keyseq = Qt::KeySequence.new(
|
260
|
+
@script_debug = Qt::Action.new(Cosmos.get_icon('bug.png'), 'Toggle &Debug', self)
|
261
|
+
@script_debug_keyseq = Qt::KeySequence.new('Ctrl+D')
|
249
262
|
@script_debug.shortcut = @script_debug_keyseq
|
250
|
-
@script_debug.statusTip =
|
263
|
+
@script_debug.statusTip = 'Toggle debug capabilities for the script'
|
251
264
|
@script_debug.connect(SIGNAL('triggered()')) { script_toggle_debug() }
|
252
265
|
|
253
|
-
@script_disconnect = Qt::Action.new(Cosmos.get_icon('disconnected.png'),
|
254
|
-
@script_disconnect_keyseq = Qt::KeySequence.new(
|
266
|
+
@script_disconnect = Qt::Action.new(Cosmos.get_icon('disconnected.png'), '&Toggle Disconnect', self)
|
267
|
+
@script_disconnect_keyseq = Qt::KeySequence.new('Ctrl+T')
|
255
268
|
@script_disconnect.shortcut = @script_disconnect_keyseq
|
256
|
-
@script_disconnect.statusTip =
|
269
|
+
@script_disconnect.statusTip = 'Toggle disconnect from the server'
|
257
270
|
@script_disconnect.connect(SIGNAL('triggered()')) { script_toggle_disconnect() }
|
258
271
|
end
|
259
272
|
|
260
273
|
def initialize_menus
|
261
274
|
# File Menu
|
262
|
-
@file_menu = menuBar.addMenu(
|
275
|
+
@file_menu = menuBar.addMenu('&File')
|
263
276
|
@file_menu.addAction(@file_new)
|
264
277
|
|
265
278
|
open_action = Qt::Action.new(self)
|
266
|
-
open_action.shortcut = Qt::KeySequence.new(
|
279
|
+
open_action.shortcut = Qt::KeySequence.new('Ctrl+O')
|
267
280
|
open_action.connect(SIGNAL('triggered()')) { file_open(@procedure_dir) }
|
268
281
|
self.addAction(open_action)
|
269
282
|
|
270
|
-
@file_open = @file_menu.addMenu(
|
283
|
+
@file_open = @file_menu.addMenu('&Open')
|
271
284
|
@file_open.setIcon(Cosmos.get_icon('open.png'))
|
272
285
|
target_dirs_action(@file_open, System.paths['PROCEDURES'], 'procedures', method(:file_open))
|
273
286
|
|
@@ -282,7 +295,7 @@ module Cosmos
|
|
282
295
|
@file_menu.addAction(@exit_action)
|
283
296
|
|
284
297
|
# Edit Menu
|
285
|
-
mode_menu = menuBar.addMenu(
|
298
|
+
mode_menu = menuBar.addMenu('&Edit')
|
286
299
|
mode_menu.addAction(@edit_undo)
|
287
300
|
mode_menu.addAction(@edit_redo)
|
288
301
|
mode_menu.addSeparator()
|
@@ -293,16 +306,20 @@ module Cosmos
|
|
293
306
|
mode_menu.addAction(@edit_select_all)
|
294
307
|
mode_menu.addSeparator()
|
295
308
|
mode_menu.addAction(@edit_comment)
|
309
|
+
mode_menu.addSeparator()
|
310
|
+
mode_menu.addAction(@edit_zoom_in)
|
311
|
+
mode_menu.addAction(@edit_zoom_out)
|
312
|
+
mode_menu.addAction(@edit_zoom_default)
|
296
313
|
|
297
314
|
# Search Menu
|
298
|
-
view_menu = menuBar.addMenu(
|
315
|
+
view_menu = menuBar.addMenu('&Search')
|
299
316
|
view_menu.addAction(@search_find)
|
300
317
|
view_menu.addAction(@search_find_next)
|
301
318
|
view_menu.addAction(@search_find_previous)
|
302
319
|
view_menu.addAction(@search_replace)
|
303
320
|
|
304
321
|
# Script Menu
|
305
|
-
view_menu = menuBar.addMenu(
|
322
|
+
view_menu = menuBar.addMenu('Scrip&t')
|
306
323
|
view_menu.addAction(@script_syntax_all)
|
307
324
|
view_menu.addAction(@script_syntax_lines)
|
308
325
|
view_menu.addSeparator()
|
@@ -472,11 +489,11 @@ module Cosmos
|
|
472
489
|
File.open(filename, "w") {|file| file.write(active_script_runner_frame().text)}
|
473
490
|
saved = true
|
474
491
|
update_title()
|
475
|
-
statusBar.showMessage(
|
492
|
+
statusBar.showMessage("#{filename} saved")
|
476
493
|
@procedure_dir = File.dirname(filename)
|
477
494
|
@procedure_dir << '/' if @procedure_dir[-1..-1] != '/' and @procedure_dir[-1..-1] != '\\'
|
478
495
|
rescue => error
|
479
|
-
statusBar.showMessage(
|
496
|
+
statusBar.showMessage("Error Saving Script : #{error.class} : #{error.message}")
|
480
497
|
end
|
481
498
|
end
|
482
499
|
|
@@ -508,18 +525,18 @@ module Cosmos
|
|
508
525
|
box = Qt::DoubleSpinBox.new
|
509
526
|
box.setRange(0, 60)
|
510
527
|
box.setValue(ScriptRunnerFrame.line_delay)
|
511
|
-
form.addRow(
|
528
|
+
form.addRow("&Delay between each script line:", box)
|
512
529
|
pause_on_error = Qt::CheckBox.new
|
513
|
-
form.addRow(
|
530
|
+
form.addRow("&Pause on error:", pause_on_error)
|
514
531
|
monitor = Qt::CheckBox.new
|
515
|
-
form.addRow(
|
532
|
+
form.addRow("&Monitor limits:", monitor)
|
516
533
|
if ScriptRunnerFrame.pause_on_error
|
517
534
|
pause_on_error.setCheckState(Qt::Checked)
|
518
535
|
else
|
519
536
|
pause_on_error.setCheckState(Qt::Unchecked)
|
520
537
|
end
|
521
538
|
pause_on_red = Qt::CheckBox.new
|
522
|
-
form.addRow(
|
539
|
+
form.addRow("Pause on &red limit:", pause_on_red)
|
523
540
|
if ScriptRunnerFrame.monitor_limits
|
524
541
|
monitor.setCheckState(Qt::Checked)
|
525
542
|
pause_on_red.setCheckState(Qt::Checked) if ScriptRunnerFrame.pause_on_red
|
@@ -787,23 +804,23 @@ module Cosmos
|
|
787
804
|
|
788
805
|
menu = Qt::Menu.new()
|
789
806
|
|
790
|
-
new_action = Qt::Action.new(
|
791
|
-
new_action.statusTip =
|
807
|
+
new_action = Qt::Action.new("&New", self)
|
808
|
+
new_action.statusTip = "Create a new script"
|
792
809
|
new_action.connect(SIGNAL('triggered()')) { file_new() }
|
793
810
|
menu.addAction(new_action)
|
794
811
|
|
795
|
-
close_action = Qt::Action.new(
|
796
|
-
close_action.statusTip =
|
812
|
+
close_action = Qt::Action.new("&Close", self)
|
813
|
+
close_action.statusTip = "Close the script"
|
797
814
|
close_action.connect(SIGNAL('triggered()')) { file_close() }
|
798
815
|
menu.addAction(close_action)
|
799
816
|
|
800
|
-
save_action = Qt::Action.new(
|
801
|
-
save_action.statusTip =
|
817
|
+
save_action = Qt::Action.new("&Save", self)
|
818
|
+
save_action.statusTip = "Save the script"
|
802
819
|
save_action.connect(SIGNAL('triggered()')) { file_save(false) }
|
803
820
|
menu.addAction(save_action)
|
804
821
|
|
805
|
-
save_action = Qt::Action.new(
|
806
|
-
save_action.statusTip =
|
822
|
+
save_action = Qt::Action.new("Save &As", self)
|
823
|
+
save_action.statusTip = "Save the script as"
|
807
824
|
save_action.connect(SIGNAL('triggered()')) { file_save(true) }
|
808
825
|
menu.addAction(save_action)
|
809
826
|
|
@@ -99,8 +99,8 @@ module Cosmos
|
|
99
99
|
attr_accessor :continue_after_error
|
100
100
|
attr_accessor :exceptions
|
101
101
|
attr_accessor :script_binding
|
102
|
-
attr_accessor :inline_return
|
103
|
-
attr_accessor :inline_return_params
|
102
|
+
attr_accessor :inline_return # Deprecated and unused - Here to prevent cache errors for old scripts
|
103
|
+
attr_accessor :inline_return_params # Deprecated and unused - Here to prevent cache errors for old scripts
|
104
104
|
attr_reader :message_log
|
105
105
|
attr_reader :script_class
|
106
106
|
attr_reader :top_level_instrumented_cache
|
@@ -126,6 +126,7 @@ module Cosmos
|
|
126
126
|
@@cancel_output = false
|
127
127
|
@@cancel_limits = false
|
128
128
|
@@file_number = 1
|
129
|
+
@@default_font = Cosmos.get_default_font
|
129
130
|
|
130
131
|
def initialize(parent, default_tab_text = 'Untitled')
|
131
132
|
super(parent)
|
@@ -252,7 +253,7 @@ module Cosmos
|
|
252
253
|
|
253
254
|
def create_ruby_editor
|
254
255
|
# Add Initial Text Window
|
255
|
-
script = RubyEditor.new(self)
|
256
|
+
script = RubyEditor.new(self, @@default_font)
|
256
257
|
script.enable_breakpoints = true if @debug_frame
|
257
258
|
connect(script,
|
258
259
|
SIGNAL('breakpoint_set(int)'),
|
@@ -266,6 +267,10 @@ module Cosmos
|
|
266
267
|
SIGNAL('breakpoints_cleared()'),
|
267
268
|
self,
|
268
269
|
SLOT('breakpoints_cleared()'))
|
270
|
+
script.connect(SIGNAL('font_changed(QFont)')) do |font|
|
271
|
+
# Remember changed fonts for future tabs
|
272
|
+
@@default_font = font
|
273
|
+
end
|
269
274
|
|
270
275
|
# Add right click menu
|
271
276
|
script.setContextMenuPolicy(Qt::CustomContextMenu)
|
@@ -315,6 +320,10 @@ module Cosmos
|
|
315
320
|
@script.setFocus
|
316
321
|
end
|
317
322
|
|
323
|
+
def active_script_highlight(color)
|
324
|
+
Qt.execute_in_main_thread { @active_script.highlight_line(color) }
|
325
|
+
end
|
326
|
+
|
318
327
|
def allow_start=(value)
|
319
328
|
@allow_start = value
|
320
329
|
if @allow_start
|
@@ -564,6 +573,10 @@ module Cosmos
|
|
564
573
|
# originally had comments but they were stripped in
|
565
574
|
# ruby_lex_utils.remove_comments
|
566
575
|
next if segment.strip.empty?
|
576
|
+
|
577
|
+
# Create a variable to hold the segment's return value
|
578
|
+
instrumented_line << "__return_val = nil; "
|
579
|
+
|
567
580
|
# If not inside a begin block then create one to catch exceptions
|
568
581
|
unless inside_begin
|
569
582
|
instrumented_line << 'begin; '
|
@@ -571,24 +584,23 @@ module Cosmos
|
|
571
584
|
|
572
585
|
# Add preline instrumentation
|
573
586
|
instrumented_line << "ScriptRunnerFrame.instance.script_binding = binding(); "\
|
574
|
-
"if ScriptRunnerFrame.instance.inline_return then ScriptRunnerFrame.instance.inline_return = nil; "\
|
575
|
-
"return ScriptRunnerFrame.instance.inline_return_params; end; "\
|
576
587
|
"ScriptRunnerFrame.instance.pre_line_instrumentation('#{filename}', #{line_no}); "
|
577
588
|
|
578
589
|
# Add the actual line
|
590
|
+
instrumented_line << "__return_val = "
|
579
591
|
instrumented_line << segment
|
580
592
|
instrumented_line.chomp!
|
581
593
|
|
582
594
|
# Add postline instrumentation
|
583
|
-
instrumented_line << "; ScriptRunnerFrame.instance.post_line_instrumentation('#{filename}', #{line_no})"
|
595
|
+
instrumented_line << "; ScriptRunnerFrame.instance.post_line_instrumentation('#{filename}', #{line_no}); "
|
584
596
|
|
585
597
|
# Complete begin block to catch exceptions
|
586
598
|
unless inside_begin
|
587
|
-
instrumented_line << "
|
588
|
-
"retry if ScriptRunnerFrame.instance.exception_instrumentation(eval_error, '#{filename}', #{line_no}); end"
|
599
|
+
instrumented_line << "rescue Exception => eval_error; "\
|
600
|
+
"retry if ScriptRunnerFrame.instance.exception_instrumentation(eval_error, '#{filename}', #{line_no}); end; "
|
589
601
|
end
|
590
602
|
|
591
|
-
instrumented_line << "\n"
|
603
|
+
instrumented_line << " __return_val\n"
|
592
604
|
else
|
593
605
|
unless segment =~ /^\s*end\s*$/ or segment =~ /^\s*when .*$/
|
594
606
|
num_left_brackets = segment.count('{')
|
@@ -752,6 +764,21 @@ module Cosmos
|
|
752
764
|
@script.comment_or_uncomment_lines unless running?()
|
753
765
|
end
|
754
766
|
|
767
|
+
def zoom_in
|
768
|
+
# @active_script since this can be used while running
|
769
|
+
@active_script.zoom_in
|
770
|
+
end
|
771
|
+
|
772
|
+
def zoom_out
|
773
|
+
# @active_script since this can be used while running
|
774
|
+
@active_script.zoom_out
|
775
|
+
end
|
776
|
+
|
777
|
+
def zoom_default
|
778
|
+
# @active_script since this can be used while running
|
779
|
+
@active_script.zoom_default
|
780
|
+
end
|
781
|
+
|
755
782
|
##################################################################################
|
756
783
|
# Implement Script functionality in the frame (run selection, run from cursor, etc
|
757
784
|
##################################################################################
|
@@ -975,15 +1002,6 @@ module Cosmos
|
|
975
1002
|
|
976
1003
|
@debug_frame.addWidget(@debug_text)
|
977
1004
|
|
978
|
-
@return_button = Qt::PushButton.new('Insert Return')
|
979
|
-
@debug_frame.addWidget(@return_button)
|
980
|
-
@return_button.connect(SIGNAL('clicked(bool)')) do
|
981
|
-
scriptrunner_puts "Debug: insert_return(); ScriptRunnerFrame.instance.go()"
|
982
|
-
handle_output_io()
|
983
|
-
insert_return()
|
984
|
-
go()
|
985
|
-
end
|
986
|
-
|
987
1005
|
@bottom_frame.layout.addLayout(@debug_frame)
|
988
1006
|
end
|
989
1007
|
end
|
@@ -1060,7 +1078,7 @@ module Cosmos
|
|
1060
1078
|
|
1061
1079
|
def toggle_disconnect(config_file, ask_for_config_file = true)
|
1062
1080
|
dialog = Qt::Dialog.new(self, Qt::WindowTitleHint | Qt::WindowSystemMenuHint)
|
1063
|
-
dialog.setWindowTitle(
|
1081
|
+
dialog.setWindowTitle("Disconnect Settings")
|
1064
1082
|
dialog_layout = Qt::VBoxLayout.new
|
1065
1083
|
dialog_layout.addWidget(Qt::Label.new("Targets checked will be disconnected."))
|
1066
1084
|
|
@@ -1156,7 +1174,7 @@ module Cosmos
|
|
1156
1174
|
Splash.execute(self) do |splash|
|
1157
1175
|
ConfigParser.splash = splash
|
1158
1176
|
splash.message = "Initializing Command and Telemetry Server"
|
1159
|
-
set_disconnected_targets(targets, config_file)
|
1177
|
+
set_disconnected_targets(targets, targets.length == all_targets.length, config_file)
|
1160
1178
|
ConfigParser.splash = nil
|
1161
1179
|
end
|
1162
1180
|
end
|
@@ -1627,33 +1645,33 @@ module Cosmos
|
|
1627
1645
|
menu = current_script.context_menu(point)
|
1628
1646
|
menu.addSeparator()
|
1629
1647
|
if not self.class.running?
|
1630
|
-
exec_selected_action = Qt::Action.new(
|
1631
|
-
exec_selected_action.statusTip =
|
1648
|
+
exec_selected_action = Qt::Action.new("Execute Selected Lines", self)
|
1649
|
+
exec_selected_action.statusTip = "Execute the selected lines as a standalone script"
|
1632
1650
|
exec_selected_action.connect(SIGNAL('triggered()')) { run_selection() }
|
1633
1651
|
menu.addAction(exec_selected_action)
|
1634
1652
|
|
1635
|
-
exec_cursor_action = Qt::Action.new(
|
1636
|
-
exec_cursor_action.statusTip =
|
1653
|
+
exec_cursor_action = Qt::Action.new("Execute From Cursor", self)
|
1654
|
+
exec_cursor_action.statusTip = "Execute the script starting at the line containing the cursor"
|
1637
1655
|
exec_cursor_action.connect(SIGNAL('triggered()')) { run_from_cursor() }
|
1638
1656
|
menu.addAction(exec_cursor_action)
|
1639
1657
|
|
1640
1658
|
menu.addSeparator()
|
1641
1659
|
|
1642
1660
|
if RUBY_VERSION.split('.')[0].to_i > 1
|
1643
|
-
syntax_action = Qt::Action.new(
|
1644
|
-
syntax_action.statusTip =
|
1661
|
+
syntax_action = Qt::Action.new("Ruby Syntax Check Selected Lines", self)
|
1662
|
+
syntax_action.statusTip = "Check the selected lines for valid Ruby syntax"
|
1645
1663
|
syntax_action.connect(SIGNAL('triggered()')) { ruby_syntax_check_selection() }
|
1646
1664
|
menu.addAction(syntax_action)
|
1647
1665
|
end
|
1648
1666
|
|
1649
|
-
mnemonic_action = Qt::Action.new(
|
1650
|
-
mnemonic_action.statusTip =
|
1667
|
+
mnemonic_action = Qt::Action.new("Mnemonic Check Selected Lines", self)
|
1668
|
+
mnemonic_action.statusTip = "Check the selected lines for valid targets, packets, mnemonics and parameters"
|
1651
1669
|
mnemonic_action.connect(SIGNAL('triggered()')) { mnemonic_check_selection() }
|
1652
1670
|
menu.addAction(mnemonic_action)
|
1653
1671
|
|
1654
1672
|
elsif running?() and @realtime_button_bar.state != 'Running'
|
1655
|
-
exec_selected_action = Qt::Action.new(
|
1656
|
-
exec_selected_action.statusTip =
|
1673
|
+
exec_selected_action = Qt::Action.new("Execute Selected Lines While Paused", self)
|
1674
|
+
exec_selected_action.statusTip = "Execute the selected lines as a standalone script"
|
1657
1675
|
exec_selected_action.connect(SIGNAL('triggered()')) { run_selection_while_paused() }
|
1658
1676
|
menu.addAction(exec_selected_action)
|
1659
1677
|
end
|