hardsploit_gui 2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/README.md +22 -0
- data/Rakefile +1 -0
- data/bin/hardsploit_gui +3 -0
- data/lib/Firmware/FPGA/I2C/I2C_INTERACT/HARDSPLOIT_FIRMWARE_FPGA_I2C_INTERACT.rpd +0 -0
- data/lib/Firmware/FPGA/PARALLEL/NO_MUX_PARALLEL_MEMORY/HARDSPLOIT_FIRMWARE_FPGA_NO_MUX_PARALLEL_MEMORY.rpd +0 -0
- data/lib/Firmware/FPGA/SPI/SPI_INTERACT/HARDSPLOIT_FIRMWARE_FPGA_SPI_INTERACT.rpd +0 -0
- data/lib/Firmware/FPGA/SWD/SWD_INTERACT/HARDSPLOIT_FIRMWARE_FPGA_SWD_INTERACT.rpd +0 -0
- data/lib/Firmware/FPGA/TEST/TEST_INTERACT/HARDSPLOIT_FIRMWARE_FPGA_TEST_INTERACT.rpd +0 -0
- data/lib/Firmware/FPGA/VersionFPGA.rb +5 -0
- data/lib/Firmware/UC/HARDSPLOIT_FIRMWARE_UC.bin +0 -0
- data/lib/Firmware/UC/VersionUC.rb +12 -0
- data/lib/HardsploitAPI/HardsploitAPI.rb +134 -0
- data/lib/HardsploitAPI/HardsploitAPI_CONSTANT.rb +145 -0
- data/lib/HardsploitAPI/HardsploitAPI_FIRMWARE.rb +311 -0
- data/lib/HardsploitAPI/HardsploitAPI_I2C.rb +218 -0
- data/lib/HardsploitAPI/HardsploitAPI_NO_MUX_PARALLELE_MEMORY.rb +229 -0
- data/lib/HardsploitAPI/HardsploitAPI_SPI.rb +179 -0
- data/lib/HardsploitAPI/HardsploitAPI_TEST_INTERACT.rb +98 -0
- data/lib/HardsploitAPI/HardsploitAPI_USB_COMMUNICATION.rb +149 -0
- data/lib/HardsploitAPI/LICENSE.txt +674 -0
- data/lib/HardsploitAPI/README.md +22 -0
- data/lib/HardsploitAPI/SWD/HardsploitAPI_SWD.rb +249 -0
- data/lib/HardsploitAPI/SWD/HardsploitAPI_SWD_DEBUG.rb +102 -0
- data/lib/HardsploitAPI/SWD/HardsploitAPI_SWD_MEM_AP.rb +78 -0
- data/lib/HardsploitAPI/SWD/HardsploitAPI_SWD_STM32.rb +104 -0
- data/lib/HardsploitAPI/TRADEMARK +3 -0
- data/lib/LICENSE.txt +674 -0
- data/lib/README.md +22 -0
- data/lib/TRADEMARK +3 -0
- data/lib/class/Chip_editor.rb +448 -0
- data/lib/class/Command_editor.rb +268 -0
- data/lib/class/Command_table.rb +239 -0
- data/lib/class/Console.rb +28 -0
- data/lib/class/Export_manager.rb +124 -0
- data/lib/class/Firmware.rb +29 -0
- data/lib/class/Generic_commands.rb +275 -0
- data/lib/class/HardsploitGUI.rb +462 -0
- data/lib/class/I2C/I2c_command.rb +48 -0
- data/lib/class/I2C/I2c_export.rb +121 -0
- data/lib/class/I2C/I2c_import.rb +92 -0
- data/lib/class/I2C/I2c_settings.rb +117 -0
- data/lib/class/PARALLEL/Parallel_export.rb +146 -0
- data/lib/class/PARALLEL/Parallel_import.rb +88 -0
- data/lib/class/PARALLEL/Parallel_settings.rb +102 -0
- data/lib/class/SPI/Spi_export.rb +141 -0
- data/lib/class/SPI/Spi_import.rb +112 -0
- data/lib/class/SPI/Spi_settings.rb +90 -0
- data/lib/class/Wire_helper.rb +246 -0
- data/lib/db/associations.rb +125 -0
- data/lib/db/hs.db +0 -0
- data/lib/gui/gui_chip_editor.rb +355 -0
- data/lib/gui/gui_chip_management.rb +372 -0
- data/lib/gui/gui_command_editor.rb +218 -0
- data/lib/gui/gui_export_manager.rb +93 -0
- data/lib/gui/gui_generic_commands.rb +164 -0
- data/lib/gui/gui_generic_export.rb +148 -0
- data/lib/gui/gui_generic_import.rb +126 -0
- data/lib/gui/gui_i2c_command.rb +115 -0
- data/lib/gui/gui_i2c_settings.rb +201 -0
- data/lib/gui/gui_parallel_settings.rb +194 -0
- data/lib/gui/gui_spi_import.rb +126 -0
- data/lib/gui/gui_spi_settings.rb +187 -0
- data/lib/gui/gui_wire_helper.rb +99 -0
- data/lib/gui_designer/gui_chip_editor.ui +553 -0
- data/lib/gui_designer/gui_chip_management.ui +842 -0
- data/lib/gui_designer/gui_command_editor.ui +347 -0
- data/lib/gui_designer/gui_export_manager.ui +115 -0
- data/lib/gui_designer/gui_generic_commands.ui +258 -0
- data/lib/gui_designer/gui_generic_export.ui +179 -0
- data/lib/gui_designer/gui_generic_import.ui +142 -0
- data/lib/gui_designer/gui_i2c_command.ui +145 -0
- data/lib/gui_designer/gui_i2c_settings.ui +261 -0
- data/lib/gui_designer/gui_parallel_settings.ui +244 -0
- data/lib/gui_designer/gui_processing.ui +81 -0
- data/lib/gui_designer/gui_spi_settings.ui +321 -0
- data/lib/gui_designer/gui_wire_helper.ui +117 -0
- data/lib/hardsploit.rb +122 -0
- data/lib/images/search.png +0 -0
- data/lib/logs/error.log +0 -0
- metadata +236 -0
@@ -0,0 +1,246 @@
|
|
1
|
+
#===================================================
|
2
|
+
# Hardsploit GUI - By Opale Security
|
3
|
+
# www.opale-security.com || www.hardsploit.io
|
4
|
+
# License: GNU General Public License v3
|
5
|
+
# License URI: http://www.gnu.org/licenses/gpl.txt
|
6
|
+
#===================================================
|
7
|
+
|
8
|
+
require_relative '../HardsploitAPI/HardsploitAPI'
|
9
|
+
require_relative '../gui/gui_wire_helper'
|
10
|
+
|
11
|
+
class Wire_helper < Qt::Widget
|
12
|
+
slots 'rotate_scene()'
|
13
|
+
|
14
|
+
def initialize(chip, api)
|
15
|
+
super()
|
16
|
+
@wire_helper_gui = Ui_Wire_helper.new
|
17
|
+
centerWindow(self)
|
18
|
+
@wire_helper_gui.setupUi(self)
|
19
|
+
@chip = chip
|
20
|
+
@api = api
|
21
|
+
|
22
|
+
# Default led position
|
23
|
+
api.setWiringLeds(0x0000000000000000)
|
24
|
+
|
25
|
+
# Draw the chip
|
26
|
+
scene = Qt::GraphicsScene.new
|
27
|
+
@wire_helper_gui.lbl_chip.setText("Your chip (#{chip.chip_reference}):")
|
28
|
+
|
29
|
+
# Get the pin total number
|
30
|
+
# UniqPin parameters: (scene, pinNum, pinChip, xSig, ySig, xNum, yNum, xRect, yRect, wRect, hRect, rotation)
|
31
|
+
total_pin_nbr = Pin.where(pin_chip: @chip.chip_id).count
|
32
|
+
# If it's a square
|
33
|
+
if Package.find_by(package_id: chip.chip_package).package_shape == 0
|
34
|
+
pin_by_side = total_pin_nbr / 4
|
35
|
+
cHeight = 14*(pin_by_side + 4) # Chip's height (+4 because we add a space equal to one pin for each corner)
|
36
|
+
scene.addRect(Qt::RectF.new(0, 0, cHeight, cHeight))
|
37
|
+
y = 32
|
38
|
+
y2 = cHeight - 38
|
39
|
+
x = 32
|
40
|
+
x2 = cHeight - 38
|
41
|
+
(1..total_pin_nbr).each do |i|
|
42
|
+
# Face 1
|
43
|
+
if i <= pin_by_side
|
44
|
+
ySig = y
|
45
|
+
yNum = y
|
46
|
+
UniqPin.new(scene, i, @chip.chip_id, -70, ySig - 12, 0, yNum - 12, 0, y, -20, 6, false, api)
|
47
|
+
y = y + 14 # Space between each pin
|
48
|
+
elsif i > pin_by_side && i <= total_pin_nbr / 2
|
49
|
+
# Face 2
|
50
|
+
xSig2 = x
|
51
|
+
xNum2 = x
|
52
|
+
UniqPin.new(scene, i, @chip.chip_id, xSig2 - 12, cHeight + 55, xNum2 - 12, cHeight, x, cHeight, 6, 20, true, api)
|
53
|
+
x = x + 14
|
54
|
+
elsif i > total_pin_nbr / 2 && i <= (total_pin_nbr - (pin_by_side))
|
55
|
+
# Face 3
|
56
|
+
xSig = cHeight + 24
|
57
|
+
ySig = y2
|
58
|
+
yNum = y2
|
59
|
+
|
60
|
+
if i < 10
|
61
|
+
xNum = cHeight - 20
|
62
|
+
elsif i >= 10 && i < 100
|
63
|
+
xNum = cHeight - 25
|
64
|
+
else
|
65
|
+
xNum = cHeight - 35
|
66
|
+
end
|
67
|
+
UniqPin.new(scene, i, @chip.chip_id, xSig, ySig - 12, xNum, yNum - 12, cHeight, y2, 20, 6, false, api)
|
68
|
+
y2 = y2 - 14
|
69
|
+
else
|
70
|
+
# Face 4
|
71
|
+
xSig2 = x2
|
72
|
+
xNum2 = x2
|
73
|
+
|
74
|
+
if i < 10
|
75
|
+
yNum2 = 20
|
76
|
+
elsif i >= 10 && i < 100
|
77
|
+
yNum2 = 30
|
78
|
+
else
|
79
|
+
yNum2 = 40
|
80
|
+
end
|
81
|
+
UniqPin.new(scene, i, @chip.chip_id, xSig2 - 12, -20, xNum2 - 12, yNum2, x2, 0, 6, -20, true, api)
|
82
|
+
x2 = x2 - 14
|
83
|
+
end
|
84
|
+
end
|
85
|
+
# If it's a rectangle
|
86
|
+
else
|
87
|
+
pin_by_side = total_pin_nbr / 2
|
88
|
+
cHeight = 14 * (pin_by_side + 2) # +2 because we add a space equal to one pin for each corner
|
89
|
+
scene.addRect(Qt::RectF.new(0, 0, cHeight, cHeight))
|
90
|
+
# Add the pins + text
|
91
|
+
y = 18
|
92
|
+
y2 = cHeight - 24
|
93
|
+
(1..total_pin_nbr).each do |i|
|
94
|
+
# Face 1
|
95
|
+
if i <= total_pin_nbr / 2
|
96
|
+
ySig = y
|
97
|
+
yNum = y
|
98
|
+
UniqPin.new(scene, i, @chip.chip_id, -70, ySig - 12, 0, yNum - 12, 0, y, -20, 6, false, api)
|
99
|
+
y = y + 14
|
100
|
+
# Face 2
|
101
|
+
else
|
102
|
+
xSig = cHeight + 24
|
103
|
+
ySig = y2
|
104
|
+
yNum = y2
|
105
|
+
|
106
|
+
if i < 10
|
107
|
+
xNum = cHeight - 20
|
108
|
+
elsif i >= 10 && i < 100
|
109
|
+
xNum = cHeight - 25
|
110
|
+
else
|
111
|
+
xNum = cHeight - 35
|
112
|
+
end
|
113
|
+
UniqPin.new(scene, i, @chip.chip_id, xSig, ySig - 12, xNum, yNum - 12, cHeight, y2, 20, 6, false, api)
|
114
|
+
y2 = y2 - 14
|
115
|
+
end
|
116
|
+
end
|
117
|
+
end
|
118
|
+
# Draw!
|
119
|
+
@wire_helper_gui.gView.setScene(scene)
|
120
|
+
rescue Exception => msg
|
121
|
+
Qt::MessageBox.new(Qt::MessageBox::Critical, 'Critical error', 'Error occured while drawing the chip. Consult the logs for more details').exec
|
122
|
+
logger = Logger.new($logFilePath)
|
123
|
+
logger.error msg
|
124
|
+
end
|
125
|
+
|
126
|
+
def closeEvent(event)
|
127
|
+
@api.setWiringLeds(0xFF00FF00FF00FF00)
|
128
|
+
end
|
129
|
+
|
130
|
+
def rotate_scene
|
131
|
+
@wire_helper_gui.gView.rotate(90)
|
132
|
+
end
|
133
|
+
end
|
134
|
+
|
135
|
+
#
|
136
|
+
# Custom Item - To trigger events on the graphics text items
|
137
|
+
#
|
138
|
+
class CustomItem < Qt::GraphicsTextItem
|
139
|
+
|
140
|
+
def setPin(upin)
|
141
|
+
@UPin = upin
|
142
|
+
end
|
143
|
+
|
144
|
+
def boundingRect
|
145
|
+
rect = Qt::RectF.new
|
146
|
+
rect.setHeight(20)
|
147
|
+
rect.setWidth(65)
|
148
|
+
rect.setTop(5)
|
149
|
+
return rect
|
150
|
+
end
|
151
|
+
|
152
|
+
def mouseDoubleClickEvent(event)
|
153
|
+
begin
|
154
|
+
pin = self.instance_variable_get('@UPin')
|
155
|
+
pin.setColor
|
156
|
+
pin.instance_variable_get('@api').signalHelpingWiring(pin.instance_variable_get('@signalId'))
|
157
|
+
pin.instance_variable_get('@signalTxt').clearFocus
|
158
|
+
pin.instance_variable_get('@nbrTxt').clearFocus
|
159
|
+
rescue
|
160
|
+
pin.instance_variable_get('@api').setWiringLeds(0x0000000000000000)
|
161
|
+
pin.instance_variable_get('@signalTxt').clearFocus
|
162
|
+
pin.instance_variable_get('@nbrTxt').clearFocus
|
163
|
+
Qt::MessageBox.new(Qt::MessageBox::Critical, 'Signal not found', 'This signal is not handled by the board').exec
|
164
|
+
end
|
165
|
+
end
|
166
|
+
|
167
|
+
def mousePressEvent(event)
|
168
|
+
begin
|
169
|
+
pin = self.instance_variable_get('@UPin')
|
170
|
+
pin.setColor
|
171
|
+
pin.instance_variable_get('@api').signalHelpingWiring(pin.instance_variable_get('@signalId'))
|
172
|
+
pin.instance_variable_get('@signalTxt').clearFocus
|
173
|
+
pin.instance_variable_get('@nbrTxt').clearFocus
|
174
|
+
rescue
|
175
|
+
pin.instance_variable_get('@api').setWiringLeds(0x0000000000000000)
|
176
|
+
pin.instance_variable_get('@signalTxt').clearFocus
|
177
|
+
pin.instance_variable_get('@nbrTxt').clearFocus
|
178
|
+
Qt::MessageBox.new(Qt::MessageBox::Critical, 'Signal not found', 'This signal is not handled by the board').exec
|
179
|
+
end
|
180
|
+
end
|
181
|
+
end
|
182
|
+
|
183
|
+
#
|
184
|
+
# UniqPin - Contain all data linked to one pin on the graphic
|
185
|
+
#
|
186
|
+
class UniqPin
|
187
|
+
def initialize(scene, pinNum, pinChip, xSig, ySig, xNum, yNum, xRect, yRect, wRect, hRect, rotation, api)
|
188
|
+
currentPin = Pin.where(pin_number: pinNum, pin_chip: pinChip).pluck(:pin_signal)[0]
|
189
|
+
currentSignal = Signall.where(signal_id: currentPin).pluck(:signal_name)[0]
|
190
|
+
# Set the signal id
|
191
|
+
@signalId = currentSignal
|
192
|
+
|
193
|
+
@api = api
|
194
|
+
# Signal text
|
195
|
+
@signalTxt = CustomItem.new(currentSignal)
|
196
|
+
@signalTxt.cursor = Qt::Cursor.new(Qt::PointingHandCursor)
|
197
|
+
@signalTxt.setPin(self)
|
198
|
+
@signalTxt.setTextInteractionFlags(Qt::TextSelectableByMouse)
|
199
|
+
@signalTxt.setX(xSig)
|
200
|
+
@signalTxt.setY(ySig)
|
201
|
+
if rotation
|
202
|
+
@signalTxt.rotation = 270.00
|
203
|
+
end
|
204
|
+
scene.addItem(@signalTxt)
|
205
|
+
|
206
|
+
# Number text
|
207
|
+
@nbrTxt = CustomItem.new(pinNum.to_s)
|
208
|
+
@nbrTxt.cursor = Qt::Cursor.new(Qt::PointingHandCursor)
|
209
|
+
@nbrTxt.setPin(self)
|
210
|
+
@nbrTxt.setTextInteractionFlags(Qt::TextSelectableByMouse)
|
211
|
+
@nbrTxt.setX(xNum)
|
212
|
+
@nbrTxt.setY(yNum)
|
213
|
+
if rotation
|
214
|
+
@nbrTxt.rotation = 270.00
|
215
|
+
end
|
216
|
+
scene.addItem(@nbrTxt)
|
217
|
+
|
218
|
+
# Pin graphic
|
219
|
+
@pinGraphItem = scene.addRect(xRect, yRect, wRect, hRect)
|
220
|
+
end
|
221
|
+
|
222
|
+
def setColor
|
223
|
+
# Colors
|
224
|
+
@on = Qt::Color.new(0, 0, 255)
|
225
|
+
@off = Qt::Color.new(0, 0, 0)
|
226
|
+
# Disable the pin if a pin is already enabled
|
227
|
+
unless $pinEnabled.nil?
|
228
|
+
$pinEnabled.unsetColor
|
229
|
+
end
|
230
|
+
# Light the new pin
|
231
|
+
@nbrTxt.setDefaultTextColor(@on)
|
232
|
+
@signalTxt.setDefaultTextColor(@on)
|
233
|
+
@bold = Qt::Font.new
|
234
|
+
@bold.setBold(true)
|
235
|
+
@signalTxt.setFont(@bold)
|
236
|
+
$pinEnabled = self
|
237
|
+
end
|
238
|
+
|
239
|
+
def unsetColor
|
240
|
+
@nbrTxt.setDefaultTextColor(@off)
|
241
|
+
@signalTxt.setDefaultTextColor(@off)
|
242
|
+
@bold.setBold(false)
|
243
|
+
@signalTxt.setFont(@bold)
|
244
|
+
end
|
245
|
+
|
246
|
+
end
|
@@ -0,0 +1,125 @@
|
|
1
|
+
#===================================================
|
2
|
+
# Hardsploit GUI - By Opale Security
|
3
|
+
# www.opale-security.com || www.hardsploit.io
|
4
|
+
# License: GNU General Public License v3
|
5
|
+
# License URI: http://www.gnu.org/licenses/gpl.txt
|
6
|
+
#===================================================
|
7
|
+
|
8
|
+
require 'sqlite3'
|
9
|
+
require 'active_record'
|
10
|
+
|
11
|
+
ActiveRecord::Base.establish_connection(
|
12
|
+
:adapter => 'sqlite3',
|
13
|
+
:database => File.expand_path(File.dirname(__FILE__)) + '/hs.db'
|
14
|
+
)
|
15
|
+
|
16
|
+
class Package < ActiveRecord::Base
|
17
|
+
self.table_name = "HS_PACKAGE"
|
18
|
+
has_many :chips,
|
19
|
+
foreign_key: "chip_package",
|
20
|
+
:dependent => :delete_all
|
21
|
+
end
|
22
|
+
|
23
|
+
class Manufacturer < ActiveRecord::Base
|
24
|
+
self.table_name = "HS_MANUFACTURER"
|
25
|
+
validates :manufacturer_name, uniqueness: true
|
26
|
+
has_many :chips,
|
27
|
+
foreign_key: "chip_manufacturer",
|
28
|
+
:dependent => :delete_all
|
29
|
+
end
|
30
|
+
|
31
|
+
class CType < ActiveRecord::Base
|
32
|
+
self.table_name = "HS_CHIP_TYPE"
|
33
|
+
validates :cType_name, uniqueness: true
|
34
|
+
has_many :chips,
|
35
|
+
foreign_key: "chip_type",
|
36
|
+
:dependent => :delete_all
|
37
|
+
end
|
38
|
+
|
39
|
+
class Chip < ActiveRecord::Base
|
40
|
+
self.table_name = "HS_CHIP"
|
41
|
+
belongs_to :package
|
42
|
+
belongs_to :manufacturer,
|
43
|
+
foreign_key: "chip_manufacturer"
|
44
|
+
belongs_to :ctype,
|
45
|
+
class_name: "CType",
|
46
|
+
foreign_key: "chip_type"
|
47
|
+
has_many :pin,
|
48
|
+
foreign_key: "pin_chip",
|
49
|
+
:dependent => :delete_all
|
50
|
+
has_many :cmd,
|
51
|
+
foreign_key: "cmd_chip",
|
52
|
+
:dependent => :delete_all
|
53
|
+
end
|
54
|
+
|
55
|
+
class Parallel < ActiveRecord::Base
|
56
|
+
self.table_name = "HS_PARAM_PARA"
|
57
|
+
belongs_to :chip,
|
58
|
+
class_name: "Chip",
|
59
|
+
foreign_key: "parallel_chip"
|
60
|
+
end
|
61
|
+
|
62
|
+
class Spi < ActiveRecord::Base
|
63
|
+
self.table_name = "HS_PARAM_SPI"
|
64
|
+
belongs_to :chip,
|
65
|
+
class_name: "Chip",
|
66
|
+
foreign_key: "spi_chip"
|
67
|
+
end
|
68
|
+
|
69
|
+
class I2C < ActiveRecord::Base
|
70
|
+
self.table_name = "HS_PARAM_I2C"
|
71
|
+
belongs_to :chip,
|
72
|
+
class_name: "Chip",
|
73
|
+
foreign_key: "i2c_chip"
|
74
|
+
end
|
75
|
+
|
76
|
+
class Pin < ActiveRecord::Base
|
77
|
+
self.table_name = "HS_PIN"
|
78
|
+
belongs_to :chip
|
79
|
+
belongs_to :signall,
|
80
|
+
class_name: "Signall",
|
81
|
+
foreign_key: "pin_signal"
|
82
|
+
end
|
83
|
+
|
84
|
+
class Signall < ActiveRecord::Base
|
85
|
+
self.table_name = "HS_SIGNAL"
|
86
|
+
has_many :use,
|
87
|
+
class_name: "Use",
|
88
|
+
foreign_key: "signal_id"
|
89
|
+
has_many :bus, through: :use
|
90
|
+
has_many :pin
|
91
|
+
end
|
92
|
+
|
93
|
+
class Use < ActiveRecord::Base
|
94
|
+
self.table_name = "HS_USE"
|
95
|
+
belongs_to :signall,
|
96
|
+
class_name: "Signall",
|
97
|
+
foreign_key: "signal_id"
|
98
|
+
belongs_to :bus,
|
99
|
+
class_name: "Bus",
|
100
|
+
foreign_key: "bus_id"
|
101
|
+
end
|
102
|
+
|
103
|
+
class Bus < ActiveRecord::Base
|
104
|
+
self.table_name = "HS_BUS"
|
105
|
+
has_many :signall, through: :use
|
106
|
+
has_many :cmd
|
107
|
+
end
|
108
|
+
|
109
|
+
class Cmd < ActiveRecord::Base
|
110
|
+
self.table_name = "HS_CMD"
|
111
|
+
has_many :byte,
|
112
|
+
foreign_key: "byte_cmd",
|
113
|
+
:dependent => :delete_all
|
114
|
+
belongs_to :bus,
|
115
|
+
class_name: "Bus",
|
116
|
+
foreign_key: "cmd_bus"
|
117
|
+
belongs_to :chip
|
118
|
+
end
|
119
|
+
|
120
|
+
class Byte < ActiveRecord::Base
|
121
|
+
self.table_name = "HS_CMD_BYTE"
|
122
|
+
belongs_to :cmd,
|
123
|
+
class_name: "Cmd",
|
124
|
+
foreign_key: "byte_cmd"
|
125
|
+
end
|
data/lib/db/hs.db
ADDED
Binary file
|
@@ -0,0 +1,355 @@
|
|
1
|
+
=begin
|
2
|
+
** Form generated from reading ui file 'gui_chip_editor.ui'
|
3
|
+
**
|
4
|
+
** Created: mar. déc. 22 16:54:43 2015
|
5
|
+
** by: Qt User Interface Compiler version 4.8.6
|
6
|
+
**
|
7
|
+
** WARNING! All changes made in this file will be lost when recompiling ui file!
|
8
|
+
=end
|
9
|
+
|
10
|
+
class Ui_Chip_editor
|
11
|
+
attr_reader :gridLayout
|
12
|
+
attr_reader :tbl_pins
|
13
|
+
attr_reader :lbl_advice
|
14
|
+
attr_reader :hl
|
15
|
+
attr_reader :hs
|
16
|
+
attr_reader :btn_cancel
|
17
|
+
attr_reader :btn_add
|
18
|
+
attr_reader :vl
|
19
|
+
attr_reader :fl
|
20
|
+
attr_reader :lbl_ref
|
21
|
+
attr_reader :lbl_package
|
22
|
+
attr_reader :hl1
|
23
|
+
attr_reader :cbx_package
|
24
|
+
attr_reader :btn_pack_remove
|
25
|
+
attr_reader :lbl_pack_new
|
26
|
+
attr_reader :lbl_name
|
27
|
+
attr_reader :lie_pack_name
|
28
|
+
attr_reader :lbl_pack_pin
|
29
|
+
attr_reader :lie_pack_pin
|
30
|
+
attr_reader :lbl_pack_shape
|
31
|
+
attr_reader :lie_reference
|
32
|
+
attr_reader :hl2
|
33
|
+
attr_reader :groupBox
|
34
|
+
attr_reader :rbn_3v
|
35
|
+
attr_reader :rbn_5v
|
36
|
+
attr_reader :lbl_voltage
|
37
|
+
attr_reader :hl3
|
38
|
+
attr_reader :groupBox_2
|
39
|
+
attr_reader :rbn_square
|
40
|
+
attr_reader :rbn_rectangular
|
41
|
+
attr_reader :lbl_manu
|
42
|
+
attr_reader :lie_manu_name
|
43
|
+
attr_reader :lbl_type
|
44
|
+
attr_reader :hl5
|
45
|
+
attr_reader :cbx_type
|
46
|
+
attr_reader :btn_type_remove
|
47
|
+
attr_reader :lie_type_name
|
48
|
+
attr_reader :lbl_description
|
49
|
+
attr_reader :lie_description
|
50
|
+
attr_reader :hl4
|
51
|
+
attr_reader :cbx_manufacturer
|
52
|
+
attr_reader :btn_manu_remove
|
53
|
+
|
54
|
+
def setupUi(chip_editor)
|
55
|
+
if chip_editor.objectName.nil?
|
56
|
+
chip_editor.objectName = "chip_editor"
|
57
|
+
end
|
58
|
+
chip_editor.resize(414, 594)
|
59
|
+
@gridLayout = Qt::GridLayout.new(chip_editor)
|
60
|
+
@gridLayout.objectName = "gridLayout"
|
61
|
+
@tbl_pins = Qt::TableWidget.new(chip_editor)
|
62
|
+
@tbl_pins.objectName = "tbl_pins"
|
63
|
+
@tbl_pins.minimumSize = Qt::Size.new(0, 200)
|
64
|
+
@tbl_pins.maximumSize = Qt::Size.new(16777215, 16777215)
|
65
|
+
|
66
|
+
@gridLayout.addWidget(@tbl_pins, 1, 0, 1, 1)
|
67
|
+
|
68
|
+
@lbl_advice = Qt::Label.new(chip_editor)
|
69
|
+
@lbl_advice.objectName = "lbl_advice"
|
70
|
+
|
71
|
+
@gridLayout.addWidget(@lbl_advice, 2, 0, 1, 1)
|
72
|
+
|
73
|
+
@hl = Qt::HBoxLayout.new()
|
74
|
+
@hl.objectName = "hl"
|
75
|
+
@hs = Qt::SpacerItem.new(40, 20, Qt::SizePolicy::Expanding, Qt::SizePolicy::Minimum)
|
76
|
+
|
77
|
+
@hl.addItem(@hs)
|
78
|
+
|
79
|
+
@btn_cancel = Qt::PushButton.new(chip_editor)
|
80
|
+
@btn_cancel.objectName = "btn_cancel"
|
81
|
+
|
82
|
+
@hl.addWidget(@btn_cancel)
|
83
|
+
|
84
|
+
@btn_add = Qt::PushButton.new(chip_editor)
|
85
|
+
@btn_add.objectName = "btn_add"
|
86
|
+
|
87
|
+
@hl.addWidget(@btn_add)
|
88
|
+
|
89
|
+
|
90
|
+
@gridLayout.addLayout(@hl, 3, 0, 1, 1)
|
91
|
+
|
92
|
+
@vl = Qt::VBoxLayout.new()
|
93
|
+
@vl.objectName = "vl"
|
94
|
+
@fl = Qt::FormLayout.new()
|
95
|
+
@fl.objectName = "fl"
|
96
|
+
@lbl_ref = Qt::Label.new(chip_editor)
|
97
|
+
@lbl_ref.objectName = "lbl_ref"
|
98
|
+
|
99
|
+
@fl.setWidget(0, Qt::FormLayout::LabelRole, @lbl_ref)
|
100
|
+
|
101
|
+
@lbl_package = Qt::Label.new(chip_editor)
|
102
|
+
@lbl_package.objectName = "lbl_package"
|
103
|
+
|
104
|
+
@fl.setWidget(7, Qt::FormLayout::LabelRole, @lbl_package)
|
105
|
+
|
106
|
+
@hl1 = Qt::HBoxLayout.new()
|
107
|
+
@hl1.objectName = "hl1"
|
108
|
+
@cbx_package = Qt::ComboBox.new(chip_editor)
|
109
|
+
@cbx_package.objectName = "cbx_package"
|
110
|
+
|
111
|
+
@hl1.addWidget(@cbx_package)
|
112
|
+
|
113
|
+
@btn_pack_remove = Qt::PushButton.new(chip_editor)
|
114
|
+
@btn_pack_remove.objectName = "btn_pack_remove"
|
115
|
+
@btn_pack_remove.maximumSize = Qt::Size.new(30, 16777215)
|
116
|
+
|
117
|
+
@hl1.addWidget(@btn_pack_remove)
|
118
|
+
|
119
|
+
|
120
|
+
@fl.setLayout(7, Qt::FormLayout::FieldRole, @hl1)
|
121
|
+
|
122
|
+
@lbl_pack_new = Qt::Label.new(chip_editor)
|
123
|
+
@lbl_pack_new.objectName = "lbl_pack_new"
|
124
|
+
|
125
|
+
@fl.setWidget(10, Qt::FormLayout::LabelRole, @lbl_pack_new)
|
126
|
+
|
127
|
+
@lbl_name = Qt::Label.new(chip_editor)
|
128
|
+
@lbl_name.objectName = "lbl_name"
|
129
|
+
|
130
|
+
@fl.setWidget(11, Qt::FormLayout::LabelRole, @lbl_name)
|
131
|
+
|
132
|
+
@lie_pack_name = Qt::LineEdit.new(chip_editor)
|
133
|
+
@lie_pack_name.objectName = "lie_pack_name"
|
134
|
+
@lie_pack_name.maxLength = 30
|
135
|
+
|
136
|
+
@fl.setWidget(11, Qt::FormLayout::FieldRole, @lie_pack_name)
|
137
|
+
|
138
|
+
@lbl_pack_pin = Qt::Label.new(chip_editor)
|
139
|
+
@lbl_pack_pin.objectName = "lbl_pack_pin"
|
140
|
+
|
141
|
+
@fl.setWidget(12, Qt::FormLayout::LabelRole, @lbl_pack_pin)
|
142
|
+
|
143
|
+
@lie_pack_pin = Qt::LineEdit.new(chip_editor)
|
144
|
+
@lie_pack_pin.objectName = "lie_pack_pin"
|
145
|
+
@lie_pack_pin.maxLength = 3
|
146
|
+
|
147
|
+
@fl.setWidget(12, Qt::FormLayout::FieldRole, @lie_pack_pin)
|
148
|
+
|
149
|
+
@lbl_pack_shape = Qt::Label.new(chip_editor)
|
150
|
+
@lbl_pack_shape.objectName = "lbl_pack_shape"
|
151
|
+
|
152
|
+
@fl.setWidget(13, Qt::FormLayout::LabelRole, @lbl_pack_shape)
|
153
|
+
|
154
|
+
@lie_reference = Qt::LineEdit.new(chip_editor)
|
155
|
+
@lie_reference.objectName = "lie_reference"
|
156
|
+
@lie_reference.maxLength = 30
|
157
|
+
|
158
|
+
@fl.setWidget(0, Qt::FormLayout::FieldRole, @lie_reference)
|
159
|
+
|
160
|
+
@hl2 = Qt::HBoxLayout.new()
|
161
|
+
@hl2.objectName = "hl2"
|
162
|
+
@groupBox = Qt::GroupBox.new(chip_editor)
|
163
|
+
@groupBox.objectName = "groupBox"
|
164
|
+
@rbn_3v = Qt::RadioButton.new(@groupBox)
|
165
|
+
@rbn_3v.objectName = "rbn_3v"
|
166
|
+
@rbn_3v.geometry = Qt::Rect.new(10, 0, 70, 21)
|
167
|
+
@rbn_3v.checked = true
|
168
|
+
@rbn_3v.autoExclusive = true
|
169
|
+
@rbn_5v = Qt::RadioButton.new(@groupBox)
|
170
|
+
@rbn_5v.objectName = "rbn_5v"
|
171
|
+
@rbn_5v.geometry = Qt::Rect.new(90, 0, 109, 21)
|
172
|
+
@rbn_5v.autoExclusive = true
|
173
|
+
|
174
|
+
@hl2.addWidget(@groupBox)
|
175
|
+
|
176
|
+
|
177
|
+
@fl.setLayout(2, Qt::FormLayout::FieldRole, @hl2)
|
178
|
+
|
179
|
+
@lbl_voltage = Qt::Label.new(chip_editor)
|
180
|
+
@lbl_voltage.objectName = "lbl_voltage"
|
181
|
+
|
182
|
+
@fl.setWidget(2, Qt::FormLayout::LabelRole, @lbl_voltage)
|
183
|
+
|
184
|
+
@hl3 = Qt::HBoxLayout.new()
|
185
|
+
@hl3.objectName = "hl3"
|
186
|
+
@groupBox_2 = Qt::GroupBox.new(chip_editor)
|
187
|
+
@groupBox_2.objectName = "groupBox_2"
|
188
|
+
@rbn_square = Qt::RadioButton.new(@groupBox_2)
|
189
|
+
@rbn_square.objectName = "rbn_square"
|
190
|
+
@rbn_square.geometry = Qt::Rect.new(10, 0, 81, 20)
|
191
|
+
@rbn_square.checked = true
|
192
|
+
@rbn_square.autoExclusive = true
|
193
|
+
@rbn_rectangular = Qt::RadioButton.new(@groupBox_2)
|
194
|
+
@rbn_rectangular.objectName = "rbn_rectangular"
|
195
|
+
@rbn_rectangular.geometry = Qt::Rect.new(110, 0, 109, 20)
|
196
|
+
@rbn_rectangular.checked = false
|
197
|
+
@rbn_rectangular.autoExclusive = true
|
198
|
+
|
199
|
+
@hl3.addWidget(@groupBox_2)
|
200
|
+
|
201
|
+
|
202
|
+
@fl.setLayout(13, Qt::FormLayout::FieldRole, @hl3)
|
203
|
+
|
204
|
+
@lbl_manu = Qt::Label.new(chip_editor)
|
205
|
+
@lbl_manu.objectName = "lbl_manu"
|
206
|
+
|
207
|
+
@fl.setWidget(3, Qt::FormLayout::LabelRole, @lbl_manu)
|
208
|
+
|
209
|
+
@lie_manu_name = Qt::LineEdit.new(chip_editor)
|
210
|
+
@lie_manu_name.objectName = "lie_manu_name"
|
211
|
+
@lie_manu_name.maxLength = 30
|
212
|
+
|
213
|
+
@fl.setWidget(4, Qt::FormLayout::FieldRole, @lie_manu_name)
|
214
|
+
|
215
|
+
@lbl_type = Qt::Label.new(chip_editor)
|
216
|
+
@lbl_type.objectName = "lbl_type"
|
217
|
+
|
218
|
+
@fl.setWidget(5, Qt::FormLayout::LabelRole, @lbl_type)
|
219
|
+
|
220
|
+
@hl5 = Qt::HBoxLayout.new()
|
221
|
+
@hl5.objectName = "hl5"
|
222
|
+
@cbx_type = Qt::ComboBox.new(chip_editor)
|
223
|
+
@cbx_type.objectName = "cbx_type"
|
224
|
+
|
225
|
+
@hl5.addWidget(@cbx_type)
|
226
|
+
|
227
|
+
@btn_type_remove = Qt::PushButton.new(chip_editor)
|
228
|
+
@btn_type_remove.objectName = "btn_type_remove"
|
229
|
+
@btn_type_remove.maximumSize = Qt::Size.new(30, 16777215)
|
230
|
+
|
231
|
+
@hl5.addWidget(@btn_type_remove)
|
232
|
+
|
233
|
+
|
234
|
+
@fl.setLayout(5, Qt::FormLayout::FieldRole, @hl5)
|
235
|
+
|
236
|
+
@lie_type_name = Qt::LineEdit.new(chip_editor)
|
237
|
+
@lie_type_name.objectName = "lie_type_name"
|
238
|
+
@lie_type_name.maxLength = 30
|
239
|
+
|
240
|
+
@fl.setWidget(6, Qt::FormLayout::FieldRole, @lie_type_name)
|
241
|
+
|
242
|
+
@lbl_description = Qt::Label.new(chip_editor)
|
243
|
+
@lbl_description.objectName = "lbl_description"
|
244
|
+
|
245
|
+
@fl.setWidget(1, Qt::FormLayout::LabelRole, @lbl_description)
|
246
|
+
|
247
|
+
@lie_description = Qt::LineEdit.new(chip_editor)
|
248
|
+
@lie_description.objectName = "lie_description"
|
249
|
+
@lie_description.maxLength = 200
|
250
|
+
|
251
|
+
@fl.setWidget(1, Qt::FormLayout::FieldRole, @lie_description)
|
252
|
+
|
253
|
+
@hl4 = Qt::HBoxLayout.new()
|
254
|
+
@hl4.objectName = "hl4"
|
255
|
+
@cbx_manufacturer = Qt::ComboBox.new(chip_editor)
|
256
|
+
@cbx_manufacturer.objectName = "cbx_manufacturer"
|
257
|
+
|
258
|
+
@hl4.addWidget(@cbx_manufacturer)
|
259
|
+
|
260
|
+
@btn_manu_remove = Qt::PushButton.new(chip_editor)
|
261
|
+
@btn_manu_remove.objectName = "btn_manu_remove"
|
262
|
+
@btn_manu_remove.maximumSize = Qt::Size.new(30, 16777215)
|
263
|
+
|
264
|
+
@hl4.addWidget(@btn_manu_remove)
|
265
|
+
|
266
|
+
|
267
|
+
@fl.setLayout(3, Qt::FormLayout::FieldRole, @hl4)
|
268
|
+
|
269
|
+
|
270
|
+
@vl.addLayout(@fl)
|
271
|
+
|
272
|
+
|
273
|
+
@gridLayout.addLayout(@vl, 0, 0, 1, 1)
|
274
|
+
|
275
|
+
|
276
|
+
retranslateUi(chip_editor)
|
277
|
+
Qt::Object.connect(@lie_pack_pin, SIGNAL('editingFinished()'), chip_editor, SLOT('fill_pin_table()'))
|
278
|
+
Qt::Object.connect(@btn_manu_remove, SIGNAL('clicked()'), chip_editor, SLOT('delete_cbx_element()'))
|
279
|
+
Qt::Object.connect(@btn_type_remove, SIGNAL('clicked()'), chip_editor, SLOT('delete_cbx_element()'))
|
280
|
+
Qt::Object.connect(@btn_pack_remove, SIGNAL('clicked()'), chip_editor, SLOT('delete_cbx_element()'))
|
281
|
+
Qt::Object.connect(@cbx_package, SIGNAL('currentIndexChanged(int)'), chip_editor, SLOT('select_package()'))
|
282
|
+
Qt::Object.connect(@cbx_type, SIGNAL('currentIndexChanged(int)'), chip_editor, SLOT('select_type()'))
|
283
|
+
Qt::Object.connect(@cbx_manufacturer, SIGNAL('currentIndexChanged(int)'), chip_editor, SLOT('select_manufacturer()'))
|
284
|
+
Qt::Object.connect(@btn_cancel, SIGNAL('clicked()'), chip_editor, SLOT('close()'))
|
285
|
+
|
286
|
+
Qt::MetaObject.connectSlotsByName(chip_editor)
|
287
|
+
end # setupUi
|
288
|
+
|
289
|
+
def setup_ui(chip_editor)
|
290
|
+
setupUi(chip_editor)
|
291
|
+
end
|
292
|
+
|
293
|
+
def retranslateUi(chip_editor)
|
294
|
+
chip_editor.windowTitle = Qt::Application.translate("Chip_editor", "Hardsploit - Chip editor", nil, Qt::Application::UnicodeUTF8)
|
295
|
+
if @tbl_pins.columnCount < 3
|
296
|
+
@tbl_pins.columnCount = 3
|
297
|
+
end
|
298
|
+
|
299
|
+
__colItem = Qt::TableWidgetItem.new
|
300
|
+
__colItem.setText(Qt::Application.translate("Chip_editor", "Pin Number", nil, Qt::Application::UnicodeUTF8))
|
301
|
+
@tbl_pins.setHorizontalHeaderItem(0, __colItem)
|
302
|
+
|
303
|
+
__colItem1 = Qt::TableWidgetItem.new
|
304
|
+
__colItem1.setText(Qt::Application.translate("Chip_editor", "Bus", nil, Qt::Application::UnicodeUTF8))
|
305
|
+
@tbl_pins.setHorizontalHeaderItem(1, __colItem1)
|
306
|
+
|
307
|
+
__colItem2 = Qt::TableWidgetItem.new
|
308
|
+
__colItem2.setText(Qt::Application.translate("Chip_editor", "Signal", nil, Qt::Application::UnicodeUTF8))
|
309
|
+
@tbl_pins.setHorizontalHeaderItem(2, __colItem2)
|
310
|
+
@lbl_advice.text = Qt::Application.translate("Chip_editor", "To complete this form, please report to the component datasheet.", nil, Qt::Application::UnicodeUTF8)
|
311
|
+
@btn_cancel.text = Qt::Application.translate("Chip_editor", "Cancel", nil, Qt::Application::UnicodeUTF8)
|
312
|
+
@btn_add.text = Qt::Application.translate("Chip_editor", "Add", nil, Qt::Application::UnicodeUTF8)
|
313
|
+
@lbl_ref.text = Qt::Application.translate("Chip_editor", "Name / Reference:", nil, Qt::Application::UnicodeUTF8)
|
314
|
+
@lbl_package.text = Qt::Application.translate("Chip_editor", "Package:", nil, Qt::Application::UnicodeUTF8)
|
315
|
+
@cbx_package.insertItems(0, [Qt::Application.translate("Chip_editor", "Select...", nil, Qt::Application::UnicodeUTF8)])
|
316
|
+
@btn_pack_remove.text = Qt::Application.translate("Chip_editor", "X", nil, Qt::Application::UnicodeUTF8)
|
317
|
+
@lbl_pack_new.text = Qt::Application.translate("Chip_editor", "Not in the list ? Create a new one", nil, Qt::Application::UnicodeUTF8)
|
318
|
+
@lbl_name.text = Qt::Application.translate("Chip_editor", "Package name:", nil, Qt::Application::UnicodeUTF8)
|
319
|
+
@lie_pack_name.placeholderText = Qt::Application.translate("Chip_editor", "30 chars max", nil, Qt::Application::UnicodeUTF8)
|
320
|
+
@lbl_pack_pin.text = Qt::Application.translate("Chip_editor", "Package pin number:", nil, Qt::Application::UnicodeUTF8)
|
321
|
+
@lie_pack_pin.inputMask = ''
|
322
|
+
@lie_pack_pin.placeholderText = Qt::Application.translate("Chip_editor", "4-144", nil, Qt::Application::UnicodeUTF8)
|
323
|
+
@lbl_pack_shape.text = Qt::Application.translate("Chip_editor", "Package shape:", nil, Qt::Application::UnicodeUTF8)
|
324
|
+
@lie_reference.placeholderText = Qt::Application.translate("Chip_editor", "30 chars max", nil, Qt::Application::UnicodeUTF8)
|
325
|
+
@groupBox.title = ''
|
326
|
+
@rbn_3v.text = Qt::Application.translate("Chip_editor", "3,3V", nil, Qt::Application::UnicodeUTF8)
|
327
|
+
@rbn_5v.text = Qt::Application.translate("Chip_editor", "5V", nil, Qt::Application::UnicodeUTF8)
|
328
|
+
@lbl_voltage.text = Qt::Application.translate("Chip_editor", "Voltage:", nil, Qt::Application::UnicodeUTF8)
|
329
|
+
@groupBox_2.title = ''
|
330
|
+
@rbn_square.text = Qt::Application.translate("Chip_editor", "Square", nil, Qt::Application::UnicodeUTF8)
|
331
|
+
@rbn_rectangular.text = Qt::Application.translate("Chip_editor", "Rectangular", nil, Qt::Application::UnicodeUTF8)
|
332
|
+
@lbl_manu.text = Qt::Application.translate("Chip_editor", "Manufacturer:", nil, Qt::Application::UnicodeUTF8)
|
333
|
+
@lie_manu_name.placeholderText = Qt::Application.translate("Chip_editor", "Other...", nil, Qt::Application::UnicodeUTF8)
|
334
|
+
@lbl_type.text = Qt::Application.translate("Chip_editor", "Type:", nil, Qt::Application::UnicodeUTF8)
|
335
|
+
@cbx_type.insertItems(0, [Qt::Application.translate("Chip_editor", "Select...", nil, Qt::Application::UnicodeUTF8)])
|
336
|
+
@btn_type_remove.text = Qt::Application.translate("Chip_editor", "X", nil, Qt::Application::UnicodeUTF8)
|
337
|
+
@lie_type_name.text = ''
|
338
|
+
@lie_type_name.placeholderText = Qt::Application.translate("Chip_editor", "Other...", nil, Qt::Application::UnicodeUTF8)
|
339
|
+
@lbl_description.text = Qt::Application.translate("Chip_editor", "Description:", nil, Qt::Application::UnicodeUTF8)
|
340
|
+
@lie_description.placeholderText = Qt::Application.translate("Chip_editor", "200 chars max", nil, Qt::Application::UnicodeUTF8)
|
341
|
+
@cbx_manufacturer.insertItems(0, [Qt::Application.translate("Chip_editor", "Select...", nil, Qt::Application::UnicodeUTF8)])
|
342
|
+
@btn_manu_remove.text = Qt::Application.translate("Chip_editor", "X", nil, Qt::Application::UnicodeUTF8)
|
343
|
+
end # retranslateUi
|
344
|
+
|
345
|
+
def retranslate_ui(chip_editor)
|
346
|
+
retranslateUi(chip_editor)
|
347
|
+
end
|
348
|
+
|
349
|
+
end
|
350
|
+
|
351
|
+
module Ui
|
352
|
+
class Chip_editor < Ui_Chip_editor
|
353
|
+
end
|
354
|
+
end # module Ui
|
355
|
+
|