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.
Files changed (143) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +1 -1
  3. data/Gemfile +1 -1
  4. data/Manifest.txt +12 -0
  5. data/autohotkey/tools/cmd_sequence.ahk +21 -20
  6. data/autohotkey/tools/cmd_sequence2.ahk +1 -1
  7. data/autohotkey/tools/config_editor.ahk +1 -1
  8. data/autohotkey/tools/launcher.ahk +1 -0
  9. data/autohotkey/tools/packet_viewer.ahk +6 -5
  10. data/autohotkey/tools/test_runner.ahk +8 -8
  11. data/bin/cosmos +37 -0
  12. data/bin/dart_util +0 -0
  13. data/data/config/item_modifiers.yaml +9 -0
  14. data/data/crc.txt +91 -86
  15. data/demo/Rakefile +2 -0
  16. data/demo/config/dart/Gemfile +1 -1
  17. data/demo/config/data/crc.txt +8 -5
  18. data/demo/config/system/system.txt +28 -0
  19. data/demo/config/system/system2.txt +21 -3
  20. data/demo/config/system/system_alt_ports.txt +69 -0
  21. data/demo/config/targets/INST/cmd_tlm/inst_tlm.txt +1 -0
  22. data/demo/config/tools/cmd_tlm_server/cmd_tlm_server_chain.txt +18 -0
  23. data/demo/procedures/cosmos_api_test.rb +18 -14
  24. data/demo/procedures/local_screen_example.rb +51 -0
  25. data/ext/cosmos/ext/cosmos_io/cosmos_io.c +32 -4
  26. data/ext/cosmos/ext/packet/packet.c +6 -0
  27. data/ext/mkrf_conf.rb +2 -2
  28. data/install/config/dart/Gemfile +1 -1
  29. data/install/config/data/crc.txt +2 -2
  30. data/install/config/system/system.txt +23 -1
  31. data/lib/cosmos/conversions.rb +2 -0
  32. data/lib/cosmos/conversions/packet_time_formatted_conversion.rb +38 -0
  33. data/lib/cosmos/conversions/packet_time_seconds_conversion.rb +38 -0
  34. data/lib/cosmos/core_ext/cosmos_io.rb +2 -1
  35. data/lib/cosmos/dart/Gemfile +1 -1
  36. data/lib/cosmos/dart/examples/dart_stream_client.rb +6 -2
  37. data/lib/cosmos/dart/lib/dart_common.rb +1 -1
  38. data/lib/cosmos/dart/lib/dart_database_cleaner.rb +2 -2
  39. data/lib/cosmos/dart/lib/dart_decommutator.rb +4 -4
  40. data/lib/cosmos/dart/lib/dart_importer.rb +3 -3
  41. data/lib/cosmos/dart/lib/dart_packet_log_writer.rb +2 -2
  42. data/lib/cosmos/dart/processes/dart_ingester.rb +2 -0
  43. data/lib/cosmos/dart/processes/dart_util.rb +4 -4
  44. data/lib/cosmos/dart/spec/dart/dart_reducer_manager_spec.rb +3 -3
  45. data/lib/cosmos/gui/dialogs/cmd_tlm_raw_dialog.rb +9 -5
  46. data/lib/cosmos/gui/dialogs/details_dialog.rb +29 -29
  47. data/lib/cosmos/gui/dialogs/exception_list_dialog.rb +1 -1
  48. data/lib/cosmos/gui/dialogs/find_replace_dialog.rb +3 -3
  49. data/lib/cosmos/gui/dialogs/interface_raw_dialog.rb +2 -2
  50. data/lib/cosmos/gui/dialogs/set_tlm_dialog.rb +1 -1
  51. data/lib/cosmos/gui/dialogs/tlm_details_dialog.rb +10 -10
  52. data/lib/cosmos/gui/qt.rb +10 -1
  53. data/lib/cosmos/gui/qt_tool.rb +17 -10
  54. data/lib/cosmos/gui/text/ruby_editor.rb +47 -8
  55. data/lib/cosmos/gui/utilities/classification_banner.rb +60 -0
  56. data/lib/cosmos/gui/utilities/script_module_gui.rb +26 -0
  57. data/lib/cosmos/interfaces.rb +1 -0
  58. data/lib/cosmos/interfaces/interface.rb +4 -0
  59. data/lib/cosmos/interfaces/protocols/ignore_packet_protocol.rb +46 -0
  60. data/lib/cosmos/interfaces/protocols/preidentified_protocol.rb +68 -23
  61. data/lib/cosmos/packet_logs/packet_log_reader.rb +69 -26
  62. data/lib/cosmos/packet_logs/packet_log_writer.rb +13 -1
  63. data/lib/cosmos/packets/commands.rb +5 -1
  64. data/lib/cosmos/packets/packet.rb +36 -2
  65. data/lib/cosmos/packets/packet_config.rb +0 -1
  66. data/lib/cosmos/packets/parsers/format_string_parser.rb +0 -1
  67. data/lib/cosmos/packets/parsers/xtce_parser.rb +1 -1
  68. data/lib/cosmos/packets/telemetry.rb +4 -0
  69. data/lib/cosmos/script/api_shared.rb +2 -0
  70. data/lib/cosmos/script/limits.rb +4 -0
  71. data/lib/cosmos/script/script.rb +27 -11
  72. data/lib/cosmos/script/telemetry.rb +3 -1
  73. data/lib/cosmos/script/tools.rb +18 -8
  74. data/lib/cosmos/system/system.rb +21 -0
  75. data/lib/cosmos/tools/cmd_extractor/cmd_extractor.rb +26 -24
  76. data/lib/cosmos/tools/cmd_sender/cmd_sender.rb +29 -29
  77. data/lib/cosmos/tools/cmd_sequence/cmd_sequence.rb +65 -40
  78. data/lib/cosmos/tools/cmd_sequence/sequence_item.rb +6 -6
  79. data/lib/cosmos/tools/cmd_tlm_server/api.rb +13 -0
  80. data/lib/cosmos/tools/cmd_tlm_server/cmd_tlm_server.rb +12 -9
  81. data/lib/cosmos/tools/cmd_tlm_server/cmd_tlm_server_config.rb +7 -1
  82. data/lib/cosmos/tools/cmd_tlm_server/cmd_tlm_server_gui.rb +8 -8
  83. data/lib/cosmos/tools/cmd_tlm_server/commanding.rb +13 -2
  84. data/lib/cosmos/tools/cmd_tlm_server/gui/interfaces_tab.rb +2 -2
  85. data/lib/cosmos/tools/cmd_tlm_server/gui/logging_tab.rb +13 -13
  86. data/lib/cosmos/tools/cmd_tlm_server/gui/packets_tab.rb +4 -4
  87. data/lib/cosmos/tools/cmd_tlm_server/gui/status_tab.rb +8 -8
  88. data/lib/cosmos/tools/cmd_tlm_server/gui/targets_tab.rb +5 -5
  89. data/lib/cosmos/tools/cmd_tlm_server/interface_thread.rb +35 -20
  90. data/lib/cosmos/tools/cmd_tlm_server/replay_backend.rb +15 -11
  91. data/lib/cosmos/tools/config_editor/config_editor.rb +69 -69
  92. data/lib/cosmos/tools/data_viewer/data_viewer.rb +42 -38
  93. data/lib/cosmos/tools/data_viewer/data_viewer_component.rb +1 -0
  94. data/lib/cosmos/tools/data_viewer/dump_component.rb +1 -0
  95. data/lib/cosmos/tools/handbook_creator/handbook_creator.rb +4 -4
  96. data/lib/cosmos/tools/launcher/launcher.rb +1 -1
  97. data/lib/cosmos/tools/limits_monitor/limits_monitor.rb +28 -24
  98. data/lib/cosmos/tools/opengl_builder/opengl_builder.rb +42 -42
  99. data/lib/cosmos/tools/packet_viewer/packet_viewer.rb +56 -53
  100. data/lib/cosmos/tools/script_runner/script_runner.rb +112 -95
  101. data/lib/cosmos/tools/script_runner/script_runner_frame.rb +48 -30
  102. data/lib/cosmos/tools/table_manager/table_manager.rb +42 -42
  103. data/lib/cosmos/tools/test_runner/test_runner.rb +45 -27
  104. data/lib/cosmos/tools/test_runner/test_runner_chooser.rb +3 -3
  105. data/lib/cosmos/tools/tlm_extractor/tlm_extractor.rb +45 -45
  106. data/lib/cosmos/tools/tlm_extractor/tlm_extractor_config.rb +4 -4
  107. data/lib/cosmos/tools/tlm_grapher/data_object_adders/xy_data_object_adder.rb +3 -3
  108. data/lib/cosmos/tools/tlm_grapher/data_object_editors/housekeeping_data_object_editor.rb +7 -7
  109. data/lib/cosmos/tools/tlm_grapher/data_object_editors/xy_data_object_editor.rb +10 -10
  110. data/lib/cosmos/tools/tlm_grapher/data_objects/housekeeping_data_object.rb +10 -3
  111. data/lib/cosmos/tools/tlm_grapher/data_objects/xy_data_object.rb +6 -6
  112. data/lib/cosmos/tools/tlm_grapher/tabbed_plots/overview_tabbed_plots.rb +14 -14
  113. data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_tool.rb +83 -83
  114. data/lib/cosmos/tools/tlm_viewer/screen.rb +73 -13
  115. data/lib/cosmos/tools/tlm_viewer/tlm_viewer.rb +15 -15
  116. data/lib/cosmos/tools/tlm_viewer/widgets.rb +1 -0
  117. data/lib/cosmos/tools/tlm_viewer/widgets/canvasellipse_widget.rb +40 -0
  118. data/lib/cosmos/tools/tlm_viewer/widgets/timegraph_widget.rb +1 -1
  119. data/lib/cosmos/tools/tlm_viewer/widgets/widget.rb +6 -1
  120. data/lib/cosmos/top_level.rb +14 -1
  121. data/lib/cosmos/version.rb +5 -5
  122. data/lib/cosmos/win32/excel.rb +63 -12
  123. data/make_gems.sh +10 -0
  124. data/spec/conversions/packet_time_formatted_conversion_spec.rb +58 -0
  125. data/spec/conversions/packet_time_seconds_conversion_spec.rb +60 -0
  126. data/spec/interfaces/protocols/ignore_packet_protocol_spec.rb +243 -0
  127. data/spec/interfaces/protocols/preidentified_protocol_spec.rb +227 -4
  128. data/spec/io/serial_driver_spec.rb +15 -13
  129. data/spec/packet_logs/packet_log_reader_spec.rb +72 -17
  130. data/spec/packets/packet_config_spec.rb +5 -16
  131. data/spec/packets/parsers/format_string_parser_spec.rb +0 -11
  132. data/spec/packets/parsers/macro_parser_spec.rb +36 -36
  133. data/spec/packets/parsers/state_parser_spec.rb +36 -0
  134. data/spec/packets/telemetry_spec.rb +11 -9
  135. data/spec/script/script_spec.rb +2 -3
  136. data/spec/script/scripting_spec.rb +2 -1
  137. data/spec/script/tools_spec.rb +0 -1
  138. data/spec/tools/cmd_tlm_server/api_spec.rb +28 -20
  139. data/spec/tools/cmd_tlm_server/cmd_tlm_server_config_spec.rb +33 -0
  140. data/spec/tools/cmd_tlm_server/commanding_spec.rb +25 -1
  141. data/spec/tools/cmd_tlm_server/interface_thread_spec.rb +15 -0
  142. data/tasks/gemfile_stats.rake +3 -2
  143. 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'), tr('&New'), self)
