1
- #include " windows/editor/editordock.h"
2
- #include " windows/editor/editortab.h"
3
-
4
- #include < QProcessEnvironment>
5
- #include < QtWidgets>
6
- #include < qactiongroup.h>
7
- #include < qwidget.h>
1
+ #include " mainwindow.h"
8
2
9
3
#include " assembler/fixmatheval.h"
10
4
#include " assembler/simpleasm.h"
13
7
#include " dialogs/savechanged/savechangeddialog.h"
14
8
#include " extprocess.h"
15
9
#include " helper/async_modal.h"
16
- #include " mainwindow.h"
17
10
#include " os_emulation/ossyscall.h"
18
11
#include " textsignalaction.h"
19
- #include " common/logging.h"
12
+ #include " windows/editor/editordock.h"
13
+ #include " windows/editor/editortab.h"
20
14
21
15
#include < QFileInfo>
22
16
#include < QMessageBox>
23
17
#include < QMetaObject>
18
+ #include < QProcessEnvironment>
24
19
#include < QTextDocument>
20
+ #include < QtWidgets>
21
+ #include < qactiongroup.h>
22
+ #include < qwidget.h>
25
23
26
24
LOG_CATEGORY (" gui.mainwindow" );
27
25
@@ -46,6 +44,9 @@ MainWindow::MainWindow(QSettings *settings, QWidget *parent)
46
44
setWindowTitle (APP_NAME);
47
45
setDockNestingEnabled (true );
48
46
47
+ frequency_label.reset (new QLabel (this ));
48
+ ui->statusBar ->addPermanentWidget (frequency_label.data ());
49
+
49
50
// Setup central widget
50
51
51
52
central_widget_tabs.reset (new HidingTabWidget (this ));
@@ -168,9 +169,7 @@ MainWindow::MainWindow(QSettings *settings, QWidget *parent)
168
169
connect (
169
170
ui->actionBranch_Predictor_Target_table , &QAction::triggered, this ,
170
171
&MainWindow::show_bp_btb);
171
- connect (
172
- ui->actionBranch_Predictor_Info , &QAction::triggered, this ,
173
- &MainWindow::show_bp_info);
172
+ connect (ui->actionBranch_Predictor_Info , &QAction::triggered, this , &MainWindow::show_bp_info);
174
173
175
174
connect (ui->actionPeripherals , &QAction::triggered, this , &MainWindow::show_peripherals);
176
175
connect (ui->actionTerminal , &QAction::triggered, this , &MainWindow::show_terminal);
@@ -286,8 +285,9 @@ void MainWindow::create_core(
286
285
287
286
set_speed (); // Update machine speed to current settings
288
287
289
- const static machine::ExceptionCause ecall_variats[] = {machine::EXCAUSE_ECALL_ANY,
290
- machine::EXCAUSE_ECALL_M, machine::EXCAUSE_ECALL_S, machine::EXCAUSE_ECALL_U};
288
+ const static machine::ExceptionCause ecall_variats[]
289
+ = { machine::EXCAUSE_ECALL_ANY, machine::EXCAUSE_ECALL_M, machine::EXCAUSE_ECALL_S,
290
+ machine::EXCAUSE_ECALL_U };
291
291
292
292
if (config.osemu_enable ()) {
293
293
auto *osemu_handler = new osemu::OsSyscallExceptionHandler (
@@ -320,6 +320,9 @@ void MainWindow::create_core(
320
320
connect (machine.data (), &machine::Machine::status_change, this , &MainWindow::machine_status);
321
321
connect (machine.data (), &machine::Machine::program_exit, this , &MainWindow::machine_exit);
322
322
connect (machine.data (), &machine::Machine::program_trap, this , &MainWindow::machine_trap);
323
+ connect (
324
+ machine.data (), &machine::Machine::report_core_frequency, this ,
325
+ &MainWindow::update_core_frequency);
323
326
// Connect signal from break to machine pause
324
327
connect (
325
328
machine->core (), &machine::Core::stop_on_exception_reached, machine.data (),
@@ -434,13 +437,13 @@ void MainWindow::print_action() {
434
437
void MainWindow::show_##NAME() { \
435
438
show_dockwidget (&*NAME, DEFAULT_AREA, true , false ); \
436
439
} \
437
- void MainWindow::reset_state_##NAME() { \
438
- show_dockwidget (&*NAME, DEFAULT_AREA, DEFAULT_VISIBLE, true ); \
439
- }
440
+ void MainWindow::reset_state_##NAME() { \
441
+ show_dockwidget (&*NAME, DEFAULT_AREA, DEFAULT_VISIBLE, true ); \
442
+ }
440
443
441
444
SHOW_HANDLER (registers, Qt::TopDockWidgetArea, true )
442
445
SHOW_HANDLER(program, Qt::LeftDockWidgetArea, true )
443
- SHOW_HANDLER(memory, Qt::RightDockWidgetArea, true )
446
+ SHOW_HANDLER(memory, Qt::RightDockWidgetArea, true )
444
447
SHOW_HANDLER(cache_program, Qt::RightDockWidgetArea, false )
445
448
SHOW_HANDLER(cache_data, Qt::RightDockWidgetArea, false )
446
449
SHOW_HANDLER(cache_level2, Qt::RightDockWidgetArea, false )
@@ -558,8 +561,11 @@ void MainWindow::closeEvent(QCloseEvent *event) {
558
561
}
559
562
}
560
563
561
- void MainWindow::show_dockwidget (QDockWidget *dw, Qt::DockWidgetArea area,
562
- bool defaultVisible, bool resetState) {
564
+ void MainWindow::show_dockwidget (
565
+ QDockWidget *dw,
566
+ Qt::DockWidgetArea area,
567
+ bool defaultVisible,
568
+ bool resetState) {
563
569
if (dw == nullptr ) { return ; }
564
570
if (resetState) {
565
571
if (dw->isFloating ()) {
@@ -651,8 +657,7 @@ void MainWindow::message_selected(
651
657
central_widget_tabs->setCurrentWidget (editor_tabs.data ());
652
658
if (!editor_tabs->set_cursor_to (file, line, column)) {
653
659
editor_tabs->open_file_if_not_open (file, false );
654
- if (!editor_tabs->set_cursor_to (file, line, column))
655
- return ;
660
+ if (!editor_tabs->set_cursor_to (file, line, column)) return ;
656
661
}
657
662
658
663
// Highlight the line
@@ -665,8 +670,12 @@ void MainWindow::message_selected(
665
670
editor->setExtraSelections ({ selection });
666
671
}
667
672
673
+ void MainWindow::update_core_frequency (double frequency) {
674
+ frequency_label->setText (QString (" Core frequency: %1 kHz" ).arg (frequency / 1000.0 , 0 , ' f' , 3 ));
675
+ }
676
+
668
677
bool SimpleAsmWithEditorCheck::process_file (const QString &filename, QString *error_ptr) {
669
- EditorTab* tab = mainwindow->editor_tabs ->find_tab_by_filename (filename);
678
+ EditorTab * tab = mainwindow->editor_tabs ->find_tab_by_filename (filename);
670
679
if (tab == nullptr ) { return Super::process_file (filename, error_ptr); }
671
680
SrcEditor *editor = tab->get_editor ();
672
681
QTextDocument *doc = editor->document ();
0 commit comments