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
@@ -12,9 +12,9 @@ require 'cosmos'
|
|
12
12
|
Cosmos.catch_fatal_exception do
|
13
13
|
require 'cosmos/gui/qt_tool'
|
14
14
|
require 'cosmos/gui/dialogs/progress_dialog'
|
15
|
+
require 'cosmos/gui/dialogs/tlm_details_dialog'
|
15
16
|
require 'cosmos/tools/table_manager/table_config'
|
16
17
|
require 'cosmos/tools/table_manager/table_manager_core'
|
17
|
-
require 'cosmos/gui/dialogs/tlm_details_dialog'
|
18
18
|
end
|
19
19
|
|
20
20
|
class Qt::ComboBox
|
@@ -279,7 +279,7 @@ module Cosmos
|
|
279
279
|
complete_initialize()
|
280
280
|
setMinimumSize(400, 250)
|
281
281
|
|
282
|
-
statusBar.showMessage(
|
282
|
+
statusBar.showMessage("Ready") # Show message to initialize status bar
|
283
283
|
end
|
284
284
|
|
285
285
|
def initialize_actions(no_tables = false)
|
@@ -296,79 +296,79 @@ module Cosmos
|
|
296
296
|
open_action.connect(SIGNAL('triggered()')) { file_open(@bin_path) }
|
297
297
|
self.addAction(open_action) # Add it to the application
|
298
298
|
|
299
|
-
@file_open_both = Qt::Action.new(Cosmos.get_icon('open.png'),
|
300
|
-
@file_open_both.statusTip =
|
299
|
+
@file_open_both = Qt::Action.new(Cosmos.get_icon('open.png'), 'Open &Both', self)
|
300
|
+
@file_open_both.statusTip = 'Specify both the binary file and the definition file to open'
|
301
301
|
@file_open_both.connect(SIGNAL('triggered()')) { file_open_both() }
|
302
302
|
|
303
|
-
@file_save = Qt::Action.new(Cosmos.get_icon('save.png'),
|
303
|
+
@file_save = Qt::Action.new(Cosmos.get_icon('save.png'), '&Save File', self)
|
304
304
|
@file_save_keyseq = Qt::KeySequence.new(Qt::KeySequence::Save)
|
305
305
|
@file_save.shortcut = @file_save_keyseq
|
306
|
-
@file_save.statusTip =
|
306
|
+
@file_save.statusTip = 'Save the displayed data back to the binary file'
|
307
307
|
@file_save.connect(SIGNAL('triggered()')) { file_save() }
|
308
308
|
|
309
|
-
@file_save_as = Qt::Action.new(Cosmos.get_icon('save_as.png'),
|
309
|
+
@file_save_as = Qt::Action.new(Cosmos.get_icon('save_as.png'), 'Save File &As', self)
|
310
310
|
@file_save_as_keyseq = Qt::KeySequence.new(Qt::KeySequence::SaveAs)
|
311
311
|
@file_save_as.shortcut = @file_save_as_keyseq
|
312
|
-
@file_save_as.statusTip =
|
312
|
+
@file_save_as.statusTip = 'Save the displayed data to a new binary file'
|
313
313
|
@file_save_as.connect(SIGNAL('triggered()')) { file_save(true) }
|
314
314
|
|
315
|
-
@file_close = Qt::Action.new(Cosmos.get_icon('close.png'),
|
316
|
-
@file_close_keyseq = Qt::KeySequence.new(
|
315
|
+
@file_close = Qt::Action.new(Cosmos.get_icon('close.png'), '&Close File', self)
|
316
|
+
@file_close_keyseq = Qt::KeySequence.new("Ctrl+W") # Qt::KeySequence::Close is Alt-F4 on Windows
|
317
317
|
@file_close.shortcut = @file_close_keyseq
|
318
|
-
@file_close.statusTip =
|
318
|
+
@file_close.statusTip = 'Close the current file'
|
319
319
|
@file_close.connect(SIGNAL('triggered()')) { file_close() }
|
320
320
|
|
321
|
-
@file_check = Qt::Action.new(Cosmos.get_icon('checkmark.png'),
|
322
|
-
@file_check_keyseq = Qt::KeySequence.new(
|
321
|
+
@file_check = Qt::Action.new(Cosmos.get_icon('checkmark.png'), '&Check All', self)
|
322
|
+
@file_check_keyseq = Qt::KeySequence.new('Ctrl+K')
|
323
323
|
@file_check.shortcut = @file_check_keyseq
|
324
|
-
@file_check.statusTip =
|
324
|
+
@file_check.statusTip = 'Check each data value against verification criteria'
|
325
325
|
@file_check.connect(SIGNAL('triggered()')) { file_check() }
|
326
326
|
|
327
|
-
@file_hex = Qt::Action.new(
|
328
|
-
@file_hex_keyseq = Qt::KeySequence.new(
|
327
|
+
@file_hex = Qt::Action.new('&Hex Dump', self)
|
328
|
+
@file_hex_keyseq = Qt::KeySequence.new('Ctrl+H')
|
329
329
|
@file_hex.shortcut = @file_hex_keyseq
|
330
|
-
@file_hex.statusTip =
|
330
|
+
@file_hex.statusTip = 'Display a hex representation of the binary file'
|
331
331
|
@file_hex.connect(SIGNAL('triggered()')) { display_hex(:file) }
|
332
332
|
|
333
|
-
@file_report = Qt::Action.new(
|
334
|
-
@file_report_keyseq = Qt::KeySequence.new(
|
333
|
+
@file_report = Qt::Action.new('Create &Report', self)
|
334
|
+
@file_report_keyseq = Qt::KeySequence.new('Ctrl+R')
|
335
335
|
@file_report.shortcut = @file_report_keyseq
|
336
|
-
@file_report.statusTip =
|
336
|
+
@file_report.statusTip = 'Create a text file report describing the binary data'
|
337
337
|
@file_report.connect(SIGNAL('triggered()')) { file_report() }
|
338
338
|
|
339
339
|
unless no_tables
|
340
340
|
# Table Menu Actions
|
341
|
-
@table_check = Qt::Action.new(Cosmos.get_icon('checkmark.png'),
|
342
|
-
@table_check.statusTip =
|
341
|
+
@table_check = Qt::Action.new(Cosmos.get_icon('checkmark.png'), '&Check', self)
|
342
|
+
@table_check.statusTip = 'Check each data value against verification criteria'
|
343
343
|
@table_check.connect(SIGNAL('triggered()')) { table_check() }
|
344
344
|
|
345
|
-
@table_default = Qt::Action.new(
|
346
|
-
@table_default_keyseq = Qt::KeySequence.new(
|
345
|
+
@table_default = Qt::Action.new('&Default', self)
|
346
|
+
@table_default_keyseq = Qt::KeySequence.new('Ctrl+D')
|
347
347
|
@table_default.shortcut = @table_default_keyseq
|
348
|
-
@table_default.statusTip =
|
348
|
+
@table_default.statusTip = 'Revert all data values to their defaults'
|
349
349
|
@table_default.connect(SIGNAL('triggered()')) { table_default() }
|
350
350
|
|
351
|
-
@table_hex = Qt::Action.new(
|
352
|
-
@table_hex.statusTip =
|
351
|
+
@table_hex = Qt::Action.new('&Hex Dump', self)
|
352
|
+
@table_hex.statusTip = 'Display a hex representation of the table'
|
353
353
|
@table_hex.connect(SIGNAL('triggered()')) { display_hex(:table) }
|
354
354
|
|
355
|
-
@table_save = Qt::Action.new(
|
356
|
-
@table_save.statusTip =
|
355
|
+
@table_save = Qt::Action.new('&Save Table Binary', self)
|
356
|
+
@table_save.statusTip = 'Save the current table to a stand alone binary file'
|
357
357
|
@table_save.connect(SIGNAL('triggered()')) { table_save() }
|
358
358
|
|
359
|
-
@table_commit = Qt::Action.new(
|
360
|
-
@table_commit.statusTip =
|
359
|
+
@table_commit = Qt::Action.new('Commit to Existing &File', self)
|
360
|
+
@table_commit.statusTip = 'Incorporate the current table data into a binary file which already contains the table'
|
361
361
|
@table_commit.connect(SIGNAL('triggered()')) { table_commit() }
|
362
362
|
end
|
363
363
|
end
|
364
364
|
|
365
365
|
def initialize_menus(no_tables = false)
|
366
|
-
file_menu = menuBar.addMenu(
|
366
|
+
file_menu = menuBar.addMenu('&File')
|
367
367
|
|
368
|
-
file_new = file_menu.addMenu(Cosmos.get_icon('file.png'),
|
368
|
+
file_new = file_menu.addMenu(Cosmos.get_icon('file.png'), "&New File") # \tCtrl-N displays shortcut
|
369
369
|
target_dirs_action(file_new, @system_def_path, 'tools/table_manager', method(:file_new))
|
370
370
|
|
371
|
-
file_open = file_menu.addMenu(Cosmos.get_icon('open.png'),
|
371
|
+
file_open = file_menu.addMenu(Cosmos.get_icon('open.png'), "&Open") # \tCtrl-O displays shortcut
|
372
372
|
target_dirs_action(file_open, @system_bin_path, 'tables', method(:file_open))
|
373
373
|
|
374
374
|
file_menu.addAction(@file_open_both)
|
@@ -383,7 +383,7 @@ module Cosmos
|
|
383
383
|
file_menu.addAction(@exit_action)
|
384
384
|
|
385
385
|
unless no_tables
|
386
|
-
table_menu = menuBar.addMenu(
|
386
|
+
table_menu = menuBar.addMenu('&Table')
|
387
387
|
table_menu.addAction(@table_check)
|
388
388
|
table_menu.addAction(@table_default)
|
389
389
|
table_menu.addAction(@table_hex)
|
@@ -409,9 +409,9 @@ module Cosmos
|
|
409
409
|
# Create the information pane with the filenames
|
410
410
|
filename_layout = Qt::FormLayout.new
|
411
411
|
@table_def_label = Qt::Label.new("")
|
412
|
-
filename_layout.addRow(
|
412
|
+
filename_layout.addRow("Definition File:", @table_def_label)
|
413
413
|
@table_bin_label = Qt::Label.new("")
|
414
|
-
filename_layout.addRow(
|
414
|
+
filename_layout.addRow("Binary File:", @table_bin_label)
|
415
415
|
@top_layout.addLayout(filename_layout)
|
416
416
|
|
417
417
|
# Separator before editor
|
@@ -556,7 +556,7 @@ module Cosmos
|
|
556
556
|
|
557
557
|
display_all_gui_data()
|
558
558
|
@table_bin_label.text = filename
|
559
|
-
statusBar.showMessage(
|
559
|
+
statusBar.showMessage("File Saved Successfully")
|
560
560
|
rescue TableManagerCore::CoreError, SaveError => err
|
561
561
|
Qt::MessageBox.warning(self, "File Save Errors", err.message)
|
562
562
|
rescue => err
|
@@ -1073,8 +1073,8 @@ module Cosmos
|
|
1073
1073
|
else
|
1074
1074
|
item_name = gui_table.verticalHeaderItem(table_item.row).text
|
1075
1075
|
end
|
1076
|
-
details_action = Qt::Action.new(
|
1077
|
-
details_action.statusTip =
|
1076
|
+
details_action = Qt::Action.new("Details", self)
|
1077
|
+
details_action.statusTip = "Popup details about #{current_table_name} #{item_name}"
|
1078
1078
|
details_action.connect(SIGNAL('triggered()')) do
|
1079
1079
|
TlmDetailsDialog.new(nil,
|
1080
1080
|
'TABLE',
|
@@ -1084,8 +1084,8 @@ module Cosmos
|
|
1084
1084
|
end
|
1085
1085
|
menu.addAction(details_action)
|
1086
1086
|
|
1087
|
-
default_action = Qt::Action.new(
|
1088
|
-
default_action.statusTip =
|
1087
|
+
default_action = Qt::Action.new("Default", self)
|
1088
|
+
default_action.statusTip = "Set item to default value"
|
1089
1089
|
default_action.connect(SIGNAL('triggered()')) do
|
1090
1090
|
item = table.get_item(item_name)
|
1091
1091
|
table.write(item.name, item.default)
|
@@ -93,59 +93,71 @@ module Cosmos
|
|
93
93
|
super()
|
94
94
|
|
95
95
|
# File Actions
|
96
|
-
@show_last = Qt::Action.new(
|
97
|
-
@show_last_keyseq = Qt::KeySequence.new(
|
96
|
+
@show_last = Qt::Action.new('Show &Results', self)
|
97
|
+
@show_last_keyseq = Qt::KeySequence.new('Ctrl+R')
|
98
98
|
@show_last.shortcut = @show_last_keyseq
|
99
|
-
@show_last.statusTip =
|
99
|
+
@show_last.statusTip = 'Show the Results dialog from the last run'
|
100
100
|
@show_last.connect(SIGNAL('triggered()')) { show_results }
|
101
101
|
|
102
|
-
@select = Qt::Action.new(
|
103
|
-
@select_keyseq = Qt::KeySequence.new(
|
102
|
+
@select = Qt::Action.new('Test &Selection', self)
|
103
|
+
@select_keyseq = Qt::KeySequence.new('Ctrl+S')
|
104
104
|
@select.shortcut = @select_keyseq
|
105
|
-
@select.statusTip =
|
105
|
+
@select.statusTip = 'Select Test Suites/Groups/Cases'
|
106
106
|
@select.connect(SIGNAL('triggered()')) { show_select }
|
107
107
|
|
108
|
-
@file_options = Qt::Action.new(
|
109
|
-
@file_options.statusTip =
|
108
|
+
@file_options = Qt::Action.new('O&ptions', self)
|
109
|
+
@file_options.statusTip = 'Application Options'
|
110
110
|
@file_options.connect(SIGNAL('triggered()')) { file_options() }
|
111
111
|
|
112
|
+
# Edit Actions
|
113
|
+
@edit_zoom_in = Qt::Action.new('&Increase Font Size', self)
|
114
|
+
@edit_zoom_in_keyseq = Qt::KeySequence.new(Qt::KeySequence::ZoomIn)
|
115
|
+
@edit_zoom_in.shortcut = @edit_zoom_in_keyseq
|
116
|
+
@edit_zoom_in.connect(SIGNAL('triggered()')) { @script_runner_frame.zoom_in }
|
117
|
+
@edit_zoom_out = Qt::Action.new('&Decrease Font Size', self)
|
118
|
+
@edit_zoom_out_keyseq = Qt::KeySequence.new(Qt::KeySequence::ZoomOut)
|
119
|
+
@edit_zoom_out.shortcut = @edit_zoom_out_keyseq
|
120
|
+
@edit_zoom_out.connect(SIGNAL('triggered()')) { @script_runner_frame.zoom_out }
|
121
|
+
@edit_zoom_default = Qt::Action.new('Restore &Font Size', self)
|
122
|
+
@edit_zoom_default.connect(SIGNAL('triggered()')) { @script_runner_frame.zoom_default }
|
123
|
+
|
112
124
|
# Script Actions
|
113
|
-
@test_results_log_message = Qt::Action.new(
|
114
|
-
@test_results_log_message.statusTip =
|
125
|
+
@test_results_log_message = Qt::Action.new('Log Message to Test Results', self)
|
126
|
+
@test_results_log_message.statusTip = 'Log Message to Test Results'
|
115
127
|
@test_results_log_message.connect(SIGNAL('triggered()')) { on_test_results_log_message() }
|
116
128
|
@test_results_log_message.setEnabled(false)
|
117
129
|
|
118
|
-
@script_log_message = Qt::Action.new(
|
119
|
-
@script_log_message.statusTip =
|
130
|
+
@script_log_message = Qt::Action.new('Log Message to Script Log', self)
|
131
|
+
@script_log_message.statusTip = 'Log Message to Script Log'
|
120
132
|
@script_log_message.connect(SIGNAL('triggered()')) { on_script_log_message() }
|
121
133
|
@script_log_message.setEnabled(false)
|
122
134
|
|
123
|
-
@show_call_stack = Qt::Action.new(
|
124
|
-
@show_call_stack.statusTip =
|
135
|
+
@show_call_stack = Qt::Action.new('Show Call Stack', self)
|
136
|
+
@show_call_stack.statusTip = 'Show Call Stack'
|
125
137
|
@show_call_stack.connect(SIGNAL('triggered()')) { on_script_call_stack }
|
126
138
|
@show_call_stack.setEnabled(false)
|
127
139
|
|
128
|
-
@toggle_debug = Qt::Action.new(Cosmos.get_icon('bug.png'),
|
129
|
-
@toggle_debug_keyseq = Qt::KeySequence.new(
|
140
|
+
@toggle_debug = Qt::Action.new(Cosmos.get_icon('bug.png'), '&Toggle Debug', self)
|
141
|
+
@toggle_debug_keyseq = Qt::KeySequence.new('Ctrl+D')
|
130
142
|
@toggle_debug.shortcut = @toggle_debug_keyseq
|
131
|
-
@toggle_debug.statusTip =
|
143
|
+
@toggle_debug.statusTip = 'Toggle Debug'
|
132
144
|
@toggle_debug.connect(SIGNAL('triggered()')) { on_script_toggle_debug }
|
133
145
|
@toggle_debug.setEnabled(false)
|
134
146
|
|
135
|
-
@script_disconnect = Qt::Action.new(Cosmos.get_icon('disconnected.png'),
|
136
|
-
@script_disconnect_keyseq = Qt::KeySequence.new(
|
147
|
+
@script_disconnect = Qt::Action.new(Cosmos.get_icon('disconnected.png'), '&Toggle Disconnect', self)
|
148
|
+
@script_disconnect_keyseq = Qt::KeySequence.new('Ctrl+T')
|
137
149
|
@script_disconnect.shortcut = @script_disconnect_keyseq
|
138
|
-
@script_disconnect.statusTip =
|
150
|
+
@script_disconnect.statusTip = 'Toggle disconnect from the server'
|
139
151
|
@script_disconnect.connect(SIGNAL('triggered()')) { on_script_toggle_disconnect() }
|
140
152
|
|
141
|
-
@script_audit = Qt::Action.new(
|
142
|
-
@script_audit.statusTip =
|
153
|
+
@script_audit = Qt::Action.new('&Generate Cmd/Tlm Audit', self)
|
154
|
+
@script_audit.statusTip = 'Generate audit about commands sent and telemetry checked'
|
143
155
|
@script_audit.connect(SIGNAL('triggered()')) { script_audit() }
|
144
156
|
end
|
145
157
|
|
146
158
|
def initialize_menus
|
147
159
|
# File Menu
|
148
|
-
file_menu = menuBar.addMenu(
|
160
|
+
file_menu = menuBar.addMenu('&File')
|
149
161
|
file_menu.addAction(@show_last)
|
150
162
|
file_menu.addAction(@select)
|
151
163
|
file_menu.addSeparator()
|
@@ -153,8 +165,14 @@ module Cosmos
|
|
153
165
|
file_menu.addSeparator()
|
154
166
|
file_menu.addAction(@exit_action)
|
155
167
|
|
168
|
+
# Edit Menu (to match Script Runner)
|
169
|
+
edit_menu = menuBar.addMenu('&Edit')
|
170
|
+
edit_menu.addAction(@edit_zoom_in)
|
171
|
+
edit_menu.addAction(@edit_zoom_out)
|
172
|
+
edit_menu.addAction(@edit_zoom_default)
|
173
|
+
|
156
174
|
# Script Menu
|
157
|
-
script_menu = menuBar.addMenu(
|
175
|
+
script_menu = menuBar.addMenu('&Script')
|
158
176
|
script_menu.addAction(@test_results_log_message)
|
159
177
|
script_menu.addAction(@script_log_message)
|
160
178
|
script_menu.addAction(@show_call_stack)
|
@@ -924,11 +942,11 @@ module Cosmos
|
|
924
942
|
box = Qt::DoubleSpinBox.new
|
925
943
|
box.setRange(0, 60)
|
926
944
|
box.setValue(ScriptRunnerFrame.line_delay)
|
927
|
-
form.addRow(
|
945
|
+
form.addRow("&Delay between each script line:", box)
|
928
946
|
monitor = Qt::CheckBox.new
|
929
|
-
form.addRow(
|
947
|
+
form.addRow("&Monitor limits:", monitor)
|
930
948
|
pause_on_red = Qt::CheckBox.new
|
931
|
-
form.addRow(
|
949
|
+
form.addRow("Pause on &red limit:", pause_on_red)
|
932
950
|
if ScriptRunnerFrame.monitor_limits
|
933
951
|
monitor.setCheckState(Qt::Checked)
|
934
952
|
pause_on_red.setCheckState(Qt::Checked) if ScriptRunnerFrame.pause_on_red
|
@@ -77,7 +77,7 @@ module Cosmos
|
|
77
77
|
@test_suite_setup_button.setFixedWidth(setup_button_width)
|
78
78
|
@test_suite_teardown_button = Qt::PushButton.new('Teardown')
|
79
79
|
@test_suite_teardown_button.setFixedWidth(teardown_button_width)
|
80
|
-
@test_suite_label = Qt::Label.new(
|
80
|
+
@test_suite_label = Qt::Label.new("Test Suite:")
|
81
81
|
@overall.addWidget(@test_suite_label, 0, 0)
|
82
82
|
@overall.addWidget(@test_suite_combobox, 0, 1)
|
83
83
|
@overall.addWidget(@test_suite_start_button, 0, 2)
|
@@ -96,7 +96,7 @@ module Cosmos
|
|
96
96
|
@test_setup_button.setFixedWidth(setup_button_width)
|
97
97
|
@test_teardown_button = Qt::PushButton.new('Teardown')
|
98
98
|
@test_teardown_button.setFixedWidth(teardown_button_width)
|
99
|
-
@test_label = Qt::Label.new(
|
99
|
+
@test_label = Qt::Label.new("Test Group:")
|
100
100
|
@overall.addWidget(@test_label, 1, 0)
|
101
101
|
@overall.addWidget(@test_combobox, 1, 1)
|
102
102
|
@overall.addWidget(@test_start_button, 1, 2)
|
@@ -111,7 +111,7 @@ module Cosmos
|
|
111
111
|
@test_case_combobox.setCompleter(@test_case_completion)
|
112
112
|
@test_case_start_button = Qt::PushButton.new('Start')
|
113
113
|
@test_case_start_button.setFixedWidth(start_button_width)
|
114
|
-
@test_case_label = Qt::Label.new(
|
114
|
+
@test_case_label = Qt::Label.new("Test Case:")
|
115
115
|
@overall.addWidget(@test_case_label, 2, 0)
|
116
116
|
@overall.addWidget(@test_case_combobox, 2, 1)
|
117
117
|
@overall.addWidget(@test_case_start_button, 2, 2)
|
@@ -10,8 +10,6 @@
|
|
10
10
|
|
11
11
|
require 'cosmos'
|
12
12
|
Cosmos.catch_fatal_exception do
|
13
|
-
require 'cosmos/tools/tlm_extractor/tlm_extractor_processor'
|
14
|
-
require 'cosmos/tools/tlm_extractor/text_item_chooser'
|
15
13
|
require 'cosmos/gui/qt_tool'
|
16
14
|
require 'cosmos/gui/choosers/telemetry_chooser'
|
17
15
|
require 'cosmos/gui/choosers/float_chooser'
|
@@ -21,6 +19,8 @@ Cosmos.catch_fatal_exception do
|
|
21
19
|
require 'cosmos/gui/dialogs/progress_dialog'
|
22
20
|
require 'cosmos/gui/widgets/full_text_search_line_edit'
|
23
21
|
require 'cosmos/gui/utilities/analyze_log'
|
22
|
+
require 'cosmos/tools/tlm_extractor/tlm_extractor_processor'
|
23
|
+
require 'cosmos/tools/tlm_extractor/text_item_chooser'
|
24
24
|
end
|
25
25
|
|
26
26
|
module Cosmos
|
@@ -109,68 +109,68 @@ module Cosmos
|
|
109
109
|
super()
|
110
110
|
|
111
111
|
# File Menu Actions
|
112
|
-
@open_config = Qt::Action.new(
|
113
|
-
@open_config.statusTip =
|
112
|
+
@open_config = Qt::Action.new('Open &Config', self)
|
113
|
+
@open_config.statusTip = 'Open configuration file'
|
114
114
|
@open_config.connect(SIGNAL('triggered()')) { handle_browse_button() }
|
115
115
|
|
116
|
-
@save_config = Qt::Action.new(
|
117
|
-
@save_config_keyseq = Qt::KeySequence.new(
|
116
|
+
@save_config = Qt::Action.new('&Save Config', self)
|
117
|
+
@save_config_keyseq = Qt::KeySequence.new('Ctrl+S')
|
118
118
|
@save_config.shortcut = @save_config_keyseq
|
119
|
-
@save_config.statusTip =
|
119
|
+
@save_config.statusTip = 'Save current configuration'
|
120
120
|
@save_config.connect(SIGNAL('triggered()')) { handle_save_button() }
|
121
121
|
|
122
|
-
@file_options = Qt::Action.new(
|
123
|
-
@file_options.statusTip =
|
122
|
+
@file_options = Qt::Action.new('O&ptions', self)
|
123
|
+
@file_options.statusTip = 'Open the options dialog'
|
124
124
|
@file_options.connect(SIGNAL('triggered()')) { handle_options() }
|
125
125
|
|
126
|
-
@analyze_log = Qt::Action.new(
|
127
|
-
@analyze_log.statusTip =
|
126
|
+
@analyze_log = Qt::Action.new('&Analyze Logs', self)
|
127
|
+
@analyze_log.statusTip = 'Analyze log file packet counts'
|
128
128
|
@analyze_log.connect(SIGNAL('triggered()')) { analyze_log_files() }
|
129
129
|
|
130
130
|
# Mode Menu Actions
|
131
|
-
@fill_down_check = Qt::Action.new(
|
132
|
-
@fill_down_check_keyseq = Qt::KeySequence.new(
|
131
|
+
@fill_down_check = Qt::Action.new('&Fill Down', self)
|
132
|
+
@fill_down_check_keyseq = Qt::KeySequence.new('Ctrl+F')
|
133
133
|
@fill_down_check.shortcut = @fill_down_check_keyseq
|
134
|
-
@fill_down_check.statusTip =
|
134
|
+
@fill_down_check.statusTip = 'Fill Down'
|
135
135
|
@fill_down_check.setCheckable(true)
|
136
136
|
|
137
|
-
@matlab_header_check = Qt::Action.new(
|
138
|
-
@matlab_header_check_keyseq = Qt::KeySequence.new(
|
137
|
+
@matlab_header_check = Qt::Action.new('&Matlab Header', self)
|
138
|
+
@matlab_header_check_keyseq = Qt::KeySequence.new('Ctrl+M')
|
139
139
|
@matlab_header_check.shortcut = @matlab_header_check_keyseq
|
140
|
-
@matlab_header_check.statusTip =
|
140
|
+
@matlab_header_check.statusTip = 'Add a Matlab header to the output data'
|
141
141
|
@matlab_header_check.setCheckable(true)
|
142
142
|
|
143
|
-
@unique_only_check = Qt::Action.new(
|
144
|
-
@unique_only_check_keyseq = Qt::KeySequence.new(
|
143
|
+
@unique_only_check = Qt::Action.new('&Unique Only', self)
|
144
|
+
@unique_only_check_keyseq = Qt::KeySequence.new('Ctrl+U')
|
145
145
|
@unique_only_check.shortcut = @unique_only_check_keyseq
|
146
|
-
@unique_only_check.statusTip =
|
146
|
+
@unique_only_check.statusTip = 'Only output rows where data has changed'
|
147
147
|
@unique_only_check.setCheckable(true)
|
148
148
|
|
149
|
-
@batch_mode_check = Qt::Action.new(
|
150
|
-
@batch_mode_check_keyseq = Qt::KeySequence.new(
|
149
|
+
@batch_mode_check = Qt::Action.new('&Batch Mode', self)
|
150
|
+
@batch_mode_check_keyseq = Qt::KeySequence.new('Ctrl+B')
|
151
151
|
@batch_mode_check.shortcut = @batch_mode_check_keyseq
|
152
|
-
@batch_mode_check.statusTip =
|
152
|
+
@batch_mode_check.statusTip = 'Process multiple config files with the same input files'
|
153
153
|
@batch_mode_check.setCheckable(true)
|
154
154
|
@batch_mode_check.connect(SIGNAL('triggered()')) { batch_mode_changed() }
|
155
155
|
|
156
|
-
@normal_columns_check = Qt::Action.new(
|
157
|
-
@normal_columns_check.statusTip =
|
156
|
+
@normal_columns_check = Qt::Action.new('&Normal Columns', self)
|
157
|
+
@normal_columns_check.statusTip = 'Normal Columns'
|
158
158
|
@normal_columns_check.setCheckable(true)
|
159
159
|
@normal_columns_check.setChecked(true)
|
160
160
|
@normal_columns_check.connect(SIGNAL('triggered()')) { column_mode_changed() }
|
161
161
|
|
162
|
-
@share_columns_check = Qt::Action.new(
|
163
|
-
@share_columns_check.statusTip =
|
162
|
+
@share_columns_check = Qt::Action.new('Share Columns (&All)', self)
|
163
|
+
@share_columns_check.statusTip = 'Share columns for all items with the same name'
|
164
164
|
@share_columns_check.setCheckable(true)
|
165
165
|
@share_columns_check.connect(SIGNAL('triggered()')) { column_mode_changed() }
|
166
166
|
|
167
|
-
@share_indiv_columns_check = Qt::Action.new(
|
168
|
-
@share_indiv_columns_check.statusTip =
|
167
|
+
@share_indiv_columns_check = Qt::Action.new('Share Columns (&Selected)', self)
|
168
|
+
@share_indiv_columns_check.statusTip = 'Share columns for selected items with the same name'
|
169
169
|
@share_indiv_columns_check.setCheckable(true)
|
170
170
|
@share_indiv_columns_check.connect(SIGNAL('triggered()')) { column_mode_changed() }
|
171
171
|
|
172
|
-
@full_column_names_check = Qt::Action.new(
|
173
|
-
@full_column_names_check.statusTip =
|
172
|
+
@full_column_names_check = Qt::Action.new('Full &Column Names', self)
|
173
|
+
@full_column_names_check.statusTip = 'Use full item names in each column'
|
174
174
|
@full_column_names_check.setCheckable(true)
|
175
175
|
@full_column_names_check.connect(SIGNAL('triggered()')) { column_mode_changed() }
|
176
176
|
|
@@ -182,26 +182,26 @@ module Cosmos
|
|
182
182
|
column_group.addAction(@full_column_names_check)
|
183
183
|
|
184
184
|
@shared_columns = []
|
185
|
-
@shared_columns_edit = Qt::Action.new(
|
186
|
-
@shared_columns_edit.statusTip =
|
185
|
+
@shared_columns_edit = Qt::Action.new('S&elect Shared Columns', self)
|
186
|
+
@shared_columns_edit.statusTip = 'Select which columns are shared'
|
187
187
|
@shared_columns_edit.setEnabled(false)
|
188
188
|
@shared_columns_edit.connect(SIGNAL('triggered()')) { shared_columns_edit() }
|
189
189
|
|
190
190
|
# Item Menu Actions
|
191
|
-
@item_edit = Qt::Action.new(
|
192
|
-
@item_edit_keyseq = Qt::KeySequence.new(
|
191
|
+
@item_edit = Qt::Action.new('&Edit Items', self)
|
192
|
+
@item_edit_keyseq = Qt::KeySequence.new('Ctrl+E')
|
193
193
|
@item_edit.shortcut = @item_edit_keyseq
|
194
|
-
@item_edit.statusTip =
|
194
|
+
@item_edit.statusTip = 'Options'
|
195
195
|
@item_edit.connect(SIGNAL('triggered()')) { item_edit() }
|
196
196
|
|
197
|
-
@item_delete = Qt::Action.new(
|
198
|
-
@item_delete.statusTip =
|
197
|
+
@item_delete = Qt::Action.new('&Delete Items', self)
|
198
|
+
@item_delete.statusTip = 'Options'
|
199
199
|
@item_delete.connect(SIGNAL('triggered()')) { item_delete() }
|
200
200
|
end
|
201
201
|
|
202
202
|
def initialize_menus
|
203
203
|
# File Menu
|
204
|
-
@file_menu = menuBar.addMenu(
|
204
|
+
@file_menu = menuBar.addMenu('&File')
|
205
205
|
@file_menu.addAction(@open_config)
|
206
206
|
@file_menu.addAction(@save_config)
|
207
207
|
@file_menu.addSeparator()
|
@@ -211,7 +211,7 @@ module Cosmos
|
|
211
211
|
@file_menu.addAction(@exit_action)
|
212
212
|
|
213
213
|
# Mode Menu
|
214
|
-
@mode_menu = menuBar.addMenu(
|
214
|
+
@mode_menu = menuBar.addMenu('&Mode')
|
215
215
|
@mode_menu.addAction(@fill_down_check)
|
216
216
|
@mode_menu.addAction(@matlab_header_check)
|
217
217
|
@mode_menu.addAction(@unique_only_check)
|
@@ -225,7 +225,7 @@ module Cosmos
|
|
225
225
|
@mode_menu.addAction(@shared_columns_edit)
|
226
226
|
|
227
227
|
# Item Menu
|
228
|
-
@item_menu = menuBar.addMenu(
|
228
|
+
@item_menu = menuBar.addMenu('&Item')
|
229
229
|
@item_menu.addAction(@item_edit)
|
230
230
|
@item_menu.addAction(@item_delete)
|
231
231
|
|
@@ -402,7 +402,7 @@ module Cosmos
|
|
402
402
|
@data_source_layout.addWidget(label)
|
403
403
|
@log_file_radio = Qt::RadioButton.new("Log File", self)
|
404
404
|
@log_file_radio.setChecked(true)
|
405
|
-
@log_file_radio.connect(SIGNAL('clicked()')) do
|
405
|
+
@log_file_radio.connect(SIGNAL('clicked()')) do
|
406
406
|
@packet_log_frame.show_log_fields(true)
|
407
407
|
@packet_log_frame.output_filename = ""
|
408
408
|
@dart_meta_frame.hide
|
@@ -410,12 +410,12 @@ module Cosmos
|
|
410
410
|
end
|
411
411
|
@data_source_layout.addWidget(@log_file_radio)
|
412
412
|
@dart_radio = Qt::RadioButton.new("DART Database", self)
|
413
|
-
@dart_radio.connect(SIGNAL('clicked()')) do
|
413
|
+
@dart_radio.connect(SIGNAL('clicked()')) do
|
414
414
|
@packet_log_frame.show_log_fields(false)
|
415
415
|
@packet_log_frame.output_filename = ""
|
416
416
|
@dart_meta_frame.show
|
417
417
|
@resize_timer.start(100)
|
418
|
-
end
|
418
|
+
end
|
419
419
|
@data_source_layout.addWidget(@dart_radio)
|
420
420
|
@data_source_layout.addStretch()
|
421
421
|
@top_layout.addLayout(@data_source_layout)
|
@@ -609,7 +609,7 @@ module Cosmos
|
|
609
609
|
clear_config_item_list()
|
610
610
|
@tlm_extractor_config.items.each do |item_type, target_name_or_column_name, packet_name_or_text, item_name, value_type, dart_reduction, dart_reduced_type|
|
611
611
|
if item_type == 'ITEM'
|
612
|
-
if dart_reduction == :NONE
|
612
|
+
if dart_reduction == :NONE
|
613
613
|
if value_type == :CONVERTED
|
614
614
|
@config_item_list.addItem("#{item_type} #{target_name_or_column_name} #{packet_name_or_text} #{item_name}")
|
615
615
|
else
|