cosmos 4.1.1-java → 4.2.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.
- checksums.yaml +4 -4
- data/.gitignore +0 -2
- data/.travis.yml +2 -0
- data/.yardopts +1 -0
- data/Gemfile +1 -0
- data/Manifest.txt +130 -0
- data/autohotkey/tools/ConfigEditorAHK +19 -0
- data/autohotkey/tools/cmd_extractor.ahk +4 -4
- data/autohotkey/tools/cmd_sequence.ahk +9 -5
- data/autohotkey/tools/config_editor.ahk +197 -0
- data/autohotkey/tools/packet_viewer.ahk +12 -6
- data/autohotkey/tools/replay.ahk +29 -29
- data/autohotkey/tools/script_runner.ahk +10 -2
- data/autohotkey/tools/tlm_extractor.ahk +7 -8
- data/autohotkey/tools/tlm_grapher.ahk +21 -9
- data/bin/dart_import +2 -0
- data/cosmos.gemspec +18 -16
- data/data/config/cmd_tlm_server.yaml +9 -0
- data/data/config/interface_modifiers.yaml +17 -0
- data/data/config/item_modifiers.yaml +3 -3
- data/data/crc.txt +184 -90
- data/data/dart.png +0 -0
- data/demo/Gemfile +1 -0
- data/demo/Rakefile +4 -0
- data/demo/config/dart/Gemfile +54 -0
- data/demo/config/data/crc.txt +28 -21
- data/demo/config/system/system.txt +3 -0
- data/demo/config/system/system2.txt +3 -0
- data/demo/config/targets/INST/cmd_tlm/inst_cmds.txt +3 -3
- data/demo/config/targets/INST/cmd_tlm/inst_tlm.txt +1 -1
- data/demo/config/targets/INST/lib/sim_inst.rb +1 -1
- data/demo/config/targets/INST/screens/adcs.txt +2 -1
- data/demo/config/targets/INST/screens/array.txt +1 -1
- data/demo/config/targets/INST/screens/block.txt +1 -1
- data/demo/config/targets/INST/screens/commanding.txt +7 -2
- data/demo/config/targets/INST/screens/graphs.txt +1 -1
- data/demo/config/targets/INST/screens/ground.txt +1 -1
- data/demo/config/targets/INST/screens/hs.txt +2 -1
- data/demo/config/targets/INST/screens/latest.txt +1 -1
- data/demo/config/targets/INST/screens/limits.txt +1 -1
- data/demo/config/targets/INST/screens/other.txt +1 -1
- data/demo/config/targets/INST/screens/tabs.txt +1 -1
- data/demo/config/tools/cmd_tlm_server/cmd_tlm_server.txt +2 -2
- data/demo/config/tools/cmd_tlm_server/cmd_tlm_server2.txt +3 -1
- data/demo/config/tools/launcher/launcher.txt +3 -2
- data/demo/tools/Dart +16 -0
- data/demo/tools/Dart.bat +9 -0
- data/demo/tools/mac/CmdSequence.app/Contents/MacOS/main.sh +0 -0
- data/demo/tools/mac/ConfigEditor.app/Contents/MacOS/main.sh +0 -0
- data/install/Gemfile +1 -0
- data/install/Rakefile +4 -0
- data/install/config/dart/Gemfile +54 -0
- data/install/config/data/crc.txt +6 -3
- data/install/config/system/system.txt +3 -0
- data/install/config/tools/launcher/launcher.txt +3 -2
- data/install/tools/Dart +16 -0
- data/install/tools/Dart.bat +9 -0
- data/install/tools/mac/CmdSequence.app/Contents/MacOS/main.sh +0 -0
- data/install/tools/mac/ConfigEditor.app/Contents/MacOS/main.sh +0 -0
- data/lib/cosmos/core_ext/time.rb +8 -8
- data/lib/cosmos/dart/.rspec +1 -0
- data/lib/cosmos/dart/Gemfile +69 -0
- data/lib/cosmos/dart/Rakefile +7 -0
- data/lib/cosmos/dart/app/assets/config/manifest.js +4 -0
- data/lib/cosmos/dart/app/assets/images/.keep +0 -0
- data/lib/cosmos/dart/app/assets/javascripts/application.js +13 -0
- data/lib/cosmos/dart/app/assets/javascripts/cable.js +13 -0
- data/lib/cosmos/dart/app/assets/stylesheets/application.css.scss +15 -0
- data/lib/cosmos/dart/app/channels/application_cable/channel.rb +4 -0
- data/lib/cosmos/dart/app/channels/application_cable/connection.rb +4 -0
- data/lib/cosmos/dart/app/controllers/application_controller.rb +3 -0
- data/lib/cosmos/dart/app/helpers/application_helper.rb +2 -0
- data/lib/cosmos/dart/app/jobs/application_job.rb +2 -0
- data/lib/cosmos/dart/app/mailers/application_mailer.rb +4 -0
- data/lib/cosmos/dart/app/models/application_record.rb +3 -0
- data/lib/cosmos/dart/app/models/item.rb +6 -0
- data/lib/cosmos/dart/app/models/item_to_decom_table_mapping.rb +9 -0
- data/lib/cosmos/dart/app/models/packet.rb +4 -0
- data/lib/cosmos/dart/app/models/packet_config.rb +7 -0
- data/lib/cosmos/dart/app/models/packet_log.rb +3 -0
- data/lib/cosmos/dart/app/models/packet_log_entry.rb +41 -0
- data/lib/cosmos/dart/app/models/system_config.rb +2 -0
- data/lib/cosmos/dart/app/models/target.rb +4 -0
- data/lib/cosmos/dart/app/views/layouts/application.html.erb +14 -0
- data/lib/cosmos/dart/app/views/layouts/mailer.html.erb +13 -0
- data/lib/cosmos/dart/app/views/layouts/mailer.text.erb +1 -0
- data/lib/cosmos/dart/bin/bundle +3 -0
- data/lib/cosmos/dart/bin/rails +4 -0
- data/lib/cosmos/dart/bin/rake +4 -0
- data/lib/cosmos/dart/bin/setup +34 -0
- data/lib/cosmos/dart/bin/update +29 -0
- data/lib/cosmos/dart/config.ru +5 -0
- data/lib/cosmos/dart/config/application.rb +29 -0
- data/lib/cosmos/dart/config/boot.rb +3 -0
- data/lib/cosmos/dart/config/cable.yml +9 -0
- data/lib/cosmos/dart/config/database.yml +23 -0
- data/lib/cosmos/dart/config/environment.rb +5 -0
- data/lib/cosmos/dart/config/environments/development.rb +62 -0
- data/lib/cosmos/dart/config/environments/production.rb +84 -0
- data/lib/cosmos/dart/config/environments/test.rb +42 -0
- data/lib/cosmos/dart/config/initializers/application_controller_renderer.rb +6 -0
- data/lib/cosmos/dart/config/initializers/assets.rb +12 -0
- data/lib/cosmos/dart/config/initializers/backtrace_silencers.rb +7 -0
- data/lib/cosmos/dart/config/initializers/cookies_serializer.rb +5 -0
- data/lib/cosmos/dart/config/initializers/filter_parameter_logging.rb +4 -0
- data/lib/cosmos/dart/config/initializers/inflections.rb +16 -0
- data/lib/cosmos/dart/config/initializers/mime_types.rb +4 -0
- data/lib/cosmos/dart/config/initializers/new_framework_defaults.rb +25 -0
- data/lib/cosmos/dart/config/initializers/session_store.rb +3 -0
- data/lib/cosmos/dart/config/initializers/wrap_parameters.rb +14 -0
- data/lib/cosmos/dart/config/locales/en.yml +23 -0
- data/lib/cosmos/dart/config/puma.rb +47 -0
- data/lib/cosmos/dart/config/routes.rb +3 -0
- data/lib/cosmos/dart/config/secrets.yml +22 -0
- data/lib/cosmos/dart/db/migrate/20170406172907_create_targets.rb +8 -0
- data/lib/cosmos/dart/db/migrate/20170406172927_create_packets.rb +10 -0
- data/lib/cosmos/dart/db/migrate/20170406172937_create_packet_logs.rb +9 -0
- data/lib/cosmos/dart/db/migrate/20170406172943_create_packet_log_entries.rb +16 -0
- data/lib/cosmos/dart/db/migrate/20170406183500_change_packet_log_entries_primary_key.rb +5 -0
- data/lib/cosmos/dart/db/migrate/20170407153618_add_unique_requirements.rb +7 -0
- data/lib/cosmos/dart/db/migrate/20170511155447_add_meta_id_to_packet_log_entries.rb +6 -0
- data/lib/cosmos/dart/db/migrate/20170523185056_rename_received_time_and_add_is_tlm_to_packet_log_entries.rb +7 -0
- data/lib/cosmos/dart/db/migrate/20170525201157_create_items.rb +10 -0
- data/lib/cosmos/dart/db/migrate/20170525201315_create_system_configs.rb +9 -0
- data/lib/cosmos/dart/db/migrate/20170525201624_create_packet_configs.rb +11 -0
- data/lib/cosmos/dart/db/migrate/20170525201745_create_item_to_decom_table_mappings.rb +12 -0
- data/lib/cosmos/dart/db/migrate/20170525201939_create_decom_tables.rb +12 -0
- data/lib/cosmos/dart/db/migrate/20170525202051_add_decom_state_to_packet_log_entry.rb +5 -0
- data/lib/cosmos/dart/db/migrate/20170913160409_update_items.rb +6 -0
- data/lib/cosmos/dart/db/migrate/20170913160558_update_item_to_decom_table_mapping.rb +11 -0
- data/lib/cosmos/dart/db/migrate/20170913160916_udpate_decom_table.rb +6 -0
- data/lib/cosmos/dart/db/migrate/20170913212026_add_ready_to_packet_configs.rb +5 -0
- data/lib/cosmos/dart/db/migrate/20170913223556_modify_tables.rb +9 -0
- data/lib/cosmos/dart/db/migrate/20170914215744_modify_mapping_table.rb +6 -0
- data/lib/cosmos/dart/db/migrate/20170919201433_add_system_config_id_to_packet_config.rb +11 -0
- data/lib/cosmos/dart/db/migrate/20170919210307_add_max_table_index_to_packet_configs.rb +5 -0
- data/lib/cosmos/dart/db/migrate/20171215225546_add_ready_to_packet_log_entries.rb +5 -0
- data/lib/cosmos/dart/db/migrate/20180116214338_add_index_for_ple_ready_to_packet_log_entries.rb +5 -0
- data/lib/cosmos/dart/db/schema.rb +103 -0
- data/lib/cosmos/dart/db/seeds.rb +7 -0
- data/lib/cosmos/dart/examples/dart_decom_client.rb +45 -0
- data/lib/cosmos/dart/examples/dart_stream_client.rb +93 -0
- data/lib/cosmos/dart/lib/dart_common.rb +749 -0
- data/lib/cosmos/dart/lib/dart_database_cleaner.rb +172 -0
- data/lib/cosmos/dart/lib/dart_decom_query.rb +184 -0
- data/lib/cosmos/dart/lib/dart_decommutator.rb +235 -0
- data/lib/cosmos/dart/lib/dart_importer.rb +154 -0
- data/lib/cosmos/dart/lib/dart_logging.rb +50 -0
- data/lib/cosmos/dart/lib/dart_packet_log_writer.rb +139 -0
- data/lib/cosmos/dart/lib/dart_reducer_manager.rb +85 -0
- data/lib/cosmos/dart/lib/dart_reducer_worker_thread.rb +263 -0
- data/lib/cosmos/dart/lib/dart_tcpip_server_interface.rb +142 -0
- data/lib/cosmos/dart/processes/dart.rb +145 -0
- data/lib/cosmos/dart/processes/dart_decom_server.rb +39 -0
- data/lib/cosmos/dart/processes/dart_import.rb +63 -0
- data/lib/cosmos/dart/processes/dart_ingester.rb +92 -0
- data/lib/cosmos/dart/processes/dart_reducer.rb +27 -0
- data/lib/cosmos/dart/processes/dart_stream_server.rb +31 -0
- data/lib/cosmos/dart/processes/dart_worker.rb +37 -0
- data/lib/cosmos/dart/spec/dart/dart_common_spec.rb +333 -0
- data/lib/cosmos/dart/spec/dart/dart_database_cleaner_spec.rb +455 -0
- data/lib/cosmos/dart/spec/dart/dart_decom_query_spec.rb +153 -0
- data/lib/cosmos/dart/spec/dart/dart_decommutator_spec.rb +336 -0
- data/lib/cosmos/dart/spec/dart/dart_importer_spec.rb +83 -0
- data/lib/cosmos/dart/spec/dart/dart_logging_spec.rb +30 -0
- data/lib/cosmos/dart/spec/dart/dart_packet_log_writer_spec.rb +149 -0
- data/lib/cosmos/dart/spec/dart/dart_reducer_manager_spec.rb +289 -0
- data/lib/cosmos/dart/spec/dart/dart_tcpip_server_interface_spec.rb +241 -0
- data/lib/cosmos/dart/spec/rails_helper.rb +60 -0
- data/lib/cosmos/dart/spec/spec_helper.rb +139 -0
- data/lib/cosmos/gui/dialogs/about_dialog.rb +1 -1
- data/lib/cosmos/gui/dialogs/dart_dialog.rb +60 -0
- data/lib/cosmos/gui/dialogs/legal_dialog.rb +1 -0
- data/lib/cosmos/gui/dialogs/scroll_text_dialog.rb +0 -3
- data/lib/cosmos/gui/qt.rb +10 -1
- data/lib/cosmos/gui/text/completion.rb +10 -9
- data/lib/cosmos/gui/text/completion_text_edit.rb +16 -14
- data/lib/cosmos/gui/text/ruby_editor.rb +2 -2
- data/lib/cosmos/gui/widgets/dart_frame.rb +142 -0
- data/lib/cosmos/gui/widgets/dart_meta_frame.rb +119 -0
- data/lib/cosmos/gui/widgets/packet_log_frame.rb +42 -12
- data/lib/cosmos/interfaces/interface.rb +1 -2
- data/lib/cosmos/interfaces/protocols/crc_protocol.rb +26 -8
- data/lib/cosmos/interfaces/protocols/fixed_protocol.rb +8 -2
- data/lib/cosmos/interfaces/protocols/protocol.rb +2 -1
- data/lib/cosmos/interfaces/protocols/template_protocol.rb +1 -1
- data/lib/cosmos/interfaces/stream_interface.rb +1 -0
- data/lib/cosmos/interfaces/tcpip_server_interface.rb +2 -3
- data/lib/cosmos/io/json_drb_object.rb +1 -1
- data/lib/cosmos/io/json_rpc.rb +2 -1
- data/lib/cosmos/io/win32_serial_driver.rb +2 -9
- data/lib/cosmos/packet_logs/packet_log_writer.rb +1 -1
- data/lib/cosmos/packets/packet.rb +22 -12
- data/lib/cosmos/packets/packet_config.rb +2 -1
- data/lib/cosmos/packets/packet_item.rb +26 -24
- data/lib/cosmos/packets/parsers/macro_parser.rb +5 -2
- data/lib/cosmos/packets/parsers/packet_item_parser.rb +35 -17
- data/lib/cosmos/packets/parsers/packet_parser.rb +3 -10
- data/lib/cosmos/packets/parsers/xtce_converter.rb +21 -35
- data/lib/cosmos/packets/parsers/xtce_parser.rb +54 -46
- data/lib/cosmos/packets/structure.rb +10 -2
- data/lib/cosmos/packets/structure_item.rb +22 -8
- data/lib/cosmos/processors/statistics_processor.rb +2 -0
- data/lib/cosmos/script/api_shared.rb +13 -12
- data/lib/cosmos/script/cmd_tlm_server.rb +4 -0
- data/lib/cosmos/script/commands.rb +3 -15
- data/lib/cosmos/script/script.rb +69 -23
- data/lib/cosmos/streams/tcpip_client_stream.rb +2 -2
- data/lib/cosmos/system/system.rb +42 -25
- data/lib/cosmos/system/target.rb +6 -2
- data/lib/cosmos/tools/cmd_extractor/cmd_extractor.rb +177 -36
- data/lib/cosmos/tools/cmd_sender/cmd_param_table_item_delegate.rb +3 -2
- data/lib/cosmos/tools/cmd_sender/cmd_sender.rb +34 -8
- data/lib/cosmos/tools/cmd_sequence/cmd_sequence.rb +80 -25
- data/lib/cosmos/tools/cmd_tlm_server/api.rb +19 -4
- data/lib/cosmos/tools/cmd_tlm_server/cmd_tlm_server.rb +15 -14
- data/lib/cosmos/tools/cmd_tlm_server/cmd_tlm_server_gui.rb +15 -9
- data/lib/cosmos/tools/cmd_tlm_server/gui/interfaces_tab.rb +1 -9
- data/lib/cosmos/tools/cmd_tlm_server/gui/logging_tab.rb +1 -6
- data/lib/cosmos/tools/cmd_tlm_server/gui/packets_tab.rb +1 -3
- data/lib/cosmos/tools/cmd_tlm_server/gui/replay_tab.rb +84 -7
- data/lib/cosmos/tools/cmd_tlm_server/gui/status_tab.rb +0 -1
- data/lib/cosmos/tools/cmd_tlm_server/gui/targets_tab.rb +1 -5
- data/lib/cosmos/tools/cmd_tlm_server/limits_groups_background_task.rb +3 -2
- data/lib/cosmos/tools/cmd_tlm_server/replay_backend.rb +159 -27
- data/lib/cosmos/tools/cmd_tlm_server/routers.rb +1 -1
- data/lib/cosmos/tools/config_editor/config_editor.rb +17 -52
- data/lib/cosmos/tools/config_editor/config_editor_frame.rb +0 -5
- data/lib/cosmos/tools/data_viewer/data_viewer.rb +111 -0
- data/lib/cosmos/tools/limits_monitor/limits_monitor.rb +31 -18
- data/lib/cosmos/tools/packet_viewer/packet_viewer.rb +12 -3
- data/lib/cosmos/tools/script_runner/script_runner.rb +27 -14
- data/lib/cosmos/tools/script_runner/script_runner_frame.rb +104 -37
- data/lib/cosmos/tools/table_manager/table_config.rb +1 -1
- data/lib/cosmos/tools/table_manager/table_item_parser.rb +4 -2
- data/lib/cosmos/tools/table_manager/table_manager.rb +0 -5
- data/lib/cosmos/tools/table_manager/table_manager_core.rb +0 -1
- data/lib/cosmos/tools/test_runner/test.rb +1 -3
- data/lib/cosmos/tools/test_runner/test_runner.rb +26 -15
- data/lib/cosmos/tools/tlm_extractor/tlm_extractor.rb +290 -137
- data/lib/cosmos/tools/tlm_extractor/tlm_extractor_config.rb +122 -25
- data/lib/cosmos/tools/tlm_extractor/tlm_extractor_processor.rb +67 -0
- data/lib/cosmos/tools/tlm_grapher/data_object_editors/housekeeping_data_object_editor.rb +28 -0
- data/lib/cosmos/tools/tlm_grapher/data_object_editors/xy_data_object_editor.rb +36 -0
- data/lib/cosmos/tools/tlm_grapher/data_objects/data_object.rb +42 -3
- data/lib/cosmos/tools/tlm_grapher/data_objects/housekeeping_data_object.rb +88 -14
- data/lib/cosmos/tools/tlm_grapher/data_objects/linegraph_data_object.rb +2 -5
- data/lib/cosmos/tools/tlm_grapher/data_objects/singlexy_data_object.rb +2 -6
- data/lib/cosmos/tools/tlm_grapher/data_objects/xy_data_object.rb +74 -18
- data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_config.rb +3 -7
- data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_dart_thread.rb +159 -0
- data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_tool.rb +49 -2
- data/lib/cosmos/tools/tlm_viewer/screen.rb +3 -0
- data/lib/cosmos/tools/tlm_viewer/tlm_viewer_config.rb +0 -2
- data/lib/cosmos/tools/tlm_viewer/widgets.rb +1 -0
- data/lib/cosmos/tools/tlm_viewer/widgets/backgroundbutton_widget.rb +54 -0
- data/lib/cosmos/tools/tlm_viewer/widgets/button_widget.rb +5 -5
- data/lib/cosmos/top_level.rb +1 -0
- data/lib/cosmos/utilities/crc.rb +3 -0
- data/lib/cosmos/utilities/csv.rb +1 -0
- data/lib/cosmos/utilities/message_log.rb +2 -1
- data/lib/cosmos/utilities/simulated_target.rb +8 -8
- data/lib/cosmos/version.rb +5 -5
- data/lib/cosmos/win32/win32.rb +4 -10
- data/run_gui_tests.bat +2 -1
- data/spec/config/config_parser_spec.rb +4 -4
- data/spec/core_ext/array_spec.rb +1 -1
- data/spec/core_ext/exception_spec.rb +12 -12
- data/spec/core_ext/file_spec.rb +6 -6
- data/spec/core_ext/hash_spec.rb +1 -1
- data/spec/core_ext/socket_spec.rb +2 -2
- data/spec/core_ext/string_spec.rb +13 -13
- data/spec/core_ext/time_spec.rb +0 -2
- data/spec/gui/utilities/script_module_gui_spec.rb +3 -3
- data/spec/install/config/targets/INST/cmd_tlm/inst_tlm.txt +6 -6
- data/spec/install/config/tools/cmd_tlm_server/cmd_tlm_server.txt +4 -0
- data/spec/interfaces/cmd_tlm_server_interface_spec.rb +6 -2
- data/spec/interfaces/interface_spec.rb +0 -1
- data/spec/interfaces/linc_interface_spec.rb +0 -5
- data/spec/interfaces/protocols/crc_protocol_spec.rb +201 -85
- data/spec/interfaces/protocols/fixed_protocol_spec.rb +33 -9
- data/spec/interfaces/protocols/length_protocol_spec.rb +1 -1
- data/spec/interfaces/protocols/override_protocol_spec.rb +6 -2
- data/spec/interfaces/protocols/preidentified_protocol_spec.rb +1 -5
- data/spec/interfaces/protocols/template_protocol_spec.rb +0 -1
- data/spec/interfaces/simulated_target_interface_spec.rb +5 -5
- data/spec/interfaces/udp_interface_spec.rb +2 -4
- data/spec/io/buffered_file_spec.rb +8 -12
- data/spec/io/json_drb_spec.rb +9 -9
- data/spec/io/json_rpc_spec.rb +4 -4
- data/spec/io/raw_logger_spec.rb +4 -3
- data/spec/packet_logs/packet_log_reader_spec.rb +3 -6
- data/spec/packet_logs/packet_log_writer_spec.rb +4 -4
- data/spec/packets/binary_accessor_spec.rb +5 -8
- data/spec/packets/commands_spec.rb +2 -2
- data/spec/packets/limits_spec.rb +2 -2
- data/spec/packets/packet_config_spec.rb +12 -0
- data/spec/packets/packet_item_limits_spec.rb +1 -1
- data/spec/packets/packet_item_spec.rb +9 -9
- data/spec/packets/packet_spec.rb +15 -5
- data/spec/packets/parsers/packet_item_parser_spec.rb +27 -0
- data/spec/packets/parsers/xtce_parser_spec.rb +27 -30
- data/spec/packets/structure_spec.rb +2 -1
- data/spec/packets/telemetry_spec.rb +3 -5
- data/spec/processors/statistics_processor_spec.rb +35 -0
- data/spec/script/cmd_tlm_server_spec.rb +4 -21
- data/spec/script/commands_disconnect_spec.rb +46 -58
- data/spec/script/commands_spec.rb +40 -61
- data/spec/script/limits_spec.rb +1 -21
- data/spec/script/script_spec.rb +32 -41
- data/spec/script/scripting_spec.rb +166 -185
- data/spec/script/telemetry_spec.rb +10 -5
- data/spec/script/tools_spec.rb +2 -24
- data/spec/spec_helper.rb +11 -5
- data/spec/system/system_spec.rb +17 -12
- data/spec/tools/cmd_tlm_server/api_spec.rb +21 -10
- data/spec/tools/cmd_tlm_server/background_tasks_spec.rb +15 -16
- data/spec/tools/cmd_tlm_server/cmd_tlm_server_config_spec.rb +0 -1
- data/spec/tools/cmd_tlm_server/cmd_tlm_server_spec.rb +16 -27
- data/spec/tools/cmd_tlm_server/commanding_spec.rb +2 -6
- data/spec/tools/cmd_tlm_server/connections_spec.rb +0 -4
- data/spec/tools/cmd_tlm_server/interface_thread_spec.rb +13 -13
- data/spec/tools/cmd_tlm_server/interfaces_spec.rb +5 -9
- data/spec/tools/cmd_tlm_server/limits_groups_background_task_spec.rb +11 -3
- data/spec/tools/cmd_tlm_server/packet_logging_spec.rb +0 -4
- data/spec/tools/cmd_tlm_server/router_thread_spec.rb +5 -5
- data/spec/tools/cmd_tlm_server/routers_spec.rb +5 -9
- data/spec/tools/table_manager/table_config_spec.rb +0 -1
- data/spec/tools/table_manager/tablemanager_core_spec.rb +23 -23
- data/spec/tools/tlm_viewer/tlm_viewer_config_spec.rb +6 -4
- data/spec/top_level/top_level_spec.rb +9 -9
- data/spec/utilities/csv_spec.rb +2 -12
- data/spec/utilities/logger_spec.rb +6 -6
- data/spec/utilities/message_log_spec.rb +3 -11
- data/tasks/gemfile_stats.rake +2 -2
- metadata +167 -60
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# encoding: ascii-8bit
|
|
2
|
+
|
|
3
|
+
# Copyright 2018 Ball Aerospace & Technologies Corp.
|
|
4
|
+
# All Rights Reserved.
|
|
5
|
+
#
|
|
6
|
+
# This program is free software; you can modify and/or redistribute it
|
|
7
|
+
# under the terms of the GNU General Public License
|
|
8
|
+
# as published by the Free Software Foundation; version 3 with
|
|
9
|
+
# attribution addendums as found in the LICENSE.txt
|
|
10
|
+
|
|
11
|
+
# This file contains the implementation of the StreamPacketsDialog class. This class
|
|
12
|
+
# provides a dialog box to configure packet streaming from DART
|
|
13
|
+
|
|
14
|
+
require 'cosmos'
|
|
15
|
+
require 'cosmos/gui/qt'
|
|
16
|
+
require 'cosmos/gui/widgets/dart_frame'
|
|
17
|
+
|
|
18
|
+
module Cosmos
|
|
19
|
+
# Creates a dialog to allow a user to select the
|
|
20
|
+
# time period to process.
|
|
21
|
+
class DartDialog < Qt::Dialog
|
|
22
|
+
extend Forwardable
|
|
23
|
+
def_delegators :@stream_packets_frame, :time_start, :time_start=, :time_end, :time_end=, :meta_filters
|
|
24
|
+
|
|
25
|
+
# @param parent (see PacketLogFrame#initialize)
|
|
26
|
+
# @param title [String] Dialog title
|
|
27
|
+
# @param show_time (see PacketLogFrame#initialize)
|
|
28
|
+
def initialize(parent, title, show_time = true)
|
|
29
|
+
super(parent)
|
|
30
|
+
setWindowTitle(title)
|
|
31
|
+
|
|
32
|
+
@layout = Qt::VBoxLayout.new
|
|
33
|
+
@stream_packets_frame = DartFrame.new(self, show_time)
|
|
34
|
+
@stream_packets_frame.change_callback = method(:change_callback)
|
|
35
|
+
@layout.addWidget(@stream_packets_frame)
|
|
36
|
+
|
|
37
|
+
# Separator before buttons
|
|
38
|
+
@sep1 = Qt::Frame.new(self)
|
|
39
|
+
@sep1.setFrameStyle(Qt::Frame::HLine | Qt::Frame::Sunken)
|
|
40
|
+
@layout.addWidget(@sep1)
|
|
41
|
+
|
|
42
|
+
# Create OK and Cancel buttons
|
|
43
|
+
@button_layout = Qt::HBoxLayout.new
|
|
44
|
+
@ok_button = Qt::PushButton.new('OK')
|
|
45
|
+
@ok_button.connect(SIGNAL('clicked()')) { System.telemetry.reset; self.accept }
|
|
46
|
+
@button_layout.addWidget(@ok_button)
|
|
47
|
+
@cancel_button = Qt::PushButton.new('Cancel')
|
|
48
|
+
@cancel_button.connect(SIGNAL('clicked()')) { self.reject }
|
|
49
|
+
@button_layout.addWidget(@cancel_button)
|
|
50
|
+
|
|
51
|
+
@layout.addLayout(@button_layout)
|
|
52
|
+
setLayout(@layout)
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
protected
|
|
56
|
+
|
|
57
|
+
def change_callback(item_changed)
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
end
|
|
@@ -17,9 +17,6 @@ module Cosmos
|
|
|
17
17
|
SCREEN_WIDTH_MARGIN = 40
|
|
18
18
|
SCREEN_HEIGHT_MARGIN = 100
|
|
19
19
|
|
|
20
|
-
# @param parent [Qt::Widget] Parent of this dialog
|
|
21
|
-
# @param title [String] Dialog title
|
|
22
|
-
# @param text [String] Text to display
|
|
23
20
|
# @param parent [Qt::Widget] Parent of this dialog
|
|
24
21
|
# @param title [String] Dialog title
|
|
25
22
|
# @param text [String] Text to display
|
data/lib/cosmos/gui/qt.rb
CHANGED
|
@@ -252,7 +252,16 @@ module Cosmos
|
|
|
252
252
|
end
|
|
253
253
|
end
|
|
254
254
|
end
|
|
255
|
-
|
|
255
|
+
end
|
|
256
|
+
end
|
|
257
|
+
|
|
258
|
+
class Qt::CheckboxLabel < Qt::Label
|
|
259
|
+
def setCheckbox(checkbox)
|
|
260
|
+
@checkbox = checkbox
|
|
261
|
+
end
|
|
262
|
+
|
|
263
|
+
def mouseReleaseEvent(event)
|
|
264
|
+
@checkbox.toggle
|
|
256
265
|
end
|
|
257
266
|
end
|
|
258
267
|
|
|
@@ -13,15 +13,17 @@ require 'cosmos/gui/qt'
|
|
|
13
13
|
require 'cosmos/script'
|
|
14
14
|
|
|
15
15
|
module Cosmos
|
|
16
|
-
|
|
16
|
+
# Performs code completion for COSMOS by supporting all the COSMOS keywords
|
|
17
|
+
# as well as the defined targets and packets.
|
|
17
18
|
class Completion < Qt::Completer
|
|
18
19
|
CMD_KEYWORDS = %w(cmd cmd_no_range_check cmd_no_hazardous_check cmd_no_checks
|
|
19
20
|
cmd_raw cmd_raw_no_range_check cmd_raw_no_hazardous_check cmd_raw_no_checks)
|
|
20
21
|
TLM_KEYWORDS = %w(set_tlm set_tlm_raw override_tlm override_tlm_raw normalize_tlm
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
22
|
+
tlm tlm_raw tlm_formatted tlm_with_units
|
|
23
|
+
limits_enabled? enable_limits disable_limits
|
|
24
|
+
check check_raw check_tolerance check_tolerance_raw
|
|
25
|
+
wait wait_raw wait_tolerance wait_tolerance_raw wait_check wait_check_raw
|
|
26
|
+
wait_check_tolerance wait_check_tolerance_raw)
|
|
25
27
|
|
|
26
28
|
slots 'insertCompletion(const QString&)'
|
|
27
29
|
|
|
@@ -324,13 +326,13 @@ module Cosmos
|
|
|
324
326
|
end
|
|
325
327
|
end
|
|
326
328
|
|
|
327
|
-
#Creates a Popup box to help with code completion
|
|
329
|
+
# Creates a Popup box to help with code completion
|
|
328
330
|
def create_list_popup(list_items)
|
|
329
331
|
return if list_items.nil? or list_items.empty?
|
|
330
332
|
create_popup(list_items)
|
|
331
333
|
end
|
|
332
334
|
|
|
333
|
-
# Called by
|
|
335
|
+
# Called by CompletionTextEdit in the keyPressEvent method
|
|
334
336
|
def handle_keypress(event)
|
|
335
337
|
current_line = widget.textCursor.block.text
|
|
336
338
|
|
|
@@ -398,5 +400,4 @@ module Cosmos
|
|
|
398
400
|
setCurrentRow(0) if popup.isVisible
|
|
399
401
|
end
|
|
400
402
|
end
|
|
401
|
-
|
|
402
|
-
end # module Cosmos
|
|
403
|
+
end
|
|
@@ -13,8 +13,13 @@ require 'cosmos/gui/qt'
|
|
|
13
13
|
require 'cosmos/gui/dialogs/splash'
|
|
14
14
|
|
|
15
15
|
module Cosmos
|
|
16
|
-
|
|
16
|
+
# Creates a Completion object to handle code completion popups.
|
|
17
|
+
# This calss also includes many helper methods to access various
|
|
18
|
+
# lines, indent selections, highlight lines and center the view.
|
|
17
19
|
class CompletionTextEdit < Qt::PlainTextEdit
|
|
20
|
+
# Create a signal so users of CompletionTextEdit don't have to
|
|
21
|
+
# subclass in order to listen to keyPressEvents
|
|
22
|
+
signals 'key_pressed(QKeyEvent*)'
|
|
18
23
|
TRUE_VARIANT = Qt::Variant.new(true)
|
|
19
24
|
SELECTION_DETAILS_POOL = []
|
|
20
25
|
|
|
@@ -78,34 +83,31 @@ module Cosmos
|
|
|
78
83
|
@code_completion.dispose if @code_completion
|
|
79
84
|
end
|
|
80
85
|
|
|
81
|
-
def keyPressCallback=(callback)
|
|
82
|
-
@keypress_callback = callback
|
|
83
|
-
end
|
|
84
|
-
|
|
85
86
|
def keyPressEvent(event)
|
|
87
|
+
emit key_pressed(event)
|
|
88
|
+
|
|
86
89
|
# If the completion popup is visible then ignore the event and allow the popup to handle it
|
|
87
|
-
if (@code_completion
|
|
90
|
+
if (@code_completion && @code_completion.popup.isVisible)
|
|
88
91
|
case event.key
|
|
89
|
-
when Qt::Key_Return, Qt::Key_Enter
|
|
92
|
+
when Qt::Key_Return, Qt::Key_Enter, Qt::Key_Tab, Qt::Key_Backtab
|
|
90
93
|
event.ignore
|
|
91
94
|
return
|
|
92
95
|
end
|
|
93
96
|
end
|
|
94
97
|
|
|
95
|
-
continue = @keypress_callback.call(event) if @keypress_callback
|
|
96
|
-
|
|
97
98
|
case event.key
|
|
98
99
|
when Qt::Key_Tab
|
|
100
|
+
# Ensure Ctrl-Tab doesn't activate indentation
|
|
99
101
|
if event.modifiers == Qt::NoModifier
|
|
100
102
|
indent_selection()
|
|
101
103
|
end
|
|
102
104
|
when Qt::Key_Backtab
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
if continue != false
|
|
106
|
-
super(event)
|
|
107
|
-
@code_completion.handle_keypress(event) if @code_completion
|
|
105
|
+
if event.modifiers == Qt::NoModifier
|
|
106
|
+
unindent_selection()
|
|
108
107
|
end
|
|
108
|
+
else
|
|
109
|
+
super(event)
|
|
110
|
+
@code_completion.handle_keypress(event) if @code_completion
|
|
109
111
|
end
|
|
110
112
|
end
|
|
111
113
|
|
|
@@ -94,8 +94,6 @@ module Cosmos
|
|
|
94
94
|
['\b\w+(::\b\w+)+', 0, STYLES['class']],
|
|
95
95
|
# Ruby global
|
|
96
96
|
['\\$\b\w+', 0, STYLES['string']],
|
|
97
|
-
# A single # or a # not followed by { to the end
|
|
98
|
-
['(#$|#[^{]).*', 0, STYLES['comment']],
|
|
99
97
|
# Regex, possibly containing escape sequences
|
|
100
98
|
["/.*/", 0, STYLES['string']],
|
|
101
99
|
# Double-quoted string, possibly containing escape sequences
|
|
@@ -108,6 +106,8 @@ module Cosmos
|
|
|
108
106
|
["'[^'\\\\]*(\\.[^'\\\\]*)*'", 0, STYLES['string']],
|
|
109
107
|
# Back-tick string, possibly containing escape sequences
|
|
110
108
|
["`[^`\\\\]*(\\.[^`\\\\]*)*`", 0, STYLES['string']],
|
|
109
|
+
# A single # possibly followed by matched quotes
|
|
110
|
+
['#(?=([^\'"]*(\'|")[^\'"]*(\'|"))*[^\'"]*$).*', 0, STYLES['comment']],
|
|
111
111
|
])
|
|
112
112
|
|
|
113
113
|
# Build a QRegExp for each pattern
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
# encoding: ascii-8bit
|
|
2
|
+
|
|
3
|
+
# Copyright 2018 Ball Aerospace & Technologies Corp.
|
|
4
|
+
# All Rights Reserved.
|
|
5
|
+
#
|
|
6
|
+
# This program is free software; you can modify and/or redistribute it
|
|
7
|
+
# under the terms of the GNU General Public License
|
|
8
|
+
# as published by the Free Software Foundation; version 3 with
|
|
9
|
+
# attribution addendums as found in the LICENSE.txt
|
|
10
|
+
|
|
11
|
+
require 'cosmos'
|
|
12
|
+
require 'cosmos/gui/qt'
|
|
13
|
+
require 'cosmos/gui/dialogs/calendar_dialog'
|
|
14
|
+
require 'cosmos/gui/widgets/dart_meta_frame'
|
|
15
|
+
|
|
16
|
+
module Cosmos
|
|
17
|
+
# Widget which displays a button to configure packet stream from DART.
|
|
18
|
+
# Buttons exist to display start and stop time choosers
|
|
19
|
+
class DartFrame < Qt::Widget
|
|
20
|
+
# @return [Time] Start time of packets to process
|
|
21
|
+
attr_reader :time_start
|
|
22
|
+
# @return [Time] End time of packets to process
|
|
23
|
+
attr_reader :time_end
|
|
24
|
+
# @return [#call] Callback called when something changes. Called with
|
|
25
|
+
# the item that was changed as a symbol. The possible values are
|
|
26
|
+
# :TIME_START, :TIME_END
|
|
27
|
+
attr_accessor :change_callback
|
|
28
|
+
|
|
29
|
+
# @param parent [Qt::Widget] Parent to this dialog
|
|
30
|
+
# @param show_time [Boolean] Whether to show the start and end time
|
|
31
|
+
# fields and buttons which popup a calendar browser
|
|
32
|
+
def initialize(parent,
|
|
33
|
+
show_time = true)
|
|
34
|
+
super(parent)
|
|
35
|
+
|
|
36
|
+
@time_start = nil
|
|
37
|
+
@time_end = nil
|
|
38
|
+
@change_callback = nil
|
|
39
|
+
|
|
40
|
+
@vbox = Qt::VBoxLayout.new
|
|
41
|
+
@vbox.setContentsMargins(0,0,0,0)
|
|
42
|
+
|
|
43
|
+
@layout = Qt::GridLayout.new
|
|
44
|
+
row = 0
|
|
45
|
+
|
|
46
|
+
# Declare these regardless of if show_time is set so getters and setters work
|
|
47
|
+
@time_start_field = Qt::LineEdit.new('N/A')
|
|
48
|
+
@time_end_field = Qt::LineEdit.new('N/A')
|
|
49
|
+
if show_time
|
|
50
|
+
%w(Start End).each do |time|
|
|
51
|
+
time_label = Qt::Label.new("Time Period #{time}:")
|
|
52
|
+
@layout.addWidget(time_label, row, 0)
|
|
53
|
+
if time == 'Start'
|
|
54
|
+
time_field = @time_start_field
|
|
55
|
+
else
|
|
56
|
+
time_field = @time_end_field
|
|
57
|
+
end
|
|
58
|
+
time_field.setMinimumWidth(340)
|
|
59
|
+
time_field.setReadOnly(true)
|
|
60
|
+
@layout.addWidget(time_field, row, 1)
|
|
61
|
+
time_clear_button = Qt::PushButton.new('Clear')
|
|
62
|
+
time_clear_button.connect(SIGNAL('clicked()')) { handle_time_clear_button(time, time_field) }
|
|
63
|
+
@layout.addWidget(time_clear_button, row, 2)
|
|
64
|
+
time_button = Qt::PushButton.new('Select')
|
|
65
|
+
time_button.connect(SIGNAL('clicked()')) { handle_time_select_button(time, time_field) }
|
|
66
|
+
@layout.addWidget(time_button, row, 3)
|
|
67
|
+
row += 1
|
|
68
|
+
end
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
@vbox.addLayout(@layout)
|
|
72
|
+
|
|
73
|
+
@dart_meta_frame = DartMetaFrame.new(self)
|
|
74
|
+
@vbox.addWidget(@dart_meta_frame)
|
|
75
|
+
|
|
76
|
+
setLayout(@vbox)
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
# @param time_start [Time] Start time
|
|
80
|
+
def time_start=(time_start)
|
|
81
|
+
@time_start = time_start
|
|
82
|
+
if @time_start
|
|
83
|
+
@time_start_field.setText(@time_start.formatted)
|
|
84
|
+
else
|
|
85
|
+
@time_start_field.setText('N/A')
|
|
86
|
+
end
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
# @param time_end [Time] End time
|
|
90
|
+
def time_end=(time_end)
|
|
91
|
+
@time_end = time_end
|
|
92
|
+
if @time_end
|
|
93
|
+
@time_end_field.setText(@time_end.formatted)
|
|
94
|
+
else
|
|
95
|
+
@time_end_field.setText('N/A')
|
|
96
|
+
end
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
def meta_filters
|
|
100
|
+
@dart_meta_frame.meta_filters
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
protected
|
|
104
|
+
|
|
105
|
+
# Handles choosing a time
|
|
106
|
+
def handle_time_select_button(time_period, time_field)
|
|
107
|
+
if time_period == 'Start'
|
|
108
|
+
time = @time_start
|
|
109
|
+
time = @time_end unless @time_start
|
|
110
|
+
else
|
|
111
|
+
time = @time_end
|
|
112
|
+
time = @time_start unless @time_end
|
|
113
|
+
end
|
|
114
|
+
dialog = CalendarDialog.new(self, "Select Time Period #{time_period}:", time)
|
|
115
|
+
case dialog.exec
|
|
116
|
+
when Qt::Dialog::Accepted
|
|
117
|
+
time_field.setText(dialog.time.formatted)
|
|
118
|
+
if time_period == 'Start'
|
|
119
|
+
@time_start = dialog.time
|
|
120
|
+
@change_callback.call(:TIME_START) if @change_callback
|
|
121
|
+
else
|
|
122
|
+
@time_end = dialog.time
|
|
123
|
+
@change_callback.call(:TIME_END) if @change_callback
|
|
124
|
+
end
|
|
125
|
+
end
|
|
126
|
+
end
|
|
127
|
+
|
|
128
|
+
# Clears the time
|
|
129
|
+
def handle_time_clear_button(time_period, time_field)
|
|
130
|
+
current_text = time_field.text
|
|
131
|
+
time_field.setText('N/A')
|
|
132
|
+
if time_period == 'Start'
|
|
133
|
+
@time_start = nil
|
|
134
|
+
@change_callback.call(:TIME_START) if @change_callback and current_text != 'N/A'
|
|
135
|
+
else
|
|
136
|
+
@time_end = nil
|
|
137
|
+
@change_callback.call(:TIME_END) if @change_callback and current_text != 'N/A'
|
|
138
|
+
end
|
|
139
|
+
end
|
|
140
|
+
|
|
141
|
+
end
|
|
142
|
+
end
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
# encoding: ascii-8bit
|
|
2
|
+
|
|
3
|
+
# Copyright 2018 Ball Aerospace & Technologies Corp.
|
|
4
|
+
# All Rights Reserved.
|
|
5
|
+
#
|
|
6
|
+
# This program is free software; you can modify and/or redistribute it
|
|
7
|
+
# under the terms of the GNU General Public License
|
|
8
|
+
# as published by the Free Software Foundation; version 3 with
|
|
9
|
+
# attribution addendums as found in the LICENSE.txt
|
|
10
|
+
|
|
11
|
+
require 'cosmos'
|
|
12
|
+
require 'cosmos/gui/qt'
|
|
13
|
+
require 'cosmos/io/json_drb_object'
|
|
14
|
+
|
|
15
|
+
module Cosmos
|
|
16
|
+
class DartMetaFrame < Qt::Widget
|
|
17
|
+
@@meta_filters = []
|
|
18
|
+
|
|
19
|
+
def initialize(parent)
|
|
20
|
+
super(parent)
|
|
21
|
+
|
|
22
|
+
@got_meta_item_names = false
|
|
23
|
+
|
|
24
|
+
@layout = Qt::VBoxLayout.new(self)
|
|
25
|
+
@layout.setContentsMargins(0,0,0,0)
|
|
26
|
+
|
|
27
|
+
@groupbox = Qt::GroupBox.new("Meta Filter Selection")
|
|
28
|
+
@vbox = Qt::VBoxLayout.new(@groupbox)
|
|
29
|
+
@hbox1 = Qt::HBoxLayout.new
|
|
30
|
+
@label = Qt::Label.new("Meta Filters: ")
|
|
31
|
+
@hbox1.addWidget(@label)
|
|
32
|
+
@meta_filters_text = Qt::LineEdit.new
|
|
33
|
+
@meta_filters_text.setReadOnly(true)
|
|
34
|
+
@meta_filters_text.text = @@meta_filters.to_s[1..-2]
|
|
35
|
+
@hbox1.addWidget(@meta_filters_text)
|
|
36
|
+
@clear_button = Qt::PushButton.new("Clear")
|
|
37
|
+
@hbox1.addWidget(@clear_button)
|
|
38
|
+
@clear_button.connect(SIGNAL('clicked()')) do
|
|
39
|
+
@@meta_filters = []
|
|
40
|
+
@meta_filters_text.text = ""
|
|
41
|
+
update_meta_item_names()
|
|
42
|
+
end
|
|
43
|
+
@vbox.addLayout(@hbox1)
|
|
44
|
+
|
|
45
|
+
@hbox2 = Qt::HBoxLayout.new
|
|
46
|
+
@meta_item_name = Qt::ComboBox.new
|
|
47
|
+
@meta_item_name.setMinimumWidth(200)
|
|
48
|
+
@meta_item_name.setMaxVisibleItems(6)
|
|
49
|
+
@hbox2.addWidget(@meta_item_name)
|
|
50
|
+
@comparison = Qt::ComboBox.new
|
|
51
|
+
@comparison.addItem("==")
|
|
52
|
+
@comparison.addItem("!=")
|
|
53
|
+
@comparison.addItem(">")
|
|
54
|
+
@comparison.addItem(">=")
|
|
55
|
+
@comparison.addItem("<")
|
|
56
|
+
@comparison.addItem("<=")
|
|
57
|
+
@comparison.setMaxVisibleItems(6)
|
|
58
|
+
@hbox2.addWidget(@comparison)
|
|
59
|
+
@filter_value = Qt::LineEdit.new
|
|
60
|
+
@hbox2.addWidget(@filter_value)
|
|
61
|
+
@add_button = Qt::PushButton.new("Add Filter")
|
|
62
|
+
@add_button.connect(SIGNAL('clicked()')) do
|
|
63
|
+
filter_value = @filter_value.text
|
|
64
|
+
if filter_value.to_s.strip.length > 0
|
|
65
|
+
if filter_value.index(" ")
|
|
66
|
+
if filter_value.index('"')
|
|
67
|
+
@@meta_filters << "#{@meta_item_name.text} #{@comparison.text} '#{@filter_value.text}'"
|
|
68
|
+
else
|
|
69
|
+
@@meta_filters << "#{@meta_item_name.text} #{@comparison.text} \"#{@filter_value.text}\""
|
|
70
|
+
end
|
|
71
|
+
else
|
|
72
|
+
@@meta_filters << "#{@meta_item_name.text} #{@comparison.text} #{@filter_value.text}"
|
|
73
|
+
end
|
|
74
|
+
else
|
|
75
|
+
@@meta_filters << "#{@meta_item_name.text} #{@comparison.text} ''"
|
|
76
|
+
end
|
|
77
|
+
@meta_filters_text.text = @@meta_filters.to_s[1..-2]
|
|
78
|
+
end
|
|
79
|
+
@hbox2.addWidget(@add_button)
|
|
80
|
+
@vbox.addLayout(@hbox2)
|
|
81
|
+
@layout.addWidget(@groupbox)
|
|
82
|
+
|
|
83
|
+
setLayout(@layout)
|
|
84
|
+
|
|
85
|
+
@resize_timer = Qt::Timer.new
|
|
86
|
+
@resize_timer.connect(SIGNAL('timeout()')) { update_meta_item_names() }
|
|
87
|
+
@resize_timer.start(100)
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
def meta_filters
|
|
91
|
+
@@meta_filters
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
protected
|
|
95
|
+
|
|
96
|
+
def update_meta_item_names
|
|
97
|
+
if !@got_meta_item_names and !@update_thread
|
|
98
|
+
@update_thread = Thread.new do
|
|
99
|
+
begin
|
|
100
|
+
server = JsonDRbObject.new(System.connect_hosts['DART_DECOM'], System.ports['DART_DECOM'])
|
|
101
|
+
item_names = server.item_names("SYSTEM", "META")
|
|
102
|
+
Qt.execute_in_main_thread do
|
|
103
|
+
@meta_item_name.clear
|
|
104
|
+
item_names.each do |item|
|
|
105
|
+
@meta_item_name.addItem(item)
|
|
106
|
+
end
|
|
107
|
+
end
|
|
108
|
+
@got_meta_item_names = true
|
|
109
|
+
rescue Exception
|
|
110
|
+
# We tried...
|
|
111
|
+
ensure
|
|
112
|
+
@update_thread = nil
|
|
113
|
+
server.disconnect if defined? server
|
|
114
|
+
end
|
|
115
|
+
end
|
|
116
|
+
end
|
|
117
|
+
end
|
|
118
|
+
end
|
|
119
|
+
end
|