93
- @file_new_keyseq = Qt::KeySequence.new(tr('Ctrl+N'))
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 = tr('Start a new script')
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(tr('&Close'), self)
99
- @file_close_keyseq = Qt::KeySequence.new(tr('Ctrl+W'))
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 = tr('Close the script')
101
+ @file_close.statusTip = 'Close the script'
102
102
  @file_close.connect(SIGNAL('triggered()')) { file_close() }
103
103
 
104
- @file_reload = Qt::Action.new(tr('&Reload'), self)
105
- @file_reload_keyseq = Qt::KeySequence.new(tr('Ctrl+R'))
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 = tr('Reload a script')
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'), tr('&Save'), self)
111
- @file_save_keyseq = Qt::KeySequence.new(tr('Ctrl+S'))
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 = tr('Save the script')
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'), tr('Save &As'), self)
117
- @file_save_as.statusTip = tr('Save the script')
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(tr('O&ptions'), self)
121
- @file_options.statusTip = tr('Application Options')
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'), tr('&Undo'), self)
126
- @edit_undo_keyseq = Qt::KeySequence.new(tr('Ctrl+Z'))
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 = tr('Undo')
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'), tr('&Redo'), self)
132
- @edit_redo_keyseq = Qt::KeySequence.new(tr('Ctrl+Y'))
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 = tr('Redo')
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'), tr('Cu&t'), self)
138
- @edit_cut_keyseq = Qt::KeySequence.new(tr('Ctrl+X'))
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 = tr('Cut')
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'), tr('&Copy'), self)
144
- @edit_copy_keyseq = Qt::KeySequence.new(tr('Ctrl+C'))
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 = tr('Copy')
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(tr('&Paste'), self)
150
- @edit_paste_keyseq = Qt::KeySequence.new(tr('Ctrl+V'))
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 = tr('Paste')
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(tr('Select &All'), self)
156
- @edit_select_all_keyseq = Qt::KeySequence.new(tr('Ctrl+A'))
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 = tr('Select All')
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(tr('Comment/Uncomment &Lines'), self)
162
- @edit_comment_keyseq = Qt::KeySequence.new(tr('Ctrl+K'))
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 = tr('Comment/Uncomment Lines')
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'), tr('&Find'), self)
169
- @search_find_keyseq = Qt::KeySequence.new(tr('Ctrl+F'))
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 = tr('Find text')
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(tr('Find &Next'), self)
177
- @search_find_next_keyseq = Qt::KeySequence.new(tr('F3'))
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 = tr('Find next instance')
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(tr('Find &Previous'), self)
185
- @search_find_previous_keyseq = Qt::KeySequence.new(tr('Shift+F3'))
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 = tr('Find previous instance')
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(tr('&Replace'), self)
193
- @search_replace_keyseq = Qt::KeySequence.new(tr('Ctrl+H'))
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 = tr('Replace')
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(tr('&Ruby Syntax Check'), self)
202
- @script_syntax_all.statusTip = tr('Check ruby syntax of this script')
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(tr('&Mnemonic Check'), self)
208
- @script_mnemonic_all.statusTip = tr('Check mnemonics of this script')
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(tr('&Execute Selected Lines'), self)
214
- @script_execute_lines.statusTip = tr('Execute selected lines')
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(tr('E&xecute From Cursor'), self)
218
- @script_execute_cursor.statusTip = tr('Execute from cursor position')
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(tr('Ruby &Syntax Check Selected Lines'), self)
222
- @script_syntax_lines.statusTip = tr('Check ruby syntax of selected lines')
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(tr('M&nemonic Check Selected Lines'), self)
226
- @script_mnemonic_lines.statusTip = tr('Check mnemonics of selected lines')
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(tr('&Generate Cmd/Tlm Audit'), self)
230
- @script_audit.statusTip = tr('Generate audit about commands sent and telemetry checked')
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(tr('&View Instrumented Script'), self)
234
- @script_instrumented.statusTip = tr('View instrumented script')
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(tr('Log Message to Script Log'), self)
238
- @script_log_message.statusTip = tr('Log Message to Script Log')
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(tr('Show Call Stack'), self)
243
- @script_call_stack.statusTip = tr('Show Call Stack')
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'), tr('Toggle &Debug'), self)
248
- @script_debug_keyseq = Qt::KeySequence.new(tr('Ctrl+D'))
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 = tr('Toggle debug capabilities for the script')
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'), tr('&Toggle Disconnect'), self)
254
- @script_disconnect_keyseq = Qt::KeySequence.new(tr('Ctrl+T'))
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 = tr('Toggle disconnect from the server')
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(tr('&File'))
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(tr('Ctrl+O'))
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(tr('&Open'))
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(tr('&Edit'))
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(tr('&Search'))
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(tr('Scrip&t'))
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(tr("#{filename} saved"))
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(tr("Error Saving Script : #{error.class} : #{error.message}"))
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(tr("&Delay between each script line:"), box)
528
+ form.addRow("&Delay between each script line:", box)
512
529
  pause_on_error = Qt::CheckBox.new
