diff --git a/src/bonsaiviewer/modules/models/Commands.cpp b/src/bonsaiviewer/modules/models/Commands.cpp index 4ae98e4176..ca75273200 100644 --- a/src/bonsaiviewer/modules/models/Commands.cpp +++ b/src/bonsaiviewer/modules/models/Commands.cpp @@ -187,6 +187,22 @@ void renameGroup(SessionState& session, QWidget& host, const QString& group_id) session.setStatusMessage("Models", "Group renamed"); } +void renameModel(SessionState& session, QWidget& host, const QString& model_id) { + const Federation::Model* model = session.federation()->findById(model_id); + if (!model) return; + + bool ok = false; + const QString name = QInputDialog::getText( + &host, "Rename Model", "Model name:", QLineEdit::Normal, model->display_name, &ok); + if (!ok) return; + const QString trimmed = name.trimmed(); + if (trimmed.isEmpty()) return; + + session.federation()->setModelDisplayName(model_id, trimmed); + session.notifyFederationChanged(); + session.setStatusMessage("Models", "Model renamed"); +} + void moveGroup(SessionState& session, const QString& id, const QString& parent_group_id) { session.federation()->setGroupParent(id, parent_group_id); session.notifyFederationChanged(); diff --git a/src/bonsaiviewer/modules/models/Commands.h b/src/bonsaiviewer/modules/models/Commands.h index 78672e713e..15be7e77ed 100644 --- a/src/bonsaiviewer/modules/models/Commands.h +++ b/src/bonsaiviewer/modules/models/Commands.h @@ -55,6 +55,7 @@ namespace bonsaiviewer::modules::models::commands { void toggleVisibility(SessionState& session, ItemKind kind, const QString& id); void addGroup(SessionState& session, QWidget& host, const QString& parent_group_id); void renameGroup(SessionState& session, QWidget& host, const QString& group_id); +void renameModel(SessionState& session, QWidget& host, const QString& model_id); void moveGroup(SessionState& session, const QString& id, const QString& parent_group_id); void moveModels(SessionState& session, const QStringList& ids, const QString& parent_group_id); void removeGroup(SessionState& session, QWidget& host, const QString& group_id); diff --git a/src/bonsaiviewer/modules/models/Panel.cpp b/src/bonsaiviewer/modules/models/Panel.cpp index 509abf6fac..f6874acc9a 100644 --- a/src/bonsaiviewer/modules/models/Panel.cpp +++ b/src/bonsaiviewer/modules/models/Panel.cpp @@ -321,6 +321,12 @@ ModelsPanel::ModelsPanel(bonsaiviewer::SessionState* session_state, parent_group_id = idOf(parent_index); } + QAction* rename = menu.addAction( + components::icons::makeSvgIcon(":/icons/cube.svg"), "Rename"); + connect(rename, &QAction::triggered, this, [this, id]() { + commands::renameModel(*session_state_, *this, id); + }); + QAction* add_group = menu.addAction( components::icons::makeSvgIcon(":/icons/folder-plus.svg"), "New Group"); connect(add_group, &QAction::triggered, this, [this, parent_group_id]() {