From 45a00b845bb99d89a18a1d267205c1dc71f171a6 Mon Sep 17 00:00:00 2001 From: Tanner Collin Date: Wed, 18 Feb 2026 14:54:57 -0700 Subject: [PATCH] feat: Add debug window; accessible via Help menu and DEBUG env var Co-authored-by: aider (gemini/gemini-2.5-pro) --- src/DebugWindow.cpp | 22 ++++++++++++++++++++++ src/DebugWindow.h | 20 ++++++++++++++++++++ src/MainWindow.cpp | 16 ++++++++++++++++ src/MainWindow.h | 4 ++++ 4 files changed, 62 insertions(+) create mode 100644 src/DebugWindow.cpp create mode 100644 src/DebugWindow.h diff --git a/src/DebugWindow.cpp b/src/DebugWindow.cpp new file mode 100644 index 0000000..35a962c --- /dev/null +++ b/src/DebugWindow.cpp @@ -0,0 +1,22 @@ +#include "DebugWindow.h" + +#include +#include + +DebugWindow::DebugWindow(QWidget *parent) + : QDialog(parent) +{ + setWindowTitle("Debug Info"); + resize(600, 400); + + QVBoxLayout* layout = new QVBoxLayout(this); + m_textEdit = new QTextEdit(); + m_textEdit->setReadOnly(true); + m_textEdit->setText("Debug window is active."); + layout->addWidget(m_textEdit); + setLayout(layout); +} + +DebugWindow::~DebugWindow() +{ +} diff --git a/src/DebugWindow.h b/src/DebugWindow.h new file mode 100644 index 0000000..89a602b --- /dev/null +++ b/src/DebugWindow.h @@ -0,0 +1,20 @@ +#ifndef DEBUGWINDOW_H +#define DEBUGWINDOW_H + +#include + +class QTextEdit; + +class DebugWindow : public QDialog +{ + Q_OBJECT + +public: + explicit DebugWindow(QWidget *parent = nullptr); + ~DebugWindow(); + +private: + QTextEdit* m_textEdit; +}; + +#endif // DEBUGWINDOW_H diff --git a/src/MainWindow.cpp b/src/MainWindow.cpp index b835cb6..ef71b39 100644 --- a/src/MainWindow.cpp +++ b/src/MainWindow.cpp @@ -4,6 +4,7 @@ #include "SketchFeature.h" #include "Feature.h" #include "ApplicationController.h" +#include "DebugWindow.h" #include #include @@ -19,6 +20,7 @@ #include #include #include +#include MainWindow::MainWindow(ApplicationController* appController, QWidget *parent) : QMainWindow(parent) @@ -41,6 +43,10 @@ MainWindow::MainWindow(ApplicationController* appController, QWidget *parent) QAction *saveAsAction = fileMenu->addAction("Save &As..."); connect(saveAsAction, &QAction::triggered, this, &MainWindow::saveAs); + QMenu *helpMenu = menuBar()->addMenu("&Help"); + QAction *debugAction = helpMenu->addAction("&Debug"); + connect(debugAction, &QAction::triggered, this, &MainWindow::showDebugWindow); + QToolBar* mainToolBar = addToolBar("Main Toolbar"); mainToolBar->setMovable(false); @@ -151,6 +157,11 @@ MainWindow::MainWindow(ApplicationController* appController, QWidget *parent) connect(m_viewport, &ViewportWidget::planeSelected, m_appController, &ApplicationController::onPlaneSelected); connect(m_viewport, &ViewportWidget::toolDeactivated, m_appController, [this]() { m_appController->setActiveTool(ApplicationController::ToolType::None); }); + m_debugWindow = new DebugWindow(this); + if (QProcessEnvironment::systemEnvironment().value("DEBUG") == "true") { + showDebugWindow(); + } + updateWindowTitle(QString()); } @@ -184,6 +195,11 @@ bool MainWindow::saveAs() return m_appController->saveDocumentAs(); } +void MainWindow::showDebugWindow() +{ + m_debugWindow->show(); +} + void MainWindow::enterSketchMode() { m_tabWidget->removeTab(m_tabWidget->indexOf(m_toolsTab)); diff --git a/src/MainWindow.h b/src/MainWindow.h index a4830ed..52720d4 100644 --- a/src/MainWindow.h +++ b/src/MainWindow.h @@ -10,6 +10,7 @@ class Feature; class QTabWidget; class QWidget; class ApplicationController; +class DebugWindow; class MainWindow : public QMainWindow { @@ -26,6 +27,8 @@ private slots: void createSketch(); void saveSketch(); + void showDebugWindow(); + void enterSketchMode(); void exitSketchMode(); void updateWindowTitle(const QString& filePath); @@ -36,6 +39,7 @@ protected: private: ApplicationController* m_appController; ViewportWidget *m_viewport; + DebugWindow* m_debugWindow; QTabWidget *m_tabWidget; QWidget *m_solidTab;