ifcviewer-full: federation settings dialog (unit + false origin)

New FederationSettingsDialog edits the federation-wide unit and the
FederatedFalseOrigin (XYZ + Z-rotation in that unit).  On Ok it calls
Federation::setConfig + setFederatedFalseOrigin, which fire the
granular Federation signals MainWindow listens to → viewport
recomposes immediately.

Reachable from File > Federation Settings.  Unit picker is a fixed
combobox of common length units (metres / mm / cm / km / ft / in /
yd / mi); each item carries (prefix, name) in itemData so saving
round-trips correctly.  Per-model ModelTransformation editor still
to come — that's a per-model dialog reachable from the model entry,
not the federation-wide settings.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
Dion Moult
2026-05-02 08:02:59 +10:00
parent 4a9af13626
commit 81b1efdfd6
4 changed files with 250 additions and 0 deletions
+12
View File
@@ -20,6 +20,7 @@
#include "MainWindow.h"
#include "AppSettings.h"
#include "Federation.h"
#include "FederationSettingsDialog.h"
#include "SettingsWindow.h"
#include "LodBuilder.h"
#include "SidecarCache.h"
@@ -189,6 +190,8 @@ void MainWindow::setupMenus() {
file_menu->addAction("Save Federation &As...",
this, &MainWindow::onFederationSaveAs,
QKeySequence::SaveAs);
file_menu->addAction("Federation Se&ttings...",
this, &MainWindow::onFederationSettings);
file_menu->addSeparator();
file_menu->addAction("&Settings...", this, &MainWindow::onFileSettings);
file_menu->addSeparator();
@@ -228,6 +231,15 @@ void MainWindow::onFileSettings() {
settings_->raise();
}
void MainWindow::onFederationSettings() {
if (federation_settings_ == nullptr) {
federation_settings_ = new FederationSettingsDialog(federation_, this);
}
federation_settings_->open();
federation_settings_->activateWindow();
federation_settings_->raise();
}
void MainWindow::addFiles(const QStringList& paths) {
QStringList accepted_paths;
QStringList accepted_fed_ids;