feat: Implement floating feature browser in viewport with transparent background

Co-authored-by: aider (gemini/gemini-2.5-pro) <aider@aider.chat>
This commit is contained in:
2026-02-09 17:33:01 -07:00
parent f8386938cb
commit c6f82a04e8
6 changed files with 92 additions and 40 deletions

View File

@@ -8,9 +8,6 @@
#include <QMenu>
#include <QFileDialog>
#include <QMessageBox>
#include <QDockWidget>
#include <QTreeWidget>
#include <QTreeWidgetItem>
#include <QToolBar>
#include <QTabWidget>
#include <QWidget>
@@ -84,17 +81,9 @@ MainWindow::MainWindow(QWidget *parent)
setCentralWidget(m_viewport);
m_document = new Document(this);
connect(m_document, &Document::featureAdded, this, &MainWindow::onFeatureAdded);
connect(m_document, &Document::cleared, this, &MainWindow::onDocumentCleared);
QDockWidget *dock = new QDockWidget("Browser", this);
addDockWidget(Qt::LeftDockWidgetArea, dock);
m_featureTree = new QTreeWidget(dock);
m_featureTree->setHeaderHidden(true);
dock->setWidget(m_featureTree);
m_rootItem = new QTreeWidgetItem(m_featureTree);
m_viewport->setDocument(m_document);
connect(m_document, &Document::featureAdded, m_viewport, QOverload<>::of(&QWidget::update));
connect(m_document, &Document::cleared, m_viewport, QOverload<>::of(&QWidget::update));
setCurrentFile(QString());
}
@@ -173,26 +162,11 @@ bool MainWindow::saveAs()
void MainWindow::setCurrentFile(const QString &fileName)
{
m_currentFile = fileName;
m_document->setFileName(fileName);
setWindowFilePath(m_currentFile);
QString shownName = m_currentFile;
if (m_currentFile.isEmpty())
shownName = "Untitled";
setWindowTitle(tr("%1[*] - %2").arg(QFileInfo(shownName).fileName(), tr("OpenCAD")));
if (m_rootItem) {
m_rootItem->setText(0, QFileInfo(shownName).fileName());
}
}
void MainWindow::onFeatureAdded(Feature* feature)
{
QTreeWidgetItem *item = new QTreeWidgetItem(m_rootItem);
item->setText(0, feature->name());
m_rootItem->setExpanded(true);
}
void MainWindow::onDocumentCleared()
{
qDeleteAll(m_rootItem->takeChildren());
}