hardsploit_gui 2.0
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 +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,347 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<ui version="4.0">
|
3
|
+
<class>Command_editor</class>
|
4
|
+
<widget class="QWidget" name="Command_editor">
|
5
|
+
<property name="geometry">
|
6
|
+
<rect>
|
7
|
+
<x>0</x>
|
8
|
+
<y>0</y>
|
9
|
+
<width>540</width>
|
10
|
+
<height>440</height>
|
11
|
+
</rect>
|
12
|
+
</property>
|
13
|
+
<property name="windowTitle">
|
14
|
+
<string>Hardsploit - Command editor</string>
|
15
|
+
</property>
|
16
|
+
<layout class="QGridLayout" name="gridLayout">
|
17
|
+
<item row="0" column="0">
|
18
|
+
<layout class="QVBoxLayout" name="vl">
|
19
|
+
<item>
|
20
|
+
<layout class="QVBoxLayout" name="vl2">
|
21
|
+
<item>
|
22
|
+
<layout class="QFormLayout" name="fl">
|
23
|
+
<item row="2" column="0">
|
24
|
+
<widget class="QLabel" name="lbl_chip">
|
25
|
+
<property name="text">
|
26
|
+
<string>Current chip:</string>
|
27
|
+
</property>
|
28
|
+
</widget>
|
29
|
+
</item>
|
30
|
+
<item row="2" column="1">
|
31
|
+
<widget class="QLabel" name="lbl_chip_val">
|
32
|
+
<property name="text">
|
33
|
+
<string>[CHIP]</string>
|
34
|
+
</property>
|
35
|
+
</widget>
|
36
|
+
</item>
|
37
|
+
<item row="3" column="0">
|
38
|
+
<widget class="QLabel" name="lbl_cmd">
|
39
|
+
<property name="text">
|
40
|
+
<string>Current command:</string>
|
41
|
+
</property>
|
42
|
+
</widget>
|
43
|
+
</item>
|
44
|
+
<item row="3" column="1">
|
45
|
+
<widget class="QLabel" name="lbl_cmd_val">
|
46
|
+
<property name="text">
|
47
|
+
<string>[CMD]</string>
|
48
|
+
</property>
|
49
|
+
</widget>
|
50
|
+
</item>
|
51
|
+
<item row="6" column="0">
|
52
|
+
<widget class="QLabel" name="lbl_name">
|
53
|
+
<property name="text">
|
54
|
+
<string>Name:</string>
|
55
|
+
</property>
|
56
|
+
</widget>
|
57
|
+
</item>
|
58
|
+
<item row="6" column="1">
|
59
|
+
<widget class="QLineEdit" name="lie_name">
|
60
|
+
<property name="maximumSize">
|
61
|
+
<size>
|
62
|
+
<width>300</width>
|
63
|
+
<height>16777215</height>
|
64
|
+
</size>
|
65
|
+
</property>
|
66
|
+
<property name="inputMask">
|
67
|
+
<string/>
|
68
|
+
</property>
|
69
|
+
<property name="maxLength">
|
70
|
+
<number>25</number>
|
71
|
+
</property>
|
72
|
+
</widget>
|
73
|
+
</item>
|
74
|
+
<item row="7" column="0">
|
75
|
+
<widget class="QLabel" name="lbl_description">
|
76
|
+
<property name="text">
|
77
|
+
<string>Description:</string>
|
78
|
+
</property>
|
79
|
+
</widget>
|
80
|
+
</item>
|
81
|
+
<item row="7" column="1">
|
82
|
+
<widget class="QLineEdit" name="lie_description">
|
83
|
+
<property name="maximumSize">
|
84
|
+
<size>
|
85
|
+
<width>300</width>
|
86
|
+
<height>16777215</height>
|
87
|
+
</size>
|
88
|
+
</property>
|
89
|
+
<property name="maxLength">
|
90
|
+
<number>200</number>
|
91
|
+
</property>
|
92
|
+
</widget>
|
93
|
+
</item>
|
94
|
+
</layout>
|
95
|
+
</item>
|
96
|
+
<item>
|
97
|
+
<layout class="QVBoxLayout" name="vl3">
|
98
|
+
<item>
|
99
|
+
<widget class="QLabel" name="label">
|
100
|
+
<property name="text">
|
101
|
+
<string>Command bytes array:</string>
|
102
|
+
</property>
|
103
|
+
</widget>
|
104
|
+
</item>
|
105
|
+
<item>
|
106
|
+
<widget class="QTableWidget" name="tbl_bytes">
|
107
|
+
<property name="font">
|
108
|
+
<font>
|
109
|
+
<family>Arial</family>
|
110
|
+
</font>
|
111
|
+
</property>
|
112
|
+
<property name="sortingEnabled">
|
113
|
+
<bool>true</bool>
|
114
|
+
</property>
|
115
|
+
<attribute name="horizontalHeaderVisible">
|
116
|
+
<bool>false</bool>
|
117
|
+
</attribute>
|
118
|
+
<attribute name="horizontalHeaderCascadingSectionResizes">
|
119
|
+
<bool>false</bool>
|
120
|
+
</attribute>
|
121
|
+
<attribute name="horizontalHeaderDefaultSectionSize">
|
122
|
+
<number>110</number>
|
123
|
+
</attribute>
|
124
|
+
<attribute name="horizontalHeaderMinimumSectionSize">
|
125
|
+
<number>36</number>
|
126
|
+
</attribute>
|
127
|
+
<attribute name="horizontalHeaderShowSortIndicator" stdset="0">
|
128
|
+
<bool>true</bool>
|
129
|
+
</attribute>
|
130
|
+
<attribute name="horizontalHeaderStretchLastSection">
|
131
|
+
<bool>true</bool>
|
132
|
+
</attribute>
|
133
|
+
<attribute name="verticalHeaderCascadingSectionResizes">
|
134
|
+
<bool>false</bool>
|
135
|
+
</attribute>
|
136
|
+
<attribute name="verticalHeaderDefaultSectionSize">
|
137
|
+
<number>30</number>
|
138
|
+
</attribute>
|
139
|
+
<attribute name="verticalHeaderStretchLastSection">
|
140
|
+
<bool>true</bool>
|
141
|
+
</attribute>
|
142
|
+
</widget>
|
143
|
+
</item>
|
144
|
+
<item>
|
145
|
+
<layout class="QHBoxLayout" name="hl2">
|
146
|
+
<item>
|
147
|
+
<widget class="QPushButton" name="btn_clone">
|
148
|
+
<property name="minimumSize">
|
149
|
+
<size>
|
150
|
+
<width>0</width>
|
151
|
+
<height>0</height>
|
152
|
+
</size>
|
153
|
+
</property>
|
154
|
+
<property name="maximumSize">
|
155
|
+
<size>
|
156
|
+
<width>16777215</width>
|
157
|
+
<height>16777215</height>
|
158
|
+
</size>
|
159
|
+
</property>
|
160
|
+
<property name="text">
|
161
|
+
<string>Clone</string>
|
162
|
+
</property>
|
163
|
+
</widget>
|
164
|
+
</item>
|
165
|
+
<item>
|
166
|
+
<widget class="QPushButton" name="btn_remove">
|
167
|
+
<property name="maximumSize">
|
168
|
+
<size>
|
169
|
+
<width>30</width>
|
170
|
+
<height>16777215</height>
|
171
|
+
</size>
|
172
|
+
</property>
|
173
|
+
<property name="text">
|
174
|
+
<string>-</string>
|
175
|
+
</property>
|
176
|
+
</widget>
|
177
|
+
</item>
|
178
|
+
<item>
|
179
|
+
<widget class="QPushButton" name="btn_add_row">
|
180
|
+
<property name="maximumSize">
|
181
|
+
<size>
|
182
|
+
<width>30</width>
|
183
|
+
<height>16777215</height>
|
184
|
+
</size>
|
185
|
+
</property>
|
186
|
+
<property name="text">
|
187
|
+
<string>+</string>
|
188
|
+
</property>
|
189
|
+
</widget>
|
190
|
+
</item>
|
191
|
+
<item>
|
192
|
+
<widget class="QLineEdit" name="lie_text_2_bytes">
|
193
|
+
<property name="maxLength">
|
194
|
+
<number>200</number>
|
195
|
+
</property>
|
196
|
+
<property name="placeholderText">
|
197
|
+
<string>Text to command bytes</string>
|
198
|
+
</property>
|
199
|
+
</widget>
|
200
|
+
</item>
|
201
|
+
<item>
|
202
|
+
<spacer name="horizontalSpacer">
|
203
|
+
<property name="orientation">
|
204
|
+
<enum>Qt::Horizontal</enum>
|
205
|
+
</property>
|
206
|
+
<property name="sizeHint" stdset="0">
|
207
|
+
<size>
|
208
|
+
<width>40</width>
|
209
|
+
<height>20</height>
|
210
|
+
</size>
|
211
|
+
</property>
|
212
|
+
</spacer>
|
213
|
+
</item>
|
214
|
+
</layout>
|
215
|
+
</item>
|
216
|
+
</layout>
|
217
|
+
</item>
|
218
|
+
</layout>
|
219
|
+
</item>
|
220
|
+
<item>
|
221
|
+
<layout class="QHBoxLayout" name="hl">
|
222
|
+
<item>
|
223
|
+
<spacer name="hs">
|
224
|
+
<property name="orientation">
|
225
|
+
<enum>Qt::Horizontal</enum>
|
226
|
+
</property>
|
227
|
+
<property name="sizeHint" stdset="0">
|
228
|
+
<size>
|
229
|
+
<width>40</width>
|
230
|
+
<height>20</height>
|
231
|
+
</size>
|
232
|
+
</property>
|
233
|
+
</spacer>
|
234
|
+
</item>
|
235
|
+
<item>
|
236
|
+
<widget class="QPushButton" name="btn_cancel">
|
237
|
+
<property name="text">
|
238
|
+
<string>Cancel</string>
|
239
|
+
</property>
|
240
|
+
</widget>
|
241
|
+
</item>
|
242
|
+
<item>
|
243
|
+
<widget class="QPushButton" name="btn_validate">
|
244
|
+
<property name="text">
|
245
|
+
<string>Add</string>
|
246
|
+
</property>
|
247
|
+
</widget>
|
248
|
+
</item>
|
249
|
+
</layout>
|
250
|
+
</item>
|
251
|
+
</layout>
|
252
|
+
</item>
|
253
|
+
</layout>
|
254
|
+
</widget>
|
255
|
+
<resources/>
|
256
|
+
<connections>
|
257
|
+
<connection>
|
258
|
+
<sender>btn_cancel</sender>
|
259
|
+
<signal>clicked()</signal>
|
260
|
+
<receiver>Command_editor</receiver>
|
261
|
+
<slot>close()</slot>
|
262
|
+
<hints>
|
263
|
+
<hint type="sourcelabel">
|
264
|
+
<x>439</x>
|
265
|
+
<y>420</y>
|
266
|
+
</hint>
|
267
|
+
<hint type="destinationlabel">
|
268
|
+
<x>517</x>
|
269
|
+
<y>287</y>
|
270
|
+
</hint>
|
271
|
+
</hints>
|
272
|
+
</connection>
|
273
|
+
<connection>
|
274
|
+
<sender>btn_clone</sender>
|
275
|
+
<signal>clicked()</signal>
|
276
|
+
<receiver>Command_editor</receiver>
|
277
|
+
<slot>clone_row()</slot>
|
278
|
+
<hints>
|
279
|
+
<hint type="sourcelabel">
|
280
|
+
<x>17</x>
|
281
|
+
<y>384</y>
|
282
|
+
</hint>
|
283
|
+
<hint type="destinationlabel">
|
284
|
+
<x>2</x>
|
285
|
+
<y>242</y>
|
286
|
+
</hint>
|
287
|
+
</hints>
|
288
|
+
</connection>
|
289
|
+
<connection>
|
290
|
+
<sender>btn_remove</sender>
|
291
|
+
<signal>clicked()</signal>
|
292
|
+
<receiver>Command_editor</receiver>
|
293
|
+
<slot>remove_row()</slot>
|
294
|
+
<hints>
|
295
|
+
<hint type="sourcelabel">
|
296
|
+
<x>106</x>
|
297
|
+
<y>383</y>
|
298
|
+
</hint>
|
299
|
+
<hint type="destinationlabel">
|
300
|
+
<x>3</x>
|
301
|
+
<y>291</y>
|
302
|
+
</hint>
|
303
|
+
</hints>
|
304
|
+
</connection>
|
305
|
+
<connection>
|
306
|
+
<sender>btn_add_row</sender>
|
307
|
+
<signal>clicked()</signal>
|
308
|
+
<receiver>Command_editor</receiver>
|
309
|
+
<slot>add_row()</slot>
|
310
|
+
<hints>
|
311
|
+
<hint type="sourcelabel">
|
312
|
+
<x>140</x>
|
313
|
+
<y>389</y>
|
314
|
+
</hint>
|
315
|
+
<hint type="destinationlabel">
|
316
|
+
<x>4</x>
|
317
|
+
<y>202</y>
|
318
|
+
</hint>
|
319
|
+
</hints>
|
320
|
+
</connection>
|
321
|
+
<connection>
|
322
|
+
<sender>tbl_bytes</sender>
|
323
|
+
<signal>itemChanged(QTableWidgetItem*)</signal>
|
324
|
+
<receiver>Command_editor</receiver>
|
325
|
+
<slot>check_cell_content(QTableWidgetItem*)</slot>
|
326
|
+
<hints>
|
327
|
+
<hint type="sourcelabel">
|
328
|
+
<x>483</x>
|
329
|
+
<y>252</y>
|
330
|
+
</hint>
|
331
|
+
<hint type="destinationlabel">
|
332
|
+
<x>519</x>
|
333
|
+
<y>115</y>
|
334
|
+
</hint>
|
335
|
+
</hints>
|
336
|
+
</connection>
|
337
|
+
</connections>
|
338
|
+
<slots>
|
339
|
+
<slot>add_cmd()</slot>
|
340
|
+
<slot>edit_cmd()</slot>
|
341
|
+
<slot>add_row()</slot>
|
342
|
+
<slot>clone_row()</slot>
|
343
|
+
<slot>remove_row()</slot>
|
344
|
+
<slot>check_txe_content()</slot>
|
345
|
+
<slot>check_cell_content(QTableWidgetItem*)</slot>
|
346
|
+
</slots>
|
347
|
+
</ui>
|
@@ -0,0 +1,115 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<ui version="4.0">
|
3
|
+
<class>Export_manager</class>
|
4
|
+
<widget class="QWidget" name="Export_manager">
|
5
|
+
<property name="windowModality">
|
6
|
+
<enum>Qt::ApplicationModal</enum>
|
7
|
+
</property>
|
8
|
+
<property name="geometry">
|
9
|
+
<rect>
|
10
|
+
<x>0</x>
|
11
|
+
<y>0</y>
|
12
|
+
<width>276</width>
|
13
|
+
<height>601</height>
|
14
|
+
</rect>
|
15
|
+
</property>
|
16
|
+
<property name="windowTitle">
|
17
|
+
<string>Hardsploit - Export</string>
|
18
|
+
</property>
|
19
|
+
<layout class="QGridLayout" name="gridLayout">
|
20
|
+
<item row="0" column="0">
|
21
|
+
<layout class="QVBoxLayout" name="verticalLayout">
|
22
|
+
<item>
|
23
|
+
<widget class="QLabel" name="lbl_result">
|
24
|
+
<property name="minimumSize">
|
25
|
+
<size>
|
26
|
+
<width>241</width>
|
27
|
+
<height>16</height>
|
28
|
+
</size>
|
29
|
+
</property>
|
30
|
+
<property name="maximumSize">
|
31
|
+
<size>
|
32
|
+
<width>240</width>
|
33
|
+
<height>16</height>
|
34
|
+
</size>
|
35
|
+
</property>
|
36
|
+
<property name="text">
|
37
|
+
<string>Command result:</string>
|
38
|
+
</property>
|
39
|
+
</widget>
|
40
|
+
</item>
|
41
|
+
<item>
|
42
|
+
<widget class="QTableWidget" name="tbl_result">
|
43
|
+
<attribute name="horizontalHeaderShowSortIndicator" stdset="0">
|
44
|
+
<bool>false</bool>
|
45
|
+
</attribute>
|
46
|
+
<attribute name="horizontalHeaderStretchLastSection">
|
47
|
+
<bool>true</bool>
|
48
|
+
</attribute>
|
49
|
+
</widget>
|
50
|
+
</item>
|
51
|
+
<item>
|
52
|
+
<layout class="QHBoxLayout" name="horizontalLayout">
|
53
|
+
<item>
|
54
|
+
<spacer name="horizontalSpacer">
|
55
|
+
<property name="orientation">
|
56
|
+
<enum>Qt::Horizontal</enum>
|
57
|
+
</property>
|
58
|
+
<property name="sizeHint" stdset="0">
|
59
|
+
<size>
|
60
|
+
<width>40</width>
|
61
|
+
<height>20</height>
|
62
|
+
</size>
|
63
|
+
</property>
|
64
|
+
</spacer>
|
65
|
+
</item>
|
66
|
+
<item>
|
67
|
+
<widget class="QComboBox" name="cbx_export">
|
68
|
+
<item>
|
69
|
+
<property name="text">
|
70
|
+
<string>Debug (CSV file)</string>
|
71
|
+
</property>
|
72
|
+
</item>
|
73
|
+
<item>
|
74
|
+
<property name="text">
|
75
|
+
<string>Data only (Read)</string>
|
76
|
+
</property>
|
77
|
+
</item>
|
78
|
+
</widget>
|
79
|
+
</item>
|
80
|
+
<item>
|
81
|
+
<widget class="QPushButton" name="btn_save">
|
82
|
+
<property name="text">
|
83
|
+
<string>Save...</string>
|
84
|
+
</property>
|
85
|
+
</widget>
|
86
|
+
</item>
|
87
|
+
</layout>
|
88
|
+
</item>
|
89
|
+
</layout>
|
90
|
+
</item>
|
91
|
+
</layout>
|
92
|
+
</widget>
|
93
|
+
<resources/>
|
94
|
+
<connections>
|
95
|
+
<connection>
|
96
|
+
<sender>btn_save</sender>
|
97
|
+
<signal>clicked()</signal>
|
98
|
+
<receiver>Export_manager</receiver>
|
99
|
+
<slot>save_result()</slot>
|
100
|
+
<hints>
|
101
|
+
<hint type="sourcelabel">
|
102
|
+
<x>228</x>
|
103
|
+
<y>608</y>
|
104
|
+
</hint>
|
105
|
+
<hint type="destinationlabel">
|
106
|
+
<x>244</x>
|
107
|
+
<y>586</y>
|
108
|
+
</hint>
|
109
|
+
</hints>
|
110
|
+
</connection>
|
111
|
+
</connections>
|
112
|
+
<slots>
|
113
|
+
<slot>save_result()</slot>
|
114
|
+
</slots>
|
115
|
+
</ui>
|