Class: Signal_mapper
- Inherits:
-
Qt::Widget
- Object
- Qt::Widget
- Signal_mapper
- Defined in:
- lib/class/Signal_mapper.rb
Instance Method Summary collapse
- #are_values_ok? ⇒ Boolean
- #check_duplicate(pins) ⇒ Object
- #check_empty(pins) ⇒ Object
- #check_mapping_value(item) ⇒ Object
- #init_bus_list ⇒ Object
-
#initialize ⇒ Signal_mapper
constructor
A new instance of Signal_mapper.
- #resize_to_content ⇒ Object
- #save_signal_mapping ⇒ Object
- #update_map_table(bus_name) ⇒ Object
Constructor Details
#initialize ⇒ Signal_mapper
Returns a new instance of Signal_mapper.
14 15 16 17 18 19 20 21 22 |
# File 'lib/class/Signal_mapper.rb', line 14 def initialize super() @view = Ui_Signal_mapper.new centerWindow(self) @view.setupUi(self) init_bus_list rescue Exception => msg ErrorMsg.new.unknown(msg) end |
Instance Method Details
#are_values_ok? ⇒ Boolean
82 83 84 85 86 87 88 |
# File 'lib/class/Signal_mapper.rb', line 82 def are_values_ok? pins = [] @view.map_table.rowCount.times do |i| pins.push(@view.map_table.item(i, 1).text) end return true if check_empty(pins) && check_duplicate(pins) end |
#check_duplicate(pins) ⇒ Object
101 102 103 104 105 106 107 108 109 110 111 112 113 |
# File 'lib/class/Signal_mapper.rb', line 101 def check_duplicate(pins) duplicate = pins.inject(Hash.new(0)) {|ha, e| ha[e] += 1 ; ha}.delete_if {|k, v| v == 1}.keys unless duplicate.empty? @view.map_table.setCurrentItem(@view.map_table.item(pins.index(duplicate[0]), 1)) Qt::MessageBox.new( Qt::MessageBox::Warning, 'Wrong value', "Duplicate values detected: #{duplicate[0]}" ).exec return false end return true end |
#check_empty(pins) ⇒ Object
90 91 92 93 94 95 96 97 98 99 |
# File 'lib/class/Signal_mapper.rb', line 90 def check_empty(pins) return true unless pins.include?('') @view.map_table.setCurrentItem(@view.map_table.item(pins.index(''), 1)) Qt::MessageBox.new( Qt::MessageBox::Warning, 'Empty pin', 'Empty pin value detected' ).exec return false end |
#check_mapping_value(item) ⇒ Object
30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
# File 'lib/class/Signal_mapper.rb', line 30 def check_mapping_value(item) if item.column == 1 item.setText(item.text.upcase) reg = Qt::RegExp.new("^[A-H]{1}[0-7]${1}") reg_val = Qt::RegExpValidator.new(reg, self) if reg_val.validate(item.text, item.text.length) == Qt::Validator::Invalid || item.text.nil? item.setText('') Qt::MessageBox.new( Qt::MessageBox::Warning, 'Wrong data', 'Only values from A0 to H7 are accepted in this cell' ).exec end end rescue Exception => msg ErrorMsg.new.unknown(msg) end |
#init_bus_list ⇒ Object
24 25 26 27 28 |
# File 'lib/class/Signal_mapper.rb', line 24 def init_bus_list Bus.all.each do |b| @view.cbx_bus.addItem(b.name) unless b.name == "NA" end end |
#resize_to_content ⇒ Object
115 116 117 118 119 |
# File 'lib/class/Signal_mapper.rb', line 115 def resize_to_content @view.map_table.resizeColumnsToContents @view.map_table.resizeRowsToContents @view.map_table.horizontalHeader.stretchLastSection = true end |
#save_signal_mapping ⇒ Object
66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 |
# File 'lib/class/Signal_mapper.rb', line 66 def save_signal_mapping return 0 unless are_values_ok? @view.map_table.rowCount.times do |i| current_signal = Signall.find_by(name: @view.map_table.item(i, 0).text) if current_signal.name != @view.map_table.item(i, 1).text current_signal.update(pin: @view.map_table.item(i, 1).text) end end Qt::MessageBox.new( Qt::MessageBox::Information, 'Save mapping', 'Pin mapping saved successfuly' ).exec close end |
#update_map_table(bus_name) ⇒ Object
48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
# File 'lib/class/Signal_mapper.rb', line 48 def update_map_table(bus_name) unless bus_name == 'Bus...' @view.map_table.clearContents @view.map_table.setRowCount(0) Bus.find_by(name: bus_name).signalls.each do |s| @view.map_table.insertRow(@view.map_table.rowCount) signal_cell = Qt::TableWidgetItem.new(s.name) signal_cell.setFlags(Qt::ItemIsEnabled) @view.map_table.setItem(@view.map_table.rowCount - 1, 0, signal_cell) pin_cell = Qt::TableWidgetItem.new(s.pin) @view.map_table.setItem(@view.map_table.rowCount - 1, 1, pin_cell) end resize_to_content end rescue Exception => msg ErrorMsg.new.unknown(msg) end |