@@ -135,6 +135,32 @@ void BaseAddressDetectionThread::run()
135
135
emit ResultReady (results);
136
136
}
137
137
138
+
139
+ void BaseAddressDetectionWidget::HideResultsWidgets (bool hide)
140
+ {
141
+ if (hide)
142
+ {
143
+ m_preferredBaseLabel->setHidden (true );
144
+ m_preferredBase->setHidden (true );
145
+ m_confidenceLabel->setHidden (true );
146
+ m_confidence->setHidden (true );
147
+ m_resultsTableWidget->setHidden (true );
148
+ m_reloadBase->setHidden (true );
149
+ m_rebaseButton->setHidden (true );
150
+ }
151
+ else
152
+ {
153
+ m_preferredBaseLabel->setHidden (false );
154
+ m_preferredBase->setHidden (false );
155
+ m_confidenceLabel->setHidden (false );
156
+ m_confidence->setHidden (false );
157
+ m_resultsTableWidget->setHidden (false );
158
+ m_reloadBase->setHidden (false );
159
+ m_rebaseButton->setHidden (false );
160
+ }
161
+ }
162
+
163
+
138
164
void BaseAddressDetectionWidget::HandleResults (const BaseAddressDetectionQtResults& results)
139
165
{
140
166
if (!results.Status .empty ())
@@ -152,7 +178,7 @@ void BaseAddressDetectionWidget::HandleResults(const BaseAddressDetectionQtResul
152
178
}
153
179
else
154
180
{
155
- m_rebaseButton-> setEnabled ( true );
181
+ HideResultsWidgets ( false );
156
182
if (results.Status .empty () && !m_worker->IsAborted ())
157
183
m_status->setText (" Completed with results" );
158
184
m_preferredBase->setText (" 0x" + QString::number (results.Scores .rbegin ()->second , 16 ));
@@ -182,18 +208,20 @@ void BaseAddressDetectionWidget::HandleResults(const BaseAddressDetectionQtResul
182
208
}
183
209
}
184
210
185
- m_detectBaseAddressButton->setEnabled (true );
186
211
m_abortButton->setHidden (true );
212
+ m_startButton->setHidden (false );
213
+ m_startButton->setEnabled (true );
187
214
}
188
215
189
216
190
217
void BaseAddressDetectionWidget::DetectBaseAddress ()
191
218
{
219
+ HideResultsWidgets (true );
192
220
m_status->setText (" Running..." );
193
221
m_resultsTableWidget->clearContents ();
194
222
m_preferredBase->setText (" Not available" );
195
223
m_confidence->setText (" Not available" );
196
- m_detectBaseAddressButton-> setEnabled ( false );
224
+ m_startButton-> setHidden ( true );
197
225
m_worker = new BaseAddressDetectionThread (&m_inputs, m_view);
198
226
connect (m_worker, &BaseAddressDetectionThread::ResultReady, this , &BaseAddressDetectionWidget::HandleResults);
199
227
connect (m_worker, &BaseAddressDetectionThread::finished, m_worker, &QObject::deleteLater);
@@ -206,6 +234,8 @@ void BaseAddressDetectionWidget::Abort()
206
234
{
207
235
m_worker->Abort ();
208
236
m_abortButton->setHidden (true );
237
+ m_startButton->setHidden (false );
238
+ m_startButton->setEnabled (false );
209
239
}
210
240
211
241
@@ -298,31 +328,32 @@ BaseAddressDetectionWidget::BaseAddressDetectionWidget(QWidget* parent, BinaryNi
298
328
m_inputs.MaxPointersPerCluster = new QLineEdit (" 128" );
299
329
m_layout->addWidget (m_inputs.MaxPointersPerCluster , row++, column + 3 , Qt::AlignLeft);
300
330
301
- m_detectBaseAddressButton = new QPushButton (" Start" );
302
- connect (m_detectBaseAddressButton , &QPushButton::clicked, this , &BaseAddressDetectionWidget::DetectBaseAddress);
303
- m_layout->addWidget (m_detectBaseAddressButton , row, column, Qt::AlignLeft);
331
+ m_startButton = new QPushButton (" Start" );
332
+ connect (m_startButton , &QPushButton::clicked, this , &BaseAddressDetectionWidget::DetectBaseAddress);
333
+ m_layout->addWidget (m_startButton , row, column, Qt::AlignLeft);
304
334
305
335
m_abortButton = new QPushButton (" Abort" );
306
336
connect (m_abortButton, &QPushButton::clicked, this , &BaseAddressDetectionWidget::Abort);
307
337
m_abortButton->setHidden (true );
308
- m_layout->addWidget (m_abortButton, row++ , column + 1 , Qt::AlignLeft);
338
+ m_layout->addWidget (m_abortButton, row, column, Qt::AlignLeft);
309
339
310
- m_layout->addWidget (new QLabel (" Status:" ), row, column, Qt::AlignLeft);
311
340
m_status = new QLabel (" Not running" );
312
341
auto palette = m_status->palette ();
313
342
palette.setColor (QPalette::WindowText, getThemeColor (AlphanumericHighlightColor));
314
343
m_status->setPalette (palette);
315
344
m_status->setFont (getMonospaceFont (this ));
316
- m_layout->addWidget (m_status, row++, column + 1 , 1 , 2 , Qt::AlignLeft);
345
+ m_layout->addWidget (m_status, row++, column + 1 , 1 , 2 , Qt::AlignLeft);
317
346
318
- m_layout->addWidget (new QLabel (" Preferred Base:" ), row, column, Qt::AlignLeft);
347
+ m_preferredBaseLabel = new QLabel (" Preferred Base:" );
348
+ m_layout->addWidget (m_preferredBaseLabel, row, column, Qt::AlignLeft);
319
349
m_preferredBase = new QLabel (" Not available" );
320
350
m_preferredBase->setTextInteractionFlags (Qt::TextSelectableByMouse);
321
351
m_preferredBase->setFont (getMonospaceFont (this ));
322
352
m_preferredBase->setPalette (palette);
323
353
m_layout->addWidget (m_preferredBase, row, column + 1 , Qt::AlignLeft);
324
354
325
- m_layout->addWidget (new QLabel (" Confidence:" ), row, column + 2 , Qt::AlignLeft);
355
+ m_confidenceLabel = new QLabel (" Confidence:" );
356
+ m_layout->addWidget (m_confidenceLabel, row, column + 2 , Qt::AlignLeft);
326
357
m_confidence = new QLabel (" Not available" );
327
358
m_confidence->setFont (getMonospaceFont (this ));
328
359
m_confidence->setPalette (palette);
@@ -342,15 +373,14 @@ BaseAddressDetectionWidget::BaseAddressDetectionWidget(QWidget* parent, BinaryNi
342
373
m_resultsTableWidget->setMinimumHeight (150 );
343
374
m_layout->addWidget (m_resultsTableWidget, row++, column, 1 , 4 );
344
375
345
- m_layout->addWidget (new QLabel (" Rebase At:" ), row, column, Qt::AlignLeft);
346
376
m_reloadBase = new QLineEdit (" 0x0" );
347
- m_layout->addWidget (m_reloadBase, row++ , column + 1 , Qt::AlignLeft);
377
+ m_layout->addWidget (m_reloadBase, row, column, Qt::AlignLeft);
348
378
349
379
m_rebaseButton = new QPushButton (" Start Full Analysis" );
350
- m_rebaseButton->setEnabled (false );
351
380
connect (m_rebaseButton, &QPushButton::clicked, this , &BaseAddressDetectionWidget::RebaseWithFullAnalysis);
352
- m_layout->addWidget (m_rebaseButton, row, column, Qt::AlignLeft);
381
+ m_layout->addWidget (m_rebaseButton, row, column + 1 , Qt::AlignLeft);
353
382
383
+ HideResultsWidgets (true );
354
384
m_layout->setColumnStretch (3 , 1 );
355
385
setLayout (m_layout);
356
386
}
0 commit comments