From d3457700075fab2dac25bcff2775b7ae5a436a28 Mon Sep 17 00:00:00 2001 From: Star Rauchenberger Date: Sun, 9 Mar 2025 13:07:35 -0400 Subject: Created log window --- src/log_dialog.cpp | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 src/log_dialog.cpp (limited to 'src/log_dialog.cpp') diff --git a/src/log_dialog.cpp b/src/log_dialog.cpp new file mode 100644 index 0000000..3f0a8ad --- /dev/null +++ b/src/log_dialog.cpp @@ -0,0 +1,37 @@ +#include "log_dialog.h" + +#include "logger.h" + +wxDEFINE_EVENT(LOG_MESSAGE, wxCommandEvent); + +LogDialog::LogDialog(wxWindow* parent) + : wxDialog(parent, wxID_ANY, "Debug Log", wxDefaultPosition, wxDefaultSize, + wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER) { + SetSize(FromDIP(wxSize{512, 280})); + + text_area_ = + new wxTextCtrl(this, wxID_ANY, "", wxDefaultPosition, wxDefaultSize, + wxTE_MULTILINE | wxTE_READONLY | wxTE_DONTWRAP); + text_area_->SetValue(TrackerReadPastLog()); + + wxBoxSizer* top_sizer = new wxBoxSizer(wxVERTICAL); + top_sizer->Add(text_area_, + wxSizerFlags().DoubleBorder().Expand().Proportion(1)); + + SetSizer(top_sizer); + + Bind(LOG_MESSAGE, &LogDialog::OnLogMessage, this); +} + +void LogDialog::LogMessage(const std::string& message) { + wxCommandEvent* event = new wxCommandEvent(LOG_MESSAGE); + event->SetString(message); + QueueEvent(event); +} + +void LogDialog::OnLogMessage(wxCommandEvent& event) { + if (!text_area_->IsEmpty()) { + text_area_->AppendText("\n"); + } + text_area_->AppendText(event.GetString()); +} -- cgit 1.4.1