fix some on properties and signal connection

This commit is contained in:
AndreaRigoni
2026-03-26 09:50:52 +00:00
parent 2c5d6842c3
commit e0ffeff5b7
22 changed files with 578 additions and 62 deletions

View File

@@ -14,7 +14,10 @@
#include <QMenu>
#include <QAction>
#include <QApplication>
#include <QFileDialog>
#include <QFileInfo>
#include "StyleManager.h"
#include "Math/VoxImage.h"
MainPanel::MainPanel(QWidget* parent) : QWidget(parent), m_context(nullptr), m_mainVtkContext(nullptr) {
this->setObjectName("MainPanel");
@@ -124,6 +127,17 @@ void MainPanel::setContext(uLib::ObjectsContext* context) {
m_mainVtkContext = new uLib::Vtk::vtkObjectsContext(context);
// viewport->AddPuppet(*m_mainVtkContext); // redundant
auto syncSelection = [this](uLib::Vtk::Puppet* p) {
if (!p) {
m_contextPanel->clearSelection();
m_firstPane->setObject(nullptr);
} else {
m_contextPanel->selectObject(p->GetContent());
m_firstPane->setObject(p);
}
};
connect(viewport, &uLib::Vtk::QViewport::puppetSelected, syncSelection);
uLib::Object::connect(m_mainVtkContext, &uLib::Vtk::vtkObjectsContext::PuppetAdded, [this](uLib::Vtk::Puppet* p) {
if (p) {
auto panes = this->findChildren<ViewportPane*>();
@@ -179,7 +193,35 @@ void MainPanel::onCreateObject(const std::string& className) {
}
void MainPanel::onOpen() {
// Placeholder for open logic
QString fileName = QFileDialog::getOpenFileName(this, "Open File", "",
"VTK/VTI Images (*.vtk *.vti);;All Files (*.*)");
if (fileName.isEmpty()) return;
QFileInfo info(fileName);
QString ext = info.suffix().toLower();
if (ext == "vti" || ext == "vtk") {
auto* obj = uLib::ObjectFactory::Instance().Create("VoxImage");
auto* vox = dynamic_cast<uLib::Abstract::VoxImage*>(obj);
if (vox) {
bool success = false;
if (ext == "vti") {
success = vox->ImportFromVti(fileName.toStdString().c_str());
} else {
success = vox->ImportFromVtk(fileName.toStdString().c_str());
}
if (success) {
obj->SetInstanceName(info.fileName().toStdString());
m_context->AddObject(obj);
} else {
delete obj;
}
} else {
delete obj;
}
}
}
void MainPanel::onSave() {