Class: Cosmos::TlmDetailsDialog
- Inherits:
-
DetailsDialog
- Object
- Qt::Dialog
- DetailsDialog
- Cosmos::TlmDetailsDialog
- Defined in:
- lib/cosmos/gui/dialogs/tlm_details_dialog.rb
Constant Summary collapse
- VALUE_UPDATE_PERIOD_MS =
1000
- VALUE_TYPES =
[:RAW, :CONVERTED, :FORMATTED, :WITH_UNITS]
Instance Method Summary collapse
-
#initialize(parent, target_name, packet_name, item_name, packet = nil) ⇒ TlmDetailsDialog
constructor
A new instance of TlmDetailsDialog.
- #value_update_timeout ⇒ Object
Methods inherited from DetailsDialog
#build_details_layout, #closeEvent, #reject, #show_conversion, #show_data_type, #show_endianness, #show_nil
Methods inherited from Qt::Dialog
Constructor Details
#initialize(parent, target_name, packet_name, item_name, packet = nil) ⇒ TlmDetailsDialog
Returns a new instance of TlmDetailsDialog.
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 |
# File 'lib/cosmos/gui/dialogs/tlm_details_dialog.rb', line 25 def initialize(parent, target_name, packet_name, item_name, packet = nil) super(parent, target_name, packet_name, item_name) @item_array = [[@target_name, @packet_name, @item_name], [@target_name, @packet_name, @item_name], [@target_name, @packet_name, @item_name], [@target_name, @packet_name, @item_name]] begin update = false if !packet update = true _, item = System.telemetry.packet_and_item(target_name, packet_name, item_name) else item = packet.get_item(item_name) end setWindowTitle("#{@target_name} #{@packet_name} #{@item_name} Details") layout = Qt::VBoxLayout.new layout.addWidget(Qt::Label.new(tr("#{target_name} #{packet_name} #{item_name}"))) # Display the item values item_values = Qt::GroupBox.new(tr("Item Values")) values_layout = Qt::FormLayout.new @raw_value = Qt::LineEdit.new @raw_value.setReadOnly(true) values_layout.addRow(tr("Raw Value:"), @raw_value) @hex_raw_value = nil @hex_raw_num_digits = 0 case item.data_type when :INT, :UINT if item.bit_size >= 0 @hex_raw_value = Qt::LineEdit.new @hex_raw_value.setReadOnly(true) @hex_raw_num_digits = (((item.bit_size - 1) / 8) + 1) * 2 values_layout.addRow(tr("Hex Raw Value:"), @hex_raw_value) end end @converted_value = Qt::LineEdit.new @converted_value.setReadOnly(true) values_layout.addRow(tr("Converted Value:"), @converted_value) @formatted_value = Qt::LineEdit.new @formatted_value.setReadOnly(true) values_layout.addRow(tr("Formatted Value:"), @formatted_value) @formatted_with_units_value = Qt::LineEdit.new @formatted_with_units_value.setReadOnly(true) values_layout.addRow(tr("Formatted with Units Value:"), @formatted_with_units_value) @limits_state = Qt::LineEdit.new @limits_state.setReadOnly(true) values_layout.addRow(tr("Limits State:"), @limits_state) item_values.setLayout(values_layout) layout.addWidget(item_values) if update @timer = Qt::Timer.new connect(@timer, SIGNAL('timeout()'), self, SLOT('value_update_timeout()')) @timer.method_missing(:start, VALUE_UPDATE_PERIOD_MS) value_update_timeout() else raw_value = packet.read(item_name, :RAW).to_s @raw_value.text = raw_value set_hex_value(raw_value) if @hex_raw_value @converted_value.text = packet.read(item_name, :CONVERTED).to_s @formatted_value.text = packet.read(item_name, :FORMATTED).to_s @formatted_with_units_value.text = packet.read(item_name, :WITH_UNITS).to_s end # Display the item details item_details = Qt::GroupBox.new(tr("Item Details")) item_details.setLayout(build_details_layout(item, :TLM)) layout.addWidget(item_details) # Add the OK button ok = Qt::PushButton.new("Ok") connect(ok, SIGNAL('clicked()'), self, SLOT('close()')) if update connect(self, SIGNAL('finished(int)')) do |result| @timer.stop end end layout.addWidget(ok) self.setLayout(layout) self.show self.raise rescue DRb::DRbConnError # Just do nothing end end |
Instance Method Details
#value_update_timeout ⇒ Object
118 119 120 121 122 123 124 125 126 127 |
# File 'lib/cosmos/gui/dialogs/tlm_details_dialog.rb', line 118 def value_update_timeout begin # Gather updated values values, limits_states, limits_settings, limits_set = get_tlm_values(@item_array, VALUE_TYPES) update_limits_details(limits_settings, limits_set) update_text_fields(values, limits_states[0]) rescue DRb::DRbConnError # Just do nothing end end |