513
- form.addRow(tr("&Pause on error:"), pause_on_error)
530
+ form.addRow("&Pause on error:", pause_on_error)
514
531
  monitor = Qt::CheckBox.new
515
- form.addRow(tr("&Monitor limits:"), monitor)
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(tr("Pause on &red limit:"), pause_on_red)
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(tr("&New"), self)
791
- new_action.statusTip = tr("Create a new script")
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(tr("&Close"), self)
796
- close_action.statusTip = tr("Close the script")
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(tr("&Save"), self)
801
- save_action.statusTip = tr("Save the script")
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(tr("Save &As"), self)
806
- save_action.statusTip = tr("Save the script as")
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 << "; rescue Exception => eval_error; "\
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(tr("Disconnect Settings"))
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(tr("Execute Selected Lines"), self)
1631
- exec_selected_action.statusTip = tr("Execute the selected lines as a standalone script")
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(tr("Execute From Cursor"), self)
1636
- exec_cursor_action.statusTip = tr("Execute the script starting at the line containing the cursor")
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(tr("Ruby Syntax Check Selected Lines"), self)
1644
- syntax_action.statusTip = tr("Check the selected lines for valid Ruby syntax")
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(tr("Mnemonic Check Selected Lines"), self)
1650
- mnemonic_action.statusTip = tr("Check the selected lines for valid targets, packets, mnemonics and parameters")
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(tr("Execute Selected Lines While Paused"), self)
1656
- exec_selected_action.statusTip = tr("Execute the selected lines as a standalone script")
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