cosmos 4.2.4-java → 4.3.0-java

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.
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